커뮤니티

수식이 걸리지 않습니다.

프로필 이미지
Polaris
2009-06-18 11:13:10
949
글번호 22895
답변완료

첨부 이미지

수고하십니다. 다음 시스템 식에서 If Condition2==False And data3(low)<xzDnCh and xzmarketposi<>-1 then 문에 조건이 합당한 경우에도 비켜가는 일이 생깁니다. 위의 수식 안팎으로 디버그를 해 보았을 때 2008년 1월 11일의 경우에 디버그창을 캡쳐한 겻과 같이 그 수식을 비켜갑니다.외부에 디버그해서 보면 위의 수식을 만족하는 데도 그렇네요. 이유가 궁금합니다.. data1은 5분봉, data2는 30분봉, data3는 일봉입니다.2008년도1월1일부터입니다. Input : xzlen(1), xzlen1(12), xzlen2(0.16), xzs1(5), xzmethod(1), xzdelay(1),xzatrlen(4); var : xzposition(0), xzUpCh(0), xzDnCh(0),zxpredayindex(0),xzexitdate(0),xzpremarketposi(0), xzpredayindex(0),xzgappredayindex(0), xzmarketposi(0,data3),xzbarssince(0),xzEntryPricee(0),xzentryindex(0),xzgapindex(0); if data1(date) !=data1(date[1]) then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉) { xzUpCh = data3(dayOpen)+(data3(dayhigh(1))-data3(daylow(1)))*xzlen2; xzDnch = data3(dayOpen)-(data3(dayhigh(1))-data3(daylow(1)))*xzlen2; //method에 따른 var1, var2 변수 결정 If xzmethod==1 then { Var1=data3(atr(xzlen)); Var2=data3(atr(xzlen1)); } Else if xzmethod==2 then { Var20=data3(high)-data3(low); Var1=data3(ma(Var20,xzlen)); Var2=data3(ma(Var20,xzlen1)); } Condition1= data3(sdate[1])==xzexitdate And xzpremarketposi==1 ; //최근청산날짜가 금일이고 직전이 매수 Condition2= data3(sdate[1])==xzexitdate And xzpremarketposi==-1; //최근청산날짜가 금일이고 직전이 매도 If Var1<var2 then //var1과 var2의 이평값 비교 Var10=1; Else Var10=0; # } If data3(highest(Var10,xzdelay))==1 then { //delay봉갯수동안 최고 var10값이 1이면 If data3(stime)<150000 then { //고가가 지정가보다 낮으면 If Condition1==False And data3(high)<xzUpCh and xzmarketposi<>1 then { xzposition = 1; } //저가가 지정가보다 높으면 If Condition2==False And data3(low)>xzDnCh and xzmarketposi<>-1 then { xzposition = -1; } //고가가 지정가보다 높으면 If Condition1==False And data3(high)>xzUpCh and xzmarketposi<>1 then { xzposition = 1; } //저가가 지정가보다 낮으면 If Condition2==False And data3(low)<xzDnCh and xzmarketposi<>-1 then { xzposition = -1; MessageLog("Condition2= %.3f,low= %.3f, DnCh= %.3f, xzmarketposi= %.3f",Condition2,data3(low),xzDnCh,xzmarketposi); } #MessageLog("Condition2= %.3f,low= %.3f, DnCh= %.3f, xzmarketposi= %.3f",Condition2,data3(low),xzDnCh,xzmarketposi); } } //청산 If xzmarketposi<>0 then { if data3(c)<=data3(highest(high,xzbarsSince+1))-data3(atr(xzatrlen)*xzs1) then xzmarketposi=0; if data3(c)>=data3(lowest(low,xzbarsSince+1))+data3(atr(xzatrlen)*xzs1) then { xzmarketposi=0; } } } ############################################################################# if xzMarketPosi != 1 && xzposition == 1 then { if xzMarketposi == -1 Then { xzpremarketposi=-1; xzexitdate=date; } xzmarketposi=1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if xzMarketPosi != -1 && xzposition == -1 then { if xzMarketposi == 1 Then { xzpremarketposi=1; xzexitdate=date; } xzmarketposi=-1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if xzMarketPosi == -1 && xzposition == 1 then #&& zgap < zshortarea { if xzMarketposi == -1 Then { xzpremarketposi=-1; xzexitdate=date; } xzmarketposi=0; } else if xzMarketPosi == 1 && xzposition == -1 then #&& zgap > zlongarea { if xzMarketposi == 1 Then { xzpremarketposi=1; xzexitdate=date; } xzmarketposi=0; } ######################################################################## ############################################################################## if xzMarketPosi == 1 then {buy(); } else if xzMarketPosi == -1 then {sell(); } Else {exitlong(); exitshort(); }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2009-06-18 14:18:36

안녕하세요 예스스탁입니다. 선물지수 2008년도1월1일부터 최종일까지 data1은 5분봉, data2는 30분봉, data3으로 설정하고 해당 값을 추출해 봤지만 올리신 그림과 같이 나타나지 않습니다. 전화주시기 바랍니다. 02-3453-1060 즐거운 하루되세요 Input : xzlen(1), xzlen1(12), xzlen2(0.16), xzs1(5), xzmethod(1), xzdelay(1),xzatrlen(4); var : xzposition(0), xzUpCh(0), xzDnCh(0),zxpredayindex(0),xzexitdate(0),xzpremarketposi(0), xzpredayindex(0),xzgappredayindex(0), xzmarketposi(0,data3),xzbarssince(0),xzEntryPricee(0),xzentryindex(0),xzgapindex(0); if data1(date) !=data1(date[1]) then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉) { xzUpCh = data3(dayOpen)+(data3(dayhigh(1))-data3(daylow(1)))*xzlen2; xzDnch = data3(dayOpen)-(data3(dayhigh(1))-data3(daylow(1)))*xzlen2; //method에 따른 var1, var2 변수 결정 If xzmethod==1 then { Var1=data3(atr(xzlen)); Var2=data3(atr(xzlen1)); } Else if xzmethod==2 then { Var20=data3(high)-data3(low); Var1=data3(ma(Var20,xzlen)); Var2=data3(ma(Var20,xzlen1)); } Condition1= data3(sdate[1])==xzexitdate And xzpremarketposi==1 ; //최근청산날짜가 금일이고 직전이 매수 Condition2= data3(sdate[1])==xzexitdate And xzpremarketposi==-1; //최근청산날짜가 금일이고 직전이 매도 If Var1<var2 then //var1과 var2의 이평값 비교 Var10=1; Else Var10=0; # } If data3(highest(Var10,xzdelay))==1 then { //delay봉갯수동안 최고 var10값이 1이면 If data3(stime)<150000 then { //고가가 지정가보다 낮으면 If Condition1==False And data3(high)<xzUpCh and xzmarketposi<>1 then { xzposition = 1; } //저가가 지정가보다 높으면 If Condition2==False And data3(low)>xzDnCh and xzmarketposi<>-1 then { xzposition = -1; } //고가가 지정가보다 높으면 If Condition1==False And data3(high)>xzUpCh and xzmarketposi<>1 then { xzposition = 1; } //저가가 지정가보다 낮으면 If Condition2==False And data3(low)<xzDnCh and xzmarketposi<>-1 then { xzposition = -1; print("BB.txt","Condition2= %.3f,low= %.3f, DnCh= %.3f, xzmarketposi= %.3f",Condition2,data3(low),xzDnCh,xzmarketposi); } Print("BB1.txt","Condition2= %.3f,low= %.3f, DnCh= %.3f, xzmarketposi= %.3f",Condition2,data3(low),xzDnCh,xzmarketposi); } } //청산 If xzmarketposi<>0 then { if data3(c)<=data3(highest(high,xzbarsSince+1))-data3(atr(xzatrlen)*xzs1) then xzmarketposi=0; if data3(c)>=data3(lowest(low,xzbarsSince+1))+data3(atr(xzatrlen)*xzs1) then { xzmarketposi=0; } } } ############################################################################# if xzMarketPosi != 1 && xzposition == 1 then { if xzMarketposi == -1 Then { xzpremarketposi=-1; xzexitdate=date; } xzmarketposi=1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if xzMarketPosi != -1 && xzposition == -1 then { if xzMarketposi == 1 Then { xzpremarketposi=1; xzexitdate=date; } xzmarketposi=-1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if xzMarketPosi == -1 && xzposition == 1 then #&& zgap < zshortarea { if xzMarketposi == -1 Then { xzpremarketposi=-1; xzexitdate=date; } xzmarketposi=0; } else if xzMarketPosi == 1 && xzposition == -1 then #&& zgap > zlongarea { if xzMarketposi == 1 Then { xzpremarketposi=1; xzexitdate=date; } xzmarketposi=0; } ######################################################################## ############################################################################## if xzMarketPosi == 1 then {buy(); } else if xzMarketPosi == -1 then {sell(); } Else {exitlong(); exitshort(); } 전화주시기 바랍니다. 02-3453-1060 즐거운 하루되세요 > Polaris 님이 쓴 글입니다. > 제목 : 수식이 걸리지 않습니다. > 수고하십니다. 다음 시스템 식에서 If Condition2==False And data3(low)<xzDnCh and xzmarketposi<>-1 then 문에 조건이 합당한 경우에도 비켜가는 일이 생깁니다. 위의 수식 안팎으로 디버그를 해 보았을 때 2008년 1월 11일의 경우에 디버그창을 캡쳐한 겻과 같이 그 수식을 비켜갑니다.외부에 디버그해서 보면 위의 수식을 만족하는 데도 그렇네요. 이유가 궁금합니다.. data1은 5분봉, data2는 30분봉, data3는 일봉입니다.2008년도1월1일부터입니다. Input : xzlen(1), xzlen1(12), xzlen2(0.16), xzs1(5), xzmethod(1), xzdelay(1),xzatrlen(4); var : xzposition(0), xzUpCh(0), xzDnCh(0),zxpredayindex(0),xzexitdate(0),xzpremarketposi(0), xzpredayindex(0),xzgappredayindex(0), xzmarketposi(0,data3),xzbarssince(0),xzEntryPricee(0),xzentryindex(0),xzgapindex(0); if data1(date) !=data1(date[1]) then // 날짜가 변경되는 봉에서(분봉에서 첫번째 봉) { xzUpCh = data3(dayOpen)+(data3(dayhigh(1))-data3(daylow(1)))*xzlen2; xzDnch = data3(dayOpen)-(data3(dayhigh(1))-data3(daylow(1)))*xzlen2; //method에 따른 var1, var2 변수 결정 If xzmethod==1 then { Var1=data3(atr(xzlen)); Var2=data3(atr(xzlen1)); } Else if xzmethod==2 then { Var20=data3(high)-data3(low); Var1=data3(ma(Var20,xzlen)); Var2=data3(ma(Var20,xzlen1)); } Condition1= data3(sdate[1])==xzexitdate And xzpremarketposi==1 ; //최근청산날짜가 금일이고 직전이 매수 Condition2= data3(sdate[1])==xzexitdate And xzpremarketposi==-1; //최근청산날짜가 금일이고 직전이 매도 If Var1<var2 then //var1과 var2의 이평값 비교 Var10=1; Else Var10=0; # } If data3(highest(Var10,xzdelay))==1 then { //delay봉갯수동안 최고 var10값이 1이면 If data3(stime)<150000 then { //고가가 지정가보다 낮으면 If Condition1==False And data3(high)<xzUpCh and xzmarketposi<>1 then { xzposition = 1; } //저가가 지정가보다 높으면 If Condition2==False And data3(low)>xzDnCh and xzmarketposi<>-1 then { xzposition = -1; } //고가가 지정가보다 높으면 If Condition1==False And data3(high)>xzUpCh and xzmarketposi<>1 then { xzposition = 1; } //저가가 지정가보다 낮으면 If Condition2==False And data3(low)<xzDnCh and xzmarketposi<>-1 then { xzposition = -1; MessageLog("Condition2= %.3f,low= %.3f, DnCh= %.3f, xzmarketposi= %.3f",Condition2,data3(low),xzDnCh,xzmarketposi); } #MessageLog("Condition2= %.3f,low= %.3f, DnCh= %.3f, xzmarketposi= %.3f",Condition2,data3(low),xzDnCh,xzmarketposi); } } //청산 If xzmarketposi<>0 then { if data3(c)<=data3(highest(high,xzbarsSince+1))-data3(atr(xzatrlen)*xzs1) then xzmarketposi=0; if data3(c)>=data3(lowest(low,xzbarsSince+1))+data3(atr(xzatrlen)*xzs1) then { xzmarketposi=0; } } } ############################################################################# if xzMarketPosi != 1 && xzposition == 1 then { if xzMarketposi == -1 Then { xzpremarketposi=-1; xzexitdate=date; } xzmarketposi=1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if xzMarketPosi != -1 && xzposition == -1 then { if xzMarketposi == 1 Then { xzpremarketposi=1; xzexitdate=date; } xzmarketposi=-1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if xzMarketPosi == -1 && xzposition == 1 then #&& zgap < zshortarea { if xzMarketposi == -1 Then { xzpremarketposi=-1; xzexitdate=date; } xzmarketposi=0; } else if xzMarketPosi == 1 && xzposition == -1 then #&& zgap > zlongarea { if xzMarketposi == 1 Then { xzpremarketposi=1; xzexitdate=date; } xzmarketposi=0; } ######################################################################## ############################################################################## if xzMarketPosi == 1 then {buy(); } else if xzMarketPosi == -1 then {sell(); } Else {exitlong(); exitshort(); }