커뮤니티

문의드립니다

프로필 이미지
웹피
2016-12-08 11:10:29
97
글번호 104751
답변완료
항상 수고가 많으십니다. 아래와 같이 수식을 만들고자 합니다. (1) 오전(08시~12시) 중에 당일시가를 기준으로 캔들이 기준선 위로 or 아래로 돌파할때 매수,매도 조건은 아래와 같다. 1.매수 캔들이 당일시가를 상방으로 돌파할때 MACD 와 시그널이 이미 골든크로스 했고 and 30분봉 차트의 직전 완성봉이 양봉 이라면 매수진입하고 a.wmv 를 실행. 2.매도 캔들이 당일시가를 하방으로 돌파할때 MACD 와 시그널이 이미 데드크로스 했고 and 30분봉 차트의 직전 완성봉이 음봉 이라면 매도진입하고 b.wmv 를 실행. 3.청산 외 청산 : 20틱 수익시 청산 (오전중에 청산가에 도달하지 못하였을 경우 12시이후에 MACD 오실레이터가 기준선 위쪽에 최고점에서 꺾이자마자 청산, 만일 20틱 수익 청산하였다면 오전중에 또다시 첫번째와 동일방향으로 진입신호 발생시에만 재진입한다.) 손절 : 12틱 반절 : 진입후 +10틱 수익내면서 전고점을 돌파하면 손절을 6틱으로 변경 본절 : 진입후 +15틱 수익내면서 전고점을 돌파하면 손절을 매수진입가와 동일하게 설정 청산가에 도달하기전에 본절로 청산된 경우 첫번째 진입가를 돌파하면 재진입 슬리피지 : 2틱 (2) 오후(12시~19시) 중에 당일저가를 기준으로 상방으로 50틱이상 오르고 MACD 가 기준선 위에 있을때 MACD 와 시그널이 골든크로스 하자마자 매수진입 하고 c.wmv 를 실행시킨다. 손절: 15틱 (손절되면 기준선 위아래 관계없이 MACD 와 시그널이 골든크로스 하자마자 다시 매수진입) 반절 : 진입후 +10틱 상승한후 전고점을 돌파하면 손절을 10틱으로 변경 본절: 진입후 +20틱 상승한후 전고점을 돌파하면 손절을 매수진입가와 동일하게 설정. 청산가에 도달하기전에 본절로 청산된 경우 기준선 위아래 관계없이 MACD 와 시그널이 골든크로스 하자마자 다시 재매수진입, 1차 재매수진입 후에도 청산가 도달전에 또다시 본절 or 손절되면 동일한 방법으로 2차 재매수진입까지 한다.) 슬리피지: 2틱 청산: 100틱 도달시 청산 (익일 새벽 4시까지 청산가에 도달하지 못하였을 경우 04시 이후에 MACD 오실레이터가 기준선 위쪽에 최고점에서 꺾이자마자 청산하고 d.wmv 를 실행시킨다. 오늘도 행복한 하루 되세요 ^^
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2016-12-08 13:27:25

안녕하세요 예스스탁입니다. 아래 내용 참고하셔서 수정보완해 사용하시기 바랍니다. playsound의 wav파일의 경로와 파일명은 직접 지정하셔야 합니다. input : short(12),long(26),sig(9); var : MACDV(0),MACDS(0),N1(0),entry(0); MACDV = MACD(short,long); MACDS = ema(MACDv,sig); if (stime == 080000 or (stime > 080000 and stime[1] < 080000)) or (stime == 120000 or (stime > 120000 and stime[1] < 120000)) then N1 = TotalTrades; if MarketPosition == 0 Then entry = TotalTrades-N1; Else entry = (TotalTrades-N1)+1; if stime >= 080000 and stime < 120000 then{ if crossup(c,dayopen) and MACDV > MACDS and C > O Then{ if entry == 0 or (entry >= 1 and MarketPosition == -1) or (entry >= 1 and MarketPosition == 0 and IsExitName("매도익절1",1) == false) Then{ buy("b1"); PlaySound("a.wav경로와파일명"); } } if CrossDown(c,dayopen) and MACDV < MACDS and C < O Then{ if entry == 0 or (entry >= 1 and MarketPosition == -1) or (entry >= 1 and MarketPosition == 0 and IsExitName("매수익절1",1) == false) Then{ sell("s1"); PlaySound("b.wav경로와파일명"); } } if MarketPosition == 1 Then{ ExitLong("매수익절1",atlimit,EntryPrice+PriceScale*20); if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*10 Then ExitLong("매수손절1",AtStop,EntryPrice-PriceScale*12); if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*10 and highest(H,BarsSinceEntry) < EntryPrice+PriceScale*15 Then ExitLong("매수반절1",AtStop,EntryPrice-PriceScale*6); if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*15 Then ExitLong("매수본절1",AtStop,EntryPrice); } if MarketPosition == -1 Then{ ExitShort("매도익절1",atlimit,EntryPrice-PriceScale*20); if Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*10 Then ExitShort("매도손절1",AtStop,EntryPrice+PriceScale*20); if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*10 and Lowest(L,BarsSinceEntry) > EntryPrice-PriceScale*15 Then ExitShort("매도반절1",AtStop,EntryPrice+PriceScale*6); if Lowest(L,BarsSinceEntry) <= EntryPrice-PriceScale*15 Then ExitShort("매도본절1",AtStop,EntryPrice); } } if stime >= 120000 and stime < 190000 then{ if entry == 0 and c > daylow+PriceScale*50 and crossup(MACDV,MACDS) and C > O Then{ buy("b2"); PlaySound("c.wav경로와파일명"); } if entry == 1 and MarketPosition == 0 and IsExitName("매수본절2",1) == true and crossup(MACDv,MACDS) Then buy("b3"); if entry == 2 and MarketPosition == 0 and (IsExitName("매수손절2",1) == true or IsExitName("매수본절2",1) == true) and crossup(MACDv,MACDS) Then buy("b4"); } if stime >= 120000 or stime < 040000 then{ if MarketPosition == 1 and IsEntryName("b1") == true and MACDV < MACDV[1] and MACDV[1] > 0 and MACDV[1] == highest(MACDV,BarsSinceEntry) Then ExitLong("bx1"); if MarketPosition == -1 and IsEntryName("s1") == true and MACDV > MACDV[1] and MACDV[1] < 0 and MACDV[1] == Lowest(MACDV,BarsSinceEntry) Then ExitShort("sx1"); if MarketPosition == 1 and (IsEntryName("b2") == true or IsEntryName("b3") == true) Then{ ExitLong("매수익절2",Atlimit,EntryPrice+PriceScale*100); if highest(H,BarsSinceEntry) < EntryPrice+PriceScale*11 Then ExitLong("매수손절2",AtStop,EntryPrice-PriceScale*15); if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*10 and highest(H,BarsSinceEntry) < EntryPrice+PriceScale*20 Then ExitLong("매수반절2",AtStop,EntryPrice-PriceScale*10); if highest(H,BarsSinceEntry) >= EntryPrice+PriceScale*20 Then ExitLong("매수본절2",AtStop,EntryPrice); } } if stime >= 040000 and stime < 080000 Then{ if MarketPosition == 1 and (IsEntryName("b2") or IsEntryName("b3") or IsEntryName("b4")) and MACDV < MACDV[1] and MACDV[1] > 0 and MACDV[1] == highest(MACDV,BarsSinceEntry) Then{ ExitLong("bx2"); PlaySound("d.wav경로와파일명"); } } 즐거운 하루되세요 > 웹피 님이 쓴 글입니다. > 제목 : 문의드립니다 > 항상 수고가 많으십니다. 아래와 같이 수식을 만들고자 합니다. (1) 오전(08시~12시) 중에 당일시가를 기준으로 캔들이 기준선 위로 or 아래로 돌파할때 매수,매도 조건은 아래와 같다. 1.매수 캔들이 당일시가를 상방으로 돌파할때 MACD 와 시그널이 이미 골든크로스 했고 and 30분봉 차트의 직전 완성봉이 양봉 이라면 매수진입하고 a.wmv 를 실행. 2.매도 캔들이 당일시가를 하방으로 돌파할때 MACD 와 시그널이 이미 데드크로스 했고 and 30분봉 차트의 직전 완성봉이 음봉 이라면 매도진입하고 b.wmv 를 실행. 3.청산 외 청산 : 20틱 수익시 청산 (오전중에 청산가에 도달하지 못하였을 경우 12시이후에 MACD 오실레이터가 기준선 위쪽에 최고점에서 꺾이자마자 청산, 만일 20틱 수익 청산하였다면 오전중에 또다시 첫번째와 동일방향으로 진입신호 발생시에만 재진입한다.) 손절 : 12틱 반절 : 진입후 +10틱 수익내면서 전고점을 돌파하면 손절을 6틱으로 변경 본절 : 진입후 +15틱 수익내면서 전고점을 돌파하면 손절을 매수진입가와 동일하게 설정 청산가에 도달하기전에 본절로 청산된 경우 첫번째 진입가를 돌파하면 재진입 슬리피지 : 2틱 (2) 오후(12시~19시) 중에 당일저가를 기준으로 상방으로 50틱이상 오르고 MACD 가 기준선 위에 있을때 MACD 와 시그널이 골든크로스 하자마자 매수진입 하고 c.wmv 를 실행시킨다. 손절: 15틱 (손절되면 기준선 위아래 관계없이 MACD 와 시그널이 골든크로스 하자마자 다시 매수진입) 반절 : 진입후 +10틱 상승한후 전고점을 돌파하면 손절을 10틱으로 변경 본절: 진입후 +20틱 상승한후 전고점을 돌파하면 손절을 매수진입가와 동일하게 설정. 청산가에 도달하기전에 본절로 청산된 경우 기준선 위아래 관계없이 MACD 와 시그널이 골든크로스 하자마자 다시 재매수진입, 1차 재매수진입 후에도 청산가 도달전에 또다시 본절 or 손절되면 동일한 방법으로 2차 재매수진입까지 한다.) 슬리피지: 2틱 청산: 100틱 도달시 청산 (익일 새벽 4시까지 청산가에 도달하지 못하였을 경우 04시 이후에 MACD 오실레이터가 기준선 위쪽에 최고점에서 꺾이자마자 청산하고 d.wmv 를 실행시킨다. 오늘도 행복한 하루 되세요 ^^