답변완료
수식 수정 좀 요청 드립니다.
* 항상 많은 도움에 고맙습니다.
* 아래 수식에서 시간 부분을 좀 빼주십시요.
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();
** 고맙습니다.
2019-11-19
188
글번호 133737
시스템