커뮤니티

부탁 드립니다.

프로필 이미지
고운무지개
2013-11-05 08:40:07
146
글번호 69166
답변완료
수고 많으십니다. 아래의 조건을 세가지 식으로 부탁 드립니다. 수식에 코멘트 부탁 드립니다. 이해를 해야 반복 질문을 안 드릴 것 같네요. 1. macd골드와 데드에 매수, 매도 진입. 2계약 진입. 손절은 10틱 손절하면 반대 포지션으로 2계약 자동스위칭. 익절은 분할로 한계약은 15틱, 남은 한개는 25틱. 남은 한개가 청산 안되고 손절되면 한개만 스위칭 (여기가 좀 복잡한데요. 스위칭 했는데 또 손절되면 다시 한개만 스위칭 입니다. 도저히 수식을 모르겠네요.) 두개 다 익절이 나오면 처음 조건부터 다시. 한개씩 스위칭 하다 익절이 나오면 처음 조건부터 다시. 2. 위 조건에서 5번 연속으로 5번 손절되면 거래를 멈추는 수식으로 부탁 드립니다. 3. 손절 횟수와 상관없이 두 계약 모두 익절되면 거래를 멈추는데, 한번 익절됐을 때, 두 번 익절 됐을 때 거래를 멈추는 수식으로 한개 더 부탁 드립니다.(횟수를 정하기 쉽게 변수로 처리해주셔도 좋구요.) 코멘트 꼭 부탁합니다. 좋은하루 되세요.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2013-11-05 09:57:43

안녕하세요 예스스탁입니다. 1. Input : shortPeriod(25), longPeriod(26), Period(9); var : MACDV(0),MACDS(0); MACDV = MACD(shortPeriod, longPeriod);#MACD MACDS = ema(MACDV, Period);#MACD시그널 #골든크로스이면 매수 If MarketPosition == 0 and CrossUP(MACDV, MACDS) Then Buy("b",OnClose,def,2); #데드크로스이면 매도 If MarketPosition == 0 and CrossDown(MACDV, MACDS) Then Sell("s",OnClose,def,2); #매수포지션 진입 후 if MarketPosition == 1 Then{ #15틱 수익이면 1계약 청산 ExitLong("BP1",Atlimit,EntryPrice+PriceScale*15,"",1,1); #25틱 수익이면 2계약 청산 ExitLong("BP2",Atlimit,EntryPrice+PriceScale*25,"",1,1); #현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2 if CurrentContracts == 2 Then sell("bs2",AtStop,EntryPrice-PriceScale*10,2); #현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1 if CurrentContracts == 1 Then sell("bs1",AtStop,EntryPrice-PriceScale*10,1); } #매도포지션 진입 후 if MarketPosition == -1 Then{ #15틱 수익이면 1계약 청산 ExitShort("SP1",Atlimit,EntryPrice-PriceScale*15,"",1,1); #25틱 수익이면 2계약 청산 ExitShort("SP2",Atlimit,EntryPrice-PriceScale*25,"",1,1); #현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2 if CurrentContracts == 2 Then Buy("sb2",AtStop,EntryPrice+PriceScale*10,2); #현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1 if CurrentContracts == 1 Then Buy("sb1",AtStop,EntryPrice+PriceScale*10,1); } 2. Input : shortPeriod(25), longPeriod(26), Period(9); var : MACDV(0),MACDS(0),cnt(0),count(0),xcond(false); MACDV = MACD(shortPeriod, longPeriod);#MACD MACDS = ema(MACDV, Period);#MACD시그널 #당일 최근4번 거래의 진입이 sb1,sb2,bs1,bs2인 횟수 count = 0; for cnt = 0 to 3{ if sdate == EntryDate(cnt) And (IsExitName("sb1") == true Or IsExitName("sb2") == true Or IsExitName("bs1") == true Or IsExitName("bs2") == true) Then count = count+1; } #bx나 sx청산이 나오면 true아니면 false xcond = ExitDate(1) == sdate and (IsExitName("bx",1) ==true or IsExitName("sx",1) == true); #무포지션 If MarketPosition == 0 and #청산이 발생한 봉에서 동시에 진입을 하지 못하게하는내용 (ExitDate(1) != sdate or (ExitDate(1) == sdate and BarsSinceExit(1) != 0)) and #5연속 손절시 진입을 막는 내용 Xcond == false then{ #골든크로스이면 매수 if CrossUP(MACDV, MACDS) Then Buy("b",OnClose,def,2); #데드크로스이면 매도 If CrossDown(MACDV, MACDS) Then Sell("s",OnClose,def,2); } #매수포지션 진입 후 if MarketPosition == 1 Then{ #15틱 수익이면 1계약 청산 ExitLong("BP1",Atlimit,EntryPrice+PriceScale*15,"",1,1); #25틱 수익이면 2계약 청산 ExitLong("BP2",Atlimit,EntryPrice+PriceScale*25,"",1,1); #손절 후 스위칭이 연속 4번미만일때 if count < 4 Then{ #현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2 if CurrentContracts == 2 and count < 4 Then sell("bs2",AtStop,EntryPrice-PriceScale*10,2); #스위칭4번미만일때 현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1 if CurrentContracts == 1 and count < 4 Then sell("bs1",AtStop,EntryPrice-PriceScale*10,1); } #스위칭4번연속일때 현재 남은 수량이 2계약일때 10틱 손실이면 청산(연속5번째손절만) if count == 4 Then ExitLong("bx",AtStop,EntryPrice-PriceScale*10); } #매도포지션 진입 후 if MarketPosition == -1 Then{ #15틱 수익이면 1계약 청산 ExitShort("SP1",Atlimit,EntryPrice-PriceScale*15,"",1,1); #25틱 수익이면 2계약 청산 ExitShort("SP2",Atlimit,EntryPrice-PriceScale*25,"",1,1); #손절 후 연속스위칭4번미만일때 if count < 4 Then{ #현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2 if CurrentContracts == 2 Then Buy("sb2",AtStop,EntryPrice+PriceScale*10,2); #현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1 if CurrentContracts == 1 Then Buy("sb1",AtStop,EntryPrice+PriceScale*10,1); } #스위칭4번연속일때 현재 남은 수량이 2계약일때 10틱 손실이면 청산(연속 5번째 손절만) if count == 4 Then ExitShort("sx",AtStop,EntryPrice+PriceScale*10); } 3. Input : shortPeriod(25), longPeriod(26), Period(9),Profit(2); var : MACDV(0),MACDS(0),cnt(0),count(0),xcond(false); var : Pcnt(0); if date != date[1] Then Pcnt = 0; MACDV = MACD(shortPeriod, longPeriod);#MACD MACDS = ema(MACDV, Period);#MACD시그널 #당일 최근4번 거래의 진입이 sb1,sb2,bs1,bs2인 횟수 count = 0; for cnt = 0 to 3{ if sdate == EntryDate(cnt) And (IsExitName("sb1") == true Or IsExitName("sb2") == true Or IsExitName("bs1") == true Or IsExitName("bs2") == true) Then count = count+1; } #bx나 sx청산이 나오면 true아니면 false xcond = ExitDate(1) == sdate and (IsExitName("bx",1) ==true or IsExitName("sx",1) == true); #익절청산횟수 if ExitDate(1) == sdate and MarketPosition == 0 and MarketPosition[1] != 0 Then Pcnt = Pcnt+1; #무포지션 If MarketPosition == 0 and #청산이 발생한 봉에서 동시에 진입을 하지 못하게하는내용 (ExitDate(1) != sdate or (ExitDate(1) == sdate and BarsSinceExit(1) != 0)) and #수익청산 횟수 제어 Pcnt < Profit and #5번연속 손절발생시 더이상 추가진입을 하지 못하게 함 Xcond == false Then{ #골든크로스이면 매수 if CrossUP(MACDV, MACDS) Then Buy("b",OnClose,def,2); #데드크로스이면 매도 if CrossDown(MACDV, MACDS) and Xcond == false Then Sell("s",OnClose,def,2); } #매수포지션 진입 후 if MarketPosition == 1 Then{ #15틱 수익이면 1계약 청산 ExitLong("BP1",Atlimit,EntryPrice+PriceScale*15,"",1,1); #25틱 수익이면 2계약 청산 ExitLong("BP2",Atlimit,EntryPrice+PriceScale*25,"",1,1); #손절 후 스위칭이 연속 4번미만일때 if count < 4 Then{ #현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2 if CurrentContracts == 2 and count < 4 Then sell("bs2",AtStop,EntryPrice-PriceScale*10,2); #스위칭4번미만일때 현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1 if CurrentContracts == 1 and count < 4 Then sell("bs1",AtStop,EntryPrice-PriceScale*10,1); } #스위칭4번연속일때 현재 남은 수량이 2계약일때 10틱 손실이면 청산(연속5번째손절만) if count == 4 Then ExitLong("bx",AtStop,EntryPrice-PriceScale*10); } #매도포지션 진입 후 if MarketPosition == -1 Then{ #15틱 수익이면 1계약 청산 ExitShort("SP1",Atlimit,EntryPrice-PriceScale*15,"",1,1); #25틱 수익이면 2계약 청산 ExitShort("SP2",Atlimit,EntryPrice-PriceScale*25,"",1,1); #손절 후 연속스위칭4번미만일때 if count < 4 Then{ #현재 남은 수량이 2계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 2 if CurrentContracts == 2 Then Buy("sb2",AtStop,EntryPrice+PriceScale*10,2); #현재 남은 수량이 1계약일때 10틱 손실이면 매도로 스위칭하고 진입수량은 1 if CurrentContracts == 1 Then Buy("sb1",AtStop,EntryPrice+PriceScale*10,1); } #스위칭4번연속일때 현재 남은 수량이 2계약일때 10틱 손실이면 청산(연속 5번째 손절만) if count == 4 Then ExitShort("sx",AtStop,EntryPrice+PriceScale*10); } 즐거운 하루되세요 > 고운무지개 님이 쓴 글입니다. > 제목 : 부탁 드립니다. > 수고 많으십니다. 아래의 조건을 세가지 식으로 부탁 드립니다. 수식에 코멘트 부탁 드립니다. 이해를 해야 반복 질문을 안 드릴 것 같네요. 1. macd골드와 데드에 매수, 매도 진입. 2계약 진입. 손절은 10틱 손절하면 반대 포지션으로 2계약 자동스위칭. 익절은 분할로 한계약은 15틱, 남은 한개는 25틱. 남은 한개가 청산 안되고 손절되면 한개만 스위칭 (여기가 좀 복잡한데요. 스위칭 했는데 또 손절되면 다시 한개만 스위칭 입니다. 도저히 수식을 모르겠네요.) 두개 다 익절이 나오면 처음 조건부터 다시. 한개씩 스위칭 하다 익절이 나오면 처음 조건부터 다시. 2. 위 조건에서 5번 연속으로 5번 손절되면 거래를 멈추는 수식으로 부탁 드립니다. 3. 손절 횟수와 상관없이 두 계약 모두 익절되면 거래를 멈추는데, 한번 익절됐을 때, 두 번 익절 됐을 때 거래를 멈추는 수식으로 한개 더 부탁 드립니다.(횟수를 정하기 쉽게 변수로 처리해주셔도 좋구요.) 코멘트 꼭 부탁합니다. 좋은하루 되세요.