커뮤니티

수식 수정 좀 요청 드립니다.

프로필 이미지
요타
2019-11-19 12:29:32
189
글번호 133737
답변완료
* 항상 많은 도움에 고맙습니다. * 아래 수식에서 시간 부분을 좀 빼주십시요. var40 = highest(H,1500); var41 = Lowest(l,1500); 이것을 추가 하니까 수식이 전혀 틀리게 바꿔짐니다.??? * 오일 분봉에 쓸수 있도록 수정 좀 부탁 드립니다. 단지 buy, sell에 사용 한것도 아닌데. 단지 항목만 추가 했는데 아래에 있는 매매 실적이 확 틀려 짐니다. → var40 = highest(H,100); 이케 봉수를 100개로 하면 매매 실적 변화가 없는데 var40 = highest(H,1500); 이렇게 하면 매매실적이 확 틀려 짐니다. 날짜 기준 항목이 필요하면 highest(H,1500) 으로 변경 수정좀 요청 드립니다. input : maP1(5),maP2(20),RSIP(14),RSIsig(9),MACDP1(12),MACDP2(26),MACDP3(9),CCIP(36),CCIsig(9); var : TF2(0),TF3(0),cnt(0),TT(0); var : sum21(0),sum22(0),sum41(0),sum42(0); var : mav11(0),mav12(0),mav21(0),mav22(0),mav41(0),mav42(0); Var : MACDEP21(0),MACDEP22(0),MACDEP23(0); var : JISU21(0),JISU22(0),JISU23(0); var : PreJISU21(0),PreJISU22(0),PreMACDSIG2(0); var : MACDIDX2(0),MACDVal2(0),MACDSig2(0),MACDOsc2(0); Var : MACDEP41(0),MACDEP42(0),MACDEP43(0); var : JISU41(0),JISU42(0),JISU43(0); var : PreJISU41(0),PreJISU42(0),PreMACDSIG4(0); var : MACDIDX4(0),MACDVal4(0),MACDSig4(0),MACDOsc4(0); var : MACDval1(0),MACDSig1(0),MACDOsc1(0); var : CCIsum2(0),CCIAvg2(0),CCIMD2(0),CCIv2(0),CCIEP2(0),CCIdx2(0),CCIs2(0),PreCCIs2(0),CCIV1(0); var : CCIsum4(0),CCIAvg4(0),CCIMD4(0),CCIv4(0),CCIEP4(0),CCIdx4(0),CCIs4(0),PreCCIs4(0),CCIS1(0); Array : O2[100](0),H2[100](0),L2[100](0),C2[100](0); Array : O4[100](0),H4[100](0),L4[100](0),C4[100](0); var : RSIV1(0),RSIS1(0),RSIV2(0),RSIS2(0), RSIV4(0),RSIS4(0);; var : RSIdx2(0),PreUpAvg2(0),PreDownAvg2(0),UpSum2(0),DownSum2(0); var : UpAmt2(0),DownAmt2(0),UpAvg2(0),DownAvg2(0),RSIEP2(0),PreRSIS2(0); var : RSIdx4(0),PreUpAvg4(0),PreDownAvg4(0),UpSum4(0),DownSum4(0); var : UpAmt4(0),DownAmt4(0),UpAvg4(0),DownAvg4(0),RSIEP4(0),PreRSIS4(0); TF2 = Int(dayindex%2); TF3 = int(dayindex%2); if dayindex() == 0 or (TF2 < TF2[1]) or stime == 151500 Then{ O2[0] = O; H2[0] = H; L2[0] = L; for cnt = 1 to 99{ O2[cnt] = O2[cnt-1][1]; H2[cnt] = H2[cnt-1][1]; L2[cnt] = L2[cnt-1][1]; C2[cnt] = C2[cnt-1][1]; } CCIdx2 = CCIdx2+1; PreCCIS2 = CCIS2[1]; } C2[0] = C; if H > H2[0] Then H2[0] = H; if L < L2[0] Then L2[0] = L; if dayindex() == 0 or (TF3 < TF3[1]) or stime == 151500 Then{ O4[0] = O; H4[0] = H; L4[0] = L; for cnt = 1 to 99{ O4[cnt] = O4[cnt-1][1]; H4[cnt] = H4[cnt-1][1]; L4[cnt] = L4[cnt-1][1]; C4[cnt] = C4[cnt-1][1]; } CCIdx4 = CCIdx4+1; PreCCIS4 = CCIS4[1]; } C4[0] = C; if H > H4[0] Then H4[0] = H; if L < L4[0] Then L4[0] = L; sum21 = 0; sum22 = 0; for cnt = 0 to maP2{ if cnt < maP1 Then sum21 = sum21+C2[cnt]; if cnt < maP2 Then sum22 = sum22+C2[cnt]; } mav21 = sum21/maP1; mav22 = sum22/maP2; sum41 = 0; sum42 = 0; for cnt = 0 to maP2{ if cnt < maP1 Then sum41 = sum41+C4[cnt]; if cnt < maP2 Then sum42 = sum42+C4[cnt]; } mav41 = sum41/maP1; mav42 = sum42/maP2; mav11 = ma(c,maP1); mav12 = ma(c,maP2); #MACD MACDEP21 = 2/(MACDP1+1); MACDEP22 = 2/(MACDP2+1); MACDEP23 = 2/(MACDP3+1); if dayindex() == 0 or (TF2 < TF2[1]) Then{ MACDIDX2 = MACDIDX2 + 1; PreJISU21 = JISU21[1]; PreJISU22 = JISU22[1]; PreMACDSIG2 = MACDSIG2[1]; } if MACDIDX2 <= 1 then { JISU21 = C; JISU22 = C; MACDVal2 = JiSu21-Jisu22; } else{ JISU21 = C * MACDEP21 + PreJISU21 * (1-MACDEP21); JISU22 = C * MACDEP22 + PreJISU22 * (1-MACDEP22); MACDVal2 = JiSu21-Jisu22; } if MACDIDX2 <= 2 then MACDSIG2 = MACDVal2; else MACDSIG2 = MACDVal2 * MACDEP23 + PreMACDSIG2 * (1-MACDEP23); MACDOsc2 = MACDVal2-MACDsig2; MACDEP41 = 2/(MACDP1+1); MACDEP42 = 2/(MACDP2+1); MACDEP43 = 2/(MACDP3+1); if dayindex() == 0 or (TF3 < TF3[1]) then{ MACDIDX4 = MACDIDX4 + 1; PreJISU41 = JISU41[1]; PreJISU42 = JISU42[1]; PreMACDSIG4 = MACDSIG4[1]; } if MACDIDX4 <= 1 then { JISU41 = C; JISU42 = C; MACDVal4 = JiSu41-Jisu42; } else{ JISU41 = C * MACDEP41 + PreJISU41 * (1-MACDEP41); JISU42 = C * MACDEP42 + PreJISU42 * (1-MACDEP42); MACDVal4 = JiSu41-Jisu42; } if MACDIDX4 <= 2 then MACDSIG4 = MACDVal4; else MACDSIG4 = MACDVal4 * MACDEP43 + PreMACDSIG4 * (1-MACDEP43); MACDOsc4 = MACDVal4-MACDsig4; MACDVal1 = MACD(MACDP1,MACDP2); MACDsig1 = ema(MACDVal1,MACDP3); MACDOsc1 = MACDVal1-MACDSig1; #CCI if dayindex() == 0 or (TF2 < TF2[1]) or stime == 151500 Then{ CCIdx2 = CCIdx2+1; PreCCIS2 = CCIS2[1]; } if dayindex() == 0 or (TF3 < TF3[1]) Then{ CCIdx4 = CCIdx4+1; PreCCIS4 = CCIS4[1]; } CCIsum2 = 0; If C2[CCIP] > 0 Then Begin for cnt = 0 to CCIP-1{ CCIsum2 = CCIsum2+(C2[cnt]+H2[cnt]+L2[cnt]); } CCIAvg2 = CCIsum2/CCIP; CCIMD2 = 0; For cnt = 0 To CCIP - 1 Begin CCIMD2 = CCIMD2 + Abs(H2[cnt] + L2[cnt] + C2[cnt] - CCIAvg2); End; CCIMD2 = CCIMD2 / CCIP; If CCIMD2 == 0 Then CCIv2 = 0; Else CCIv2 = (H2[0] + L2[0] + C2[0] - CCIAvg2) / (0.015 * CCIMD2); End Else CCIv2 = 0; CCIEP2 = 2/(CCIsig+1); if CCIdx2 <= CCIP then CCIS2 = CCIv2; else CCIS2 = CCIv2 * CCIEP2 + PreCCIS2 * (1-CCIEP2); CCIsum4 = 0; If C4[CCIP] > 0 Then Begin for cnt = 0 to CCIP-1{ CCIsum4 = CCIsum4+(C4[cnt]+H4[cnt]+L4[cnt]); } CCIAvg4 = CCIsum4/CCIP; CCIMD4 = 0; For cnt = 0 To CCIP - 1 Begin CCIMD4 = CCIMD4 + Abs(H4[cnt] + L4[cnt] + C4[cnt] - CCIAvg4); End; CCIMD4 = CCIMD4 / CCIP; If CCIMD4 == 0 Then CCIv4 = 0; Else CCIv4 = (H4[0] + L4[0] + C4[0] - CCIAvg4) / (0.015 * CCIMD4); End Else CCIv4 = 0; CCIEP4 = 2/(CCIsig+1); if CCIdx4 <= CCIP then CCIS4 = CCIv4; else CCIS4 = CCIv4 * CCIEP4 + PreCCIS4 * (1-CCIEP4); CCIV1 = CCI(CCIP); CCIS1 = ema(CCIV1,CCIsig); #RSI if dayindex() == 0 or (TF2 < TF2[1]) Then{ if C2[RSIP] > 0 Then RSIdx2 = RSIdx2+1; PreUpAvg2 = UpAvg2[1]; PreDownAvg2 = DownAvg2[1]; PreRSIS2 = RSIS2[1]; } If RSIdx2 == 1 Then Begin UpSum2 = 0; DownSum2 = 0; For cnt = 0 To RSIP - 1 Begin UpAmt2 = C2[cnt] - C2[cnt+1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else Begin DownAmt2 = -UpAmt2; UpAmt2 = 0; End; UpSum2 = UpSum2 + UpAmt2; DownSum2 = DownSum2 + DownAmt2; End; UpAvg2 = UpSum2 / RSIP; DownAvg2 = DownSum2 / RSIP; End If RSIdx2 > 1 Then { UpAmt2 = C2[0] - C2[1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else Begin DownAmt2 = -UpAmt2; UpAmt2 = 0; End; UpAvg2 = (PReUpAvg2 * (RSIP - 1) + UpAmt2) / RSIP; DownAvg2 = (PreDownAvg2 * (RSIP - 1) + DownAmt2) / RSIP; } If UpAvg2 + DownAvg2 <> 0 Then RSIv2 = 100 * UpAvg2 / (UpAvg2 + DownAvg2); Else RSIv2 = 0; RSIEP2 = 2/(RSIsig+1); if RSIdx2 <= 1 then RSIS2 = RSIV2; else RSIS2 = RSIV2 * RSIEP2 + PreRSIS2 * (1-RSIEP2); if dayindex() == 0 or (TF3 < TF3[1]) Then{ if C4[RSIP] > 0 Then RSIdx4 = RSIdx4+1; PreUpAvg4 = UpAvg4[1]; PreDownAvg4 = DownAvg4[1]; PreRSIS4 = RSIS4[1]; } C4[0] = C; If RSIdx4 == 1 Then Begin UpSum4 = 0; DownSum4 = 0; For cnt = 0 To RSIP - 1 Begin UpAmt4 = C4[cnt] - C4[cnt+1]; If UpAmt4 >= 0 Then DownAmt4 = 0; Else Begin DownAmt4 = -UpAmt4; UpAmt4 = 0; End; UpSum4 = UpSum4 + UpAmt4; DownSum4 = DownSum4 + DownAmt4; End; UpAvg4 = UpSum4 / RSIP; DownAvg4 = DownSum4 / RSIP; End If RSIdx4 > 1 Then { UpAmt4 = C4[0] - C4[1]; If UpAmt4 >= 0 Then DownAmt4 = 0; Else Begin DownAmt4 = -UpAmt4; UpAmt4 = 0; End; UpAvg4 = (PReUpAvg4 * (RSIP - 1) + UpAmt4) / RSIP; DownAvg4 = (PreDownAvg4 * (RSIP - 1) + DownAmt4) / RSIP; } If UpAvg4 + DownAvg4 <> 0 Then RSIv4 = 100 * UpAvg4 / (UpAvg4 + DownAvg4); Else RSIv4 = 0; RSIEP4 = 2/(RSIsig+1); if RSIdx4 <= 1 then RSIS4 = RSIV4; else RSIS4 = RSIV4 * RSIEP4 + PreRSIS4 * (1-RSIEP4); RSIV1 = RSI(RSIP); RSIS1 = ema(RSIV1,RSISig); if mav11 > mav12 and RSIV1 > 50 and RSIV1 > RSIS1 and MACDOSC1 > 0 and CCIV1 > CCIS1 And mav21 > mav22 and RSIV2 > 50 and RSIV2 > RSIS2 and MACDOSC2 > 0 and CCIV2 > CCIS2 Then buy(); if mav11 < mav12 and RSIV1 < 50 and RSIV1 < RSIS1 and MACDOSC1 < 0 and CCIV1 < CCIV2 and mav21 < mav22 and RSIV2 < 50 and RSIV2 < RSIS2 and MACDOSC2 < 0 and CCIV2 < CCIS2 Then sell(); ** 고맙습니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2019-11-19 15:59:26

안녕하세요 예스스탁입니다, 1 RSIV1 = RSI(RSIP); 수식의 RSI와 같은 함수는 수식에서 필요한 최소봉수 이후에 계산이 되고 차트의 봉수에 따라 값이 변경이 있는 지표식입니다. highest(H,100) 은 최소 100봉이고 highest(H,1500) 은 초소 1500봉 이 최소봉수로 잡히게 되므로 해당 봉 이후로 값이 누적되는 내용이므로 값이 차이가 발생하게 되고 신호도 변경되게 됩니다. 2 input : maP1(5),maP2(20),RSIP(14),RSIsig(9),MACDP1(12),MACDP2(26),MACDP3(9),CCIP(36),CCIsig(9); var : TF2(0),TF3(0),cnt(0),TT(0); var : sum21(0),sum22(0),sum41(0),sum42(0); var : mav11(0),mav12(0),mav21(0),mav22(0),mav41(0),mav42(0); Var : MACDEP21(0),MACDEP22(0),MACDEP23(0); var : JISU21(0),JISU22(0),JISU23(0); var : PreJISU21(0),PreJISU22(0),PreMACDSIG2(0); var : MACDIDX2(0),MACDVal2(0),MACDSig2(0),MACDOsc2(0); Var : MACDEP41(0),MACDEP42(0),MACDEP43(0); var : JISU41(0),JISU42(0),JISU43(0); var : PreJISU41(0),PreJISU42(0),PreMACDSIG4(0); var : MACDIDX4(0),MACDVal4(0),MACDSig4(0),MACDOsc4(0); var : MACDval1(0),MACDSig1(0),MACDOsc1(0); var : CCIsum2(0),CCIAvg2(0),CCIMD2(0),CCIv2(0),CCIEP2(0),CCIdx2(0),CCIs2(0),PreCCIs2(0),CCIV1(0); var : CCIsum4(0),CCIAvg4(0),CCIMD4(0),CCIv4(0),CCIEP4(0),CCIdx4(0),CCIs4(0),PreCCIs4(0),CCIS1(0); Array : O2[100](0),H2[100](0),L2[100](0),C2[100](0); Array : O4[100](0),H4[100](0),L4[100](0),C4[100](0); var : RSIV1(0),RSIS1(0),RSIV2(0),RSIS2(0), RSIV4(0),RSIS4(0);; var : RSIdx2(0),PreUpAvg2(0),PreDownAvg2(0),UpSum2(0),DownSum2(0); var : UpAmt2(0),DownAmt2(0),UpAvg2(0),DownAvg2(0),RSIEP2(0),PreRSIS2(0); var : RSIdx4(0),PreUpAvg4(0),PreDownAvg4(0),UpSum4(0),DownSum4(0); var : UpAmt4(0),DownAmt4(0),UpAvg4(0),DownAvg4(0),RSIEP4(0),PreRSIS4(0); var : D1(0),idx(0); if Bdate != Bdate[1] Then { D1 = sdate; idx = 0; } Else idx = idx+1; TF2 = Int(idx%2); TF3 = int(idx%2); if D1 > 0 then { if bdate != bdate[1] or (bdate == bdate[1] and TF2 < TF2[1]) Then { O2[0] = O; H2[0] = H; L2[0] = L; for cnt = 1 to 99 { O2[cnt] = O2[cnt-1][1]; H2[cnt] = H2[cnt-1][1]; L2[cnt] = L2[cnt-1][1]; C2[cnt] = C2[cnt-1][1]; } CCIdx2 = CCIdx2+1; PreCCIS2 = CCIS2[1]; } C2[0] = C; if H > H2[0] Then H2[0] = H; if L < L2[0] Then L2[0] = L; if bdate != bdate[1] or (bdate == bdate[1] and TF3 < TF3[1]) Then{ O4[0] = O; H4[0] = H; L4[0] = L; for cnt = 1 to 99{ O4[cnt] = O4[cnt-1][1]; H4[cnt] = H4[cnt-1][1]; L4[cnt] = L4[cnt-1][1]; C4[cnt] = C4[cnt-1][1]; } CCIdx4 = CCIdx4+1; PreCCIS4 = CCIS4[1]; } C4[0] = C; if H > H4[0] Then H4[0] = H; if L < L4[0] Then L4[0] = L; sum21 = 0; sum22 = 0; for cnt = 0 to maP2{ if cnt < maP1 Then sum21 = sum21+C2[cnt]; if cnt < maP2 Then sum22 = sum22+C2[cnt]; } mav21 = sum21/maP1; mav22 = sum22/maP2; sum41 = 0; sum42 = 0; for cnt = 0 to maP2{ if cnt < maP1 Then sum41 = sum41+C4[cnt]; if cnt < maP2 Then sum42 = sum42+C4[cnt]; } mav41 = sum41/maP1; mav42 = sum42/maP2; mav11 = ma(c,maP1); mav12 = ma(c,maP2); #MACD MACDEP21 = 2/(MACDP1+1); MACDEP22 = 2/(MACDP2+1); MACDEP23 = 2/(MACDP3+1); if bdate != bdate[1] or (bdate == bdate[1] and TF2 < TF2[1]) Then{ MACDIDX2 = MACDIDX2 + 1; PreJISU21 = JISU21[1]; PreJISU22 = JISU22[1]; PreMACDSIG2 = MACDSIG2[1]; } if MACDIDX2 <= 1 then { JISU21 = C; JISU22 = C; MACDVal2 = JiSu21-Jisu22; } else{ JISU21 = C * MACDEP21 + PreJISU21 * (1-MACDEP21); JISU22 = C * MACDEP22 + PreJISU22 * (1-MACDEP22); MACDVal2 = JiSu21-Jisu22; } if MACDIDX2 <= 2 then MACDSIG2 = MACDVal2; else MACDSIG2 = MACDVal2 * MACDEP23 + PreMACDSIG2 * (1-MACDEP23); MACDOsc2 = MACDVal2-MACDsig2; MACDEP41 = 2/(MACDP1+1); MACDEP42 = 2/(MACDP2+1); MACDEP43 = 2/(MACDP3+1); if bdate != bdate[1] or (bdate == bdate[1] and TF3 < TF3[1]) then{ MACDIDX4 = MACDIDX4 + 1; PreJISU41 = JISU41[1]; PreJISU42 = JISU42[1]; PreMACDSIG4 = MACDSIG4[1]; } if MACDIDX4 <= 1 then { JISU41 = C; JISU42 = C; MACDVal4 = JiSu41-Jisu42; } else{ JISU41 = C * MACDEP41 + PreJISU41 * (1-MACDEP41); JISU42 = C * MACDEP42 + PreJISU42 * (1-MACDEP42); MACDVal4 = JiSu41-Jisu42; } if MACDIDX4 <= 2 then MACDSIG4 = MACDVal4; else MACDSIG4 = MACDVal4 * MACDEP43 + PreMACDSIG4 * (1-MACDEP43); MACDOsc4 = MACDVal4-MACDsig4; MACDVal1 = MACD(MACDP1,MACDP2); MACDsig1 = ema(MACDVal1,MACDP3); MACDOsc1 = MACDVal1-MACDSig1; #CCI if bdate != bdate[1] or (bdate == bdate[1] and TF2 < TF2[1]) Then{ CCIdx2 = CCIdx2+1; PreCCIS2 = CCIS2[1]; } if bdate != bdate[1] or (bdate == bdate[1] and TF3 < TF3[1]) Then{ CCIdx4 = CCIdx4+1; PreCCIS4 = CCIS4[1]; } CCIsum2 = 0; If C2[CCIP] > 0 Then Begin for cnt = 0 to CCIP-1{ CCIsum2 = CCIsum2+(C2[cnt]+H2[cnt]+L2[cnt]); } CCIAvg2 = CCIsum2/CCIP; CCIMD2 = 0; For cnt = 0 To CCIP - 1 Begin CCIMD2 = CCIMD2 + Abs(H2[cnt] + L2[cnt] + C2[cnt] - CCIAvg2); End; CCIMD2 = CCIMD2 / CCIP; If CCIMD2 == 0 Then CCIv2 = 0; Else CCIv2 = (H2[0] + L2[0] + C2[0] - CCIAvg2) / (0.015 * CCIMD2); End Else CCIv2 = 0; CCIEP2 = 2/(CCIsig+1); if CCIdx2 <= CCIP then CCIS2 = CCIv2; else CCIS2 = CCIv2 * CCIEP2 + PreCCIS2 * (1-CCIEP2); CCIsum4 = 0; If C4[CCIP] > 0 Then Begin for cnt = 0 to CCIP-1{ CCIsum4 = CCIsum4+(C4[cnt]+H4[cnt]+L4[cnt]); } CCIAvg4 = CCIsum4/CCIP; CCIMD4 = 0; For cnt = 0 To CCIP - 1 Begin CCIMD4 = CCIMD4 + Abs(H4[cnt] + L4[cnt] + C4[cnt] - CCIAvg4); End; CCIMD4 = CCIMD4 / CCIP; If CCIMD4 == 0 Then CCIv4 = 0; Else CCIv4 = (H4[0] + L4[0] + C4[0] - CCIAvg4) / (0.015 * CCIMD4); End Else CCIv4 = 0; CCIEP4 = 2/(CCIsig+1); if CCIdx4 <= CCIP then CCIS4 = CCIv4; else CCIS4 = CCIv4 * CCIEP4 + PreCCIS4 * (1-CCIEP4); CCIV1 = CCI(CCIP); CCIS1 = ema(CCIV1,CCIsig); #RSI if bdate != bdate[1] or (bdate == bdate[1] and TF2 < TF2[1]) Then{ if C2[RSIP] > 0 Then RSIdx2 = RSIdx2+1; PreUpAvg2 = UpAvg2[1]; PreDownAvg2 = DownAvg2[1]; PreRSIS2 = RSIS2[1]; } If RSIdx2 == 1 Then Begin UpSum2 = 0; DownSum2 = 0; For cnt = 0 To RSIP - 1 Begin UpAmt2 = C2[cnt] - C2[cnt+1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else Begin DownAmt2 = -UpAmt2; UpAmt2 = 0; End; UpSum2 = UpSum2 + UpAmt2; DownSum2 = DownSum2 + DownAmt2; End; UpAvg2 = UpSum2 / RSIP; DownAvg2 = DownSum2 / RSIP; End If RSIdx2 > 1 Then { UpAmt2 = C2[0] - C2[1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else Begin DownAmt2 = -UpAmt2; UpAmt2 = 0; End; UpAvg2 = (PReUpAvg2 * (RSIP - 1) + UpAmt2) / RSIP; DownAvg2 = (PreDownAvg2 * (RSIP - 1) + DownAmt2) / RSIP; } If UpAvg2 + DownAvg2 <> 0 Then RSIv2 = 100 * UpAvg2 / (UpAvg2 + DownAvg2); Else RSIv2 = 0; RSIEP2 = 2/(RSIsig+1); if RSIdx2 <= 1 then RSIS2 = RSIV2; else RSIS2 = RSIV2 * RSIEP2 + PreRSIS2 * (1-RSIEP2); if bdate != bdate[1] or (bdate == bdate[1] and TF3 < TF3[1]) Then{ if C4[RSIP] > 0 Then RSIdx4 = RSIdx4+1; PreUpAvg4 = UpAvg4[1]; PreDownAvg4 = DownAvg4[1]; PreRSIS4 = RSIS4[1]; } C4[0] = C; If RSIdx4 == 1 Then Begin UpSum4 = 0; DownSum4 = 0; For cnt = 0 To RSIP - 1 Begin UpAmt4 = C4[cnt] - C4[cnt+1]; If UpAmt4 >= 0 Then DownAmt4 = 0; Else Begin DownAmt4 = -UpAmt4; UpAmt4 = 0; End; UpSum4 = UpSum4 + UpAmt4; DownSum4 = DownSum4 + DownAmt4; End; UpAvg4 = UpSum4 / RSIP; DownAvg4 = DownSum4 / RSIP; End If RSIdx4 > 1 Then { UpAmt4 = C4[0] - C4[1]; If UpAmt4 >= 0 Then DownAmt4 = 0; Else Begin DownAmt4 = -UpAmt4; UpAmt4 = 0; End; UpAvg4 = (PReUpAvg4 * (RSIP - 1) + UpAmt4) / RSIP; DownAvg4 = (PreDownAvg4 * (RSIP - 1) + DownAmt4) / RSIP; } If UpAvg4 + DownAvg4 <> 0 Then RSIv4 = 100 * UpAvg4 / (UpAvg4 + DownAvg4); Else RSIv4 = 0; RSIEP4 = 2/(RSIsig+1); if RSIdx4 <= 1 then RSIS4 = RSIV4; else RSIS4 = RSIV4 * RSIEP4 + PreRSIS4 * (1-RSIEP4); RSIV1 = RSI(RSIP); RSIS1 = ema(RSIV1,RSISig); if mav11 > mav12 and RSIV1 > 50 and RSIV1 > RSIS1 and MACDOSC1 > 0 and CCIV1 > CCIS1 And mav21 > mav22 and RSIV2 > 50 and RSIV2 > RSIS2 and MACDOSC2 > 0 and CCIV2 > CCIS2 Then buy(); if mav11 < mav12 and RSIV1 < 50 and RSIV1 < RSIS1 and MACDOSC1 < 0 and CCIV1 < CCIV2 and mav21 < mav22 and RSIV2 < 50 and RSIV2 < RSIS2 and MACDOSC2 < 0 and CCIV2 < CCIS2 Then sell(); } 즐거운 하루되세요 > 요타 님이 쓴 글입니다. > 제목 : 수식 수정 좀 요청 드립니다. > * 항상 많은 도움에 고맙습니다. * 아래 수식에서 시간 부분을 좀 빼주십시요. var40 = highest(H,1500); var41 = Lowest(l,1500); 이것을 추가 하니까 수식이 전혀 틀리게 바꿔짐니다.??? * 오일 분봉에 쓸수 있도록 수정 좀 부탁 드립니다. 단지 buy, sell에 사용 한것도 아닌데. 단지 항목만 추가 했는데 아래에 있는 매매 실적이 확 틀려 짐니다. → var40 = highest(H,100); 이케 봉수를 100개로 하면 매매 실적 변화가 없는데 var40 = highest(H,1500); 이렇게 하면 매매실적이 확 틀려 짐니다. 날짜 기준 항목이 필요하면 highest(H,1500) 으로 변경 수정좀 요청 드립니다. input : maP1(5),maP2(20),RSIP(14),RSIsig(9),MACDP1(12),MACDP2(26),MACDP3(9),CCIP(36),CCIsig(9); var : TF2(0),TF3(0),cnt(0),TT(0); var : sum21(0),sum22(0),sum41(0),sum42(0); var : mav11(0),mav12(0),mav21(0),mav22(0),mav41(0),mav42(0); Var : MACDEP21(0),MACDEP22(0),MACDEP23(0); var : JISU21(0),JISU22(0),JISU23(0); var : PreJISU21(0),PreJISU22(0),PreMACDSIG2(0); var : MACDIDX2(0),MACDVal2(0),MACDSig2(0),MACDOsc2(0); Var : MACDEP41(0),MACDEP42(0),MACDEP43(0); var : JISU41(0),JISU42(0),JISU43(0); var : PreJISU41(0),PreJISU42(0),PreMACDSIG4(0); var : MACDIDX4(0),MACDVal4(0),MACDSig4(0),MACDOsc4(0); var : MACDval1(0),MACDSig1(0),MACDOsc1(0); var : CCIsum2(0),CCIAvg2(0),CCIMD2(0),CCIv2(0),CCIEP2(0),CCIdx2(0),CCIs2(0),PreCCIs2(0),CCIV1(0); var : CCIsum4(0),CCIAvg4(0),CCIMD4(0),CCIv4(0),CCIEP4(0),CCIdx4(0),CCIs4(0),PreCCIs4(0),CCIS1(0); Array : O2[100](0),H2[100](0),L2[100](0),C2[100](0); Array : O4[100](0),H4[100](0),L4[100](0),C4[100](0); var : RSIV1(0),RSIS1(0),RSIV2(0),RSIS2(0), RSIV4(0),RSIS4(0);; var : RSIdx2(0),PreUpAvg2(0),PreDownAvg2(0),UpSum2(0),DownSum2(0); var : UpAmt2(0),DownAmt2(0),UpAvg2(0),DownAvg2(0),RSIEP2(0),PreRSIS2(0); var : RSIdx4(0),PreUpAvg4(0),PreDownAvg4(0),UpSum4(0),DownSum4(0); var : UpAmt4(0),DownAmt4(0),UpAvg4(0),DownAvg4(0),RSIEP4(0),PreRSIS4(0); TF2 = Int(dayindex%2); TF3 = int(dayindex%2); if dayindex() == 0 or (TF2 < TF2[1]) or stime == 151500 Then{ O2[0] = O; H2[0] = H; L2[0] = L; for cnt = 1 to 99{ O2[cnt] = O2[cnt-1][1]; H2[cnt] = H2[cnt-1][1]; L2[cnt] = L2[cnt-1][1]; C2[cnt] = C2[cnt-1][1]; } CCIdx2 = CCIdx2+1; PreCCIS2 = CCIS2[1]; } C2[0] = C; if H > H2[0] Then H2[0] = H; if L < L2[0] Then L2[0] = L; if dayindex() == 0 or (TF3 < TF3[1]) or stime == 151500 Then{ O4[0] = O; H4[0] = H; L4[0] = L; for cnt = 1 to 99{ O4[cnt] = O4[cnt-1][1]; H4[cnt] = H4[cnt-1][1]; L4[cnt] = L4[cnt-1][1]; C4[cnt] = C4[cnt-1][1]; } CCIdx4 = CCIdx4+1; PreCCIS4 = CCIS4[1]; } C4[0] = C; if H > H4[0] Then H4[0] = H; if L < L4[0] Then L4[0] = L; sum21 = 0; sum22 = 0; for cnt = 0 to maP2{ if cnt < maP1 Then sum21 = sum21+C2[cnt]; if cnt < maP2 Then sum22 = sum22+C2[cnt]; } mav21 = sum21/maP1; mav22 = sum22/maP2; sum41 = 0; sum42 = 0; for cnt = 0 to maP2{ if cnt < maP1 Then sum41 = sum41+C4[cnt]; if cnt < maP2 Then sum42 = sum42+C4[cnt]; } mav41 = sum41/maP1; mav42 = sum42/maP2; mav11 = ma(c,maP1); mav12 = ma(c,maP2); #MACD MACDEP21 = 2/(MACDP1+1); MACDEP22 = 2/(MACDP2+1); MACDEP23 = 2/(MACDP3+1); if dayindex() == 0 or (TF2 < TF2[1]) Then{ MACDIDX2 = MACDIDX2 + 1; PreJISU21 = JISU21[1]; PreJISU22 = JISU22[1]; PreMACDSIG2 = MACDSIG2[1]; } if MACDIDX2 <= 1 then { JISU21 = C; JISU22 = C; MACDVal2 = JiSu21-Jisu22; } else{ JISU21 = C * MACDEP21 + PreJISU21 * (1-MACDEP21); JISU22 = C * MACDEP22 + PreJISU22 * (1-MACDEP22); MACDVal2 = JiSu21-Jisu22; } if MACDIDX2 <= 2 then MACDSIG2 = MACDVal2; else MACDSIG2 = MACDVal2 * MACDEP23 + PreMACDSIG2 * (1-MACDEP23); MACDOsc2 = MACDVal2-MACDsig2; MACDEP41 = 2/(MACDP1+1); MACDEP42 = 2/(MACDP2+1); MACDEP43 = 2/(MACDP3+1); if dayindex() == 0 or (TF3 < TF3[1]) then{ MACDIDX4 = MACDIDX4 + 1; PreJISU41 = JISU41[1]; PreJISU42 = JISU42[1]; PreMACDSIG4 = MACDSIG4[1]; } if MACDIDX4 <= 1 then { JISU41 = C; JISU42 = C; MACDVal4 = JiSu41-Jisu42; } else{ JISU41 = C * MACDEP41 + PreJISU41 * (1-MACDEP41); JISU42 = C * MACDEP42 + PreJISU42 * (1-MACDEP42); MACDVal4 = JiSu41-Jisu42; } if MACDIDX4 <= 2 then MACDSIG4 = MACDVal4; else MACDSIG4 = MACDVal4 * MACDEP43 + PreMACDSIG4 * (1-MACDEP43); MACDOsc4 = MACDVal4-MACDsig4; MACDVal1 = MACD(MACDP1,MACDP2); MACDsig1 = ema(MACDVal1,MACDP3); MACDOsc1 = MACDVal1-MACDSig1; #CCI if dayindex() == 0 or (TF2 < TF2[1]) or stime == 151500 Then{ CCIdx2 = CCIdx2+1; PreCCIS2 = CCIS2[1]; } if dayindex() == 0 or (TF3 < TF3[1]) Then{ CCIdx4 = CCIdx4+1; PreCCIS4 = CCIS4[1]; } CCIsum2 = 0; If C2[CCIP] > 0 Then Begin for cnt = 0 to CCIP-1{ CCIsum2 = CCIsum2+(C2[cnt]+H2[cnt]+L2[cnt]); } CCIAvg2 = CCIsum2/CCIP; CCIMD2 = 0; For cnt = 0 To CCIP - 1 Begin CCIMD2 = CCIMD2 + Abs(H2[cnt] + L2[cnt] + C2[cnt] - CCIAvg2); End; CCIMD2 = CCIMD2 / CCIP; If CCIMD2 == 0 Then CCIv2 = 0; Else CCIv2 = (H2[0] + L2[0] + C2[0] - CCIAvg2) / (0.015 * CCIMD2); End Else CCIv2 = 0; CCIEP2 = 2/(CCIsig+1); if CCIdx2 <= CCIP then CCIS2 = CCIv2; else CCIS2 = CCIv2 * CCIEP2 + PreCCIS2 * (1-CCIEP2); CCIsum4 = 0; If C4[CCIP] > 0 Then Begin for cnt = 0 to CCIP-1{ CCIsum4 = CCIsum4+(C4[cnt]+H4[cnt]+L4[cnt]); } CCIAvg4 = CCIsum4/CCIP; CCIMD4 = 0; For cnt = 0 To CCIP - 1 Begin CCIMD4 = CCIMD4 + Abs(H4[cnt] + L4[cnt] + C4[cnt] - CCIAvg4); End; CCIMD4 = CCIMD4 / CCIP; If CCIMD4 == 0 Then CCIv4 = 0; Else CCIv4 = (H4[0] + L4[0] + C4[0] - CCIAvg4) / (0.015 * CCIMD4); End Else CCIv4 = 0; CCIEP4 = 2/(CCIsig+1); if CCIdx4 <= CCIP then CCIS4 = CCIv4; else CCIS4 = CCIv4 * CCIEP4 + PreCCIS4 * (1-CCIEP4); CCIV1 = CCI(CCIP); CCIS1 = ema(CCIV1,CCIsig); #RSI if dayindex() == 0 or (TF2 < TF2[1]) Then{ if C2[RSIP] > 0 Then RSIdx2 = RSIdx2+1; PreUpAvg2 = UpAvg2[1]; PreDownAvg2 = DownAvg2[1]; PreRSIS2 = RSIS2[1]; } If RSIdx2 == 1 Then Begin UpSum2 = 0; DownSum2 = 0; For cnt = 0 To RSIP - 1 Begin UpAmt2 = C2[cnt] - C2[cnt+1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else Begin DownAmt2 = -UpAmt2; UpAmt2 = 0; End; UpSum2 = UpSum2 + UpAmt2; DownSum2 = DownSum2 + DownAmt2; End; UpAvg2 = UpSum2 / RSIP; DownAvg2 = DownSum2 / RSIP; End If RSIdx2 > 1 Then { UpAmt2 = C2[0] - C2[1]; If UpAmt2 >= 0 Then DownAmt2 = 0; Else Begin DownAmt2 = -UpAmt2; UpAmt2 = 0; End; UpAvg2 = (PReUpAvg2 * (RSIP - 1) + UpAmt2) / RSIP; DownAvg2 = (PreDownAvg2 * (RSIP - 1) + DownAmt2) / RSIP; } If UpAvg2 + DownAvg2 <> 0 Then RSIv2 = 100 * UpAvg2 / (UpAvg2 + DownAvg2); Else RSIv2 = 0; RSIEP2 = 2/(RSIsig+1); if RSIdx2 <= 1 then RSIS2 = RSIV2; else RSIS2 = RSIV2 * RSIEP2 + PreRSIS2 * (1-RSIEP2); if dayindex() == 0 or (TF3 < TF3[1]) Then{ if C4[RSIP] > 0 Then RSIdx4 = RSIdx4+1; PreUpAvg4 = UpAvg4[1]; PreDownAvg4 = DownAvg4[1]; PreRSIS4 = RSIS4[1]; } C4[0] = C; If RSIdx4 == 1 Then Begin UpSum4 = 0; DownSum4 = 0; For cnt = 0 To RSIP - 1 Begin UpAmt4 = C4[cnt] - C4[cnt+1]; If UpAmt4 >= 0 Then DownAmt4 = 0; Else Begin DownAmt4 = -UpAmt4; UpAmt4 = 0; End; UpSum4 = UpSum4 + UpAmt4; DownSum4 = DownSum4 + DownAmt4; End; UpAvg4 = UpSum4 / RSIP; DownAvg4 = DownSum4 / RSIP; End If RSIdx4 > 1 Then { UpAmt4 = C4[0] - C4[1]; If UpAmt4 >= 0 Then DownAmt4 = 0; Else Begin DownAmt4 = -UpAmt4; UpAmt4 = 0; End; UpAvg4 = (PReUpAvg4 * (RSIP - 1) + UpAmt4) / RSIP; DownAvg4 = (PreDownAvg4 * (RSIP - 1) + DownAmt4) / RSIP; } If UpAvg4 + DownAvg4 <> 0 Then RSIv4 = 100 * UpAvg4 / (UpAvg4 + DownAvg4); Else RSIv4 = 0; RSIEP4 = 2/(RSIsig+1); if RSIdx4 <= 1 then RSIS4 = RSIV4; else RSIS4 = RSIV4 * RSIEP4 + PreRSIS4 * (1-RSIEP4); RSIV1 = RSI(RSIP); RSIS1 = ema(RSIV1,RSISig); if mav11 > mav12 and RSIV1 > 50 and RSIV1 > RSIS1 and MACDOSC1 > 0 and CCIV1 > CCIS1 And mav21 > mav22 and RSIV2 > 50 and RSIV2 > RSIS2 and MACDOSC2 > 0 and CCIV2 > CCIS2 Then buy(); if mav11 < mav12 and RSIV1 < 50 and RSIV1 < RSIS1 and MACDOSC1 < 0 and CCIV1 < CCIV2 and mav21 < mav22 and RSIV2 < 50 and RSIV2 < RSIS2 and MACDOSC2 < 0 and CCIV2 < CCIS2 Then sell(); ** 고맙습니다.