커뮤니티

어제 문의한 것과 관련

프로필 이미지
Polaris
2009-06-19 08:57:13
932
글번호 22920
답변완료

첨부 이미지

어제 질문한 문제점은 지적하신대로 논리변수 문제였습니다. 감사드리고요. 또 하나 문제는 아래의 var10 변수의 과거값이 제1데이터 5분봉의 루틴반복 문제로 과거값이 일정하지 않습니다(캡쳐한 것 참조). 제1데이타가 5분봉이라도 하루에 한번 지나가게 if data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then 을 넣어서 하루 한번 지나가는 데도(첨부한 디버그창에 보이듯이), 변수는 5분봉 돌아가는 것을 반영하는 것 같습니다. 해결방법 부탁드립니다. Input : xzgappermit(11), 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),xzonetimeindex(0), xzmarketposi(0,data3),xzbarssince(0),xzEntryPricee(0),xzentryindex(0),xzgapindex(0); if abs(data3(dayopen())-data3(Dayclose(1)))/data3(dayopen()) > xzgappermit/1000 then { #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 data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then { If Var1<var2 then //var1과 var2의 이평값 비교 Var10=1; Else Var10=0; MessageLog("Var10= %.0f ,[1]= %.0f ,[2]= %.0f ,[3]= %.0f ,[4]= %.0f", Var10[0],Var10[1],var10[2],var10[3],var10[4]); } xzonetimeindex= data1(index); If data3(highest(Var10,xzdelay))==1 then { //delay봉갯수동안 최고 var10값이 1이면 If data3(stime)<150000 then { //고가가 지정가보다 낮으면 If Condition1==False And data3(high)<xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 높으면 If Condition2==False And data3(low)>xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } //고가가 지정가보다 높으면 If Condition1==False And data3(high)>xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 낮으면 If Condition2==False And data3(low)<xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } #MessageLog("Condition2= %s,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 data3(xzmarketposi)=0; if data3(c)>=data3(lowest(low,xzbarsSince+1))+data3(atr(xzatrlen)*xzs1) then { data3(xzmarketposi)=0; } } } ############################################################################# if data3(xzMarketPosi) != 1 && xzposition == 1 then { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) != -1 && xzposition == -1 then { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=-1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) == -1 && xzposition == 1 then #&& zgap < zshortarea { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=0; } else if xzMarketPosi == 1 && xzposition == -1 then #&& zgap > zlongarea { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=0; } ######################################################################## ############################################################################## if data3(xzMarketPosi) == 1 then {buy(); } else if data3(xzMarketPosi) == -1 then {sell(); } Else {exitlong(); exitshort(); }
시스템
답변 4
프로필 이미지

예스스탁 예스스탁 답변

2009-06-19 11:21:12

안녕하세요 예스스탁입니다. 변수를 선언하실 때 (0)이나 (false)로 선언하면 이 변수는 주종목(data1)로 이전값을 참조하게 됩니다. 그러므로 어떤변수가 있을 경우 해당변수가 data3값을 할당받는 변수라면선언하실 때 변수명(0,data3) 혹은 (false,data3)으로 선언해 주셔야 합니다. 또한 타주기를 이용하실 경우에는 각 변수가 할당받는 값이 어떤 data인지 모두 위와 같이 작성해 주시기 바랍니다. 즐거운 하루되세요 > Polaris 님이 쓴 글입니다. > 제목 : 어제 문의한 것과 관련 > 어제 질문한 문제점은 지적하신대로 논리변수 문제였습니다. 감사드리고요. 또 하나 문제는 아래의 var10 변수의 과거값이 제1데이터 5분봉의 루틴반복 문제로 과거값이 일정하지 않습니다(캡쳐한 것 참조). 제1데이타가 5분봉이라도 하루에 한번 지나가게 if data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then 을 넣어서 하루 한번 지나가는 데도(첨부한 디버그창에 보이듯이), 변수는 5분봉 돌아가는 것을 반영하는 것 같습니다. 해결방법 부탁드립니다. Input : xzgappermit(11), 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),xzonetimeindex(0), xzmarketposi(0,data3),xzbarssince(0),xzEntryPricee(0),xzentryindex(0),xzgapindex(0); if abs(data3(dayopen())-data3(Dayclose(1)))/data3(dayopen()) > xzgappermit/1000 then { #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 data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then { If Var1<var2 then //var1과 var2의 이평값 비교 Var10=1; Else Var10=0; MessageLog("Var10= %.0f ,[1]= %.0f ,[2]= %.0f ,[3]= %.0f ,[4]= %.0f", Var10[0],Var10[1],var10[2],var10[3],var10[4]); } xzonetimeindex= data1(index); If data3(highest(Var10,xzdelay))==1 then { //delay봉갯수동안 최고 var10값이 1이면 If data3(stime)<150000 then { //고가가 지정가보다 낮으면 If Condition1==False And data3(high)<xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 높으면 If Condition2==False And data3(low)>xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } //고가가 지정가보다 높으면 If Condition1==False And data3(high)>xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 낮으면 If Condition2==False And data3(low)<xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } #MessageLog("Condition2= %s,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 data3(xzmarketposi)=0; if data3(c)>=data3(lowest(low,xzbarsSince+1))+data3(atr(xzatrlen)*xzs1) then { data3(xzmarketposi)=0; } } } ############################################################################# if data3(xzMarketPosi) != 1 && xzposition == 1 then { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) != -1 && xzposition == -1 then { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=-1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) == -1 && xzposition == 1 then #&& zgap < zshortarea { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=0; } else if xzMarketPosi == 1 && xzposition == -1 then #&& zgap > zlongarea { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=0; } ######################################################################## ############################################################################## if data3(xzMarketPosi) == 1 then {buy(); } else if data3(xzMarketPosi) == -1 then {sell(); } Else {exitlong(); exitshort(); }
프로필 이미지

Polaris

2009-06-19 11:47:46

말씀하신대로 다음과 같이 바꾸어 봤는 데 변수가 제대로 나타나질 않습니다. 다시 한번 봐 주십시요, Input : xzgappermit(11), xzlen(1), xzlen1(12), xzlen2(0.16), xzs1(5), xzmethod(1), xzdelay(1),xzatrlen(4); var : xzposition(0,data3), xzUpCh(0,data3), xzDnCh(0,data3),xzentryindex(0,data3),xzexitdate(0,data3),xzpremarketposi(0,data3), xzpredayindex(0,data3),xzonetimeindex(0,data3),xzisdown(0,data3), xzmarketposi(0,data3),xzbarssince(0,data3),xzEntryPricee(0,data3); if abs(data3(dayopen())-data3(Dayclose(1)))/data3(dayopen()) > xzgappermit/1000 then { #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 data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then { If Var1<var2 then //var1과 var2의 이평값 비교 xzisdown=1; Else xzisdown=0; MessageLog("xzisdown= %.0f ,[1]= %.0f ,[2]= %.0f ,[3]= %.0f ,[4]= %.0f", xzisdown[0],xzisdown[1],xzisdown[2],xzisdown[3],xzisdown[4]); } xzonetimeindex= data1(index); If data3(highest(xzisdown,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= %s,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(); } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 어제 문의한 것과 관련 > 안녕하세요 예스스탁입니다. 변수를 선언하실 때 (0)이나 (false)로 선언하면 이 변수는 주종목(data1)로 이전값을 참조하게 됩니다. 그러므로 어떤변수가 있을 경우 해당변수가 data3값을 할당받는 변수라면선언하실 때 변수명(0,data3) 혹은 (false,data3)으로 선언해 주셔야 합니다. 또한 타주기를 이용하실 경우에는 각 변수가 할당받는 값이 어떤 data인지 모두 위와 같이 작성해 주시기 바랍니다. 즐거운 하루되세요 > Polaris 님이 쓴 글입니다. > 제목 : 어제 문의한 것과 관련 > 어제 질문한 문제점은 지적하신대로 논리변수 문제였습니다. 감사드리고요. 또 하나 문제는 아래의 var10 변수의 과거값이 제1데이터 5분봉의 루틴반복 문제로 과거값이 일정하지 않습니다(캡쳐한 것 참조). 제1데이타가 5분봉이라도 하루에 한번 지나가게 if data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then 을 넣어서 하루 한번 지나가는 데도(첨부한 디버그창에 보이듯이), 변수는 5분봉 돌아가는 것을 반영하는 것 같습니다. 해결방법 부탁드립니다. Input : xzgappermit(11), 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),xzonetimeindex(0), xzmarketposi(0,data3),xzbarssince(0),xzEntryPricee(0),xzentryindex(0),xzgapindex(0); if abs(data3(dayopen())-data3(Dayclose(1)))/data3(dayopen()) > xzgappermit/1000 then { #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 data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then { If Var1<var2 then //var1과 var2의 이평값 비교 Var10=1; Else Var10=0; MessageLog("Var10= %.0f ,[1]= %.0f ,[2]= %.0f ,[3]= %.0f ,[4]= %.0f", Var10[0],Var10[1],var10[2],var10[3],var10[4]); } xzonetimeindex= data1(index); If data3(highest(Var10,xzdelay))==1 then { //delay봉갯수동안 최고 var10값이 1이면 If data3(stime)<150000 then { //고가가 지정가보다 낮으면 If Condition1==False And data3(high)<xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 높으면 If Condition2==False And data3(low)>xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } //고가가 지정가보다 높으면 If Condition1==False And data3(high)>xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 낮으면 If Condition2==False And data3(low)<xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } #MessageLog("Condition2= %s,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 data3(xzmarketposi)=0; if data3(c)>=data3(lowest(low,xzbarsSince+1))+data3(atr(xzatrlen)*xzs1) then { data3(xzmarketposi)=0; } } } ############################################################################# if data3(xzMarketPosi) != 1 && xzposition == 1 then { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) != -1 && xzposition == -1 then { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=-1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) == -1 && xzposition == 1 then #&& zgap < zshortarea { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=0; } else if xzMarketPosi == 1 && xzposition == -1 then #&& zgap > zlongarea { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=0; } ######################################################################## ############################################################################## if data3(xzMarketPosi) == 1 then {buy(); } else if data3(xzMarketPosi) == -1 then {sell(); } Else {exitlong(); exitshort(); }
프로필 이미지

예스스탁 예스스탁 답변

2009-06-19 15:11:09

> Polaris 님이 쓴 글입니다. > 제목 : Re : Re : 어제 문의한 것과 관련 > 말씀하신대로 다음과 같이 바꾸어 봤는 데 변수가 제대로 나타나질 않습니다. 다시 한번 봐 주십시요, Input : xzgappermit(11), xzlen(1), xzlen1(12), xzlen2(0.16), xzs1(5), xzmethod(1), xzdelay(1),xzatrlen(4); var : xzposition(0,data3), xzUpCh(0,data3), xzDnCh(0,data3),xzentryindex(0,data3),xzexitdate(0,data3),xzpremarketposi(0,data3), xzpredayindex(0,data3),xzonetimeindex(0,data3),xzisdown(0,data3), xzmarketposi(0,data3),xzbarssince(0,data3),xzEntryPricee(0,data3); if abs(data3(dayopen())-data3(Dayclose(1)))/data3(dayopen()) > xzgappermit/1000 then { #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 data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then { If Var1<var2 then //var1과 var2의 이평값 비교 xzisdown=1; Else xzisdown=0; MessageLog("xzisdown= %.0f ,[1]= %.0f ,[2]= %.0f ,[3]= %.0f ,[4]= %.0f", xzisdown[0],xzisdown[1],xzisdown[2],xzisdown[3],xzisdown[4]); } xzonetimeindex= data1(index); If data3(highest(xzisdown,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= %s,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(); } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 어제 문의한 것과 관련 > 안녕하세요 예스스탁입니다. 변수를 선언하실 때 (0)이나 (false)로 선언하면 이 변수는 주종목(data1)로 이전값을 참조하게 됩니다. 그러므로 어떤변수가 있을 경우 해당변수가 data3값을 할당받는 변수라면선언하실 때 변수명(0,data3) 혹은 (false,data3)으로 선언해 주셔야 합니다. 또한 타주기를 이용하실 경우에는 각 변수가 할당받는 값이 어떤 data인지 모두 위와 같이 작성해 주시기 바랍니다. 즐거운 하루되세요 > Polaris 님이 쓴 글입니다. > 제목 : 어제 문의한 것과 관련 > 어제 질문한 문제점은 지적하신대로 논리변수 문제였습니다. 감사드리고요. 또 하나 문제는 아래의 var10 변수의 과거값이 제1데이터 5분봉의 루틴반복 문제로 과거값이 일정하지 않습니다(캡쳐한 것 참조). 제1데이타가 5분봉이라도 하루에 한번 지나가게 if data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then 을 넣어서 하루 한번 지나가는 데도(첨부한 디버그창에 보이듯이), 변수는 5분봉 돌아가는 것을 반영하는 것 같습니다. 해결방법 부탁드립니다. Input : xzgappermit(11), 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),xzonetimeindex(0), xzmarketposi(0,data3),xzbarssince(0),xzEntryPricee(0),xzentryindex(0),xzgapindex(0); if abs(data3(dayopen())-data3(Dayclose(1)))/data3(dayopen()) > xzgappermit/1000 then { #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 data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then { If Var1<var2 then //var1과 var2의 이평값 비교 Var10=1; Else Var10=0; MessageLog("Var10= %.0f ,[1]= %.0f ,[2]= %.0f ,[3]= %.0f ,[4]= %.0f", Var10[0],Var10[1],var10[2],var10[3],var10[4]); } xzonetimeindex= data1(index); If data3(highest(Var10,xzdelay))==1 then { //delay봉갯수동안 최고 var10값이 1이면 If data3(stime)<150000 then { //고가가 지정가보다 낮으면 If Condition1==False And data3(high)<xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 높으면 If Condition2==False And data3(low)>xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } //고가가 지정가보다 높으면 If Condition1==False And data3(high)>xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 낮으면 If Condition2==False And data3(low)<xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } #MessageLog("Condition2= %s,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 data3(xzmarketposi)=0; if data3(c)>=data3(lowest(low,xzbarsSince+1))+data3(atr(xzatrlen)*xzs1) then { data3(xzmarketposi)=0; } } } ############################################################################# if data3(xzMarketPosi) != 1 && xzposition == 1 then { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) != -1 && xzposition == -1 then { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=-1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) == -1 && xzposition == 1 then #&& zgap < zshortarea { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=0; } else if xzMarketPosi == 1 && xzposition == -1 then #&& zgap > zlongarea { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=0; } ######################################################################## ############################################################################## if data3(xzMarketPosi) == 1 then {buy(); } else if data3(xzMarketPosi) == -1 then {sell(); } Else {exitlong(); exitshort(); }
프로필 이미지

예스스탁 예스스탁 답변

2009-06-19 17:58:06

안녕하세요 예스스탁입니다. Input : xzgappermit(11), 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),xzonetimeindex(0), xzmarketposi(0,data3),xzbarssince(0),xzEntryPricee(0),xzentryindex(0),xzgapindex(0); var : V1(0,data1),V2(0,data1),V20(0,data1); if abs(data3(H)-data3(closed(1)))/data3(opend(0)) > xzgappermit/1000 then { xzUpCh = data3(Opend(0))+(data3(highd(1))-data3(lowd(1)))*xzlen2; xzDnch = data3(Opend(0))-(data3(highd(1))-data3(lowd(1)))*xzlen2; //method에 따른 var1, var2 변수 결정 If xzmethod==1 then { V1=data3(atr(xzlen)); V2=data3(atr(xzlen1)); } Else if xzmethod==2 then { V20=data3(high)-data3(low); V1=data3(ma(V20,xzlen)); V2=data3(ma(V20,xzlen1)); } If data3(countif(abs(H-C)/O > xzgappermit/1000 and V1 < V2 ,xzdelay)) == 1 then { //delay봉갯수동안 최고 var10값이 1이면 If data3(stime)<150000 then { //고가가 지정가보다 낮으면 If Condition1==False And data3(high)<xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 높으면 If Condition2==False And data3(low)>xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } //고가가 지정가보다 높으면 If Condition1==False And data3(high)>xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 낮으면 If Condition2==False And data3(low)<xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } #MessageLog("Condition2= %s,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 data3(xzmarketposi)=0; if data3(c)>=data3(lowest(low,xzbarsSince+1))+data3(atr(xzatrlen)*xzs1) then { data3(xzmarketposi)=0; } } } ############################################################################# if data3(xzMarketPosi) != 1 && xzposition == 1 then { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) != -1 && xzposition == -1 then { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=-1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) == -1 && xzposition == 1 then #&& zgap < zshortarea { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=0; } else if xzMarketPosi == 1 && xzposition == -1 then #&& zgap > zlongarea { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=0; } ######################################################################## ############################################################################## if data3(xzMarketPosi) == 1 then {buy(); } else if data3(xzMarketPosi) == -1 then {sell(); } Else {exitlong(); exitshort(); } 즐거운 하루되세요 > 예스스탁 님이 쓴 글입니다. > 제목 : Re : Re : Re : 전화주시기 바랍니다. 02-3453-1060 > > Polaris 님이 쓴 글입니다. > 제목 : Re : Re : 어제 문의한 것과 관련 > 말씀하신대로 다음과 같이 바꾸어 봤는 데 변수가 제대로 나타나질 않습니다. 다시 한번 봐 주십시요, Input : xzgappermit(11), xzlen(1), xzlen1(12), xzlen2(0.16), xzs1(5), xzmethod(1), xzdelay(1),xzatrlen(4); var : xzposition(0,data3), xzUpCh(0,data3), xzDnCh(0,data3),xzentryindex(0,data3),xzexitdate(0,data3),xzpremarketposi(0,data3), xzpredayindex(0,data3),xzonetimeindex(0,data3),xzisdown(0,data3), xzmarketposi(0,data3),xzbarssince(0,data3),xzEntryPricee(0,data3); if abs(data3(dayopen())-data3(Dayclose(1)))/data3(dayopen()) > xzgappermit/1000 then { #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 data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then { If Var1<var2 then //var1과 var2의 이평값 비교 xzisdown=1; Else xzisdown=0; MessageLog("xzisdown= %.0f ,[1]= %.0f ,[2]= %.0f ,[3]= %.0f ,[4]= %.0f", xzisdown[0],xzisdown[1],xzisdown[2],xzisdown[3],xzisdown[4]); } xzonetimeindex= data1(index); If data3(highest(xzisdown,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= %s,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(); } > 예스스탁 님이 쓴 글입니다. > 제목 : Re : 어제 문의한 것과 관련 > 안녕하세요 예스스탁입니다. 변수를 선언하실 때 (0)이나 (false)로 선언하면 이 변수는 주종목(data1)로 이전값을 참조하게 됩니다. 그러므로 어떤변수가 있을 경우 해당변수가 data3값을 할당받는 변수라면선언하실 때 변수명(0,data3) 혹은 (false,data3)으로 선언해 주셔야 합니다. 또한 타주기를 이용하실 경우에는 각 변수가 할당받는 값이 어떤 data인지 모두 위와 같이 작성해 주시기 바랍니다. 즐거운 하루되세요 > Polaris 님이 쓴 글입니다. > 제목 : 어제 문의한 것과 관련 > 어제 질문한 문제점은 지적하신대로 논리변수 문제였습니다. 감사드리고요. 또 하나 문제는 아래의 var10 변수의 과거값이 제1데이터 5분봉의 루틴반복 문제로 과거값이 일정하지 않습니다(캡쳐한 것 참조). 제1데이타가 5분봉이라도 하루에 한번 지나가게 if data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then 을 넣어서 하루 한번 지나가는 데도(첨부한 디버그창에 보이듯이), 변수는 5분봉 돌아가는 것을 반영하는 것 같습니다. 해결방법 부탁드립니다. Input : xzgappermit(11), 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),xzonetimeindex(0), xzmarketposi(0,data3),xzbarssince(0),xzEntryPricee(0),xzentryindex(0),xzgapindex(0); if abs(data3(dayopen())-data3(Dayclose(1)))/data3(dayopen()) > xzgappermit/1000 then { #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 data1(date) !=data1(date[1]) and data1(index) != xzonetimeindex then { If Var1<var2 then //var1과 var2의 이평값 비교 Var10=1; Else Var10=0; MessageLog("Var10= %.0f ,[1]= %.0f ,[2]= %.0f ,[3]= %.0f ,[4]= %.0f", Var10[0],Var10[1],var10[2],var10[3],var10[4]); } xzonetimeindex= data1(index); If data3(highest(Var10,xzdelay))==1 then { //delay봉갯수동안 최고 var10값이 1이면 If data3(stime)<150000 then { //고가가 지정가보다 낮으면 If Condition1==False And data3(high)<xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 높으면 If Condition2==False And data3(low)>xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } //고가가 지정가보다 높으면 If Condition1==False And data3(high)>xzUpCh and data3(xzmarketposi)<>1 then { xzposition = 1; } //저가가 지정가보다 낮으면 If Condition2==False And data3(low)<xzDnCh and data3(xzmarketposi)<>-1 then { xzposition = -1; } #MessageLog("Condition2= %s,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 data3(xzmarketposi)=0; if data3(c)>=data3(lowest(low,xzbarsSince+1))+data3(atr(xzatrlen)*xzs1) then { data3(xzmarketposi)=0; } } } ############################################################################# if data3(xzMarketPosi) != 1 && xzposition == 1 then { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) != -1 && xzposition == -1 then { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=-1; xzentryindex=data3(index); xzentrypricee=data3(c) ; } else if data3(xzMarketPosi) == -1 && xzposition == 1 then #&& zgap < zshortarea { if data3(xzMarketposi) == -1 Then { xzpremarketposi=-1; xzexitdate=date; } data3(xzmarketposi)=0; } else if xzMarketPosi == 1 && xzposition == -1 then #&& zgap > zlongarea { if data3(xzMarketposi) == 1 Then { xzpremarketposi=1; xzexitdate=date; } data3(xzmarketposi)=0; } ######################################################################## ############################################################################## if data3(xzMarketPosi) == 1 then {buy(); } else if data3(xzMarketPosi) == -1 then {sell(); } Else {exitlong(); exitshort(); }