커뮤니티
수식이 걸리지 않습니다.
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. 디버그캡쳐 창.jpg (0.43 MB)
답변 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();
}