커뮤니티
ma 에 대해서 다시 질문드립니다.
2017-12-11 20:25:23
160
글번호 114902
아래와 같이 답변주셨는데요
물론 말씀하신것처럼 이평계산 이상의 봉을 넣으면 잘나오고있습니다.
하지만 문제 되는점은 저는 봉수를 필요이상으로 많이넣고싶지않습니다
(차트를 수십개 띄워서 매매하는데 예스트레이더는 64bit를 지원하지 않으므로
필요이상의 봉을 하면 프로그램이 다운됩니다.)
15분봉상에서 제가 필요로 하는 봉수는 2000봉입니다.
2000봉 15분봉으로 지표를 하면 분명히 Sma11 = ma(C,i7800); 값은
Sma11 = ma(C,1560); 과 같으므로 화면상에 최근 400여 봉정도는 나타나야 된다고생각합니다
물론 2000봉에 15분봉상 ma(c,1560)으로 직접 숫자를 넣으면 잘 작동합니다
하지만 변수로 위와 같이 i7800 = 1560; Sma11 = ma(C,i7800); 넣으면 작동하지 않습니다.
이는 문법적으로는 문제없는데 기능상 문제인거같은데요
왜그런지 궁금합니다.
안녕하세요
예스스탁입니다.
차트에 지정한 기간의 이평을 계산할만큼 봉수가
충분한지 확인해 보시기 바랍니다.
첨부된 그림과 같이 이평이 정상적으로 계산되고 그려지고 있습니다.
즐거운 하루되세요
> 여유로운투자 님이 쓴 글입니다.
> 제목 : ma 값이 계산안됩니다
> //Input : DayPeriod1(5), DayPeriod2(10), DayPeriod3(20), DayPeriod4(31), DayPeriod5(60);
var : Sma1(0),Sma2(0),Sma3(0),Sma4(0),Sma5(0);
var : Sma6(0),Sma7(0),Sma8(0),Sma9(0),Sma10(0);
var : Sma11(0);
var : i650(650),i1000(1000),i1300(1300),i2000(2000),i2600(2600),i3000(3000);
var : i4000(4000),i5000(5000),i6000(6000),i7000(7000),i7800(7800);
if Index==0 Then{
ClearDebug;
if(BarInterval==3)Then{
i650 = 650;
i1000 = 1000;
i1300 = 1300;
i2000 = 2000;
i2600 = 2600;
i3000 = 3000;
i4000 = 4000;
i5000 = 5000;
i6000 = 6000;
i7000 = 7000;
i7800 = 7800;
}
if(BarInterval==5)Then{
i650 = 390;
i1000 = 600;
i1300 = 780;
i2000 = 1200;
i2600 = 1560;
i3000 = 1800;
i4000 = 2400;
i5000 = 3000;
i6000 = 3600;
i7000 = 4200;
i7800 = 4680;
}
if(BarInterval==15)Then{
i650 = 130;
i1000 = 200;
i1300 = 260;
i2000 = 400;
i2600 = 520;
i3000 = 600;
i4000 = 800;
i5000 = 1000;
i6000 = 1200;
i7000 = 1400;
i7800 = 1560;
}
//MessageLog("barin %.f",BarInterval);
}
/*
Sma1 = ma(C,Period1);
Sma2 = ma(C,Period2);
Sma3 = ma(C,Period3);
Sma4 = ma(C,Period4);
Sma5 = ma(C,Period5);
Sma6 = ma(C,Period6);
Sma7 = ma(C,Period7);
Sma8 = ma(C,Period8);
Sma9 = ma(C,Period9);
Sma10 = ma(C,Period10);
Sma11 = ma(C,Period11);
*/
Sma1 = ma(C,i650);
Sma2 = ma(C,i1000);
Sma3 = ma(C,i1300);
Sma4 = ma(C,i2000);
Sma5 = ma(C,i2600);
Sma6 = ma(C,i3000);
Sma7 = ma(C,i4000);
Sma8 = ma(C,i5000);
Sma9 = ma(C,i6000);
Sma10 = ma(C,i7000);
Sma11 = ma(C,i7800);
MessageLog("i1300 %.f %.f %.f",i7000,sma10,ma(C,i7000));
Plot1(Sma1);
Plot2(Sma2);
Plot3(Sma3);
Plot4(Sma4);
Plot5(Sma5);
Plot6(Sma6);
Plot7(Sma7);
Plot8(Sma8);
Plot9(Sma9);
Plot10(Sma10);
Plot11(Sma11);
분봉에 따라 ma 값을 변하게 하고싶습니다
즉 5분봉일때 10분봉일 때 5분봉일때 100ma를 10분봉일때 50ma 로 지표를 나타내고싶어서
위와 같이만들었는데
제대로 작동하지 않는군요
그래서 프린트해봤더니
이상합니다
ma(c,1300) 은 정확히 값을 출력하는데 ma(c,i1300) 은 값이 안나옵니다
이게 왜 이런지 궁금합니다.
i1300의 값이 정확히 바뀌는걸 분봉마다 debug 통해확인하는뎅도
ma(c,1300)으로 값을 직접 넣은것과 ma(c,i1300) 처럼 변수로 하는것의 값이 너무 다릅니다
왜그런가요?
답변 1
예스스탁 예스스탁 답변
2017-12-12 15:30:51
안녕하세요
예스스탁입니다.
var : i650(0),i1000(0),i1300(0),i2000(0),i2600(0),i3000(0);
var : i4000(0),i5000(0),i6000(0),i7000(0),i7800(0);
변수의 선언을 0으로 하셔야 합니다.
수식은 차트에 적용하면 최초에 필요한 봉수들은 산정하는데
i7800 기초값이 7800으로 하면 ma(C,i7800)의
계산에 필요한 최소봉수(MaxBarsBack)가 7800개로 지정되게 됩니다.
즐거운 하루되세요
> 여유로운투자 님이 쓴 글입니다.
> 제목 : ma 에 대해서 다시 질문드립니다.
> 아래와 같이 답변주셨는데요
물론 말씀하신것처럼 이평계산 이상의 봉을 넣으면 잘나오고있습니다.
하지만 문제 되는점은 저는 봉수를 필요이상으로 많이넣고싶지않습니다
(차트를 수십개 띄워서 매매하는데 예스트레이더는 64bit를 지원하지 않으므로
필요이상의 봉을 하면 프로그램이 다운됩니다.)
15분봉상에서 제가 필요로 하는 봉수는 2000봉입니다.
2000봉 15분봉으로 지표를 하면 분명히 Sma11 = ma(C,i7800); 값은
Sma11 = ma(C,1560); 과 같으므로 화면상에 최근 400여 봉정도는 나타나야 된다고생각합니다
물론 2000봉에 15분봉상 ma(c,1560)으로 직접 숫자를 넣으면 잘 작동합니다
하지만 변수로 위와 같이 i7800 = 1560; Sma11 = ma(C,i7800); 넣으면 작동하지 않습니다.
이는 문법적으로는 문제없는데 기능상 문제인거같은데요
왜그런지 궁금합니다.
안녕하세요
예스스탁입니다.
차트에 지정한 기간의 이평을 계산할만큼 봉수가
충분한지 확인해 보시기 바랍니다.
첨부된 그림과 같이 이평이 정상적으로 계산되고 그려지고 있습니다.
즐거운 하루되세요
> 여유로운투자 님이 쓴 글입니다.
> 제목 : ma 값이 계산안됩니다
> //Input : DayPeriod1(5), DayPeriod2(10), DayPeriod3(20), DayPeriod4(31), DayPeriod5(60);
var : Sma1(0),Sma2(0),Sma3(0),Sma4(0),Sma5(0);
var : Sma6(0),Sma7(0),Sma8(0),Sma9(0),Sma10(0);
var : Sma11(0);
var : i650(650),i1000(1000),i1300(1300),i2000(2000),i2600(2600),i3000(3000);
var : i4000(4000),i5000(5000),i6000(6000),i7000(7000),i7800(7800);
if Index==0 Then{
ClearDebug;
if(BarInterval==3)Then{
i650 = 650;
i1000 = 1000;
i1300 = 1300;
i2000 = 2000;
i2600 = 2600;
i3000 = 3000;
i4000 = 4000;
i5000 = 5000;
i6000 = 6000;
i7000 = 7000;
i7800 = 7800;
}
if(BarInterval==5)Then{
i650 = 390;
i1000 = 600;
i1300 = 780;
i2000 = 1200;
i2600 = 1560;
i3000 = 1800;
i4000 = 2400;
i5000 = 3000;
i6000 = 3600;
i7000 = 4200;
i7800 = 4680;
}
if(BarInterval==15)Then{
i650 = 130;
i1000 = 200;
i1300 = 260;
i2000 = 400;
i2600 = 520;
i3000 = 600;
i4000 = 800;
i5000 = 1000;
i6000 = 1200;
i7000 = 1400;
i7800 = 1560;
}
//MessageLog("barin %.f",BarInterval);
}
/*
Sma1 = ma(C,Period1);
Sma2 = ma(C,Period2);
Sma3 = ma(C,Period3);
Sma4 = ma(C,Period4);
Sma5 = ma(C,Period5);
Sma6 = ma(C,Period6);
Sma7 = ma(C,Period7);
Sma8 = ma(C,Period8);
Sma9 = ma(C,Period9);
Sma10 = ma(C,Period10);
Sma11 = ma(C,Period11);
*/
Sma1 = ma(C,i650);
Sma2 = ma(C,i1000);
Sma3 = ma(C,i1300);
Sma4 = ma(C,i2000);
Sma5 = ma(C,i2600);
Sma6 = ma(C,i3000);
Sma7 = ma(C,i4000);
Sma8 = ma(C,i5000);
Sma9 = ma(C,i6000);
Sma10 = ma(C,i7000);
Sma11 = ma(C,i7800);
MessageLog("i1300 %.f %.f %.f",i7000,sma10,ma(C,i7000));
Plot1(Sma1);
Plot2(Sma2);
Plot3(Sma3);
Plot4(Sma4);
Plot5(Sma5);
Plot6(Sma6);
Plot7(Sma7);
Plot8(Sma8);
Plot9(Sma9);
Plot10(Sma10);
Plot11(Sma11);
분봉에 따라 ma 값을 변하게 하고싶습니다
즉 5분봉일때 10분봉일 때 5분봉일때 100ma를 10분봉일때 50ma 로 지표를 나타내고싶어서
위와 같이만들었는데
제대로 작동하지 않는군요
그래서 프린트해봤더니
이상합니다
ma(c,1300) 은 정확히 값을 출력하는데 ma(c,i1300) 은 값이 안나옵니다
이게 왜 이런지 궁금합니다.
i1300의 값이 정확히 바뀌는걸 분봉마다 debug 통해확인하는뎅도
ma(c,1300)으로 값을 직접 넣은것과 ma(c,i1300) 처럼 변수로 하는것의 값이 너무 다릅니다
왜그런가요?
다음글
이전글