커뮤니티

행복; 수식 작성 바랍니다

프로필 이미지
행복한가방
2014-02-14 13:23:57
201
글번호 72573
답변완료
한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다 시스템식 작성 바랍니다 < 아래 > 의 시스템식에서 에러가 있습니다 ===========< 아래 >=========================== If Date == 20140206 Then { IF MarketPosition == 0 and stime < 112000 Then { buy("b0x",AtStop,dayopen*(1+0.25/100),10); } If MarketPosition == 1 and stime < 112000 Then { If CurrentContracts == 10 Then { buy("b1x",AtStop,EntryPrice*(1+0.25/100),10); ExitLong("el1x",AtStop,EntryPrice*(1-0.25/100),"",10,1); } If CurrentContracts == 20 Then { buy("b2x",AtStop,EntryPrice*(1+0.5/100),10); ExitLong("el2x",AtStop,EntryPrice,"",10,1); } If CurrentContracts == 30 Then { buy("b3x",AtStop,EntryPrice*(1+0.75/100),10); ExitLong("el3x",AtStop,EntryPrice*(1+0.25/100),"",10,1); } If CurrentContracts == 40 Then { buy("b4x",AtStop,EntryPrice*(1+1/100),10); ExitLong("el4x",AtStop,EntryPrice*(1+0.75/100),"",10,1); } } If MarketPosition == 1 Then { if stime >= 112000 Then { ExitLong("b분할1",OnClose,def,"",Int(CurrentContracts*(1/3)),1); } // 직전 잔고 30계약의 1/3 인 10계약을 청산하여 잔고는 20계약으로 if stime >= 130000 Then { ExitLong("b분할2",OnClose,def,"",Int(CurrentContracts*(1/2)),1); } // 직전 잔고 20계약의 1/2 인 10계약을 청산하여 잔고는 10계약으로 if stime >= 145000 Then { ExitLong("b분할3"); } // 직전 잔고 10계약을 모두 청산하여 잔고는 0계약으로 } } ================================================================== ======= 시스템식 < 아래 >의 조건은 =============================== 대상; 연결선물지수 주기; 10틱 일자; 2014년 2월 6일 진입&청산 수량; 1회당 10계약 진입&청산 시간; 11시 20분 이전에는 - 시초가 기준으로 0.25% 상승하면 buy 하고 - 최초진입가(entryprice) 기준으로 0.25% 상승할 때마다 추가로 buy 한다 - buy 하다가 0.25% 하락할 때마다 exitlong 한다 분할 청산 기간; 11시 20분 이후 - 분할 청산할 계약 수; 30계약( 11시13분18초에 10계약 buy 하여 30계약이 됨) - 분할 청산 회수; 3회 - 1회당 분할 청산 계약 수; 10계약 - 1차 분할 청산 시점; 11시 20분 (10계약 청산 후 잔고는 20계약) - 2차 분할 청산 시점; 13시 (10계약 청산 후 잔고는 10계약) - 3차 분할 청산 시점; 14시 50분 (10계약 청산 후 잔고는 0계약) ==================================================================== 그러나 성과보고서에 의하면 3회에 나누어 청산하는 계약수가 1차 분할; 20계약 2차 분할; 5계약 3차 분할; 5계약 입니다 무엇이 잘못되었는지요? 바로잡아 주시기 바랍니다 수고하십시요^^
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2014-02-17 09:56:28

안녕하세요 예스스탁입니다. 최대 5회 진입이므로 아래와 같이 수정해 사용하시면 됩니다. If Date == 20140206 Then { IF MarketPosition == 0 and stime < 112000 Then { buy("b1x",AtStop,dayopen*(1+0.25/100),10); } If MarketPosition == 1 and stime < 112000 Then { If MaxContracts == CurrentContracts Then{ if CurrentContracts == 10 Then buy("b2x",AtStop,dayopen*(1+0.50/100),10); If CurrentContracts == 20 Then buy("b3x",AtStop,dayopen*(1+0.75/100),10); If CurrentContracts == 30 Then buy("b4x",AtStop,dayopen*(1+1.00/100),10); If CurrentContracts == 40 Then buy("b5x",AtStop,dayopen*(1+1.25/100),10); } if CurrentContracts == 50 Then ExitLong("el5_1x",AtStop,dayopen*(1+1.00/100),"",10,1); if CurrentContracts == 40 Then ExitLong("el5_2x",AtStop,dayopen*(1+0.75/100),"",10,1); if CurrentContracts == 30 Then ExitLong("el5_3x",AtStop,dayopen*(1+0.50/100),"",10,1); if CurrentContracts == 20 Then ExitLong("el5_4x",AtStop,dayopen*(1+0.25/100),"",10,1); if CurrentContracts == 10 Then ExitLong("el5_5x",AtStop,dayopen,"",10,1); } If MarketPosition == 1 and stime >= 112000 Then { if stime > 112000 and Condition1 == false Then{ Condition1 = true; ExitLong("b분할1",OnClose,def,"",Int(CurrentContracts*(1/3)),1); } if stime > 130000 and Condition2 == false Then{ Condition2 = true; ExitLong("b분할2",OnClose,def,"",Int(CurrentContracts*(1/2)),1); } if stime > 145000 and Condition3 == false Then { Condition3 = true; ExitLong("b분할3"); } } } if MarketPosition != 1 Then{ Condition1 = false; Condition2 = False; Condition3 = false; } 2월 6일의 경우 아래와 같이 신호가 발생합니다 9:01:47에 시초가 대비 0.25%상승해 첫진입 (CurrentContracts 10) 9:03:01에 시초가 대비 0.50%상승해 두번째 진입 (CurrentContracts 20) 9:34:18에 시초가 대비 0.75%상승해 세번째 진입 (CurrentContracts 30) 10:11:03에 시초가 대비 0.50%까지 하락해 10계약 청산 (CurrentContracts 20) 11:20:00에 1/3 청산 (CurrentContracts 14) 13:00:05에 1/2 청산 (CurrentContracts 7) 14:50:02에 전량 청산 (CurrentContracts 0) 즐거운 하루되세요 > 행복한가방 님이 쓴 글입니다. > 제목 : 행복; 수식 작성 바랍니다 > 한국의 금융산업 발전을 위해 불철주야 애쓰시는 귀하의 노고를 높이 평가합니다 시스템식 작성 바랍니다 < 아래 > 의 시스템식에서 에러가 있습니다 ===========< 아래 >=========================== If Date == 20140206 Then { IF MarketPosition == 0 and stime < 112000 Then { buy("b0x",AtStop,dayopen*(1+0.25/100),10); } If MarketPosition == 1 and stime < 112000 Then { If CurrentContracts == 10 Then { buy("b1x",AtStop,EntryPrice*(1+0.25/100),10); ExitLong("el1x",AtStop,EntryPrice*(1-0.25/100),"",10,1); } If CurrentContracts == 20 Then { buy("b2x",AtStop,EntryPrice*(1+0.5/100),10); ExitLong("el2x",AtStop,EntryPrice,"",10,1); } If CurrentContracts == 30 Then { buy("b3x",AtStop,EntryPrice*(1+0.75/100),10); ExitLong("el3x",AtStop,EntryPrice*(1+0.25/100),"",10,1); } If CurrentContracts == 40 Then { buy("b4x",AtStop,EntryPrice*(1+1/100),10); ExitLong("el4x",AtStop,EntryPrice*(1+0.75/100),"",10,1); } } If MarketPosition == 1 Then { if stime >= 112000 Then { ExitLong("b분할1",OnClose,def,"",Int(CurrentContracts*(1/3)),1); } // 직전 잔고 30계약의 1/3 인 10계약을 청산하여 잔고는 20계약으로 if stime >= 130000 Then { ExitLong("b분할2",OnClose,def,"",Int(CurrentContracts*(1/2)),1); } // 직전 잔고 20계약의 1/2 인 10계약을 청산하여 잔고는 10계약으로 if stime >= 145000 Then { ExitLong("b분할3"); } // 직전 잔고 10계약을 모두 청산하여 잔고는 0계약으로 } } ================================================================== ======= 시스템식 < 아래 >의 조건은 =============================== 대상; 연결선물지수 주기; 10틱 일자; 2014년 2월 6일 진입&청산 수량; 1회당 10계약 진입&청산 시간; 11시 20분 이전에는 - 시초가 기준으로 0.25% 상승하면 buy 하고 - 최초진입가(entryprice) 기준으로 0.25% 상승할 때마다 추가로 buy 한다 - buy 하다가 0.25% 하락할 때마다 exitlong 한다 분할 청산 기간; 11시 20분 이후 - 분할 청산할 계약 수; 30계약( 11시13분18초에 10계약 buy 하여 30계약이 됨) - 분할 청산 회수; 3회 - 1회당 분할 청산 계약 수; 10계약 - 1차 분할 청산 시점; 11시 20분 (10계약 청산 후 잔고는 20계약) - 2차 분할 청산 시점; 13시 (10계약 청산 후 잔고는 10계약) - 3차 분할 청산 시점; 14시 50분 (10계약 청산 후 잔고는 0계약) ==================================================================== 그러나 성과보고서에 의하면 3회에 나누어 청산하는 계약수가 1차 분할; 20계약 2차 분할; 5계약 3차 분할; 5계약 입니다 무엇이 잘못되었는지요? 바로잡아 주시기 바랍니다 수고하십시요^^