커뮤니티

안녕하세요

프로필 이미지
회원
2012-09-10 05:57:54
302
글번호 54517
답변완료
안녕하세요 세가지 질문을 할까합니다. A) input : maP1(5),maP2(20),RSIP(9),RSIsig(10),MACDP1(12),MACDP2(26),MACDP3(9),CCIP(9),CCIsig(10); var1 = ma(C,maP1); var2 = ma(c,maP2); var3 = RSI(RSIP); var4 = ema(var3,RSIsig); var5 = MACD_OSC(MACDP1,MACDP2,MACDP3); var6 = CCI(CCIP); var7 = ema(Var6,CCIsig); if var1 > var2 and var3 > 50 and var3 > var4 and var5 > 0 and var6 > var7 Then buy(); if var1 < var2 and var3 < 50 and var3 < var4 and var5 < 0 and var6 < var7 Then sell(); 가)상기 A)식이 만족한상태에서 추가:이동평균선40일선 위매수/반대매도 추가:Stochastics(24.12.12) 시그널상향돌파시 매수/반대매도 나)가를 기준으로삼고.가)식이 만족한상태에서 가)식의2배수와 동시만족시 매수/반대매도 나)가)식이 만족한상태에서 가)식의 2배수와 3배수가동시만족시 매수/반대는 매도. **참고문의:위의식을 사용시 최소 캔들갯수을 몇개로보면될까요 감사합니다
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2012-09-10 14:08:58

안녕하세요 예스스탁입니다. 지표중 스토케스틱이나 MACD는 봉갯수에 영향을 받는 지표이므로 최소캔들갯수라는것이 없습니다. 되도록 많이 조회후 적용하셔야 합니다. 실시간 차트가 5000개봉까지 제공되므로 5000개로 셋팅하시고 적용하시기 바랍니다. 수식적으로 다른 주기의 내용을 계산한 것이므로 값이 정확치 않을 수 있습니다. 문의하신 내용의 경우 수식을 작성하는데 너무 많은 시간이 소요가 됩니다. 이후 내용은 아래 식 이용해서 수정해 사용하시기 바랍니다. 1. input : maP1(5),maP2(20),map3(40); input : RSIP(9),RSISP(10); Input :MACDP1(12),MACDP2(26),MACDP3(9); input : CCIP(9),CCIsig(10); input : StoPeriod(24), StoPeriod1(12), StoPeriod2(12); var : mav11(0),mav12(0),mav13(0); var : RSIv1(0),RSIS1(0); var : MACDO1(0); var : CCIV1(0),CCIS1(0); var : stok1(0),stod1(0); mav11 = ma(C,maP1); mav12 = ma(c,maP2); mav13 = ma(c,map3); RSIv1 = RSI(RSIP); RSIS1 = ema(RSIv1,RSISP); MACDO1 = MACD_OSC(MACDP1,MACDP2,MACDP3); CCIV1 = CCI(CCIP); CCIS1 = ema(CCIV1,CCIsig); Stok1 = Stochasticsk(StoPeriod,StoPeriod1); Stod1 = StochasticsD(StoPeriod,StoPeriod1,StoPeriod2); if mav11 > mav12 and RSIv1 > 50 and RSIV1 > RSIS1 and MACDO1 > 0 and CCIV1 > CCIS1 and C > mav13 and crossup(STok1,sTod1) Then buy(); if mav11 < mav12 and RSIv1 < 50 and RSIV1 < RSIS1 and MACDO1 < 0 and CCIV1 < CCIS1 and C < mav13 and CrossDown(STok1,sTod1) Then sell(); 2, input : maP1(5),maP2(20),map3(40); input : RSIP(9),RSISP(10); Input :MACDP1(12),MACDP2(26),MACDP3(9); input : CCIP(9),CCIsig(10); input : StoPeriod(24), StoPeriod1(12), StoPeriod2(12); var : mav11(0),mav12(0),mav13(0); var : RSI1(0),RSIS1(0); var : MACDO1(0); var : CCIV1(0),CCIS1(0); var : stok1(0),stod1(0); var : macnt2(0),macount2(0),sum21(0),mav21(0),sum22(0),mav22(0),sum23(0),mav23(0); Array : maC2[100](0),maC3[100](0); var : rSI2(0),RSIS2(0); var : RSigSum(0),Rcount2(0),RSIsig(0); Var : RCounter(0), RDownAmt(0), RUpAmt(0), RUpSum(0), RDownSum(0), RUpAvg(0), RDownAvg(0); var : RDindex(0), RPreUpAvg(0), RpreDownAvg(0),Rcnt1(0); Array : RC[100](0),RSIV1[100](0); Var : MACD1Ep1(0), MACD1JISU1(0), MACD1DINDEX1(0), MACD1PreJISU1(0); Var : MACD1Ep2(0), MACD1JISU2(0), MACD1PreJISU2(0); Var : MACD1Ep3(0), MACD1JISU3(0), MACD1PreMACDSIG(0); var : MACD1MACDVal(0),MACD1MACDSig(0),MACD1MACDOsc(0),MACD1PreMACDOsc(0); var : MACDO2(0); Var : C1Sum(0), C1Counter(0), C1MD(0), C1Avgvalue(0),C1cnt(0),C1count(0),C1sum1(0),C1mav(0); Var : C1Ep1(0), C1JISU1(0), C1DINDEX1(0), C1PreJISU1(0),CCIV2(0),CCIS2(0); Array : C1CC[100](0),C1LL[100](0),C1HH[100](0); var : s1count(0), s1highVal(0), s1lowVal(0), s1StoFastK(0), StoK2(0), StoD2(0); var : s1Ep(0), s1EP1(0), s1JISU(0), s1DINDEX(0), s1PreStoK(0), s1PreStoD(0),s1cnt(0); Array : s1HH[50](0),s1LL[50](0); mav11 = ma(C,maP1); mav12 = ma(c,maP2); mav13 = ma(c,map3); RSI1 = RSI(RSIP); RSIS1 = ema(RSI1,RSISP); MACDO1 = MACD_OSC(MACDP1,MACDP2,MACDP3); CCIV1 = CCI(CCIP); CCIS1 = ema(CCIV1,CCIsig); Stok1 = Stochasticsk(StoPeriod,StoPeriod1); Stod1 = StochasticsD(StoPeriod,StoPeriod1,StoPeriod2); value2 = TimeToMinutes(stime)%(BarInterval*2); if dayindex() == 0 or (value2 <= value2[1] and stime > stime[1]) Then{ for macnt2 = 1 to 99{ maC2[macnt2] = maC2[macnt2-1][1]; } } maC2[0] = C; sum21 = 0; sum22 = 0; sum23 = 0; for macount2 = 0 to maP3{ if macount2 < maP1 Then sum21 = sum21+maC2[macount2]; if macount2 < maP2 Then sum22 = sum22+maC2[macount2]; if macount2 < maP3 Then sum23 = sum23+maC2[macount2]; } mav21 = sum21/maP1; mav22 = sum22/maP2; mav23 = sum23/maP3; if dayindex() == 0 or (value2 <= value2[1] and stime > stime[1]) Then{ for Rcnt1 = 1 to 99{ RC[Rcnt1] = RC[Rcnt1-1][1]; } RPreUpAvg = RUpAvg[1]; RpreDownAvg = RDownAvg[1]; RDindex = Rdindex + 1; } RC[0] = C; If RDindex == RSIP Then Begin RUpSum = 0; RDownSum = 0; For RCounter = 0 To RSIP - 1 Begin RUpAmt = C[RCounter] - C[RCounter+1]; If RUpAmt >= 0 Then RDownAmt = 0; Else Begin RDownAmt = -RUpAmt; RUpAmt = 0; End; RUpSum = RUpSum + RUpAmt; RDownSum = RDownSum + RDownAmt; End; RUpAvg = RUpSum / RSIP; RDownAvg = RDownSum / RSIP; End If RDindex > RSIP Then { RUpAmt = RC[0]-Rc[1]; If RUpAmt >= 0 Then RDownAmt = 0; Else { RDownAmt = -RUpAmt; RUpAmt = 0; } if RDindex <=1 Then { RUpAvg = 1; RDownAvg = 1; } Else { RUpAvg = (RPreUpAvg * (RSIP - 1) + RUpAmt) / RSIP; RDownAvg = (RpreDownAvg * (RSIP - 1) + RDownAmt) / RSIP; } } If RUpAvg + RDownAvg <> 0 Then RSIv1[0] = 100 * RUpAvg / (RUpAvg + RDownAvg); Else RSIv1[0] = 0; RSI2 = RSIv1[0]; RSigSum = 0; for Rcount2 = 0 to RSISP-1{ RSigSum = RSigSum+RSIv1[Rcount2]; } RSIS2 = RSigSum/RSISP; MACD1Ep1 = 2/(MACDP1+1); MACD1Ep2 = 2/(MACDP2+1); MACD1Ep3 = 2/(MACDP3+1); if dayindex() == 0 or (value2 <= value2[1] and stime > stime[1]) Then{ MACD1DINDEX1 = MACD1DINDEX1 + 1; MACD1PreJISU1 = MACD1JISU1[1]; MACD1PreJISU2 = MACD1JISU2[1]; MACD1PreMACDOsc = MACD1MACDOsc[1]; if MACD1Dindex1 >= 2 Then MACD1PreMACDSIG = MACD1MACDSIG[1]; } if MACD1DINDEX1 <= 1 then { MACD1JISU1 = C; MACD1JISU2 = C; } else{ MACD1JISU1 = C * MACD1EP1 + MACD1PreJISU1 * (1-MACD1EP1); MACD1JISU2 = C * MACD1EP2 + MACD1PreJISU2 * (1-MACD1EP2); } MACD1MACDVal = MACD1JiSu1-MACD1Jisu2; if MACD1DINDEX1 <= 2 then { MACD1MACDSIG = MACD1Jisu1-MACD1jisu2; } else{ MACD1MACDSIG = MACD1MACDVal * MACD1EP3 + MACD1PreMACDSIG * (1-MACD1EP3); } MACDO2 = MACD1MACDVal-MACD1MACDsig; if dayindex() == 0 or (value2 <= value2[1] and stime > stime[1]) Then{ C1DINDEX1 = C1DINDEX1 + 1; C1PreJISU1 = CCIS2[1]; C1HH[0] = H; C1LL[0] = L; C1CC[1] = C[1]; for C1cnt = 1 to 99{ C1HH[C1cnt] = C1HH[C1cnt-1][1]; C1LL[C1cnt] = C1LL[C1cnt-1][1]; if C1cnt >= 2 Then C1CC[C1cnt] = C1CC[C1cnt-1][1]; } } C1CC[0] = C; if H > C1HH[0] Then C1HH[0] = H; if L < C1LL[0] Then C1LL[0] = L; C1sum1 = 0; for C1count = 0 to CCIP-1{ C1sum1 = C1sum1+(C1CC[C1count]+C1HH[C1count]+C1LL[C1count]); } C1mav = C1sum1/CCIP; If C1HH[CCIP] > 0 Then Begin C1Avgvalue = C1mav; C1MD = 0; For C1counter = 0 To CCIP - 1 Begin C1MD = C1MD + Abs(C1HH[C1counter] + C1LL[C1counter] + C1CC[C1counter] - C1Avgvalue); End; C1MD = C1MD / CCIP; If C1MD == 0 Then CCIv2 = 0; Else CCIv2 = (C1HH[0] + C1LL[0] + C1CC[0] - C1Avgvalue) / (0.015 * C1MD); End Else CCIv2 = 0; C1Ep1 = 2/(CCIsig+1); if C1DINDEX1 <= CCIsig then { CCIS2 = CCIv2; } else{ CCIS2 = CCIv2 * C1EP1 + C1PreJISU1 * (1-C1EP1); } Stok1 = Stochasticsk(StoPeriod,StoPeriod1); Stod1 = StochasticsD(StoPeriod,StoPeriod1,StoPeriod2); if dayindex() == 0 or (value2 <= value2[1] and stime > stime[1]) Then{ s1HH[0] = H; s1LL[0] = L; for s1cnt = 1 to 49{ s1HH[s1cnt] = s1HH[s1cnt-1][1]; s1LL[s1cnt] = s1LL[s1cnt-1][1]; } if S1DINDEX >= StoPeriod then { S1DINDEX = S1DINDEX + 1; S1PreStoK = StoK2[1]; } if S1DINDEX >= StoPeriod then { S1DINDEX = S1DINDEX + 1; S1PreStoD = StoD2[1]; } } if H > s1HH[0] Then s1HH[0] = H; if L < s1LL[0] Then s1LL[0] = L; s1highVal = s1HH[0]; for s1count = 0 to StoPeriod-1 { if s1HH[s1count] > s1highVal then s1highVal = s1HH[s1count]; } s1lowVal = s1LL[0]; for s1count = 0 to StoPeriod-1 { if s1LL[s1count] < s1lowVal then s1lowVal = s1LL[s1count]; } s1StoFastK = (C-s1lowVal)/(s1highVal-s1lowVal)*100; S1Ep = 2/(StoPeriod1+1); if S1DINDEX <= 1 then StoK2 = S1StoFastK ; else StoK2 = S1StoFastK * S1EP + S1PreStoK * (1-S1EP); S1Ep1 = 2/(StoPeriod2+1); if S1DINDEX <= 1 then StoD2 = StoK2 ; else StoD2 = StoK2 * S1EP1 + S1PreStoD * (1-S1EP1); if mav11 > mav12 and RSIv1 > 50 and RSIV1 > RSIS1 and MACDO1 > 0 and CCIV1 > CCIS1 and C > mav13 and crossup(STok1,sTod2) and mav21 > mav22 and RSI2 > 50 and RSI2 > RSIS2 and MACDO2 > 0 and CCIV2 > CCIS2 and C > mav23 and crossup(STok2,sTok2) Then buy(); if mav11 < mav12 and RSIv1 < 50 and RSIV1 < RSIS1 and MACDO1 < 0 and CCIV1 < CCIV1 and C < mav13 and CrossDown(STok1,sTod2) and mav21 < mav22 and RSI2 < 50 and RSI2 < RSIS2 and MACDO2 < 0 and CCIV2 < CCIS2 and C < mav23 and CrossDown(STok2,sTod2) Then sell(); 3. input : maP1(5),maP2(20),map3(40); input : RSIP(9),RSISP(10); Input :MACDP1(12),MACDP2(26),MACDP3(9); input : CCIP(9),CCIsig(10); input : StoPeriod(24), StoPeriod1(12), StoPeriod2(12); var : mav11(0),mav12(0),mav13(0); var : RSI1(0),RSIS1(0); var : MACDO1(0); var : CCIV1(0),CCIS1(0); var : stok1(0),stod1(0); var : macnt2(0),macount2(0),sum21(0),mav21(0),sum22(0),mav22(0),sum23(0),mav23(0); var : macnt3(0),macount3(0),sum31(0),mav31(0),sum32(0),mav32(0),sum33(0),mav33(0); Array : maC2[100](0),maC3[100](0); var : rSI2(0),RSIS2(0); var : RSI3(0),RSIS3(0); var : RRSigSum(0),RRcount2(0),RRSIsig(0); Var : RRCounter(0), RRDownAmt(0), RRUpAmt(0), RRUpSum(0), RRDownSum(0), RRUpAvg(0), RRDownAvg(0); var : RRDindex(0), RRPreUpAvg(0), RRpreDownAvg(0),RRcnt1(0); Array : RRC[100](0),RRSIV1[100](0); var : RSigSum(0),Rcount2(0),RSIsig(0); Var : RCounter(0), RDownAmt(0), RUpAmt(0), RUpSum(0), RDownSum(0), RUpAvg(0), RDownAvg(0); var : RDindex(0), RPreUpAvg(0), RpreDownAvg(0),Rcnt1(0); Array : RC[100](0),RSIV1[100](0); Var : MACD1Ep1(0), MACD1JISU1(0), MACD1DINDEX1(0), MACD1PreJISU1(0); Var : MACD1Ep2(0), MACD1JISU2(0), MACD1PreJISU2(0); Var : MACD1Ep3(0), MACD1JISU3(0), MACD1PreMACDSIG(0); var : MACD1MACDVal(0),MACD1MACDSig(0),MACD1MACDOsc(0),MACD1PreMACDOsc(0); var : MACDO2(0); Var : MACD2Ep1(0), MACD2JISU1(0), MACD2DINDEX1(0), MACD2PreJISU1(0); Var : MACD2Ep2(0), MACD2JISU2(0), MACD2PreJISU2(0); Var : MACD2Ep3(0), MACD2JISU3(0), MACD2PreMACDSIG(0); var : MACD2MACDVal(0),MACD2MACDSig(0),MACD2MACDOsc(0),MACD2PreMACDOsc(0); var : MACDO3(0); Var : C1Sum(0), C1Counter(0), C1MD(0), C1Avgvalue(0),C1cnt(0),C1count(0),C1sum1(0),C1mav(0); Var : C1Ep1(0), C1JISU1(0), C1DINDEX1(0), C1PreJISU1(0),CCIV2(0),CCIS2(0); Array : C1CC[100](0),C1LL[100](0),C1HH[100](0); var : s1count(0), s1highVal(0), s1lowVal(0), s1StoFastK(0), StoK2(0), StoD2(0); var : s1Ep(0), s1EP1(0), s1JISU(0), s1DINDEX(0), s1PreStoK(0), s1PreStoD(0),s1cnt(0); Array : s1HH[50](0),s1LL[50](0); var : s2count(0), s2highVal(0), s2lowVal(0), s2StoFastK(0), StoK3(0), StoD3(0); var : s2Ep(0), s2EP1(0), s2JISU(0), s2DINDEX(0), s2PreStoK(0), s2PreStoD(0),s2cnt(0); Array : s2HH[50](0),s2LL[50](0); Var : C2Sum(0), C2Counter(0), C2MD(0), C2Avgvalue(0),C2cnt(0),C2count(0),C2sum1(0),C2mav(0); Var : C2Ep1(0), C2JISU1(0), C2DINDEX1(0), C2PreJISU1(0),CCIV3(0),CCIS3(0); Array : C2CC[100](0),C2LL[100](0),C2HH[100](0); mav11 = ma(C,maP1); mav12 = ma(c,maP2); mav13 = ma(c,map3); RSI1 = RSI(RSIP); RSIS1 = ema(RSI1,RSISP); MACDO1 = MACD_OSC(MACDP1,MACDP2,MACDP3); CCIV1 = CCI(CCIP); CCIS1 = ema(CCIV1,CCIsig); Stok1 = Stochasticsk(StoPeriod,StoPeriod1); Stod1 = StochasticsD(StoPeriod,StoPeriod1,StoPeriod2); value2 = TimeToMinutes(stime)%(BarInterval*2); if dayindex() == 0 or (value2 <= value2[1] and stime > stime[1]) Then{ for macnt2 = 1 to 99{ maC2[macnt2] = maC2[macnt2-1][1]; } } maC2[0] = C; sum21 = 0; sum22 = 0; sum23 = 0; for macount2 = 0 to maP3{ if macount2 < maP1 Then sum21 = sum21+maC2[macount2]; if macount2 < maP2 Then sum22 = sum22+maC2[macount2]; if macount2 < maP3 Then sum23 = sum23+maC2[macount2]; } mav21 = sum21/maP1; mav22 = sum22/maP2; mav23 = sum23/maP3; if dayindex() == 0 or (value3 <= value3[1] and stime > stime[1]) Then{ for macnt3 = 1 to 99{ maC3[macnt3] = maC3[macnt3-1][1]; } } maC3[0] = C; sum31 = 0; sum32 = 0; sum33 = 0; for macount3 = 0 to maP3{ if macount3 < maP1 Then sum31 = sum31+maC3[macount3]; if macount3 < maP2 Then sum32 = sum32+maC3[macount3]; if macount3 < maP3 Then sum33 = sum33+maC3[macount3]; } mav31 = sum31/maP1; mav32 = sum32/maP2; mav33 = sum33/maP3; if dayindex() == 0 or (value2 <= value2[1] and stime > stime[1]) Then{ for Rcnt1 = 1 to 99{ RC[Rcnt1] = RC[Rcnt1-1][1]; } RPreUpAvg = RUpAvg[1]; RpreDownAvg = RDownAvg[1]; RDindex = Rdindex + 1; } RC[0] = C; If RDindex == RSIP Then Begin RUpSum = 0; RDownSum = 0; For RCounter = 0 To RSIP - 1 Begin RUpAmt = C[RCounter] - C[RCounter+1]; If RUpAmt >= 0 Then RDownAmt = 0; Else Begin RDownAmt = -RUpAmt; RUpAmt = 0; End; RUpSum = RUpSum + RUpAmt; RDownSum = RDownSum + RDownAmt; End; RUpAvg = RUpSum / RSIP; RDownAvg = RDownSum / RSIP; End If RDindex > RSIP Then { RUpAmt = RC[0]-Rc[1]; If RUpAmt >= 0 Then RDownAmt = 0; Else { RDownAmt = -RUpAmt; RUpAmt = 0; } if RDindex <=1 Then { RUpAvg = 1; RDownAvg = 1; } Else { RUpAvg = (RPreUpAvg * (RSIP - 1) + RUpAmt) / RSIP; RDownAvg = (RpreDownAvg * (RSIP - 1) + RDownAmt) / RSIP; } } If RUpAvg + RDownAvg <> 0 Then RSIv1[0] = 100 * RUpAvg / (RUpAvg + RDownAvg); Else RSIv1[0] = 0; RSI2 = RSIv1[0]; RSigSum = 0; for Rcount2 = 0 to RSISP-1{ RSigSum = RSigSum+RSIv1[Rcount2]; } RSIS2 = RSigSum/RSISP; if dayindex() == 0 or (value3 <= value3[1] and stime > stime[1]) Then{ for RRcnt1 = 1 to 99{ RRC[RRcnt1] = RRC[RRcnt1-1][1]; } RRPreUpAvg = RRUpAvg[1]; RRpreDownAvg = RRDownAvg[1]; RRDindex = RRdindex + 1; } RRC[0] = C; If RRDindex == RSIP Then Begin RRUpSum = 0; RRDownSum = 0; For RRCounter = 0 To RSIP - 1 Begin RRUpAmt = C[RRCounter] - C[RRCounter+1]; If RRUpAmt >= 0 Then RRDownAmt = 0; Else Begin RRDownAmt = -RRUpAmt; RRUpAmt = 0; End; RRUpSum = RRUpSum + RRUpAmt; RRDownSum = RRDownSum + RRDownAmt; End; RRUpAvg = RRUpSum / RSIP; RRDownAvg = RRDownSum / RSIP; End If RRDindex > RSIP Then { RRUpAmt = RRC[0]-RRC[1]; If RRUpAmt >= 0 Then RRDownAmt = 0; Else { RRDownAmt = -RRUpAmt; RRUpAmt = 0; } if RRDindex <=1 Then { RRUpAvg = 1; RRDownAvg = 1; } Else { RRUpAvg = (RRPreUpAvg * (RSIP - 1) + RRUpAmt) / RSIP; RRDownAvg = (RRpreDownAvg * (RSIP - 1) + RRDownAmt) / RSIP; } } If RRUpAvg + RRDownAvg <> 0 Then RRSIv1[0] = 100 * RRUpAvg / (RRUpAvg + RRDownAvg); Else RRSIv1[0] = 0; RSI3 = RRSIv1[0]; RRSigSum = 0; for RRcount2 = 0 to RSISP-1{ RRSigSum = RRSigSum+RRSIv1[RRcount2]; } RSIS3 = RRSigSum/RSISP; MACD1Ep1 = 2/(MACDP1+1); MACD1Ep2 = 2/(MACDP2+1); MACD1Ep3 = 2/(MACDP3+1); if dayindex() == 0 or (value2 <= value2[1] and stime > stime[1]) Then{ MACD1DINDEX1 = MACD1DINDEX1 + 1; MACD1PreJISU1 = MACD1JISU1[1]; MACD1PreJISU2 = MACD1JISU2[1]; MACD1PreMACDOsc = MACD1MACDOsc[1]; if MACD1Dindex1 >= 2 Then MACD1PreMACDSIG = MACD1MACDSIG[1]; } if MACD1DINDEX1 <= 1 then { MACD1JISU1 = C; MACD1JISU2 = C; } else{ MACD1JISU1 = C * MACD1EP1 + MACD1PreJISU1 * (1-MACD1EP1); MACD1JISU2 = C * MACD1EP2 + MACD1PreJISU2 * (1-MACD1EP2); } MACD1MACDVal = MACD1JiSu1-MACD1Jisu2; if MACD1DINDEX1 <= 2 then { MACD1MACDSIG = MACD1Jisu1-MACD1jisu2; } else{ MACD1MACDSIG = MACD1MACDVal * MACD1EP3 + MACD1PreMACDSIG * (1-MACD1EP3); } MACDO2 = MACD1MACDVal-MACD1MACDsig; MACD2Ep1 = 2/(MACDP1+1); MACD2Ep2 = 2/(MACDP2+1); MACD2Ep3 = 2/(MACDP3+1); if dayindex() == 0 or (value3 <= value3[1] and stime > stime[1]) Then{ MACD2DINDEX1 = MACD2DINDEX1 + 1; MACD2PreJISU1 = MACD2JISU1[1]; MACD2PreJISU2 = MACD2JISU2[1]; MACD2PreMACDOsc = MACD2MACDOsc[1]; if MACD2Dindex1 >= 2 Then MACD2PreMACDSIG = MACD2MACDSIG[1]; } if MACD2DINDEX1 <= 1 then { MACD2JISU1 = C; MACD2JISU2 = C; } else{ MACD2JISU1 = C * MACD2EP1 + MACD2PreJISU1 * (1-MACD2EP1); MACD2JISU2 = C * MACD2EP2 + MACD2PreJISU2 * (1-MACD2EP2); } MACD2MACDVal = MACD2JiSu1-MACD2Jisu2; if MACD2DINDEX1 <= 2 then { MACD2MACDSIG = MACD2Jisu1-MACD2jisu2; } else{ MACD2MACDSIG = MACD2MACDVal * MACD2EP3 + MACD2PreMACDSIG * (1-MACD2EP3); } MACDO3 = MACD2MACDVal-MACD2MACDsig; if dayindex() == 0 or (value2 <= value2[1] and stime > stime[1]) Then{ C1DINDEX1 = C1DINDEX1 + 1; C1PreJISU1 = CCIS2[1]; C1HH[0] = H; C1LL[0] = L; C1CC[1] = C[1]; for C1cnt = 1 to 99{ C1HH[C1cnt] = C1HH[C1cnt-1][1]; C1LL[C1cnt] = C1LL[C1cnt-1][1]; if C1cnt >= 2 Then C1CC[C1cnt] = C1CC[C1cnt-1][1]; } } C1CC[0] = C; if H > C1HH[0] Then C1HH[0] = H; if L < C1LL[0] Then C1LL[0] = L; C1sum1 = 0; for C1count = 0 to CCIP-1{ C1sum1 = C1sum1+(C1CC[C1count]+C1HH[C1count]+C1LL[C1count]); } C1mav = C1sum1/CCIP; If C1HH[CCIP] > 0 Then Begin C1Avgvalue = C1mav; C1MD = 0; For C1counter = 0 To CCIP - 1 Begin C1MD = C1MD + Abs(C1HH[C1counter] + C1LL[C1counter] + C1CC[C1counter] - C1Avgvalue); End; C1MD = C1MD / CCIP; If C1MD == 0 Then CCIv2 = 0; Else CCIv2 = (C1HH[0] + C1LL[0] + C1CC[0] - C1Avgvalue) / (0.015 * C1MD); End Else CCIv2 = 0; C1Ep1 = 2/(CCIsig+1); if C1DINDEX1 <= CCIsig then { CCIS2 = CCIv2; } else{ CCIS2 = CCIv2 * C1EP1 + C1PreJISU1 * (1-C1EP1); } if dayindex() == 0 or (value3 <= value3[1] and stime > stime[1]) Then{ C2DINDEX1 = C2DINDEX1 + 1; C2PreJISU1 = CCIS3[1]; C2HH[0] = H; C2LL[0] = L; C2CC[1] = C[1]; for C2cnt = 1 to 99{ C2HH[C2cnt] = C2HH[C2cnt-1][1]; C2LL[C2cnt] = C2LL[C2cnt-1][1]; if C2cnt >= 2 Then C2CC[C2cnt] = C2CC[C2cnt-1][1]; } } C2CC[0] = C; if H > C2HH[0] Then C2HH[0] = H; if L < C2LL[0] Then C2LL[0] = L; C2sum1 = 0; for C2count = 0 to CCIP-1{ C2sum1 = C2sum1+(C2CC[C2count]+C2HH[C2count]+C2LL[C2count]); } C2mav = C2sum1/CCIP; If C2HH[CCIP] > 0 Then Begin C2Avgvalue = C2mav; C2MD = 0; For C2counter = 0 To CCIP - 1 Begin C2MD = C2MD + Abs(C2HH[C2counter] + C2LL[C2counter] + C2CC[C2counter] - C2Avgvalue); End; C2MD = C2MD / CCIP; If C2MD == 0 Then CCIv3 = 0; Else CCIv3 = (C2HH[0] + C2LL[0] + C2CC[0] - C2Avgvalue) / (0.015 * C2MD); End Else CCIv3 = 0; C2Ep1 = 2/(CCIsig+1); if C2DINDEX1 <= CCIsig then { CCIS3 = CCIv3; } else{ CCIS3 = CCIv3 * C2EP1 + C2PreJISU1 * (1-C1EP1); } if dayindex() == 0 or (value2 <= value2[1] and stime > stime[1]) Then{ s1HH[0] = H; s1LL[0] = L; for s1cnt = 1 to 49{ s1HH[s1cnt] = s1HH[s1cnt-1][1]; s1LL[s1cnt] = s1LL[s1cnt-1][1]; } if S1DINDEX >= StoPeriod then { S1DINDEX = S1DINDEX + 1; S1PreStoK = StoK2[1]; } if S1DINDEX >= StoPeriod then { S1DINDEX = S1DINDEX + 1; S1PreStoD = StoD2[1]; } } if H > s1HH[0] Then s1HH[0] = H; if L < s1LL[0] Then s1LL[0] = L; s1highVal = s1HH[0]; for s1count = 0 to StoPeriod-1 { if s1HH[s1count] > s1highVal then s1highVal = s1HH[s1count]; } s1lowVal = s1LL[0]; for s1count = 0 to StoPeriod-1 { if s1LL[s1count] < s1lowVal then s1lowVal = s1LL[s1count]; } s1StoFastK = (C-s1lowVal)/(s1highVal-s1lowVal)*100; S1Ep = 2/(StoPeriod1+1); if S1DINDEX <= 1 then StoK2 = S1StoFastK ; else StoK2 = S1StoFastK * S1EP + S1PreStoK * (1-S1EP); S1Ep1 = 2/(StoPeriod2+1); if S1DINDEX <= 1 then StoD2 = StoK2 ; else StoD2 = StoK2 * S1EP1 + S1PreStoD * (1-S1EP1); if dayindex() == 0 or (value3 <= value3[1] and stime > stime[1]) Then{ s2HH[0] = H; s2LL[0] = L; for s2cnt = 1 to 49{ s2HH[s2cnt] = s2HH[s2cnt-1][1]; s2LL[s2cnt] = s2LL[s2cnt-1][1]; } if S2DINDEX >= StoPeriod then { S2DINDEX = S2DINDEX + 1; S2PreStoK = StoK3[1]; S2DINDEX = S2DINDEX + 1; S2PreStoD = StoD3[1]; } } if H > s2HH[0] Then s2HH[0] = H; if L < s2LL[0] Then s2LL[0] = L; s2highVal = s2HH[0]; for s2count = 0 to StoPeriod-1 { if s2HH[s2count] > s2highVal then s2highVal = s2HH[s2count]; } s2lowVal = s2LL[0]; for s2count = 0 to StoPeriod-1 { if s2LL[s2count] < s2lowVal then s2lowVal = s2LL[s2count]; } s2StoFastK = (C-s2lowVal)/(s2highVal-s2lowVal)*100; S2Ep = 2/(StoPeriod1+1); if S2DINDEX <= 1 then StoK3 = S2StoFastK ; else StoK3 = S2StoFastK * S2EP + S2PreStoK * (1-S2EP); S2Ep1 = 2/(StoPeriod2+1); if S2DINDEX <= 1 then StoD3 = StoK3 ; else StoD3 = StoK3 * S2EP1 + S2PreStoD * (1-S2EP1); if mav11 > mav12 and RSIv1 > 50 and RSIV1 > RSIS1 and MACDO1 > 0 and CCIV1 > CCIS1 and C > mav13 and crossup(STok1,sTod2) and mav21 > mav22 and RSI2 > 50 and RSI2 > RSIS2 and MACDO2 > 0 and CCIV2 > CCIS2 and C > mav23 and crossup(STok2,sTok2) and mav31 > mav32 and RSI3 > 50 and RSI3 > RSIS3 and MACDO3 > 0 and CCIV3 > CCIS3 and C > mav33 and crossup(STok3,sTok3) Then buy(); if mav11 < mav12 and RSIv1 < 50 and RSIV1 < RSIS1 and MACDO1 < 0 and CCIV1 < CCIV1 and C < mav13 and CrossDown(STok1,sTod2) and mav21 < mav22 and RSI2 < 50 and RSI2 < RSIS2 and MACDO2 < 0 and CCIV2 < CCIS2 and C < mav23 and CrossDown(STok2,sTod2) and mav31 < mav32 and RSI3 < 50 and RSI3 < RSIS3 and MACDO3 < 0 and CCIV3 < CCIS3 and C < mav33 and CrossDown(STok3,sTod3) Then sell(); 즐거운 하루되세요 > jbouu123 님이 쓴 글입니다. > 제목 : 안녕하세요 > 안녕하세요 세가지 질문을 할까합니다. A) input : maP1(5),maP2(20),RSIP(9),RSIsig(10),MACDP1(12),MACDP2(26),MACDP3(9),CCIP(9),CCIsig(10); var1 = ma(C,maP1); var2 = ma(c,maP2); var3 = RSI(RSIP); var4 = ema(var3,RSIsig); var5 = MACD_OSC(MACDP1,MACDP2,MACDP3); var6 = CCI(CCIP); var7 = ema(Var6,CCIsig); if var1 > var2 and var3 > 50 and var3 > var4 and var5 > 0 and var6 > var7 Then buy(); if var1 < var2 and var3 < 50 and var3 < var4 and var5 < 0 and var6 < var7 Then sell(); 가)상기 A)식이 만족한상태에서 추가:이동평균선40일선 위매수/반대매도 추가:Stochastics(24.12.12) 시그널상향돌파시 매수/반대매도 나)가를 기준으로삼고.가)식이 만족한상태에서 가)식의2배수와 동시만족시 매수/반대매도 나)가)식이 만족한상태에서 가)식의 2배수와 3배수가동시만족시 매수/반대는 매도. **참고문의:위의식을 사용시 최소 캔들갯수을 몇개로보면될까요 감사합니다