커뮤니티
안녕하세요
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배수가동시만족시 매수/반대는 매도.
**참고문의:위의식을 사용시 최소 캔들갯수을 몇개로보면될까요
감사합니다
이전글