커뮤니티

함수요청

프로필 이미지
흰둥이아빠
2021-10-06 19:21:45
1167
글번호 152714
답변완료
안녕하세요? 아래 글번호 73686번 재질문입니다. 답변주신 아래의 스크립트에 전략을 변경하여 작성 요청드립니다. 국내선물 3분봉으로 일중거래를 하고자 합니다. (9시 개장 후에 첫신호가 나오면 진입하고 당일 청산으로 거래를 마감하고자 합니다.) - MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터 MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고 일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 양의 값이되 증가하면 장중 현주가가 고점(HH)돌파하면 조건 만족 즉시 매수 진입 - MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터 MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고 일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 음의 값이되 그 음의 절대 값이 증가하면 장중 현주가가 저점(LL)이탈하면 조건 만족 즉시 매도 진입 - MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터 MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고 일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 양의 값이되 감소하면 장중 현주가가 저점(LL)이탈하면 조건 만족 즉시 매수 진입 - MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터 MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고 일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 음의 값이되 그 음의 절대 값이 감소하면 장중 현주가가 고점(HH)돌파하면 조건 만족 즉시 매도 진입 - 진입봉과 청산봉이 동일한 봉에서 동시에 신호가 생성되서는 안되며 15시 15분 완성 익봉 강제 청산하고자 합니다. *data1,2 이렇게 참조함수를 사용하지 않고 주종목 3분봉만을 사용하여 스크립트를 작성 요청드립니다. Input : short(12), long(26), signal(9); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; if MACDO > 0 Then { T = 1; HH = H; LL = L; } if MACDO < 0 Then { T = -1; HH = H; LL = L; } } Else { if T != 0 Then { if H > HH Then HH = H; if L < LL Then LL = L; } if T == 1 and MACDO < 0 Then { T = 2; var1 = HH; Var2 = LL; } if T == -1 and MACDO > 0 Then { T = -2; var1 = HH; Var2 = LL; } if T == 2 and H > var1 and sTime < 151500 Then { T = 3; Buy("b",AtMarket); } if T == -2 and L < var2 and sTime < 151500 Then { T = -3; Sell("s",AtMarket); } if MarketPosition == 1 and BarsSinceEntry >= 1 and DayClose(1) > DayOpen(1) and C > DayHigh(1) Then ExitLong("bx1",AtMarket); if MarketPosition == -1 and BarsSinceEntry >= 1 and DayClose(1) < DayOpen(1) and C < DayLow(1) Then ExitShort("sx1",AtMarket); if sTime == 151500 Then { if MarketPosition == 1 Then ExitLong("bx2",AtMarket); if MarketPosition == -1 Then ExitShort("sx2",AtMarket); } }
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2021-10-07 14:21:31

안녕하세요 예스스탁입니다. Input : short(12), long(26), signal(9); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); Input : Period1(12),Period2(26),Period3(9); var : Didx(0),dEP1(0),dEP2(0),dEP3(0); Var : dJISU1(0), PredJISU1(0); Var : dJISU2(0), PredJISU2(0); var : dMACDV(0), predMACDV(0); Var : dMACDS(0), PredMACDS(0); var : dMACDO(0), predMACDO1(0), predMACDO2(0); dEp1 = 2/(Period1+1); dEp2 = 2/(Period2+1); dEp3 = 2/(Period3+1); if bdate != bdate[1] Then { Didx = Didx + 1; PredJISU1 = dJISU1[1]; PredJISU2 = dJISU2[1]; PredMACDV = dMACDV[1]; PredMACDS = dMACDS[1]; PredMACDO1 = dMACDO[1]; PredMACDO2 = PredMACDO1[1]; } if Didx <= 1 then { dJISU1 = C; dJISU2 = C; dMACDV = dJISU1-dJISU2; dMACDS = dMACDV; dMACDO = dMACDV-dMACDS; } else{ dJISU1 = C * dEP1 + PredJISU1 * (1-dEP1); dJISU2 = C * dEP2 + PredJISU2 * (1-dEP2); dMACDV = dJISU1-dJISU2; dMACDS = dMACDV * dEP3 + PredMACDS * (1-dEP3); dMACDO = dMACDV-dMACDS; } MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; if MACDO > 0 Then { T = 1; HH = H; LL = L; } if MACDO < 0 Then { T = -1; HH = H; LL = L; } } Else { if T != 0 Then { if H > HH Then HH = H; if L < LL Then LL = L; } if T == 1 and MACDO < 0 Then { T = 2; var1 = HH; Var2 = LL; } if T == -1 and MACDO > 0 Then { T = -2; var1 = HH; Var2 = LL; } if T == 2 and MarketPosition == 0 and predMACDO1 > 0 and predMACDO2 > 0 and predMACDO1 > predMACDO2 and sTime < 151500 Then Buy("b1",AtStop,var1); if T == 2 and MarketPosition == 0 and predMACDO1 > 0 and predMACDO2 > 0 and predMACDO1 < predMACDO2 and sTime < 151500 Then Buy("b2",AtLimit,var2); if T == 2 and MarketPosition == 1 Then T = 3; if T == -2 and MarketPosition == 0 and predMACDO1 < 0 and predMACDO2 < 0 and predMACDO1 < predMACDO2 and sTime < 151500 Then Sell("s1",AtStop,Var2); if T == -2 and MarketPosition == 0 and predMACDO1 < 0 and predMACDO2 < 0 and predMACDO1 > predMACDO2 and sTime < 151500 Then Sell("s2",AtLimit,Var1); if T == -2 and MarketPosition == -1 Then T = -3; if MarketPosition == 1 and BarsSinceEntry >= 1 and DayClose(1) > DayOpen(1) and C > DayHigh(1) Then ExitLong("bx1",AtMarket); if MarketPosition == -1 and BarsSinceEntry >= 1 and DayClose(1) < DayOpen(1) and C < DayLow(1) Then ExitShort("sx1",AtMarket); if sTime == 151500 Then { if MarketPosition == 1 Then ExitLong("bx2",AtMarket); if MarketPosition == -1 Then ExitShort("sx2",AtMarket); } } 즐거운 하루되세요 > 흰둥이아빠 님이 쓴 글입니다. > 제목 : 함수요청 > 안녕하세요? 아래 글번호 73686번 재질문입니다. 답변주신 아래의 스크립트에 전략을 변경하여 작성 요청드립니다. 국내선물 3분봉으로 일중거래를 하고자 합니다. (9시 개장 후에 첫신호가 나오면 진입하고 당일 청산으로 거래를 마감하고자 합니다.) - MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터 MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고 일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 양의 값이되 증가하면 장중 현주가가 고점(HH)돌파하면 조건 만족 즉시 매수 진입 - MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터 MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고 일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 음의 값이되 그 음의 절대 값이 증가하면 장중 현주가가 저점(LL)이탈하면 조건 만족 즉시 매도 진입 - MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터 MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고 일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 양의 값이되 감소하면 장중 현주가가 저점(LL)이탈하면 조건 만족 즉시 매수 진입 - MACD오실레이터가 9시 3분 완성봉의 첫 히스토그램이 양의 값이면 그 값 포함부터 MACD오실레이터 값이 음으로 반전할 때까지의(첫봉의 MACD오실레이터 값 및 음으로 변환할 때포함) 주가의 고점(HH)과 저점(LL)을 잡고 일봉상 전전영업일의 MACD오실레이터 값과 일봉상 전영업일의 MACD오실레이터 값이 모두 음의 값이되 그 음의 절대 값이 감소하면 장중 현주가가 고점(HH)돌파하면 조건 만족 즉시 매도 진입 - 진입봉과 청산봉이 동일한 봉에서 동시에 신호가 생성되서는 안되며 15시 15분 완성 익봉 강제 청산하고자 합니다. *data1,2 이렇게 참조함수를 사용하지 않고 주종목 3분봉만을 사용하여 스크립트를 작성 요청드립니다. Input : short(12), long(26), signal(9); Var : MACDv(0), MACDs(0),macdo(0),T(0),HH(0),LL(0); MACDv = MACD(short, long); MACDs = ema(MACDv,signal); macdo = MACDv-MACDs; if Bdate != Bdate[1] Then { T = 0; if MACDO > 0 Then { T = 1; HH = H; LL = L; } if MACDO < 0 Then { T = -1; HH = H; LL = L; } } Else { if T != 0 Then { if H > HH Then HH = H; if L < LL Then LL = L; } if T == 1 and MACDO < 0 Then { T = 2; var1 = HH; Var2 = LL; } if T == -1 and MACDO > 0 Then { T = -2; var1 = HH; Var2 = LL; } if T == 2 and H > var1 and sTime < 151500 Then { T = 3; Buy("b",AtMarket); } if T == -2 and L < var2 and sTime < 151500 Then { T = -3; Sell("s",AtMarket); } if MarketPosition == 1 and BarsSinceEntry >= 1 and DayClose(1) > DayOpen(1) and C > DayHigh(1) Then ExitLong("bx1",AtMarket); if MarketPosition == -1 and BarsSinceEntry >= 1 and DayClose(1) < DayOpen(1) and C < DayLow(1) Then ExitShort("sx1",AtMarket); if sTime == 151500 Then { if MarketPosition == 1 Then ExitLong("bx2",AtMarket); if MarketPosition == -1 Then ExitShort("sx2",AtMarket); } }