커뮤니티

시스템식 수정

프로필 이미지
조민철
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"); 감사합니다