커뮤니티
질문있습니다.
2018-02-08 01:34:57
160
글번호 116425
현물시스템 3분봉 3000봉에 참조데이타로 지수연결선물 3분봉 3000봉으로 지수 이평선을 보고 매수매도를 결정하려고하는 시스템을 구현하려고합니다.
var : mt_sum3(0),mt_sum5(0),mt_sum10(0),mt_sum15(0),mt_sum20(0);
var : mt_ma3(0),mt_ma5(0),mt_ma10(0),mt_ma15(0),mt_ma20(0);
var : mt_ma3Flag(0),mt_ma5Flag(0),mt_ma10Flag(0),mt_ma15Flag(0),mt_ma20Flag(0);
var : mt_10(0),mt_20(0),mt_30(0),mt_40(0),mt_120(0),mt_600(0);
var : mt_buyFlag(1),mt_sellFlag(0),mt_changeFlag(0),mt_change_t1(0),mt_change_t2(0);
var : mt_buyfactor(0);
var : i(0);
if index==0 Then{
ClearDebug;
mt_10=30/BarInterval;
mt_20=60/BarInterval;
mt_30=90/BarInterval;
mt_40=120/BarInterval;
mt_120=360/BarInterval;
mt_600=600/BarInterval;
}
if DayIndex==0 Then{
mt_sum3 = 0;
mt_sum5 = 0;
mt_sum10 = 0;
mt_sum15 = 0;
mt_sum20 = 0;
for i=1 to 19 {
if i<3 Then
mt_sum3 = mt_sum3 + DayClose(i);
if i<5 Then
mt_sum5 = mt_sum5 + DayClose(i);
if i<10 Then
mt_sum10 = mt_sum10 + DayClose(i);
if i<15 Then
mt_sum15 = mt_sum15 + DayClose(i);
mt_sum20 = mt_sum20 + DayClose(i);
}
}
mt_ma3 = (mt_sum3 + DayClose(0))/3;
mt_ma5 = (mt_sum5 + DayClose(0))/5;
mt_ma10 = (mt_sum10 + DayClose(0))/10;
mt_ma15 = (mt_sum15 + DayClose(0))/15;
mt_ma20 = (mt_sum20 + DayClose(0))/20;
MessageLog("%.f %.f %.f",mt_ma3,mt_ma5,mt_ma10);
MessageLog("%.f %.f %.f",DayClose(0),DayClose(1),DayClose(2));
if(mt_ma3<c)Then{
mt_ma3Flag=1;
}Else
mt_ma3Flag=0;
if(mt_ma5<c)Then{
mt_ma5Flag=1;
}Else
mt_ma5Flag=0;
if(mt_ma10<c)Then{
mt_ma10Flag=1;
}Else
mt_ma10Flag=0;
if(mt_ma15<c)Then{
mt_ma15Flag=1;
}Else
mt_ma15Flag=0;
if(mt_ma20*0.99<c)Then{
mt_ma20Flag=1;
}Else
mt_ma20Flag=0;
//지수로 확인하는 것
if(DayIndex==0)Then{
mt_changeFlag = 0;
mt_change_t1 = 0;
mt_change_t2 = 0;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma20Flag==0)Then{
mt_sellFlag = 1;
mt_buyFlag = 0;
MessageLog("모두팔기!1");
}
if(mt_ma20Flag==0&&(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag>=2))Then{
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_changeFlag==0)Then{
if(DayHigh*0.985>c||DayClose(1)*0.985>c)Then{
mt_buyFlag = 0;
}
if(DayHigh*0.98>c||DayClose(1)*0.98>c)Then{
mt_buyFlag = 0;
mt_sellFlag = 1;
MessageLog("모두팔기!2");
}
}
if(mt_buyFlag==0)Then{
if(ma(c,mt_20)>ma(c,mt_120))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1==1||mt_change_t2==1)Then{
mt_changeFlag = 1;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
}
if(mt_changeFlag==1)Then{
if(ma(c,mt_20)>ma(c,mt_120))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1+mt_change_t2==0)Then{
mt_changeFlag = 0;
mt_buyFlag = 0;
}
}
//20선 위
if(mt_buyFlag==1&&mt_ma20Flag==1)Then{
mt_buyfactor = ((mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma10Flag)*10+60)/100;
Plot1(mt_buyfactor);
}
//20선 아래
if(mt_buyFlag==1&&mt_ma20Flag==0)Then{
var1 = 0;
if(ma(c,mt_20)>ma(c,mt_120))Then
var1 = var1+1;
if(Lowest(h,mt_600)[15]*1.005<c)Then
var1 = var1+1;
if(Lowest(h,mt_600)[30]*1.005<c)Then
var1 = var1+1;
if(ma(c,mt_10)*1.01<c)Then
var1 = var1+1;
if(Highest(h,mt_10)[2]*1.005<c)Then
var1 = var1+1;
mt_buyfactor = (var1*10)/100;
Plot2(mt_buyfactor);
}
위의 식은 일반적으로 연결선물지수 차트에 지표로 사용하는 것입니다.
위에 것을 현물 차트(3분봉 3000봉)에 참조데이터 연결선물지수(3분봉 3000봉)인 곳에서 사용할수 있도록 변환을 아래와 같이하였지만 정상작동하지않습니다.
var : mt_sum3(0,data2),mt_sum5(0,data2),mt_sum10(0,data2),mt_sum15(0,data2),mt_sum20(0,data2);
var : mt_ma3(0,data2),mt_ma5(0,data2),mt_ma10(0,data2),mt_ma15(0,data2),mt_ma20(0,data2);
var : mt_ma3Flag(0,data2),mt_ma5Flag(0,data2),mt_ma10Flag(0,data2),mt_ma15Flag(0,data2),mt_ma20Flag(0,data2);
var : mt_10(0,data2),mt_20(0,data2),mt_30(0,data2),mt_40(0,data2),mt_120(0,data2),mt_600(0,data2);
var : mt_buyFlag(1,data2),mt_sellFlag(0,data2),mt_changeFlag(0,data2),mt_change_t1(0,data2),mt_change_t2(0,data2);
var : mt_buyfactor(0,data2);
var : i(0,data2);
if index==0 Then{
ClearDebug;
mt_10=30/data2(BarInterval);
mt_20=60/data2(BarInterval);
mt_30=90/data2(BarInterval);
mt_40=120/data2(BarInterval);
mt_120=360/data2(BarInterval);
mt_600=600/data2(BarInterval);
}
if DayIndex==0 Then{
mt_sum3 = 0;
mt_sum5 = 0;
mt_sum10 = 0;
mt_sum15 = 0;
mt_sum20 = 0;
for i=1 to 19 {
if i<3 Then
mt_sum3 = data2(mt_sum3 + CloseD(i));
if i<5 Then
mt_sum5 = data2(mt_sum5 + CloseD(i));
if i<10 Then
mt_sum10 = data2(mt_sum10 + CloseD(i));
if i<15 Then
mt_sum15 = data2(mt_sum15 + CloseD(i));
mt_sum20 = data2(mt_sum20 + CloseD(i));
}
}
mt_ma3 = data2((mt_sum3 + CloseD(0))/3);
mt_ma5 = data2((mt_sum5 + CloseD(0))/5);
mt_ma10 = data2((mt_sum10 + CloseD(0))/10);
mt_ma15 = data2((mt_sum15 + CloseD(0))/15);
mt_ma20 = data2((mt_sum20 + CloseD(0))/20);
MessageLog("%.f %.f %.f",data2(mt_ma3),data2(mt_ma5),data2(mt_ma10));
MessageLog("%.f %.f %.f",data2(CloseD(0)),data2(CloseD(1)),data2(CloseD(2)));
if(mt_ma3<c)Then{
mt_ma3Flag=1;
}Else
mt_ma3Flag=0;
if(mt_ma5<c)Then{
mt_ma5Flag=1;
}Else
mt_ma5Flag=0;
if(mt_ma10<c)Then{
mt_ma10Flag=1;
}Else
mt_ma10Flag=0;
if(mt_ma15<c)Then{
mt_ma15Flag=1;
}Else
mt_ma15Flag=0;
if(mt_ma20*0.99<c)Then{
mt_ma20Flag=1;
}Else
mt_ma20Flag=0;
//지수로 확인하는 것
if(DayIndex==0)Then{
mt_changeFlag = 0;
mt_change_t1 = 0;
mt_change_t2 = 0;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma20Flag==0)Then{
mt_sellFlag = 1;
mt_buyFlag = 0;
//MessageLog("모두팔기!1");
}
if(mt_ma20Flag==0&&(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag>=2))Then{
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_changeFlag==0)Then{
if(data2(HighD(0)*0.985>c||CloseD(1)*0.985>c))Then{
mt_buyFlag = 0;
}
if(data2(HighD(0)*0.98>c||CloseD(1)*0.98>c))Then{
mt_buyFlag = 0;
mt_sellFlag = 1;
//MessageLog("모두팔기!2");
}
}
if(mt_buyFlag==0)Then{
if(data2(ma(c,mt_20)>ma(c,mt_120)))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if(data2((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c)))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1==1||mt_change_t2==1)Then{
mt_changeFlag = 1;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
}
if(mt_changeFlag==1)Then{
if(data2(ma(c,mt_20)>ma(c,mt_120)))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if(data2((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c)))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1+mt_change_t2==0)Then{
mt_changeFlag = 0;
mt_buyFlag = 0;
}
}
//20선 위
if(mt_buyFlag==1&&mt_ma20Flag==1)Then{
mt_buyfactor = ((mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma10Flag)*10+60)/100;
Plot1(mt_buyfactor);
}
//20선 아래
if(mt_buyFlag==1&&mt_ma20Flag==0)Then{
var1 = 0;
if(data2(ma(c,mt_20)>ma(c,mt_120)))Then
var1 = var1+1;
if(data2(Lowest(h,mt_600)[15]*1.005<c))Then
var1 = var1+1;
if(data2(Lowest(h,mt_600)[30]*1.005<c))Then
var1 = var1+1;
if(data2(ma(c,mt_10)*1.01<c))Then
var1 = var1+1;
if(data2(Highest(h,mt_10)[2]*1.005<c))Then
var1 = var1+1;
mt_buyfactor = (var1*10)/100;
Plot2(mt_buyfactor);
}
어디가어떻게 잘못되었는지 알려주시면 감사하겠습니다
감사합니다
답변 1
예스스탁 예스스탁 답변
2018-02-08 14:10:38
안녕하세요
예스스탁입니다.
data2의 안의 함수를 for문으로 루프를 돌리면 안됩니다,
아래와 같이 배열변수 이용해 별도로 일간 고저종가 계산후 해당 배열을 루프로 돌리셔야 합니다.
var : mt_sum3(0,data2),mt_sum5(0,data2),mt_sum10(0,data2),mt_sum15(0,data2),mt_sum20(0,data2);
var : mt_ma3(0,data2),mt_ma5(0,data2),mt_ma10(0,data2),mt_ma15(0,data2),mt_ma20(0,data2);
var : mt_ma3Flag(0,data2),mt_ma5Flag(0,data2),mt_ma10Flag(0,data2),mt_ma15Flag(0,data2),mt_ma20Flag(0,data2);
var : mt_10(0),mt_20(0,data2),mt_30(0,data2),mt_40(0,data2),mt_120(0,data2),mt_600(0,data2);
var : mt_buyFlag(1,data2),mt_sellFlag(0,data2),mt_changeFlag(0,data2),mt_change_t1(0,data2),mt_change_t2(0,data2);
var : mt_buyfactor(0,data2),V1(0,data2);
var : cnt(0,data2);
Array : C2[100](0,data2),H2[100](0,data2),L2[100](0,data2);
if data2(bdate != bdate[1]) Then
{
H2[0] = data2(H);
L2[0] = data2(L);
for cnt = 1 to 99{
C2[cnt] = C2[cnt-1][1];
H2[cnt] = H2[cnt-1][1];
L2[cnt] = L2[cnt-1][1];
}
}
if data2(H) > H2[0] Then
H2[0] = data2(h);
if data2(L) < L2[0] Then
L2[0] = data2(L);
C2[0] = data2(c);
if data2(index==0) Then{
mt_10=30/BarInterval;
mt_20=60/BarInterval;
mt_30=90/BarInterval;
mt_40=120/BarInterval;
mt_120=360/BarInterval;
mt_600=600/BarInterval;
}
if data2(DayIndex==0) Then{
mt_sum3 = 0;
mt_sum5 = 0;
mt_sum10 = 0;
mt_sum15 = 0;
mt_sum20 = 0;
for cnt =1 to 19 {
if cnt<3 Then
mt_sum3 = mt_sum3 + C2[cnt];
if cnt<5 Then
mt_sum5 = mt_sum5 + C2[cnt];
if cnt<10 Then
mt_sum10 = mt_sum10 + C2[cnt];
if cnt<15 Then
mt_sum15 = mt_sum15 + C2[cnt];
mt_sum20 = mt_sum20 + C2[cnt];
}
}
mt_ma3 = (mt_sum3 + C2[0])/3;
mt_ma5 = (mt_sum5 + C2[0])/5;
mt_ma10 = (mt_sum10 + C2[0])/10;
mt_ma15 = (mt_sum15 + C2[0])/15;
mt_ma20 = (mt_sum20 + C2[0])/20;
MessageLog("%.f %.f %.f",mt_ma3,mt_ma5,mt_ma10);
MessageLog("%.f %.f %.f",C2[0],C2[1],C2[2]);
if data2((mt_ma3<c))Then{
mt_ma3Flag=1;
}Else
mt_ma3Flag=0;
if data2((mt_ma5<c))Then{
mt_ma5Flag=1;
}Else
mt_ma5Flag=0;
if data2((mt_ma10<c))Then{
mt_ma10Flag=1;
}Else
mt_ma10Flag=0;
if data2((mt_ma15<c))Then{
mt_ma15Flag=1;
}Else
mt_ma15Flag=0;
if data2((mt_ma20*0.99<c))Then{
mt_ma20Flag=1;
}Else
mt_ma20Flag=0;
//지수로 확인하는 것
if data2((DayIndex==0)) Then{
mt_changeFlag = 0;
mt_change_t1 = 0;
mt_change_t2 = 0;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if data2((mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma20Flag==0))Then{
mt_sellFlag = 1;
mt_buyFlag = 0;
MessageLog("모두팔기!1");
}
if data2((mt_ma20Flag==0&&(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag>=2))) Then{
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if data2((mt_changeFlag==0)) Then{
if data2((H2[0]*0.985>c|| C2[1]*0.985>c)) Then{
mt_buyFlag = 0;
}
if data2((H2[0]*0.98>c|| C2[1]*0.98>c)) Then{
mt_buyFlag = 0;
mt_sellFlag = 1;
MessageLog("모두팔기!2");
}
}
if data2((mt_buyFlag==0)) Then{
if data2((ma(c,mt_20)>ma(c,mt_120))) Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if data2(((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))) Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if data2((mt_change_t1==1||mt_change_t2==1)) Then{
mt_changeFlag = 1;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
}
if data2((mt_changeFlag==1)) Then{
if data2((ma(c,mt_20)>ma(c,mt_120))) Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if data2(((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))) Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if data2((mt_change_t1+mt_change_t2==0)) Then{
mt_changeFlag = 0;
mt_buyFlag = 0;
}
}
//20선 위
if(mt_buyFlag==1&&mt_ma20Flag==1)Then{
mt_buyfactor = ((mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma10Flag)*10+60)/100;
Plot1(mt_buyfactor);
}
//20선 아래
if(mt_buyFlag==1&&mt_ma20Flag==0)Then{
var1 = 0;
if(ma(c,mt_20)>ma(c,mt_120))Then
var1 = var1+1;
if(Lowest(h,mt_600)[15]*1.005<c)Then
var1 = var1+1;
if(Lowest(h,mt_600)[30]*1.005<c)Then
var1 = var1+1;
if(ma(c,mt_10)*1.01<c)Then
var1 = var1+1;
if(Highest(h,mt_10)[2]*1.005<c)Then
var1 = var1+1;
mt_buyfactor = (var1*10)/100;
Plot2(mt_buyfactor);
}
즐거운 하루되세요
> 여유로운투자 님이 쓴 글입니다.
> 제목 : 질문있습니다.
> 현물시스템 3분봉 3000봉에 참조데이타로 지수연결선물 3분봉 3000봉으로 지수 이평선을 보고 매수매도를 결정하려고하는 시스템을 구현하려고합니다.
var : mt_sum3(0),mt_sum5(0),mt_sum10(0),mt_sum15(0),mt_sum20(0);
var : mt_ma3(0),mt_ma5(0),mt_ma10(0),mt_ma15(0),mt_ma20(0);
var : mt_ma3Flag(0),mt_ma5Flag(0),mt_ma10Flag(0),mt_ma15Flag(0),mt_ma20Flag(0);
var : mt_10(0),mt_20(0),mt_30(0),mt_40(0),mt_120(0),mt_600(0);
var : mt_buyFlag(1),mt_sellFlag(0),mt_changeFlag(0),mt_change_t1(0),mt_change_t2(0);
var : mt_buyfactor(0);
var : i(0);
if index==0 Then{
ClearDebug;
mt_10=30/BarInterval;
mt_20=60/BarInterval;
mt_30=90/BarInterval;
mt_40=120/BarInterval;
mt_120=360/BarInterval;
mt_600=600/BarInterval;
}
if DayIndex==0 Then{
mt_sum3 = 0;
mt_sum5 = 0;
mt_sum10 = 0;
mt_sum15 = 0;
mt_sum20 = 0;
for i=1 to 19 {
if i<3 Then
mt_sum3 = mt_sum3 + DayClose(i);
if i<5 Then
mt_sum5 = mt_sum5 + DayClose(i);
if i<10 Then
mt_sum10 = mt_sum10 + DayClose(i);
if i<15 Then
mt_sum15 = mt_sum15 + DayClose(i);
mt_sum20 = mt_sum20 + DayClose(i);
}
}
mt_ma3 = (mt_sum3 + DayClose(0))/3;
mt_ma5 = (mt_sum5 + DayClose(0))/5;
mt_ma10 = (mt_sum10 + DayClose(0))/10;
mt_ma15 = (mt_sum15 + DayClose(0))/15;
mt_ma20 = (mt_sum20 + DayClose(0))/20;
MessageLog("%.f %.f %.f",mt_ma3,mt_ma5,mt_ma10);
MessageLog("%.f %.f %.f",DayClose(0),DayClose(1),DayClose(2));
if(mt_ma3<c)Then{
mt_ma3Flag=1;
}Else
mt_ma3Flag=0;
if(mt_ma5<c)Then{
mt_ma5Flag=1;
}Else
mt_ma5Flag=0;
if(mt_ma10<c)Then{
mt_ma10Flag=1;
}Else
mt_ma10Flag=0;
if(mt_ma15<c)Then{
mt_ma15Flag=1;
}Else
mt_ma15Flag=0;
if(mt_ma20*0.99<c)Then{
mt_ma20Flag=1;
}Else
mt_ma20Flag=0;
//지수로 확인하는 것
if(DayIndex==0)Then{
mt_changeFlag = 0;
mt_change_t1 = 0;
mt_change_t2 = 0;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma20Flag==0)Then{
mt_sellFlag = 1;
mt_buyFlag = 0;
MessageLog("모두팔기!1");
}
if(mt_ma20Flag==0&&(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag>=2))Then{
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_changeFlag==0)Then{
if(DayHigh*0.985>c||DayClose(1)*0.985>c)Then{
mt_buyFlag = 0;
}
if(DayHigh*0.98>c||DayClose(1)*0.98>c)Then{
mt_buyFlag = 0;
mt_sellFlag = 1;
MessageLog("모두팔기!2");
}
}
if(mt_buyFlag==0)Then{
if(ma(c,mt_20)>ma(c,mt_120))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1==1||mt_change_t2==1)Then{
mt_changeFlag = 1;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
}
if(mt_changeFlag==1)Then{
if(ma(c,mt_20)>ma(c,mt_120))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1+mt_change_t2==0)Then{
mt_changeFlag = 0;
mt_buyFlag = 0;
}
}
//20선 위
if(mt_buyFlag==1&&mt_ma20Flag==1)Then{
mt_buyfactor = ((mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma10Flag)*10+60)/100;
Plot1(mt_buyfactor);
}
//20선 아래
if(mt_buyFlag==1&&mt_ma20Flag==0)Then{
var1 = 0;
if(ma(c,mt_20)>ma(c,mt_120))Then
var1 = var1+1;
if(Lowest(h,mt_600)[15]*1.005<c)Then
var1 = var1+1;
if(Lowest(h,mt_600)[30]*1.005<c)Then
var1 = var1+1;
if(ma(c,mt_10)*1.01<c)Then
var1 = var1+1;
if(Highest(h,mt_10)[2]*1.005<c)Then
var1 = var1+1;
mt_buyfactor = (var1*10)/100;
Plot2(mt_buyfactor);
}
위의 식은 일반적으로 연결선물지수 차트에 지표로 사용하는 것입니다.
위에 것을 현물 차트(3분봉 3000봉)에 참조데이터 연결선물지수(3분봉 3000봉)인 곳에서 사용할수 있도록 변환을 아래와 같이하였지만 정상작동하지않습니다.
var : mt_sum3(0,data2),mt_sum5(0,data2),mt_sum10(0,data2),mt_sum15(0,data2),mt_sum20(0,data2);
var : mt_ma3(0,data2),mt_ma5(0,data2),mt_ma10(0,data2),mt_ma15(0,data2),mt_ma20(0,data2);
var : mt_ma3Flag(0,data2),mt_ma5Flag(0,data2),mt_ma10Flag(0,data2),mt_ma15Flag(0,data2),mt_ma20Flag(0,data2);
var : mt_10(0,data2),mt_20(0,data2),mt_30(0,data2),mt_40(0,data2),mt_120(0,data2),mt_600(0,data2);
var : mt_buyFlag(1,data2),mt_sellFlag(0,data2),mt_changeFlag(0,data2),mt_change_t1(0,data2),mt_change_t2(0,data2);
var : mt_buyfactor(0,data2);
var : i(0,data2);
if index==0 Then{
ClearDebug;
mt_10=30/data2(BarInterval);
mt_20=60/data2(BarInterval);
mt_30=90/data2(BarInterval);
mt_40=120/data2(BarInterval);
mt_120=360/data2(BarInterval);
mt_600=600/data2(BarInterval);
}
if DayIndex==0 Then{
mt_sum3 = 0;
mt_sum5 = 0;
mt_sum10 = 0;
mt_sum15 = 0;
mt_sum20 = 0;
for i=1 to 19 {
if i<3 Then
mt_sum3 = data2(mt_sum3 + CloseD(i));
if i<5 Then
mt_sum5 = data2(mt_sum5 + CloseD(i));
if i<10 Then
mt_sum10 = data2(mt_sum10 + CloseD(i));
if i<15 Then
mt_sum15 = data2(mt_sum15 + CloseD(i));
mt_sum20 = data2(mt_sum20 + CloseD(i));
}
}
mt_ma3 = data2((mt_sum3 + CloseD(0))/3);
mt_ma5 = data2((mt_sum5 + CloseD(0))/5);
mt_ma10 = data2((mt_sum10 + CloseD(0))/10);
mt_ma15 = data2((mt_sum15 + CloseD(0))/15);
mt_ma20 = data2((mt_sum20 + CloseD(0))/20);
MessageLog("%.f %.f %.f",data2(mt_ma3),data2(mt_ma5),data2(mt_ma10));
MessageLog("%.f %.f %.f",data2(CloseD(0)),data2(CloseD(1)),data2(CloseD(2)));
if(mt_ma3<c)Then{
mt_ma3Flag=1;
}Else
mt_ma3Flag=0;
if(mt_ma5<c)Then{
mt_ma5Flag=1;
}Else
mt_ma5Flag=0;
if(mt_ma10<c)Then{
mt_ma10Flag=1;
}Else
mt_ma10Flag=0;
if(mt_ma15<c)Then{
mt_ma15Flag=1;
}Else
mt_ma15Flag=0;
if(mt_ma20*0.99<c)Then{
mt_ma20Flag=1;
}Else
mt_ma20Flag=0;
//지수로 확인하는 것
if(DayIndex==0)Then{
mt_changeFlag = 0;
mt_change_t1 = 0;
mt_change_t2 = 0;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma20Flag==0)Then{
mt_sellFlag = 1;
mt_buyFlag = 0;
//MessageLog("모두팔기!1");
}
if(mt_ma20Flag==0&&(mt_ma3Flag+mt_ma5Flag+mt_ma10Flag>=2))Then{
mt_buyFlag = 1;
mt_sellFlag = 0;
}
if(mt_changeFlag==0)Then{
if(data2(HighD(0)*0.985>c||CloseD(1)*0.985>c))Then{
mt_buyFlag = 0;
}
if(data2(HighD(0)*0.98>c||CloseD(1)*0.98>c))Then{
mt_buyFlag = 0;
mt_sellFlag = 1;
//MessageLog("모두팔기!2");
}
}
if(mt_buyFlag==0)Then{
if(data2(ma(c,mt_20)>ma(c,mt_120)))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if(data2((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c)))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1==1||mt_change_t2==1)Then{
mt_changeFlag = 1;
mt_buyFlag = 1;
mt_sellFlag = 0;
}
}
if(mt_changeFlag==1)Then{
if(data2(ma(c,mt_20)>ma(c,mt_120)))Then{
mt_change_t1 = 1;
}Else
mt_change_t1 = 0;
if(data2((Lowest(h,mt_600)[15]*1.005<c||Lowest(h,mt_600)[30]*1.005<c)&&(ma(c,mt_10)*1.01<c||Highest(h,mt_10)[2]*1.005<c)))Then{
mt_change_t2 = 1;
}Else
mt_change_t2 = 0;
if(mt_change_t1+mt_change_t2==0)Then{
mt_changeFlag = 0;
mt_buyFlag = 0;
}
}
//20선 위
if(mt_buyFlag==1&&mt_ma20Flag==1)Then{
mt_buyfactor = ((mt_ma3Flag+mt_ma5Flag+mt_ma10Flag+mt_ma10Flag)*10+60)/100;
Plot1(mt_buyfactor);
}
//20선 아래
if(mt_buyFlag==1&&mt_ma20Flag==0)Then{
var1 = 0;
if(data2(ma(c,mt_20)>ma(c,mt_120)))Then
var1 = var1+1;
if(data2(Lowest(h,mt_600)[15]*1.005<c))Then
var1 = var1+1;
if(data2(Lowest(h,mt_600)[30]*1.005<c))Then
var1 = var1+1;
if(data2(ma(c,mt_10)*1.01<c))Then
var1 = var1+1;
if(data2(Highest(h,mt_10)[2]*1.005<c))Then
var1 = var1+1;
mt_buyfactor = (var1*10)/100;
Plot2(mt_buyfactor);
}
어디가어떻게 잘못되었는지 알려주시면 감사하겠습니다
감사합니다
다음글
이전글