커뮤니티

이상해요..

프로필 이미지
팽구
2012-04-25 08:43:43
398
글번호 50447
답변완료
시스템에서 열번에 한번정도는 매매신호가 잡히지 않아요 실전이나 시뮬에서도 동일증상인데요 종목은 마이크로eur/usd 이고 1분봉입니다. 메시지로그를 보면 C >= 1.3170 일때 부분청산이 되어야 하는데 청산신호가 안잡히다가, 여러번 건너뛰고 청산됩니다?? /////////////////////////////////////////////// Input: 시작날짜(20120423),시작시간(212200),매매간격(0.0040); var: 기준가(0),청산수량(3); IF (sdate >= 시작날짜 and stime >= 시작시간) Then { If MarketPosition == 0 Then { Buy("신규매수",AtMarket,DEF,10); 기준가 = O; } Else If MarketPosition > 0 Then { If C >= (기준가 + 매매간격) Then { ExitLong("매수청산",AtMarket,DEF,"",청산수량,1); } } } MessageLog("시가,%.4f,종가,%.4f,기준가,%.4f,미결제,%.0f",open,close,기준가, CurrentContracts);
시스템
답변 3
프로필 이미지

예스스탁 예스스탁 답변

2012-04-25 13:57:39

안녕하세요 예스스탁입니다. 시스템에서 분할 청산은 전체 청산의 경우의 수를 산정해서 작성하셔야 합니다. 청산함수는 진입신호 당 한번씩만 발생할 수 있기 때문에 한번 진입 후 4회 분할청산이면 청산함수가 4개가 필요하게 됩니다. 진입 후 0.004씩 상승시마다 청산하고자 하시면 아래와 같이 작성하셔야 합니다. 진입은 10계약이고 청산은 3계약씩 하므로 총 4번으로 나누셔야 합니다. 청산함수는 전체 진입 후 남아 있는 수량보다 지정한 청산수량이 많으면 남아있는 만큼만 발생하므로 아래와 같이 작성하시면 됩니다. Input: 시작날짜(20120423),시작시간(212200),매매간격(0.0040); var: 기준가(0),청산수량(3); IF (sdate >= 시작날짜 and stime >= 시작시간) Then { If MarketPosition == 0 Then { Buy("신규매수",AtMarket,DEF,10); 기준가 = O; } If MarketPosition > 0 Then { If C >= (기준가 + 매매간격*1) Then ExitLong("매수청산1",AtMarket,DEF,"",청산수량,1); If C >= (기준가 + 매매간격*2) Then ExitLong("매수청산2",AtMarket,DEF,"",청산수량,1); If C >= (기준가 + 매매간격*3) Then ExitLong("매수청산3",AtMarket,DEF,"",청산수량,1); If C >= (기준가 + 매매간격*4) Then ExitLong("매수청산4",AtMarket,DEF,"",청산수량,1); } } 즐거운 하루되세요 > 팽구 님이 쓴 글입니다. > 제목 : 이상해요.. > 시스템에서 열번에 한번정도는 매매신호가 잡히지 않아요 실전이나 시뮬에서도 동일증상인데요 종목은 마이크로eur/usd 이고 1분봉입니다. 메시지로그를 보면 C >= 1.3170 일때 부분청산이 되어야 하는데 청산신호가 안잡히다가, 여러번 건너뛰고 청산됩니다?? /////////////////////////////////////////////// Input: 시작날짜(20120423),시작시간(212200),매매간격(0.0040); var: 기준가(0),청산수량(3); IF (sdate >= 시작날짜 and stime >= 시작시간) Then { If MarketPosition == 0 Then { Buy("신규매수",AtMarket,DEF,10); 기준가 = O; } Else If MarketPosition > 0 Then { If C >= (기준가 + 매매간격) Then { ExitLong("매수청산",AtMarket,DEF,"",청산수량,1); } } } MessageLog("시가,%.4f,종가,%.4f,기준가,%.4f,미결제,%.0f",open,close,기준가, CurrentContracts);
프로필 이미지

팽구

2012-04-25 22:10:43

시스템에서 분할 청산은 전체 청산의 경우의 수를 산정해서 작성해야 하는건 아는데요 그래도 안되서 그래요 수정주신데로해도 첫청산의 시점이 틀려서그래요... 직접 돌려보면 아시겠지만 청산신호가 잘못되어요.. 첫청산 이전에 여러번 청산신호가 지나갔다니깐요.. 첨부그림에서 정상이라면 종가가 1.3170 이상인 앞부분에서 먼저 주문이 나갔어야했어요
프로필 이미지

예스스탁 예스스탁 답변

2012-04-26 14:22:27

안녕하세요 예스스탁입니다. 작성된 진입과 청산식이 모두 아래 조건으로 묶여 있습니다. IF (sdate >= 시작날짜 and stime >= 시작시간) Then { 즉 시작날짜로 지정한 날짜 이후에 매일 시작시간(22시 22분)보다 시간이 클때만 청산이 발생하게 됩니다. 만약 청산은 진입발생 후에 시간적 제약 조건이 없이 발생하게 하신 다면 창산은 위 조건식 밖에 작성하셔야 합니다. Input: 시작날짜(20120423),시작시간(212200),매매간격(0.0040); var: 기준가(0),청산수량(3); IF (sdate >= 시작날짜 and stime >= 시작시간) Then { If MarketPosition == 0 Then { Buy("신규매수",AtMarket,DEF,10); 기준가 = O; } } If MarketPosition > 0 Then { If C >= (기준가 + 매매간격*1) Then ExitLong("매수청산1",AtMarket,DEF,"",청산수량,1); If C >= (기준가 + 매매간격*2) Then ExitLong("매수청산2",AtMarket,DEF,"",청산수량,1); If C >= (기준가 + 매매간격*3) Then ExitLong("매수청산3",AtMarket,DEF,"",청산수량,1); If C >= (기준가 + 매매간격*4) Then ExitLong("매수청산4",AtMarket,DEF,"",청산수량,1); } 첨부된 그림을 보시면 진입은 2012/04/23 21:35에 1.31560에 10계약 진입하고 첫번째청산이 2012/04/24 08:33에 1.31960에 3계약 청산 두번째청산이 2012/04/25 19:04에 1.32360에 3계약 청산되고 현재 4계약 미청산으로 남아 있습니다. 즐거운 하루되세요 > 팽구 님이 쓴 글입니다. > 제목 : Re : Re : 이상해요.. > 시스템에서 분할 청산은 전체 청산의 경우의 수를 산정해서 작성해야 하는건 아는데요 그래도 안되서 그래요 수정주신데로해도 첫청산의 시점이 틀려서그래요... 직접 돌려보면 아시겠지만 청산신호가 잘못되어요.. 첫청산 이전에 여러번 청산신호가 지나갔다니깐요.. 첨부그림에서 정상이라면 종가가 1.3170 이상인 앞부분에서 먼저 주문이 나갔어야했어요