커뮤니티
시스템식 수정
2014-09-12 14:07:47
168
글번호 78465
항상감사드립니다
아래 시스템식은 타주기를 이용한 시스템식입니다,근데 신호가 잘나오질 않습니다
오류수정 부탁드립니다
제가구현하고자 하는 시스템식은
1.타주기적용시스템_A
1-1 아래 시스템식_1 이 주차트(300틱)와 타주기챠트(2분)에서 같은방향으로 신호가 발생시
매수/매도
1-2 주챠트(300틱)에 C > 기하이평 20 고가선((Hma2) 이면 매수진입
주챠트(300틱)에 C < 기하이평 20 저가선(Lma2) 이면 매도진입
1-3 주챠트(300틱)와 타주기챠트(2분)에서 선행스팬2(52) 기준추가(상단에 위치하면매수/
하단에 위치하면 매도)
1-4 주챠트(300틱)에 MACD_OSC 기준매매 추가
1-5 주챠트(300틱)에 ADX 매수매도식 추가
1-6 주챠트(300틱)에 aroon 매수매도식 추가
*** 시스템식_1 과 선행스팬2(52) 만 주챠트와 타주기챠트에 적용합니다***
***변형하고자하는 시스템식은
2.타주기적용시스템_B
2-1 시스템식_1 은 주차트(300틱)에만 적용하고(매수/매도)
2-2 주챠트(300틱)에 C > 기하이평 20 고가선((Hma2) 이면 매수진입
주챠트(300틱)에 C < 기하이평 20 저가선(Lma2) 이면 매도진입
2-3 주챠트(300틱)에 MACD_OSC 기준매매 추가
2-4 주챠트(300틱) 및 타주기챠트에(2분) 선행스팬2(52) 기준추가
(상단에 위치하면매수/하단에 위치하면 매도)
2-5 타주기챠트에(2분) C > 기하이평 20 고가선(Hma2) 이면 매수진입
타주기챠트에(2분) C < 기하이평 20 저가선(Lma2) 이면 매도진입
2-6 주챠트(300틱)에 ADX 매수매도식 추가
2-7 주챠트(300틱)에 aroon 매수매도식 추가
를 구현하고 싶습니다
########################
##### 시스템식_1 #####
########################
input:Period(30),ma1(12),ma2(26),shortperiod(9),Longperiod (26),signalperiod(9),baseLine(0);
var : A1(0,data1),B1(0,data1),V10(0,data1);
var : A2(0,data2),B2(0,data2),V20(0,data2);
var : Bcond(false,data1),Scond(false,data1);
A1=PVI;
B1=data1(ema(A1,period));
if data1(o>c and A1>B1 and Ema(C,MA1) > Ema(C,MA2) and MACD(shortperiod,Longperiod) >= baseLine) Then
V10= 1 ;
if data1(o<c and A1< B1 and Ema(C,MA1) < Ema(C,MA2)) Then
V10= -2 ;
if data1(o<c and A1<B1 and Ema(C,MA1) < Ema(C,MA2) and MACD(shortperiod,Longperiod) <= baseLine) Then
V10= -1 ;
if data1(o>c and A1>B1 and Ema(C,MA1) >Ema(C,MA2)) Then
V10= 2 ;
A2=PVI;
B2=data2(ema(A2,period));
if data2(o>c and A2>B2 and Ema(C,MA1) > Ema(C,MA2) and MACD(shortperiod,Longperiod) >= baseLine) Then
V20= 1 ;
if data2(o<c and A2< B2 and Ema(C,MA1) < Ema(C,MA2)) Then
V20= -2 ;
if data2(o<c and A2<B2 and Ema(C,MA1) < Ema(C,MA2) and MACD(shortperiod,Longperiod) <= baseLine) Then
V20= -1 ;
if data2(o>c and A2>B2 and Ema(C,MA1) >Ema(C,MA2)) Then
V20= 2 ;
######################
### 기하이동평균선 ###
######################
input : P1(5),P2(20));
var : HI(0),LL(0),CC(0),cnt(0);
var : Hma1(0),Lma1(0),Cma1(0);
var : Hma2(0),Lma2(0),Cma2(0);
var : Hma3(0),Lma3(0),Cma3(0);
HH = Log(H);
LL = Log(L);
CC = Log(C);
Hma1 = 0;
Lma1 = 0;
Cma1 = 0;
for cnt = 0 to P1-1 begin
Hma1 = Hma1 + HI[cnt];
Lma1 = Lma1 + LL[cnt];
Cma1 = Cma1 + CC[cnt];
end;
Hma1 = 2.71828182845904^(Hma1/P1);
Lma1 = 2.71828182845904^(Lma1/P1);
Cma1 = 2.71828182845904^(Cma1/P1);
Hma2 = 0;
Lma2 = 0;
Cma2 = 0;
for cnt = 0 to P2-1 begin
Hma2 = Hma2 + HI[cnt];
Lma2 = Lma2 + LL[cnt];
Cma2 = Cma2 + CC[cnt];
end;
Hma2 = 2.71828182845904^(Hma2/P2); #Hma2 20기하이평 고가#
Lma2 = 2.71828182845904^(Lma2/P2); #Lma2 20기하이평 저가#
Cma2 = 2.71828182845904^(Cma2/P2); #Cma2 20기하이평 종가#
#########################
### MACD_OSC 기준매매 ###
#########################
input: MACDP1(12),MACDP2(26),MACDP3(9);
var : MACDV(0),MACDS(0);
MACDV = MACD(MACDP1,MACDP2); #MACD_OSC(12,26)_red#
MACDS = ema(MACDV,MACDP3); #MACD_OSC(9)_시그널_blue#
##########################
### 선행스팬2(52) 기준 ###
##########################
var52 = (Highest(High, 52) + Lowest(Low, 52)) / 2; #선행스팬2_52#
######################
##### ADX 시스템 #####
######################
input : Period3(10);
var : ADXv(0),DP2(0),DM2(0);
ADXv = ADX(Period3);
DP2 = DiPlus(Period3);
DM2 = DiMinus(Period3);
if DP2 > DM2 Then
var13= 1 ;
if DP2 < DM2 Then
var13= -1 ;
###### aroon ######
input : Period4(9);
var : Counter(0), Lowval(0), Highval(0), DownVel(0),UpVel(0), DnAroon(0),UpAroon(0) ;
Lowval= Lowest(Low, Period4+1);
Highval = Highest(High, Period4+1);
For counter= 0 To Period4 {
If Low[counter] == Lowval Then
DownVel = counter;
If High[counter] == highval Then
UpVel = counter;
}
DnAroon = 100*(Period4-DownVel)/Period4;
UpAroon = 100*(Period4-UpVel)/Period4;
###########################
##### 매수/매도 조건식 ####
###########################
Bcond = MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == 1;
Scond = MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == -1;
if Bcond == false and c>o and V10 == 1 and V20 == 1 and c>var52[25] and
var13==1 and macdv>macds and upAroon > DnAroon Then
buy("buy_1");
if Scond == false and c<o and V10 == -1 and V20 == -1 and c<var52[25] and
var13==-1 and macdv<macds and upAroon < DnAroon Then
exitlong("eB1");
if Scond == false and c<o and V10 == -1 and V20 == -1 and c<var52[25] and
var13==-1 and macdv<macds and upAroon < DnAroon Then
sell("sell_1");
if Bcond == false and c>o and V10 == 1 and V20 == 1 and c>var52[25] and
var13==1 and macdv>macds and upAroon > DnAroon Then
exitshort("eS1");
감사합니다
답변 1
예스스탁 예스스탁 답변
2014-09-12 15:35:49
안녕하세요
예스스탁입니다.
1.
input:Period(30),ma1(12),ma2(26),shortperiod(9),Longperiod (26),signalperiod(9),baseLine(0);
var : A1(0,data1),B1(0,data1),V10(0,data1);
var : A2(0,data2),B2(0,data2),V20(0,data2);
var : Bcond(false,data1),Scond(false,data1);
A1=PVI;
B1=data1(ema(A1,period));
if data1(o>c and A1>B1 and Ema(C,MA1) > Ema(C,MA2) and MACD(shortperiod,Longperiod) >= baseLine) Then
V10= 1 ;
if data1(o<c and A1< B1 and Ema(C,MA1) < Ema(C,MA2)) Then
V10= -2 ;
if data1(o<c and A1<B1 and Ema(C,MA1) < Ema(C,MA2) and MACD(shortperiod,Longperiod) <= baseLine) Then
V10= -1 ;
if data1(o>c and A1>B1 and Ema(C,MA1) >Ema(C,MA2)) Then
V10= 2 ;
A2=data2(PVI);
B2=data2(ema(A2,period));
if data2(o>c and A2>B2 and Ema(C,MA1) > Ema(C,MA2) and MACD(shortperiod,Longperiod) >= baseLine) Then
V20= 1 ;
if data2(o<c and A2< B2 and Ema(C,MA1) < Ema(C,MA2)) Then
V20= -2 ;
if data2(o<c and A2<B2 and Ema(C,MA1) < Ema(C,MA2) and MACD(shortperiod,Longperiod) <= baseLine) Then
V20= -1 ;
if data2(o>c and A2>B2 and Ema(C,MA1) >Ema(C,MA2)) Then
V20= 2 ;
######################
### 기하이동평균선 ###
######################
input : P1(5),P2(20);
var : Hi1(0,data1),LL1(0,data1),CC1(0,data1),cnt(0,data1);
var : Hma11(0,data1),Lma11(0,data1),Cma11(0,data1);
var : Hma12(0,data1),Lma12(0,data1),Cma12(0,data1);
var : V11(0,data1),V12(0,data1),V13(0,data1);
var : Hi2(0,data2),LL2(0,data1),CC2(0,data2);
var : Hma21(0,data2),Lma21(0,data2),Cma21(0,data2);
var : Hma22(0,data2),Lma22(0,data2),Cma22(0,data2);
var : V31(0,data1),V32(0,data1),V33(0,data1),V40(0,data1);
#data1
Hi1 = data2(Log(H));
LL1 = data2(Log(L));
CC1 = data2(Log(C));
Hma11 = 0;
Lma11 = 0;
Cma11 = 0;
for cnt = 0 to P1-1 begin
Hma11 = Hma11 + HI1[cnt];
Lma11 = Lma11 + LL1[cnt];
Cma11 = Cma11 + CC1[cnt];
end;
Hma11 = 2.71828182845904^(Hma11/P1); #Hma1 5 기하이평 고가#
Lma11 = 2.71828182845904^(Lma11/P1); #Lma1 5 기하이평 저가#
Cma11 = 2.71828182845904^(Cma11/P1); #Cma1 5 기하이평 종가#
Hma12 = 0;
Lma12 = 0;
Cma12 = 0;
for cnt = 0 to P2-1 begin
Hma12 = Hma12 + HI1[cnt];
Lma12 = Lma12 + LL1[cnt];
Cma12 = Cma12 + CC1[cnt];
end;
Hma12 = 2.71828182845904^(Hma12/P2); #Hma2 10 기하이평 고가#
Lma12 = 2.71828182845904^(Lma12/P2); #Lma2 10 기하이평 저가#
Cma12 = 2.71828182845904^(Cma12/P2); #Cma2 10 기하이평 종가#
#data2
Hi2 = data2(Log(H));
LL2 = data2(Log(L));
CC2 = data2(Log(C));
Hma21 = 0;
Lma21 = 0;
Cma21 = 0;
for cnt = 0 to P1-1 begin
Hma21 = Hma21 + HI2[cnt];
Lma21 = Lma21 + LL2[cnt];
Cma21 = Cma21 + CC2[cnt];
end;
Hma21 = 2.71828182845904^(Hma21/P1); #Hma1 5 기하이평 고가#
Lma21 = 2.71828182845904^(Lma21/P1); #Lma1 5 기하이평 저가#
Cma21 = 2.71828182845904^(Cma21/P1); #Cma1 5 기하이평 종가#
Hma22 = 0;
Lma22 = 0;
Cma22 = 0;
for cnt = 0 to P2-1 begin
Hma22 = Hma22 + HI2[cnt];
Lma22 = Lma22 + LL2[cnt];
Cma22 = Cma22 + CC2[cnt];
end;
Hma22 = 2.71828182845904^(Hma22/P2); #Hma2 10 기하이평 고가#
Lma22 = 2.71828182845904^(Lma22/P2); #Lma2 10 기하이평 저가#
Cma22 = 2.71828182845904^(Cma22/P2); #Cma2 10 기하이평 종가#
#########################
### MACD_OSC 기준매매 ###
#########################
input: MACDP1(12),MACDP2(26),MACDP3(9);
var : MACDV1(0,data1),MACDS1(0,data1),MACDV2(0,data2),MACDS2(0,data2);
var : MACDO1(0,data1),MACDO2(0,data2);
MACDV1 = data1(MACD(MACDP1,MACDP2)); #MACD_OSC(12,26)_red#
MACDS1 = data1(ema(MACDV1,MACDP3)); #MACD_OSC(9)_시그널_blue#
MACDO1 = MACDV1-MACDS1;
MACDV2 = data2(MACD(MACDP1,MACDP2)); #MACD_OSC(12,26)_red#
MACDS2 = data2(ema(MACDV2,MACDP3)); #MACD_OSC(9)_시그널_blue#
MACDO2 = MACDV2-MACDS2;
##########################
### 선행스팬2(52) 기준 ###
##########################
var : 선행1(0,data1),선행2(0,data2);
선행1 = data1((Highest(High, 52) + Lowest(Low, 52)) / 2); #선행스팬2_52#
선행2 = data1((Highest(High, 52) + Lowest(Low, 52)) / 2); #선행스팬2_52#
######################
##### ADX 시스템 #####
######################
input : Period3(10);
var : ADX1(0,data1),DP1(0,data1),DM1(0,data1);
var : ADX2(0,data2),DP2(0,data2),DM2(0,data2);
ADX1 = data1(ADX(Period3));
DP1 = data1(DiPlus(Period3));
DM1 = data1(DiMinus(Period3));
if DP1 > DM1 Then
var13= 1 ;
if DP1 < DM1 Then
var13= -1 ;
ADX2 = data2(ADX(Period3));
DP2 = data2(DiPlus(Period3));
DM2 = data2(DiMinus(Period3));
if DP2 > DM2 Then
var14 = 1 ;
if DP2 < DM2 Then
var14 = -1 ;
###### aroon ######
input : Period4(9);
var : Counter1(0,data1), Lowval1(0,data1), Highval1(0,data1);
var : DownVel1(0,data1),UpVel1(0,data1), DnAroon1(0,data1),UpAroon1(0,data1) ;
var : Counter2(0,data1), Lowval2(0,data1), Highval2(0,data1),d2h(0,data2),d2l(0,data2);
var : DownVel2(0,data1),UpVel2(0,data1), DnAroon2(0,data1),UpAroon2(0,data1) ;
d2h = data2(H);
D2L = data2(L);
Lowval1 = data1(Lowest(Low, Period4+1));
Highval1 = data1(Highest(High, Period4+1));
For counter1 = 0 To Period4 {
If Low[counter1] == Lowval1 Then
DownVel1 = counter1;
If High[counter1] == highval1 Then
UpVel1 = counter1;
}
DnAroon1 = 100*(Period4-DownVel1)/Period4;
UpAroon1 = 100*(Period4-UpVel1)/Period4;
Lowval2 = data2(Lowest(Low, Period4+1));
Highval2 = data2(Highest(High, Period4+1));
For counter2 = 0 To Period4 {
If d2l[counter2] == Lowval2 Then
DownVel2 = counter2;
If d2h[counter2] == highval2 Then
UpVel2 = counter2;
}
DnAroon2 = 100*(Period4-DownVel2)/Period4;
UpAroon2 = 100*(Period4-UpVel2)/Period4;
###########################
##### 매수/매도 조건식 ####
###########################
Bcond = MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == 1;
Scond = MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == -1;
#1-1
if Bcond == false and
data1(c>o) and V10 == 1 and data1(c)>선행1[25] and var13==1 and macdv1>macds1 and upAroon1 > DnAroon1 And
data2(c>o) and V20 == 1 and data2(c)>선행2[25] and var14==1 and macdv2>macds2 and upAroon2 > DnAroon2 Then
buy("buy_1");
if Scond == false and
data1(c<o) and V10 == -1 and data1(c)<선행1[25] and var13==-1 and macdv1<macds1 and upAroon1 < DnAroon1 and
data2(c<o) and V20 == -1 and data2(c)<선행2[25] and var14==-1 and macdv2<macds2 and upAroon2 < DnAroon2 Then
exitlong("eB1");
if Scond == false and
data1(c<o) and V10 == -1 and data1(c)<선행1[25] and var13==-1 and macdv1<macds1 and upAroon1 < DnAroon1 and
data2(c<o) and V20 == -1 and data2(c)<선행2[25] and var14==-1 and macdv2<macds2 and upAroon2 < DnAroon2 Then
sell("sell_1");
if Bcond == false and
data1(c>o) and V10 == 1 and data1(c)>선행1[25] and var13==1 and macdv1>macds1 and upAroon1 > DnAroon1 And
data2(c>o) and V20 == 1 and data2(c)>선행2[25] and var14==1 and macdv2>macds2 and upAroon2 > DnAroon2 Then
exitshort("eS1");
#1-2
if data1(c) > Hma12 Then
buy();
if data1(c) < Lma12 Then
sell();
#1-3
if data1(c) > 선행1[25] and data2(c) > 선행2[25] Then
buy();
if data1(c) < 선행1[25] and data2(c) < 선행2[25] Then
sell();
#1-4
if crossup(MACDO1,0) Then
buy();
if CrossDown(MACDO1,0) Then
sell();
#1-5
if crossup(DP1,DM1) Then
buy();
if CrossDown(DP1,DM1) Then
sell();
#1-6
if crossup(UpAroon1,DnAroon1) Then
buy();
if CrossDown(UpAroon1,DnAroon1) Then
sell();
2.
input:Period(30),ma1(12),ma2(26),shortperiod(9),Longperiod (26),signalperiod(9),baseLine(0);
var : A1(0,data1),B1(0,data1),V10(0,data1);
var : A2(0,data2),B2(0,data2),V20(0,data2);
var : Bcond(false,data1),Scond(false,data1);
A1=PVI;
B1=data1(ema(A1,period));
if data1(o>c and A1>B1 and Ema(C,MA1) > Ema(C,MA2) and MACD(shortperiod,Longperiod) >= baseLine) Then
V10= 1 ;
if data1(o<c and A1< B1 and Ema(C,MA1) < Ema(C,MA2)) Then
V10= -2 ;
if data1(o<c and A1<B1 and Ema(C,MA1) < Ema(C,MA2) and MACD(shortperiod,Longperiod) <= baseLine) Then
V10= -1 ;
if data1(o>c and A1>B1 and Ema(C,MA1) >Ema(C,MA2)) Then
V10= 2 ;
A2=data2(PVI);
B2=data2(ema(A2,period));
if data2(o>c and A2>B2 and Ema(C,MA1) > Ema(C,MA2) and MACD(shortperiod,Longperiod) >= baseLine) Then
V20= 1 ;
if data2(o<c and A2< B2 and Ema(C,MA1) < Ema(C,MA2)) Then
V20= -2 ;
if data2(o<c and A2<B2 and Ema(C,MA1) < Ema(C,MA2) and MACD(shortperiod,Longperiod) <= baseLine) Then
V20= -1 ;
if data2(o>c and A2>B2 and Ema(C,MA1) >Ema(C,MA2)) Then
V20= 2 ;
######################
### 기하이동평균선 ###
######################
input : P1(5),P2(20);
var : Hi1(0,data1),LL1(0,data1),CC1(0,data1),cnt(0,data1);
var : Hma11(0,data1),Lma11(0,data1),Cma11(0,data1);
var : Hma12(0,data1),Lma12(0,data1),Cma12(0,data1);
var : V11(0,data1),V12(0,data1),V13(0,data1);
var : Hi2(0,data2),LL2(0,data1),CC2(0,data2);
var : Hma21(0,data2),Lma21(0,data2),Cma21(0,data2);
var : Hma22(0,data2),Lma22(0,data2),Cma22(0,data2);
var : V31(0,data1),V32(0,data1),V33(0,data1),V40(0,data1);
#data1
Hi1 = data2(Log(H));
LL1 = data2(Log(L));
CC1 = data2(Log(C));
Hma11 = 0;
Lma11 = 0;
Cma11 = 0;
for cnt = 0 to P1-1 begin
Hma11 = Hma11 + HI1[cnt];
Lma11 = Lma11 + LL1[cnt];
Cma11 = Cma11 + CC1[cnt];
end;
Hma11 = 2.71828182845904^(Hma11/P1); #Hma1 5 기하이평 고가#
Lma11 = 2.71828182845904^(Lma11/P1); #Lma1 5 기하이평 저가#
Cma11 = 2.71828182845904^(Cma11/P1); #Cma1 5 기하이평 종가#
Hma12 = 0;
Lma12 = 0;
Cma12 = 0;
for cnt = 0 to P2-1 begin
Hma12 = Hma12 + HI1[cnt];
Lma12 = Lma12 + LL1[cnt];
Cma12 = Cma12 + CC1[cnt];
end;
Hma12 = 2.71828182845904^(Hma12/P2); #Hma2 10 기하이평 고가#
Lma12 = 2.71828182845904^(Lma12/P2); #Lma2 10 기하이평 저가#
Cma12 = 2.71828182845904^(Cma12/P2); #Cma2 10 기하이평 종가#
#data2
Hi2 = data2(Log(H));
LL2 = data2(Log(L));
CC2 = data2(Log(C));
Hma21 = 0;
Lma21 = 0;
Cma21 = 0;
for cnt = 0 to P1-1 begin
Hma21 = Hma21 + HI2[cnt];
Lma21 = Lma21 + LL2[cnt];
Cma21 = Cma21 + CC2[cnt];
end;
Hma21 = 2.71828182845904^(Hma21/P1); #Hma1 5 기하이평 고가#
Lma21 = 2.71828182845904^(Lma21/P1); #Lma1 5 기하이평 저가#
Cma21 = 2.71828182845904^(Cma21/P1); #Cma1 5 기하이평 종가#
Hma22 = 0;
Lma22 = 0;
Cma22 = 0;
for cnt = 0 to P2-1 begin
Hma22 = Hma22 + HI2[cnt];
Lma22 = Lma22 + LL2[cnt];
Cma22 = Cma22 + CC2[cnt];
end;
Hma22 = 2.71828182845904^(Hma22/P2); #Hma2 10 기하이평 고가#
Lma22 = 2.71828182845904^(Lma22/P2); #Lma2 10 기하이평 저가#
Cma22 = 2.71828182845904^(Cma22/P2); #Cma2 10 기하이평 종가#
#########################
### MACD_OSC 기준매매 ###
#########################
input: MACDP1(12),MACDP2(26),MACDP3(9);
var : MACDV1(0,data1),MACDS1(0,data1),MACDV2(0,data2),MACDS2(0,data2);
var : MACDO1(0,data1),MACDO2(0,data2);
MACDV1 = data1(MACD(MACDP1,MACDP2)); #MACD_OSC(12,26)_red#
MACDS1 = data1(ema(MACDV1,MACDP3)); #MACD_OSC(9)_시그널_blue#
MACDO1 = MACDV1-MACDS1;
MACDV2 = data2(MACD(MACDP1,MACDP2)); #MACD_OSC(12,26)_red#
MACDS2 = data2(ema(MACDV2,MACDP3)); #MACD_OSC(9)_시그널_blue#
MACDO2 = MACDV2-MACDS2;
##########################
### 선행스팬2(52) 기준 ###
##########################
var : 선행1(0,data1),선행2(0,data2);
선행1 = data1((Highest(High, 52) + Lowest(Low, 52)) / 2); #선행스팬2_52#
선행2 = data1((Highest(High, 52) + Lowest(Low, 52)) / 2); #선행스팬2_52#
######################
##### ADX 시스템 #####
######################
input : Period3(10);
var : ADX1(0,data1),DP1(0,data1),DM1(0,data1);
var : ADX2(0,data2),DP2(0,data2),DM2(0,data2);
ADX1 = data1(ADX(Period3));
DP1 = data1(DiPlus(Period3));
DM1 = data1(DiMinus(Period3));
if DP1 > DM1 Then
var13= 1 ;
if DP1 < DM1 Then
var13= -1 ;
ADX2 = data2(ADX(Period3));
DP2 = data2(DiPlus(Period3));
DM2 = data2(DiMinus(Period3));
if DP2 > DM2 Then
var14 = 1 ;
if DP2 < DM2 Then
var14 = -1 ;
###### aroon ######
input : Period4(9);
var : Counter1(0,data1), Lowval1(0,data1), Highval1(0,data1);
var : DownVel1(0,data1),UpVel1(0,data1), DnAroon1(0,data1),UpAroon1(0,data1) ;
var : Counter2(0,data1), Lowval2(0,data1), Highval2(0,data1),d2h(0,data2),d2l(0,data2);
var : DownVel2(0,data1),UpVel2(0,data1), DnAroon2(0,data1),UpAroon2(0,data1) ;
d2h = data2(H);
D2L = data2(L);
Lowval1 = data1(Lowest(Low, Period4+1));
Highval1 = data1(Highest(High, Period4+1));
For counter1 = 0 To Period4 {
If Low[counter1] == Lowval1 Then
DownVel1 = counter1;
If High[counter1] == highval1 Then
UpVel1 = counter1;
}
DnAroon1 = 100*(Period4-DownVel1)/Period4;
UpAroon1 = 100*(Period4-UpVel1)/Period4;
Lowval2 = data2(Lowest(Low, Period4+1));
Highval2 = data2(Highest(High, Period4+1));
For counter2 = 0 To Period4 {
If d2l[counter2] == Lowval2 Then
DownVel2 = counter2;
If d2h[counter2] == highval2 Then
UpVel2 = counter2;
}
DnAroon2 = 100*(Period4-DownVel2)/Period4;
UpAroon2 = 100*(Period4-UpVel2)/Period4;
###########################
##### 매수/매도 조건식 ####
###########################
Bcond = MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == 1;
Scond = MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == -1;
#2-1
if Bcond == false and
data1(c>o) and V10 == 1 and data1(c)>선행1[25] and var13==1 and macdv1>macds1 and upAroon1 > DnAroon1 And
V20 == 1 Then
buy("buy_1");
if Scond == false and
data1(c<o) and V10 == -1 and data1(c)<선행1[25] and var13==-1 and macdv1<macds1 and upAroon1 < DnAroon1 and
V20 == -1 Then
exitlong("eB1");
if Scond == false and
data1(c<o) and V10 == -1 and data1(c)<선행1[25] and var13==-1 and macdv1<macds1 and upAroon1 < DnAroon1 and
V20 == -1 Then
sell("sell_1");
if Bcond == false and
data1(c>o) and V10 == 1 and data1(c)>선행1[25] and var13==1 and macdv1>macds1 and upAroon1 > DnAroon1 And
V20 == 1 Then
exitshort("eS1");
#2-2
if data1(c) > Hma12 Then
buy();
if data1(c) < Lma12 Then
sell();
#2-3
if crossup(MACDO1,0) Then
buy();
if CrossDown(MACDO1,0) Then
sell();
#2-4
if data1(c) > 선행1[25] and data2(c) > 선행2[25] Then
buy();
if data1(c) < 선행1[25] and data2(c) < 선행2[25] Then
sell();
#2-5
if data2(c) > Hma22 Then
buy();
if data2(c) < Lma22 Then
sell();
#2-6
if crossup(DP1,DM1) Then
buy();
if CrossDown(DP1,DM1) Then
sell();
#2-7
if crossup(UpAroon1,DnAroon1) Then
buy();
if CrossDown(UpAroon1,DnAroon1) Then
sell();
즐거운 하루되세요
> 조민철 님이 쓴 글입니다.
> 제목 : 시스템식 수정
> 항상감사드립니다
아래 시스템식은 타주기를 이용한 시스템식입니다,근데 신호가 잘나오질 않습니다
오류수정 부탁드립니다
제가구현하고자 하는 시스템식은
1.타주기적용시스템_A
1-1 아래 시스템식_1 이 주차트(300틱)와 타주기챠트(2분)에서 같은방향으로 신호가 발생시
매수/매도
1-2 주챠트(300틱)에 C > 기하이평 20 고가선((Hma2) 이면 매수진입
주챠트(300틱)에 C < 기하이평 20 저가선(Lma2) 이면 매도진입
1-3 주챠트(300틱)와 타주기챠트(2분)에서 선행스팬2(52) 기준추가(상단에 위치하면매수/
하단에 위치하면 매도)
1-4 주챠트(300틱)에 MACD_OSC 기준매매 추가
1-5 주챠트(300틱)에 ADX 매수매도식 추가
1-6 주챠트(300틱)에 aroon 매수매도식 추가
*** 시스템식_1 과 선행스팬2(52) 만 주챠트와 타주기챠트에 적용합니다***
***변형하고자하는 시스템식은
2.타주기적용시스템_B
2-1 시스템식_1 은 주차트(300틱)에만 적용하고(매수/매도)
2-2 주챠트(300틱)에 C > 기하이평 20 고가선((Hma2) 이면 매수진입
주챠트(300틱)에 C < 기하이평 20 저가선(Lma2) 이면 매도진입
2-3 주챠트(300틱)에 MACD_OSC 기준매매 추가
2-4 주챠트(300틱) 및 타주기챠트에(2분) 선행스팬2(52) 기준추가
(상단에 위치하면매수/하단에 위치하면 매도)
2-5 타주기챠트에(2분) C > 기하이평 20 고가선(Hma2) 이면 매수진입
타주기챠트에(2분) C < 기하이평 20 저가선(Lma2) 이면 매도진입
2-6 주챠트(300틱)에 ADX 매수매도식 추가
2-7 주챠트(300틱)에 aroon 매수매도식 추가
를 구현하고 싶습니다
########################
##### 시스템식_1 #####
########################
input:Period(30),ma1(12),ma2(26),shortperiod(9),Longperiod (26),signalperiod(9),baseLine(0);
var : A1(0,data1),B1(0,data1),V10(0,data1);
var : A2(0,data2),B2(0,data2),V20(0,data2);
var : Bcond(false,data1),Scond(false,data1);
A1=PVI;
B1=data1(ema(A1,period));
if data1(o>c and A1>B1 and Ema(C,MA1) > Ema(C,MA2) and MACD(shortperiod,Longperiod) >= baseLine) Then
V10= 1 ;
if data1(o<c and A1< B1 and Ema(C,MA1) < Ema(C,MA2)) Then
V10= -2 ;
if data1(o<c and A1<B1 and Ema(C,MA1) < Ema(C,MA2) and MACD(shortperiod,Longperiod) <= baseLine) Then
V10= -1 ;
if data1(o>c and A1>B1 and Ema(C,MA1) >Ema(C,MA2)) Then
V10= 2 ;
A2=PVI;
B2=data2(ema(A2,period));
if data2(o>c and A2>B2 and Ema(C,MA1) > Ema(C,MA2) and MACD(shortperiod,Longperiod) >= baseLine) Then
V20= 1 ;
if data2(o<c and A2< B2 and Ema(C,MA1) < Ema(C,MA2)) Then
V20= -2 ;
if data2(o<c and A2<B2 and Ema(C,MA1) < Ema(C,MA2) and MACD(shortperiod,Longperiod) <= baseLine) Then
V20= -1 ;
if data2(o>c and A2>B2 and Ema(C,MA1) >Ema(C,MA2)) Then
V20= 2 ;
######################
### 기하이동평균선 ###
######################
input : P1(5),P2(20));
var : HI(0),LL(0),CC(0),cnt(0);
var : Hma1(0),Lma1(0),Cma1(0);
var : Hma2(0),Lma2(0),Cma2(0);
var : Hma3(0),Lma3(0),Cma3(0);
HH = Log(H);
LL = Log(L);
CC = Log(C);
Hma1 = 0;
Lma1 = 0;
Cma1 = 0;
for cnt = 0 to P1-1 begin
Hma1 = Hma1 + HI[cnt];
Lma1 = Lma1 + LL[cnt];
Cma1 = Cma1 + CC[cnt];
end;
Hma1 = 2.71828182845904^(Hma1/P1);
Lma1 = 2.71828182845904^(Lma1/P1);
Cma1 = 2.71828182845904^(Cma1/P1);
Hma2 = 0;
Lma2 = 0;
Cma2 = 0;
for cnt = 0 to P2-1 begin
Hma2 = Hma2 + HI[cnt];
Lma2 = Lma2 + LL[cnt];
Cma2 = Cma2 + CC[cnt];
end;
Hma2 = 2.71828182845904^(Hma2/P2); #Hma2 20기하이평 고가#
Lma2 = 2.71828182845904^(Lma2/P2); #Lma2 20기하이평 저가#
Cma2 = 2.71828182845904^(Cma2/P2); #Cma2 20기하이평 종가#
#########################
### MACD_OSC 기준매매 ###
#########################
input: MACDP1(12),MACDP2(26),MACDP3(9);
var : MACDV(0),MACDS(0);
MACDV = MACD(MACDP1,MACDP2); #MACD_OSC(12,26)_red#
MACDS = ema(MACDV,MACDP3); #MACD_OSC(9)_시그널_blue#
##########################
### 선행스팬2(52) 기준 ###
##########################
var52 = (Highest(High, 52) + Lowest(Low, 52)) / 2; #선행스팬2_52#
######################
##### ADX 시스템 #####
######################
input : Period3(10);
var : ADXv(0),DP2(0),DM2(0);
ADXv = ADX(Period3);
DP2 = DiPlus(Period3);
DM2 = DiMinus(Period3);
if DP2 > DM2 Then
var13= 1 ;
if DP2 < DM2 Then
var13= -1 ;
###### aroon ######
input : Period4(9);
var : Counter(0), Lowval(0), Highval(0), DownVel(0),UpVel(0), DnAroon(0),UpAroon(0) ;
Lowval= Lowest(Low, Period4+1);
Highval = Highest(High, Period4+1);
For counter= 0 To Period4 {
If Low[counter] == Lowval Then
DownVel = counter;
If High[counter] == highval Then
UpVel = counter;
}
DnAroon = 100*(Period4-DownVel)/Period4;
UpAroon = 100*(Period4-UpVel)/Period4;
###########################
##### 매수/매도 조건식 ####
###########################
Bcond = MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == 1;
Scond = MarketPosition == 0 and ExitDate(1) == sdate and MarketPosition(1) == -1;
if Bcond == false and c>o and V10 == 1 and V20 == 1 and c>var52[25] and
var13==1 and macdv>macds and upAroon > DnAroon Then
buy("buy_1");
if Scond == false and c<o and V10 == -1 and V20 == -1 and c<var52[25] and
var13==-1 and macdv<macds and upAroon < DnAroon Then
exitlong("eB1");
if Scond == false and c<o and V10 == -1 and V20 == -1 and c<var52[25] and
var13==-1 and macdv<macds and upAroon < DnAroon Then
sell("sell_1");
if Bcond == false and c>o and V10 == 1 and V20 == 1 and c>var52[25] and
var13==1 and macdv>macds and upAroon > DnAroon Then
exitshort("eS1");
감사합니다