예스스탁
예스스탁 답변
2023-11-15 16:06:16
안녕하세요
예스스탁입니다.
1
시스템 트레이딩 설정창의 비용/수량탭에서 수수료와 슬리피지 설정 확인하시기 바랍니다.
리포트의 손익에는 지정한 수수료와 슬리피지가 비용으로 차감됩니다.
수수료와 슬리피지를 0으로 지정하시면 진입청산가격만으로 손익이 계산됩니다.
2
무포지션에만 진입하게 하시면 됩니다.
input : EmaPeriod(50);
input : RSIPeriod1(7),RSIPeriod2(14),RSIPeriod3(21),RSI차이(7);
input : ADXPeriod(14);
input : 익절(15),손절(15),N(10);
var : Emav(0),RSI1(0),RSI2(0),RSI3(0),ADXv(0);
var : Bcond(False),Scond(False);
Emav = Ema(C,EmaPeriod);
RSI1 = RSI(RSIPeriod1);
RSI2 = RSI(RSIPeriod2);
RSI3 = RSI(RSIPeriod3);
ADXv = ADX(ADXperiod);
Bcond = MarketPosition == 0 and MarketPosition(1) == 1 and MarketPosition(2) == 1;
Scond = MarketPosition == 0 and MarketPosition(1) == -1 and MarketPosition(2) == -1;
if MarketPosition == 0 and
C > Emav and
(TotalTrades == 0 or (TotalTrades > 0 and BarsSinceExit(1) >= N)) and
RSI1 >= RSI2+RSI차이 and RSI2 >= RSI3+RSI차이 and
RSI1 > 50 AND RSI2 > 50 AND RSI3 > 50 AND
ADXV >= 21 and
Bcond == False Then
Buy("매수포지션");
if MarketPosition == 0 and
C < Emav and
(TotalTrades == 0 or (TotalTrades > 0 and BarsSinceExit(1) >= N)) and
RSI1 <= RSI2-RSI차이 and RSI2 <= RSI3-RSI차이 and
RSI1 < 50 AND RSI2 < 50 AND RSI3 < 50 AND
ADXV >= 21 and
Scond == False Then
Sell("매도포지션");
if MarketPosition == 1 Then
{
ExitLong("매수-15포인트 익절",AtLimit,AvgEntryPrice+15);
ExitLong("매수-손절",AtStop,AvgEntryPrice-15);
}
if MarketPosition == -1 Then
{
ExitShort("매도-15포인트 익절",AtLimit,AvgEntryPrice-15);
ExitShort("매도-손절",AtStop,AvgEntryPrice+15);
}
즐거운 하루되세요
> 맴맴잉 님이 쓴 글입니다.
> 제목 : 시스템식 요청드립니다.
> 시스템식에 수정이 필요한 부분과 궁금한점이 있어 이렇게 요청드립니다.
1. (문의사항) 그림 1번에서 보시면 익절 청산을 했는데도 성능보고서에는 마이너스로 나오는데 왜 그러는걸까요??
2. (요청사항) 그림 2번에서 보시면 매도포지션 잡고 있는 중에, 매수포지션이 오면, 바로 청산해버리고, 포지션을
갈아타는 경우가 생기는데, 현재 진입한 포지션이 청산되기 전까지 포지션 진입이 없고, 청산 이후에는 봉 10개
이후에 진입하는 식으로 요청드립니다.
------------------------------------------------------------------------------
input : EmaPeriod(50);
input : RSIPeriod1(7),RSIPeriod2(14),RSIPeriod3(21),RSI차이(7);
input : ADXPeriod(14);
input : 익절(15),손절(15),N(10);
var : Emav(0),RSI1(0),RSI2(0),RSI3(0),ADXv(0);
var : Bcond(False),Scond(False);
Emav = Ema(C,EmaPeriod);
RSI1 = RSI(RSIPeriod1);
RSI2 = RSI(RSIPeriod2);
RSI3 = RSI(RSIPeriod3);
ADXv = ADX(ADXperiod);
Bcond = MarketPosition == 0 and MarketPosition(1) == 1 and MarketPosition(2) == 1;
Scond = MarketPosition == 0 and MarketPosition(1) == -1 and MarketPosition(2) == -1;
if C > Emav and
(TotalTrades == 0 or (TotalTrades > 0 and BarsSinceExit(1) >= N)) and
RSI1 >= RSI2+RSI차이 and RSI2 >= RSI3+RSI차이 and
RSI1 > 50 AND RSI2 > 50 AND RSI3 > 50 AND
ADXV >= 21 and
Bcond == False Then
Buy("매수포지션");
if C < Emav and
(TotalTrades == 0 or (TotalTrades > 0 and BarsSinceExit(1) >= N)) and
RSI1 <= RSI2-RSI차이 and RSI2 <= RSI3-RSI차이 and
RSI1 < 50 AND RSI2 < 50 AND RSI3 < 50 AND
ADXV >= 21 and
Scond == False Then
Sell("매도포지션");
if MarketPosition == 1 Then
{
ExitLong("매수-15포인트 익절",AtLimit,AvgEntryPrice+15);
ExitLong("매수-손절",AtStop,AvgEntryPrice-15);
}
if MarketPosition == -1 Then
{
ExitShort("매도-15포인트 익절",AtLimit,AvgEntryPrice-15);
ExitShort("매도-손절",AtStop,AvgEntryPrice+15);
}