Search
Duplicate
📝

Impulse System 분봉

#공통 전략
Impulse System이 일봉에 적용하는 전략입니다. 분봉에서 높은 주기의 분봉의 값과 비교해 신호가 발생하게 작성된 시스템입니다.
[시스템 전략]
매수진입 주봉 지수이평(13)과 MACD오실레이터(12,26,9)가 모두 전주보다 상승 일봉 지수이평(13)과 MACD오실레이터(12,26,9)가 모두 전일보다 하락 매수청산 일봉 지수이평(13)이나 MACD오실레이터(12,26,9)가 전일보다 하락
매도진입 주봉 지수이평(13)과 MACD오실레이터(12,26,9)가 모두 전주보다 하락 일봉 지수이평(13)과 MACD오실레이터(12,26,9)가 모두 전일보다 하락
매도청산
일봉 지수이평(13)이나 MACD오실레이터(12,26,9)가 전일보다 상승
Input : 참고분봉(30),Period(13),short(12),long(26),sig(9); Var : S1(0),D1(0),TM(0),TF(0),Didx(0); Var : TFEP(0),TFEP1(0),TFEP2(0),TFEP3(0); var : TFema(0),preTFema(0); Var : TFJISU1(0),TFJISU2(0),PreTFJISU1(0),PreTFJISU2(0); Var : TFMACDV(0),TFMACDS(0),TFMACDo(0); Var : PreTFMACDV(0),PreTFMACDS(0),PreTFMACDo(0); var : Emav(0),MACDO(0); var : Bcond(False),Scond(False); //지수이평 평활계수 TFEP = 2/(Period+1); // MACD에 사용할 지수이평 평활계수 TFEP1 = 2/(short+1); TFEP2 = 2/(long+1); TFEP3 = 2/(sig+1); // 새로운 영업일이 시작하면 시작시간(S1)과 날짜(D1)를 초기화 if Bdate != Bdate[1] Then { //첫봉의 stime을 분단위로 변환 S1 = TimeToMinutes(stime); //첫봉의 날짜를 저장 D1 = sdate; } // D1에 날짜가 저장된 이후(영업일 변경이 되는 봉이 발생 후에) if D1 > 0 then { //같은 날짜인지 판단하여 영업일 변경이후 경과분(TM)계산 if sdate == D1 Then TM = TimeToMinutes(stime)-S1;//첫봉과 동일날짜이면 첫봉부터 경과분계산 Else TM = TimeToMinutes(stime)+1440-S1;//다음날이면 24시간(1440분)을 더해서 보정 //영업일 변경이후 경과분을 분주기로 나누어 나머지를 구함 TF = TM%참고분봉; //새로운 영업일이 시작하거나 새로운 분이 시작되면 if Bdate != Bdate[1] or (Bdate == Bdate[1] and 참고분봉 > 1 and TF < TF[1]) or (Bdate == Bdate[1] and 참고분봉 > 1 and TM >= TM[1]+참고분봉) or (Bdate == Bdate[1] and 참고분봉 == 1 and TM > TM[1]) Then { Didx = Didx + 1; PreTFema = TFema[1]; PreTFJISU1 = TFJISU1[1]; PreTFJISU2 = TFJISU2[1]; PreTFMACDV = TFMACDV[1]; PreTFMACDS = TFMACDS[1]; PreTFMACDO = TFMACDO[1]; } if Didx <= 1 then { TFema = c; TFJISU1 = C; TFJISU2 = C; TFMACDV = TFJISU1-TFJISU2; TFMACDS = TFMACDV; TFMACDO = TFMACDV-TFMACDS; } else { TFema = C * TFEP + PreTFema * (1-TFEP); ; TFJISU1 = C * TFEP1 + PreTFJISU1 * (1-TFEP1); TFJISU2 = C * TFEP2 + PreTFJISU2 * (1-TFEP2); TFMACDV = TFJISU1-TFJISU2; TFMACDS = TFMACDV * TFEP3 + PreTFMACDS * (1-TFEP3); TFMACDO = TFMACDV-TFMACDS; } } Emav = Ema(C,Period); MACDO = MACD_OSC(short,long,sig); # 매수진입 //주봉과 일봉 지수이평과 MACD오실레이터가 동시상승이면 Bcond는 true 아니면 false Bcond = TFema > PreTFema and TFMACDO > PreTFMACDO and emav > emav[1] and MACDO > MACDO[1]; //주봉과 일봉 지수이평과 MACD오실레이터가 동시하락이면 Scond는 true 아니면 false Scond = TFema < PreTFema and TFMACDO < PreTFMACDO and emav < emav[1] and MACDO < MACDO[1]; //Bcond가 False에서 true로 변경되면 매수진입 If Bcond == true and Bcond[1] == False Then buy(); //Scond가 False에서 true로 변경되면 매도진입 If Scond == true and Scond[1] == False Then Sell();
JavaScript
복사