커뮤니티

함수요청

프로필 이미지
흰둥이아빠
2022-08-16 14:17:22
1621
글번호 161523
답변완료
안녕하세요? 아래 글번호 77970번 재질문입니다. > 흰둥이아빠 님이 쓴 글입니다. > 제목 : 함수요청 > 안녕하세요? 아래의 전략에 대해 스크립트 작성 요청드립니다. 국내선물 5분봉으로 일중거래를 하고자 합니다. 전영업일의 마지막봉(15시 45분 완성봉)의 저가가 20ma보다 크고 개장 후 첫봉(9시 5분 완성봉)의 고가는 20ma보다 작으면 익봉 시가에 매도 진입 전영업일의 마지막봉(15시 45분 완성봉)의 고가는 20ma보다 작고 개장 후 첫봉(9시 5분 완성봉)의 저가는 20ma보다 크면 익봉 시가에 매수 진입 20ma 상향돌파시 익봉시가에 매도청산 20ma 하향이탈시 익봉시가에 매수청산 당일 저점을 3번 이탈시 매도청산 (3번 이탈의 의미는 이탈->돌파->이탈->돌파->이탈입니다.) 당일 고점을 3번 돌파시 매수청산 (3번 돌파의 의미는 돌파->이탈->돌파->이탈->돌파입니다.) 15시 15분 강제청산 ----------------------------------------------------------------------------------- 전영업일의 마지막봉(15시 45분 완성봉)의 저가가 20ma보다 크고 개장 후 첫봉(9시 5분 완성봉)의 고가는 20ma보다 작은 상태였으며 MACD 오실레이터가 +값에서 그 직전값보다 감소하면 익봉 시가에 매도 진입 전영업일의 마지막봉(15시 45분 완성봉)의 고가는 20ma보다 작고 개장 후 첫봉(9시 5분 완성봉)의 저가는 20ma보다 큰 상태였으며 MACD 오실레이터가 -값에서 그 직전값보다 감소하면 익봉 시가에 매수 진입 으로 진입 조건만 변경하고자 작성주신 스크립트를 아래와 같이 수정해보았으나 원하는 신호가 생성되지 않습니다. input : short(12),long(26),sig(9); var : T(0),S(0),mav(0); var : MACDv(0),MACDs(0),macdo(0),entry(0); MACDV = MACD(short,long); MACDS = Ema(MACDV,sig); MACDO = MACDV-MACDS; mav = ma(c,20); if Bdate != Bdate[1] Then { T = 0; S = 0; if L[1] > mav[1] and H < mav and MACDO > 0 and MACDO < MACDO[1] Then Sell("s",AtMarket); if H[1] < mav[1] and L > mav and MACDO < 0 and MACDO > MACDO[1] Then Buy("b",AtMarket); } if MarketPosition == -1 Then { if CrossUp(c,mav) Then ExitShort("sx",AtMarket); if L < DayLow(0)[1] and L[1] != DayLow(0)[1] Then { var1 = var1+1; if var1 == 3 Then ExitShort("sx1"); } } Else var1 = 0; if MarketPosition == 1 Then { if CrossDown(c,mav) Then ExitLong("bx",AtMarket); if H > DayHigh(0)[1] and H[1] != DayHigh(0)[1] Then { var2 = var2+1; if var2 == 3 Then ExitLong("bx1"); } } Else Var2 = 0; SetStopEndofday(151500);
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2022-08-16 16:33:17

안녕하세요 예스스탁입니다. 1 if Bdate != Bdate[1] Then { if L[1] > mav[1] and H < mav and MACDO > 0 and MACDO < MACDO[1] Then Sell("s",AtMarket); if H[1] < mav[1] and L > mav and MACDO < 0 and MACDO > MACDO[1] Then Buy("b",AtMarket); } 전영업일의 마지막봉(15시 45분 완성봉)의 저가가 20ma보다 크고 개장 후 첫봉(9시 5분 완성봉)의 고가는 20ma보다 작은 상태였으며 MACD 오실레이터가 +값에서 그 직전값보다 감소하면 익봉 시가에 매도 진입 전영업일의 마지막봉(15시 45분 완성봉)의 고가는 20ma보다 작고 개장 후 첫봉(9시 5분 완성봉)의 저가는 20ma보다 큰 상태였으며 MACD 오실레이터가 -값에서 그 직전값보다 감소하면 익봉 시가에 매수 진입 올리신 수식의 진입이 올리신 글내용과 같이 작성이 되어 있습니다. 첫봉에서 모든조건 체크하는 내용이면 별도로 수정해 드릴 부분이 없습니다. 2 만약 MACD오실레이터 조건은 첫봉에서만 조건을 체크하는게 아니면 아래와 같이 진입식 변경하시면 됩니다. if Bdate != Bdate[1] Then { T = 0; if L[1] > mav[1] and H < mav Then T = -1; if H[1] < mav[1] and L > mav Then T = 1; } if T == -1 and MACDO > 0 and MACDO < MACDO[1] Then Sell("s",AtMarket); if T == 1 and MACDO < 0 and MACDO > MACDO[1] Then Buy("b",AtMarket); 즐거운 하루되세요 > 흰둥이아빠 님이 쓴 글입니다. > 제목 : 함수요청 > 안녕하세요? 아래 글번호 77970번 재질문입니다. > 흰둥이아빠 님이 쓴 글입니다. > 제목 : 함수요청 > 안녕하세요? 아래의 전략에 대해 스크립트 작성 요청드립니다. 국내선물 5분봉으로 일중거래를 하고자 합니다. 전영업일의 마지막봉(15시 45분 완성봉)의 저가가 20ma보다 크고 개장 후 첫봉(9시 5분 완성봉)의 고가는 20ma보다 작으면 익봉 시가에 매도 진입 전영업일의 마지막봉(15시 45분 완성봉)의 고가는 20ma보다 작고 개장 후 첫봉(9시 5분 완성봉)의 저가는 20ma보다 크면 익봉 시가에 매수 진입 20ma 상향돌파시 익봉시가에 매도청산 20ma 하향이탈시 익봉시가에 매수청산 당일 저점을 3번 이탈시 매도청산 (3번 이탈의 의미는 이탈->돌파->이탈->돌파->이탈입니다.) 당일 고점을 3번 돌파시 매수청산 (3번 돌파의 의미는 돌파->이탈->돌파->이탈->돌파입니다.) 15시 15분 강제청산 ----------------------------------------------------------------------------------- 전영업일의 마지막봉(15시 45분 완성봉)의 저가가 20ma보다 크고 개장 후 첫봉(9시 5분 완성봉)의 고가는 20ma보다 작은 상태였으며 MACD 오실레이터가 +값에서 그 직전값보다 감소하면 익봉 시가에 매도 진입 전영업일의 마지막봉(15시 45분 완성봉)의 고가는 20ma보다 작고 개장 후 첫봉(9시 5분 완성봉)의 저가는 20ma보다 큰 상태였으며 MACD 오실레이터가 -값에서 그 직전값보다 감소하면 익봉 시가에 매수 진입 으로 진입 조건만 변경하고자 작성주신 스크립트를 아래와 같이 수정해보았으나 원하는 신호가 생성되지 않습니다. input : short(12),long(26),sig(9); var : T(0),S(0),mav(0); var : MACDv(0),MACDs(0),macdo(0),entry(0); MACDV = MACD(short,long); MACDS = Ema(MACDV,sig); MACDO = MACDV-MACDS; mav = ma(c,20); if Bdate != Bdate[1] Then { T = 0; S = 0; if L[1] > mav[1] and H < mav and MACDO > 0 and MACDO < MACDO[1] Then Sell("s",AtMarket); if H[1] < mav[1] and L > mav and MACDO < 0 and MACDO > MACDO[1] Then Buy("b",AtMarket); } if MarketPosition == -1 Then { if CrossUp(c,mav) Then ExitShort("sx",AtMarket); if L < DayLow(0)[1] and L[1] != DayLow(0)[1] Then { var1 = var1+1; if var1 == 3 Then ExitShort("sx1"); } } Else var1 = 0; if MarketPosition == 1 Then { if CrossDown(c,mav) Then ExitLong("bx",AtMarket); if H > DayHigh(0)[1] and H[1] != DayHigh(0)[1] Then { var2 = var2+1; if var2 == 3 Then ExitLong("bx1"); } } Else Var2 = 0; SetStopEndofday(151500);