커뮤니티

문의드립니다

프로필 이미지
루라라라
2024-08-26 14:52:04
799
글번호 182842
답변완료

첨부 이미지

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);