예스스탁
예스스탁 답변
2024-10-07 15:59:55
안녕하세요
예스스탁입니다.
올려주신 내용만으로는 어느 부분에서 차이가 발생하지 확인이 어렵습니다.
다만 Summer타임 여부 계산에 NextBarSdate와 sdate가
혼재되어 계산되는데 봉완성시 다음봉시가 진입이므로 sdate로 통일해 드립니다.
var :N1(0),당일손익(0),Xcond(False);
var :Year(0),V1(0),V2(0),V3(0),V4(0),summer(False),ST(0),XT(0);
//===============================================================
if BDate!=BDate[1] Then
{
N1= NetProfit;
Xcond=False;
}
당일손익=NetProfit-N1 ;
if 당일손익<= -50 Then Xcond=True;
if Sdate != sDate[1] Then
{
Year = Floor(Sdate/10000);
V1 = (10000 * Year) + 301;
V2 = 15 - dayofweek(v1);
V3 = (10000 * Year) + 1101;
V4 = 8 - dayofweek(v3);
Summer=Sdate>(10000*Year)+300+v2 and Sdate<(10000*Year)+1100+v4;
if summer == true Then
{
ST = 203000 ;
XT = 43000 ;
}
Else
{
ST = 203000 +10000;
XT = 43000 +10000;
}
}
Condition1 = C > O;
Condition2 = C < O;
//====================================================================
if !(sTime>XT && sTime<ST) && Xcond==False &&
marketposition==0 && TotalTrades==0 Then{
if Condition1==True Then Buy ("최초매수",AtMarket); //Condition1=매수조건
if Condition2==True Then Sell("최초매도",AtMarket);}//Condition2=매도조건
if !(sTime>XT && sTime<ST) && Xcond==False &&
marketposition==0 && TotalTrades>=1 Then{
if Condition1==True Then Buy ("매수",AtMarket);
if Condition2==True Then Sell("매도",AtMarket);}
if marketposition== 1 Then SetStopLoss(30,PointStop);
Else if marketposition== -1 Then SetStopLoss(30,PointStop);
Else SetStopLoss(0);
if marketposition== 1 Then SetStopProfittarget(30,PointStop);
Else if marketposition== -1 Then SetStopProfittarget(30,PointStop);
Else SetStopProfittarget(0);
if (sTime>=XT && sTime<= 55000) && marketposition<>0 Then
{
ExitLong("마감1",AtMarket) ;
ExitShort("마감2",AtMarket);
}
즐거운 하루되세요
> 자마이카 님이 쓴 글입니다.
> 제목 : 섬머타임....
> 섬머타임을 적용하기위해서 아래와 같이 작성해 보았으나
섬머타임 수식을 추가하기 전의 성능보고서와 약간의 차이가 납니다.
그 원인이 무엇인지 가르쳐주시기 바랍니다. 늘 감사드립니다.
(당일 손실합계액이 50포인트 이상이면 매매중단, 섬머타임시에는 오후8시30분부터
다음날 새벽4시30분까지 매매하고, 섬머타임 해제시에는 1시간씩 순연)
var :N1(0),당일손익(0),Xcond(False);
var :Year(0),V1(0),V2(0),V3(0),V4(0),summer(False),ST(0),XT(0);
//===============================================================
if BDate!=BDate[1] Then {N1= NetProfit; Xcond=False;}
당일손익=NetProfit-N1 ;
if 당일손익<= -50*PointStop Then Xcond=True;
if NextBarSdate != sDate Then{
Year = Floor(NextBarSdate/10000);
V1 = (10000 * Year) + 301;
V2 = 15 - dayofweek(v1);
V3 = (10000 * Year) + 1101;
V4 = 8 - dayofweek(v3);
Summer=Sdate>(10000*Year)+300+v2 and Sdate<(10000*Year)+1100+v4;
if summer == true Then{ST = 203000 ; XT = 43000 ;}
Else{ST = 203000 +10000; XT = 43000 +10000;}}
//====================================================================
if !(sTime>XT && sTime<ST) && Xcond==False &&
marketposition==0 && TotalTrades==0 Then{
if Condition1==True Then Buy ("최초매수",AtMarket); //Condition1=매수조건
if Condition2==True Then Sell("최초매도",AtMarket);}//Condition2=매도조건
if !(sTime>XT && sTime<ST) && Xcond==False &&
marketposition==0 && TotalTrades>=1 Then{
if Condition1==True Then Buy ("매수",AtMarket);
if Condition2==True Then Sell("매도",AtMarket);}
if marketposition== 1 Then SetStopLoss(30,PointStop);
Else if marketposition== -1 Then SetStopLoss(30,PointStop);
Else SetStopLoss(0);
if marketposition== 1 Then SetStopProfittarget(30,PointStop);
Else if marketposition== -1 Then SetStopProfittarget(30,PointStop);
Else SetStopProfittarget(0);
if (sTime>=XT && sTime<= 55000) && marketposition<>0 Then{
ExitLong("마감1",AtMarket) ; ExitShort("마감2",AtMarket);}