첨부 이미지
그림1
그림2
a기간 동안에는 adx(10)
b기간 동안에는 adx(20)
c기간 동안에는 adx(30)
이런식으로 기간에 따라 값이 달라지게 하려고 합니다
아래의 식을 활용해서 메세지로그를 체크하여서
실제로 기간이 바뀜에 따라 값이 잘 바뀌는지를 확인해봤습니다
기간이 바뀜에 따라 leng값, 이동평균선, atr 모두 잘 바뀌었습니다.
그런데 rsi와 adx는 기간에 상관없이 값이 0이 나옵니다.
어떻게 해결할 수 있을까요?
나스닥 분봉 차트입니다.
vars: leng(80), check(0);
if date >= 20240819 and date < 20240821 then
begin
leng = 60;
end;
if date >= 20240821 and date < 20240823 then
begin
leng = 40;
end;
if date >= 20240823 then
begin
leng = 20;
end;
//------------------------------------
//check = leng;
//MessageLog("leng 값 %.2f", check );
//check = ma(c, leng);
//MessageLog("ma 값 %.2f", check );
//check = ATr(leng);
//MessageLog("atr 값 %.2f", check );
//check = rsi(leng);
//MessageLog("rsi 값 %.2f", check );
check = ADX(leng);
MessageLog("adx 값 %.2f", check );
//------------------------------------
if ( MarketPosition <> 1 ) then buy ("롱진입",Atmarket);
if (MarketPosition == 1) then ExitLong ("TimeExitL", Atmarket);
답변 1
예스스탁
예스스탁 답변
2024-08-27 15:41:08
안녕하세요
예스스탁입니다.
RSI나 ADX와 같이 이전계산값이 필요한 계산방법을 사용하는 함수들은
미리 계산을 하고 그 값을 기간에 따라 가져와 사용하셔야 합니다.
각 기간의 지표를 별도 변수에 저장하신 후에
지정한 기간에 따라 Check변수에 할당해 사용하시면 됩니다.
vars: leng(80), check(0);
var : A1(0),A2(0),A3(0);
A1 = ADX(20);
A2 = ADX(40);
A3 = ADX(60);
if date >= 20240819 and date < 20240821 then
begin
check = A3;
end;
if date >= 20240821 and date < 20240823 then
begin
check = A2;
end;
if date >= 20240823 then
begin
check = A1;
end;
MessageLog("adx 값 %.2f", check );
//------------------------------------
if ( MarketPosition <> 1 ) then buy ("롱진입",Atmarket);
if (MarketPosition == 1) then ExitLong ("TimeExitL", Atmarket);
즐거운 하루되세요
> 루라라라 님이 쓴 글입니다.
> 제목 : 문의드립니다
> a기간 동안에는 adx(10)
b기간 동안에는 adx(20)
c기간 동안에는 adx(30)
이런식으로 기간에 따라 값이 달라지게 하려고 합니다
아래의 식을 활용해서 메세지로그를 체크하여서
실제로 기간이 바뀜에 따라 값이 잘 바뀌는지를 확인해봤습니다
기간이 바뀜에 따라 leng값, 이동평균선, atr 모두 잘 바뀌었습니다.
그런데 rsi와 adx는 기간에 상관없이 값이 0이 나옵니다.
어떻게 해결할 수 있을까요?
나스닥 분봉 차트입니다.
vars: leng(80), check(0);
if date >= 20240819 and date < 20240821 then
begin
leng = 60;
end;
if date >= 20240821 and date < 20240823 then
begin
leng = 40;
end;
if date >= 20240823 then
begin
leng = 20;
end;
//------------------------------------
//check = leng;
//MessageLog("leng 값 %.2f", check );
//check = ma(c, leng);
//MessageLog("ma 값 %.2f", check );
//check = ATr(leng);
//MessageLog("atr 값 %.2f", check );
//check = rsi(leng);
//MessageLog("rsi 값 %.2f", check );
check = ADX(leng);
MessageLog("adx 값 %.2f", check );
//------------------------------------
if ( MarketPosition <> 1 ) then buy ("롱진입",Atmarket);
if (MarketPosition == 1) then ExitLong ("TimeExitL", Atmarket);