커뮤니티

검색식에서 다운이 됩니다.

프로필 이미지
birdfire
2012-01-26 23:55:49
267
글번호 46975
답변완료
다음 식은 분봉에서 macd osc 그래프의 swing 저점과 고점을 판단해서 봉의 저점과 고점에 표시해 주는 검색식입니다. 그런데 swinghigh_idx = SwingHighBar(1, arr_macdosc, 10, 1, 30-1); 라인만 들어가면 다운이 되네요. 아래는 전문입니다. 확인 부탁 드리겠습니다. Input : shortPeriod(12), longPeriod(26), Period(9); Var : value(0) , macdosc(0), i(0); Var : swinglow_idx(0), swinghigh_idx(0); Var : swinglow_idx_prev(0), swinghigh_idx_prev(0); array: arr_macdosc[41](0); value = MACD(shortPeriod, longPeriod); for i = 40 downto 1 { arr_macdosc[i] = arr_macdosc[i-1]; } arr_macdosc[0] = value-ema(value,Period); swinglow_idx_prev = swinglow_idx; swinghigh_idx_prev = swinghigh_idx; /* swinglow_idx = SwingLowBar(1,L,10,1,100); swinghigh_idx = SwingHighBar(1,H,10,1,100); MessageLog( "swinglow_idx_prev=%.f, swinglow_idx=%.f, curr L=%.f, L[swinglow_idx]=%.f, L diff = %.f", swinglow_idx_prev, swinglow_idx, L, L[swinglow_idx], L[swinglow_idx]-L ); */ if CurrentBar > 40 then { swinglow_idx = SwingLowBar(1, arr_macdosc, 10, 1, 30-1); if swinglow_idx > 0 then // <- channel bar 가 그려짐. // if swinglow_idx_prev > swinglow_idx then Plot4(L[swinglow_idx], "swinglow_idx"); swinghigh_idx = SwingHighBar(1, arr_macdosc, 10, 1, 30-1); MessageLog( "CurrentBar=%.f H=%.f L=%.f", CurrentBar, swinghigh_idx, swinglow_idx ); } /* if swinglow_idx > 0 then // <- channel bar 가 그려짐. // if swinglow_idx_prev > swinglow_idx then Plot4(L[swinglow_idx], "swinglow_idx"); if swinghigh_idx > 0 then // <- channel bar 가 그려짐. // if swinghigh_idx_prev > swinghigh_idx then Plot1(H[swinghigh_idx], "swinghigh_idx"); */ //Plot1(value, "MACD"); //Plot2(ema(value,Period), "MACDSignal"); /* if macdosc > 0 then plot3(macdosc * 2, "MACDOscillator", RED); else Plot3(macdosc * 2, "MACDOscillator", BLUE); PlotBaseLine1(0, "기준선1"); */
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-01-27 14:18:53

안녕하세요 예스스탁입니다. arr_macdosc 변수는 배열변수입니다. arr_macdosc[0]과 같이 배열변수는 방번호를 꼭 지정하셔서 수식에서 사용하셔야 합니다. arr_macdosc과 같이 방번호를 지정하지 않으시면 에러가 발생하게 됩니다. 수정한 식입니다. Input : shortPeriod(12), longPeriod(26), Period(9); Var : value(0) , macdosc(0), i(0); Var : swinglow_idx(0), swinghigh_idx(0); Var : swinglow_idx_prev(0), swinghigh_idx_prev(0); array: arr_macdosc[41](0); value = MACD(shortPeriod, longPeriod); for i = 40 downto 1 { arr_macdosc[i] = arr_macdosc[i-1]; } arr_macdosc[0] = value-ema(value,Period); swinglow_idx_prev = swinglow_idx; swinghigh_idx_prev = swinghigh_idx; /* swinglow_idx = SwingLowBar(1,L,10,1,100); swinghigh_idx = SwingHighBar(1,H,10,1,100); MessageLog( "swinglow_idx_prev=%.f, swinglow_idx=%.f, curr L=%.f, L[swinglow_idx]=%.f, L diff = %.f", swinglow_idx_prev, swinglow_idx, L, L[swinglow_idx], L[swinglow_idx]-L ); */ if CurrentBar > 40 then { swinglow_idx = SwingLowBar(1, arr_macdosc[0], 10, 1, 30-1); if swinglow_idx > 0 then // <- channel bar 가 그려짐. // if swinglow_idx_prev > swinglow_idx then Plot4(L[swinglow_idx], "swinglow_idx"); swinghigh_idx = SwingHighBar(1, arr_macdosc[0], 10, 1, 30-1); MessageLog( "CurrentBar=%.f H=%.f L=%.f", CurrentBar, swinghigh_idx, swinglow_idx ); } /* if swinglow_idx > 0 then // <- channel bar 가 그려짐. // if swinglow_idx_prev > swinglow_idx then Plot4(L[swinglow_idx], "swinglow_idx"); if swinghigh_idx > 0 then // <- channel bar 가 그려짐. // if swinghigh_idx_prev > swinghigh_idx then Plot1(H[swinghigh_idx], "swinghigh_idx"); */ //Plot1(value, "MACD"); //Plot2(ema(value,Period), "MACDSignal"); /* if macdosc > 0 then plot3(macdosc * 2, "MACDOscillator", RED); else Plot3(macdosc * 2, "MACDOscillator", BLUE); PlotBaseLine1(0, "기준선1"); */ 즐거운 하루되세요 > birdfire 님이 쓴 글입니다. > 제목 : 검색식에서 다운이 됩니다. > 다음 식은 분봉에서 macd osc 그래프의 swing 저점과 고점을 판단해서 봉의 저점과 고점에 표시해 주는 검색식입니다. 그런데 swinghigh_idx = SwingHighBar(1, arr_macdosc, 10, 1, 30-1); 라인만 들어가면 다운이 되네요. 아래는 전문입니다. 확인 부탁 드리겠습니다. Input : shortPeriod(12), longPeriod(26), Period(9); Var : value(0) , macdosc(0), i(0); Var : swinglow_idx(0), swinghigh_idx(0); Var : swinglow_idx_prev(0), swinghigh_idx_prev(0); array: arr_macdosc[41](0); value = MACD(shortPeriod, longPeriod); for i = 40 downto 1 { arr_macdosc[i] = arr_macdosc[i-1]; } arr_macdosc[0] = value-ema(value,Period); swinglow_idx_prev = swinglow_idx; swinghigh_idx_prev = swinghigh_idx; /* swinglow_idx = SwingLowBar(1,L,10,1,100); swinghigh_idx = SwingHighBar(1,H,10,1,100); MessageLog( "swinglow_idx_prev=%.f, swinglow_idx=%.f, curr L=%.f, L[swinglow_idx]=%.f, L diff = %.f", swinglow_idx_prev, swinglow_idx, L, L[swinglow_idx], L[swinglow_idx]-L ); */ if CurrentBar > 40 then { swinglow_idx = SwingLowBar(1, arr_macdosc, 10, 1, 30-1); if swinglow_idx > 0 then // <- channel bar 가 그려짐. // if swinglow_idx_prev > swinglow_idx then Plot4(L[swinglow_idx], "swinglow_idx"); swinghigh_idx = SwingHighBar(1, arr_macdosc, 10, 1, 30-1); MessageLog( "CurrentBar=%.f H=%.f L=%.f", CurrentBar, swinghigh_idx, swinglow_idx ); } /* if swinglow_idx > 0 then // <- channel bar 가 그려짐. // if swinglow_idx_prev > swinglow_idx then Plot4(L[swinglow_idx], "swinglow_idx"); if swinghigh_idx > 0 then // <- channel bar 가 그려짐. // if swinghigh_idx_prev > swinghigh_idx then Plot1(H[swinghigh_idx], "swinghigh_idx"); */ //Plot1(value, "MACD"); //Plot2(ema(value,Period), "MACDSignal"); /* if macdosc > 0 then plot3(macdosc * 2, "MACDOscillator", RED); else Plot3(macdosc * 2, "MACDOscillator", BLUE); PlotBaseLine1(0, "기준선1"); */