커뮤니티

리버스 익절구간 재질문 드립니다.

프로필 이미지
새로운세상
2011-08-01 09:45:02
917
글번호 41490
답변완료
안녕하세요~ 즐거운 주말되셨는지요? 지난주 질문드린 내용을 검증해보니 제 의도와 부합되기는 하는데, 약간의 문제점이 있어서 재질문드립니다. 수정을 요하는 부분은 [작성해주신 수식] 아래에 첨부하였습니다. ----------------------------------------- [ 지난번 질문내용 ] 선물 분봉기준으로 다음과 같은 리버스 수식이 있을 때 If stime>=0905 then { if 조건1 then Buy("B"); if 조건2 then Sell("S"); } SetStopEndofday(1440); ** 익절기준 진입가대비 1%수익, 익절전 매수진입을 예로 들겠습니다. ** << 손실을 포함한 익절이 발생하지 않는 범위에서 현재가가 움직일 때 >> 익절이 발생하지 않은 상태로, 위의 수식에 의하여 리버스 매매 계속 << 익절 발생후 현재가격이 진입가와 익절가를 범위로 움직일 때 >> 1) 매수 진입후 1% 수익이 나면 익절을 하고 2) 익절후, 익절이전에 진입한 매수가에 도달하면 재진입 3) 매수진입가와 익절가 범위에서 현재가가 움직일 때 조건1,조건2에 의한 매수,매도는 없슴 즉, 익절전 매수진입가에 도달하면 매수 익절가에 도달하면 매수청산 반복만 가능 << 익절가를 넘어서 현재가가 움직일 때 >> 매수-익절후 무포지션상태에서 조건2에 의한 매도만 가능 이시점부터는 익절이 발생하지 않은 새로운 시작으로 보고 설명된 모든 내용 반복 즉, 이때부터는 다시 리버스로 매매후 익절이 발생하면 설명된 내용 반복 << 익절전 매수진입가 이하에서 현재가가 움직일 때 >> 상기 2)의 매수진입가에서 발생한 매수포지션 발생상태인데, 조건2 발생시 리버스 매매 이시점 역시 익절이 발생하지 않은 새로운 시작으로 보고 리버스 매매를 다시 하다가 익절이 발생하면 설명된 모든 내용을 반복함. ** 익절전이 매도진입이었다면 반대가 되겠습니다 ** --------------------------------------- [ 작성해주신 수식 ] var : 조건1(false),조건2(false); If stime>=090500 then { if (MarketPosition == -1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false)) and 조건1 then Buy("B"); if (MarketPosition == 1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false)) and 조건2 then Sell("S"); } if MarketPosition == 0 and IsExitName("StopProfittarget",1) Then{ if MarketPosition(1) == 1 Then{ buy("reB",Atlimit,EntryPrice(1)); if C > ExitPrice(1) and 조건2 Then sell("SS"); } if MarketPosition(1) == -1 Then{ Sell("reS",Atlimit,EntryPrice(1)); if C < ExitPrice(1) and 조건1 Then buy("bb"); } } SetStopProfittarget(1,PointStop); SetStopEndofday(144000); ----------------------------- [ 수정 요망 사항 ] 위의 수식을 적용하여 검증해 보았는데, 당일 최초진입은 "B" 또는 "S"가 반드시 되어야 하는데, "reB","reS","BB","SS"로 당일의 첫진입이 발생하는 경우가 발생하고 있습니다. 제 판단으로는 특히 장마감종료가 아닌 익절로 해당일의 매매가 종료된 경우 이런 현상이 발생하는 것으로 보입니다. (다른 경우도 있는지는 잘 모르겠습니다) entrydate나 exitdate를 sdate와 연결하여 수정을 해봤는데 잘 안되네요. 장마감종료가 되었건 익절로 당일매매를 종료하였건, 다음 영업일은 다시 처음부터 매매를 시작하도록 부탁드립니다. (즉, "B" 또는 "S"로 시작되고, 이후 지난 내용처럼 매매가 일어날 수 있도록...) 그럼 새롭게 시작하는 8월도 활기찬 시간되시기를 바라겠습니다. 감사합니다 !!!
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2011-08-01 12:53:42

안녕하세요? 예스스탁입니다. 진입횟수를 제한하는 식을 이용해서 작성하면 될것 같습니다. 아래와 같이 작성해 보았습니다. var : 조건1(false),조건2(false); # 진입횟수제한식 Var : Count(0); Count = 0 ; For Value1 = 0 To 10 { If EntryDate(Value1) == date Then Count = Count + 1; } if EntriesToday < 1 then { //당일 진입이 한번도 없으면~ if 조건1 then Buy("B1"); if 조건2 then Sell("S1"); } else { //당일 한번 이상 진입이 있으면~ If stime>=090500 then { if (MarketPosition == -1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false)) and 조건1 then Buy("B"); if (MarketPosition == 1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false)) and 조건2 then Sell("S"); } if MarketPosition == 0 and IsExitName("StopProfittarget",1) Then{ if MarketPosition(1) == 1 Then{ buy("reB",Atlimit,EntryPrice(1)); if C > ExitPrice(1) and 조건2 Then sell("SS"); } if MarketPosition(1) == -1 Then{ Sell("reS",Atlimit,EntryPrice(1)); if C < ExitPrice(1) and 조건1 Then buy("bb"); } } } SetStopProfittarget(1,PointStop); SetStopEndofday(144000); 감사합니다. > 새로운세상 님이 쓴 글입니다. > 제목 : 리버스 익절구간 재질문 드립니다. > 안녕하세요~ 즐거운 주말되셨는지요? 지난주 질문드린 내용을 검증해보니 제 의도와 부합되기는 하는데, 약간의 문제점이 있어서 재질문드립니다. 수정을 요하는 부분은 [작성해주신 수식] 아래에 첨부하였습니다. ----------------------------------------- [ 지난번 질문내용 ] 선물 분봉기준으로 다음과 같은 리버스 수식이 있을 때 If stime>=0905 then { if 조건1 then Buy("B"); if 조건2 then Sell("S"); } SetStopEndofday(1440); ** 익절기준 진입가대비 1%수익, 익절전 매수진입을 예로 들겠습니다. ** << 손실을 포함한 익절이 발생하지 않는 범위에서 현재가가 움직일 때 >> 익절이 발생하지 않은 상태로, 위의 수식에 의하여 리버스 매매 계속 << 익절 발생후 현재가격이 진입가와 익절가를 범위로 움직일 때 >> 1) 매수 진입후 1% 수익이 나면 익절을 하고 2) 익절후, 익절이전에 진입한 매수가에 도달하면 재진입 3) 매수진입가와 익절가 범위에서 현재가가 움직일 때 조건1,조건2에 의한 매수,매도는 없슴 즉, 익절전 매수진입가에 도달하면 매수 익절가에 도달하면 매수청산 반복만 가능 << 익절가를 넘어서 현재가가 움직일 때 >> 매수-익절후 무포지션상태에서 조건2에 의한 매도만 가능 이시점부터는 익절이 발생하지 않은 새로운 시작으로 보고 설명된 모든 내용 반복 즉, 이때부터는 다시 리버스로 매매후 익절이 발생하면 설명된 내용 반복 << 익절전 매수진입가 이하에서 현재가가 움직일 때 >> 상기 2)의 매수진입가에서 발생한 매수포지션 발생상태인데, 조건2 발생시 리버스 매매 이시점 역시 익절이 발생하지 않은 새로운 시작으로 보고 리버스 매매를 다시 하다가 익절이 발생하면 설명된 모든 내용을 반복함. ** 익절전이 매도진입이었다면 반대가 되겠습니다 ** --------------------------------------- [ 작성해주신 수식 ] var : 조건1(false),조건2(false); If stime>=090500 then { if (MarketPosition == -1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false)) and 조건1 then Buy("B"); if (MarketPosition == 1 or (MarketPosition == 0 and IsExitName("StopProfittarget",1) == false)) and 조건2 then Sell("S"); } if MarketPosition == 0 and IsExitName("StopProfittarget",1) Then{ if MarketPosition(1) == 1 Then{ buy("reB",Atlimit,EntryPrice(1)); if C > ExitPrice(1) and 조건2 Then sell("SS"); } if MarketPosition(1) == -1 Then{ Sell("reS",Atlimit,EntryPrice(1)); if C < ExitPrice(1) and 조건1 Then buy("bb"); } } SetStopProfittarget(1,PointStop); SetStopEndofday(144000); ----------------------------- [ 수정 요망 사항 ] 위의 수식을 적용하여 검증해 보았는데, 당일 최초진입은 "B" 또는 "S"가 반드시 되어야 하는데, "reB","reS","BB","SS"로 당일의 첫진입이 발생하는 경우가 발생하고 있습니다. 제 판단으로는 특히 장마감종료가 아닌 익절로 해당일의 매매가 종료된 경우 이런 현상이 발생하는 것으로 보입니다. (다른 경우도 있는지는 잘 모르겠습니다) entrydate나 exitdate를 sdate와 연결하여 수정을 해봤는데 잘 안되네요. 장마감종료가 되었건 익절로 당일매매를 종료하였건, 다음 영업일은 다시 처음부터 매매를 시작하도록 부탁드립니다. (즉, "B" 또는 "S"로 시작되고, 이후 지난 내용처럼 매매가 일어날 수 있도록...) 그럼 새롭게 시작하는 8월도 활기찬 시간되시기를 바라겠습니다. 감사합니다 !!!