커뮤니티

수식 변환 좀 부탁드려요

프로필 이미지
qha71
2017-05-18 18:04:42
268
글번호 109663
답변완료

첨부 이미지

멀티 챠트 수식인데 예스에 적용해보니 첨부한 화면대로 안나타나고 챠트가 나타나긴 하는데 그냥 단순하게 막대바만 나오네요! 무지한 제 짧은 지식으론 멀티챠트와 호환되는 줄 알았는데 그게 아닌것 같습니다! 첨부 그림처럼 수정 좀 부탁드려요!! 감사합니다! elder impulse(weekly) Inputs:Period0(13),Period1(12),Period2(26),Period3(9); var:macdValW(0),color(0),cnt(0),sum0(0),sum1(0),sum2(0); var:ep0(2/(period0+1)),ep1(2/(period1+1)),ep2(2/(period2+1)),ep3(2/(period3+1)); array:emaValW[2](0),emaFastW[2](0),emaSlowW[2](0),macdSigW[2](0),macdOscW[2](0); if Date[1] < Date and DayOfWeek(Date[1]) >= DayOfWeek(Date) then begin cnt = cnt + 1; if cnt <= period0 then sum0 = sum0 + C[1]; if cnt = period0 then emaValW[0] = sum0/period0; if cnt <= period1 then sum1 = sum1 + C[1]; if cnt = period1 then emaFastW[0] = sum1/period1; if cnt <= period2 then sum2 = sum2 + C[1]; if cnt = period2 then emaSlowW[0] = sum2/period2; emaValW[1] = emaValW[0]; emaFastW[1] = emaFastW[0]; emaSlowW[1] = emaSlowW[0]; macdSigW[1] = macdSigW[0]; macdOscW[1] = macdOscW[0]; end; if cnt > period0 then emaValW[0] = emaValW[1] + ep0 * ( C - emaValW[1]); if cnt > period1 then emaFastW[0] = emaFastW[1] + ep1 * ( C - emaFastW[1]); if cnt > period2 then emaSlowW[0] = emaSlowW[1] + ep2 * ( C - emaSlowW[1]); macdValW = emaFastW[0] - emaSlowW[0]; if cnt > period3 then macdSigW[0] = macdSigW[1] + ep3 * ( macdValW - macdSigW[1]); macdOscW[0] = macdValW - macdSigW[0]; if emaValW[0] > emaValW[1] and macdOscW[0] > macdOscW[1] then begin color = green; end else if emaValW[0] < emaValW[1] and macdOscW[0] < macdOscW[1] then begin color = red; end else begin color = blue; end; plot1(1,"Impulse",color); ------------------------------------------------------------------------------ elder impulse(daily) Inputs:Period0(13),Period1(12),Period2(26),Period3(9); var:macdValD(0),color(0),cnt(0),sum0(0),sum1(0),sum2(0); var:ep0(2/(period0+1)),ep1(2/(period1+1)),ep2(2/(period2+1)),ep3(2/(period3+1)); array:emaValD[2](0),emaFastD[2](0),emaSlowD[2](0),macdSigD[2](0),macdOscD[2](0); if Date[1] < Date then begin cnt = cnt + 1; if cnt <= period0 then sum0 = sum0 + C[1]; if cnt = period0 then emaValD[0] = sum0/period0; if cnt <= period1 then sum1 = sum1 + C[1]; if cnt = period1 then emaFastD[0] = sum1/period1; if cnt <= period2 then sum2 = sum2 + C[1]; if cnt = period2 then emaSlowd[0] = sum2/period2; emaValD[1] = emaValD[0]; emaFastD[1] = emaFastD[0]; emaSlowD[1] = emaSlowD[0]; macdSigD[1] = macdSigD[0]; macdOscD[1] = macdOscD[0]; end; if cnt > period0 then emaValD[0] = emaValD[1] + ep0 * ( C - emaValD[1]); if cnt > period1 then emaFastD[0] = emaFastD[1] + ep1 * ( C - emaFastD[1]); if cnt > period2 then emaSlowD[0] = emaSlowD[1] + ep2 * ( C - emaSlowD[1]); macdValD= emaFastD[0] - emaSlowD[0]; if cnt > period3 then macdSigD[0] = macdSigD[1] + ep3 * ( macdValD- macdSigD[1]); macdOscD[0] = macdValD- macdSigD[0]; if emaValD[0] > emaValD[1] and macdOscD[0] > macdOscD[1] then begin color = green; end else if emaValD[0] < emaValD[1] and macdOscD[0] < macdOscD[1] then begin color = red; end else begin color = blue; end; plot1(1,"Impulse",color); ---------------------------------------------------------------------------------------- elder impulse Inputs:Period0(13),Period1(12),Period2(26),Period3(9); var:emaVal(0),macdVal(0),macdSig(0),macdOsc(0),color(0); emaVal = XAverage(C,Period0); macdVal = MACD(C,Period1,Period2); macdSig = XAverage(macdVal ,period3); macdOsc = macdVal - macdSig; if emaVal > emaVal[1] and macdOsc > macdOsc[1] then begin color = green; end else if emaVal < emaVal[1] and macdOsc < macdOsc[1] then begin color = red; end else begin color = blue; end; plot1(1,"Impulse",color);
지표
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-05-19 13:38:12

안녕하세요 예스스탁입니다. 올려주신 3가지 식 모두 값을 1로만 출력하고 상황에 따라 색상만 달리하는 내용입니다. 막대그래프로 지정해 보시면 되는 내용입니다. 말쌈하신 내용이 봉차트 위에 출력되는 내용이면 해당 부분은 해당 수식안에 없습니다. elder impulse 수식에서 XAverage는 ema로 대체하시면 됩니다. Inputs:Period0(13),Period1(12),Period2(26),Period3(9); var:emaVal(0),macdVal(0),macdSig(0),macdOsc(0),color(0); emaVal = ema(C,Period0); macdVal = MACD(Period1,Period2); macdSig = ema(macdVal ,period3); macdOsc = macdVal - macdSig; if emaVal > emaVal[1] and macdOsc > macdOsc[1] then begin color = green; end else if emaVal < emaVal[1] and macdOsc < macdOsc[1] then begin color = red; end else begin color = blue; end; plot1(1,"Impulse",color); 즐거운 하루되세요 > qha71 님이 쓴 글입니다. > 제목 : 수식 변환 좀 부탁드려요 > 멀티 챠트 수식인데 예스에 적용해보니 첨부한 화면대로 안나타나고 챠트가 나타나긴 하는데 그냥 단순하게 막대바만 나오네요! 무지한 제 짧은 지식으론 멀티챠트와 호환되는 줄 알았는데 그게 아닌것 같습니다! 첨부 그림처럼 수정 좀 부탁드려요!! 감사합니다! elder impulse(weekly) Inputs:Period0(13),Period1(12),Period2(26),Period3(9); var:macdValW(0),color(0),cnt(0),sum0(0),sum1(0),sum2(0); var:ep0(2/(period0+1)),ep1(2/(period1+1)),ep2(2/(period2+1)),ep3(2/(period3+1)); array:emaValW[2](0),emaFastW[2](0),emaSlowW[2](0),macdSigW[2](0),macdOscW[2](0); if Date[1] < Date and DayOfWeek(Date[1]) >= DayOfWeek(Date) then begin cnt = cnt + 1; if cnt <= period0 then sum0 = sum0 + C[1]; if cnt = period0 then emaValW[0] = sum0/period0; if cnt <= period1 then sum1 = sum1 + C[1]; if cnt = period1 then emaFastW[0] = sum1/period1; if cnt <= period2 then sum2 = sum2 + C[1]; if cnt = period2 then emaSlowW[0] = sum2/period2; emaValW[1] = emaValW[0]; emaFastW[1] = emaFastW[0]; emaSlowW[1] = emaSlowW[0]; macdSigW[1] = macdSigW[0]; macdOscW[1] = macdOscW[0]; end; if cnt > period0 then emaValW[0] = emaValW[1] + ep0 * ( C - emaValW[1]); if cnt > period1 then emaFastW[0] = emaFastW[1] + ep1 * ( C - emaFastW[1]); if cnt > period2 then emaSlowW[0] = emaSlowW[1] + ep2 * ( C - emaSlowW[1]); macdValW = emaFastW[0] - emaSlowW[0]; if cnt > period3 then macdSigW[0] = macdSigW[1] + ep3 * ( macdValW - macdSigW[1]); macdOscW[0] = macdValW - macdSigW[0]; if emaValW[0] > emaValW[1] and macdOscW[0] > macdOscW[1] then begin color = green; end else if emaValW[0] < emaValW[1] and macdOscW[0] < macdOscW[1] then begin color = red; end else begin color = blue; end; plot1(1,"Impulse",color); ------------------------------------------------------------------------------ elder impulse(daily) Inputs:Period0(13),Period1(12),Period2(26),Period3(9); var:macdValD(0),color(0),cnt(0),sum0(0),sum1(0),sum2(0); var:ep0(2/(period0+1)),ep1(2/(period1+1)),ep2(2/(period2+1)),ep3(2/(period3+1)); array:emaValD[2](0),emaFastD[2](0),emaSlowD[2](0),macdSigD[2](0),macdOscD[2](0); if Date[1] < Date then begin cnt = cnt + 1; if cnt <= period0 then sum0 = sum0 + C[1]; if cnt = period0 then emaValD[0] = sum0/period0; if cnt <= period1 then sum1 = sum1 + C[1]; if cnt = period1 then emaFastD[0] = sum1/period1; if cnt <= period2 then sum2 = sum2 + C[1]; if cnt = period2 then emaSlowd[0] = sum2/period2; emaValD[1] = emaValD[0]; emaFastD[1] = emaFastD[0]; emaSlowD[1] = emaSlowD[0]; macdSigD[1] = macdSigD[0]; macdOscD[1] = macdOscD[0]; end; if cnt > period0 then emaValD[0] = emaValD[1] + ep0 * ( C - emaValD[1]); if cnt > period1 then emaFastD[0] = emaFastD[1] + ep1 * ( C - emaFastD[1]); if cnt > period2 then emaSlowD[0] = emaSlowD[1] + ep2 * ( C - emaSlowD[1]); macdValD= emaFastD[0] - emaSlowD[0]; if cnt > period3 then macdSigD[0] = macdSigD[1] + ep3 * ( macdValD- macdSigD[1]); macdOscD[0] = macdValD- macdSigD[0]; if emaValD[0] > emaValD[1] and macdOscD[0] > macdOscD[1] then begin color = green; end else if emaValD[0] < emaValD[1] and macdOscD[0] < macdOscD[1] then begin color = red; end else begin color = blue; end; plot1(1,"Impulse",color); ---------------------------------------------------------------------------------------- elder impulse Inputs:Period0(13),Period1(12),Period2(26),Period3(9); var:emaVal(0),macdVal(0),macdSig(0),macdOsc(0),color(0); emaVal = XAverage(C,Period0); macdVal = MACD(C,Period1,Period2); macdSig = XAverage(macdVal ,period3); macdOsc = macdVal - macdSig; if emaVal > emaVal[1] and macdOsc > macdOsc[1] then begin color = green; end else if emaVal < emaVal[1] and macdOsc < macdOsc[1] then begin color = red; end else begin color = blue; end; plot1(1,"Impulse",color);