안녕하세요.
지표를 이용한 시스템을 적용해보았는데 실제지표의 signal과 만든 시스템에서 나오는 진입점이 다르게 나와서 질문드립니다.
제가 생각하는 원인은 거래가능시간을 설정해서 시스템의 signal에 왜곡이 발생한것같은데 해결방법이 있을까요?
제가 원하는 방향은 1.원래지표에서 나타난 signal이 발생할때 2. 설정한 거래시간에서만 거래하고 최종시간에 청산. 이렇게입니다. 확인해주시면 감사하겠습니다.
Input : StartTime1(101500),EndTime1(165900);
var : Tcond(false);
if (sdate != sdate[1] and stime >= EndTime1) or
(sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime1) or
(sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then
{
Tcond = true;
SetStopEndofday(EndTime1);
}
if Tcond == true Then
{
Input : shortPeriod(12), longPeriod(26), Period(9);
value1 = MACD(shortPeriod, longPeriod);
value2 = ema(value1, Period);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
Sell();
}
}
답변 1
예스스탁
예스스탁 답변
2021-06-29 09:20:49
안녕하세요
예스스탁입니다.
1
지표계산이 if문안에 있으면 해당 if문이 만족할때만 계산하게 됩니다.
매봉 계산을 해야 되는 내용이므로 if문 밖에서 계산하게 작성하셔야 합니다.
2
당일청산수식도 수정해 드립니다.
해외선물은 새벽시간에 당일청산을 할수도 있으므로
별도로 아래와 같이 작성하셔야 합니다.
국내/해외 공용으로 사용하는 식으로 지정한 endtime1에 청산하게 됩니다.
3
Input : StartTime1(101500),EndTime1(165900);
Input : shortPeriod(12), longPeriod(26), Period(9);
var : Tcond(false);
value1 = MACD(shortPeriod, longPeriod);
value2 = ema(value1, Period);
IF Endtime1 > starttime1 Then
SetStopEndofday(Endtime1);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime1);
}
if (sdate != sdate[1] and stime >= EndTime1) or
(sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime1) or
(sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then
{
Tcond = true;
IF Endtime1 <= starttime1 Then
{
SetStopEndofday(0);
}
}
if Tcond == true Then
{
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
Sell();
}
}
즐거운 하루되세요
> 진인사 님이 쓴 글입니다.
> 제목 : 지표 왜곡
> 안녕하세요.
지표를 이용한 시스템을 적용해보았는데 실제지표의 signal과 만든 시스템에서 나오는 진입점이 다르게 나와서 질문드립니다.
제가 생각하는 원인은 거래가능시간을 설정해서 시스템의 signal에 왜곡이 발생한것같은데 해결방법이 있을까요?
제가 원하는 방향은 1.원래지표에서 나타난 signal이 발생할때 2. 설정한 거래시간에서만 거래하고 최종시간에 청산. 이렇게입니다. 확인해주시면 감사하겠습니다.
Input : StartTime1(101500),EndTime1(165900);
var : Tcond(false);
if (sdate != sdate[1] and stime >= EndTime1) or
(sdate == sdate[1] and stime >= EndTime1 and stime[1] < EndTime1) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime1) or
(sdate == sdate[1] and stime >= StartTime1 and stime[1] < StartTime1) Then
{
Tcond = true;
SetStopEndofday(EndTime1);
}
if Tcond == true Then
{
Input : shortPeriod(12), longPeriod(26), Period(9);
value1 = MACD(shortPeriod, longPeriod);
value2 = ema(value1, Period);
# 매수/매도청산
If CrossUP(value1, value2) Then
{
Buy();
}
# 매도/매수청산
If CrossDown(value1, value2) Then
{
Sell();
}
}