커뮤니티

질문입니다.

프로필 이미지
yanartas
2017-03-21 12:53:37
97
글번호 108025
답변완료
선물에서 시스템을 작성해서 운영하고자 합니다. 피라미딩에 관련한 질문입니다. 일단 1계약으로 매수, 매도하는 시스템을 작성하였습니다. 신호는 AtMarket으로 작성하였습니다. 피라미딩은 매수(매도)로 진입하였을 때 진입가격대비 5틱 상승(하락)했을 때 추가로 1계약을 진입하도록 하였습니다. 신호는 AtStop으로 작성하였습니다. 예를들면 이렇습니다. if marketposition(0) <= 0 and crossup(c, ma(5)) then { buy('b", atmarket, def, 1);} if marketposition(0) >= 0 and crossdown(c, ma(10)) then { sell("s", atmarket, def, 1); } If MarketPosition(0) == 1 && CurrentContracts == 1 Then { Buy("+2", AtStop, LatestEntryPrice + (0.05 * 5)); } If MarketPosition(0) == -1 && CurrentContracts == 1 Then { Sell("-2", AtStop, LatestEntryPrice - (0.05 * 5));} 그런데 한가지 문제점이 생겼는데, 예를들어 매도로 진입한 후에 매도로 진입한 봉에서 가격이 상승하더니 매수 피라미딩신호가 발생하여 매수로 포지션이 바뀌어 버리는 현상이 발생합니다. 아마도 제 생각으로는 AtStop으로 피라미딩을 진입하게 만들어서 이런 현상이 발생한 듯 합니다. 원래 제 의도는 초기진입이 매수("b")라면 그 후에는 매도("s") 혹은 매수피라미딩("+2") 신호만 발생시키고 싶고, 초기진입이 매도("s")라면 그 후에는 매수("b") 혹은 매도피라미딩("-2") 신호만 발생시키고 싶습니다. 즉, 매수 진입 후 매도피라미딩 진입이나, 매도 진입 후 매수피라미딩 신호는 나오지 않게 하고 싶습니다. 왜 이런 현상이 발생하는지 그 이유와 이를 방지할 수 있는 방법을 간단한 예시로 부탁드리겠습니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2017-03-21 15:37:41

안녕하세요 예스스탁입니다. 현재 수식의 문제는 하나의 봉에서 반대방향 진입과 추가진입이 동시 셋팅되어 다음봉에서 신호가 같이 발생하는 부분에 있습니다. 매수추가 진입이 반대방향 조건과 겹치지 않게 조건을 추가해 주셔야 합니다. if marketposition(0) <= 0 and crossup(c, ma(c,5)) then { buy("b", atmarket, def, 1); } if marketposition(0) >= 0 and crossdown(c, ma(c,10)) then { sell("s", atmarket, def, 1); } If MarketPosition(0) == 1 && CurrentContracts == 1 and crossdown(c, ma(c,10)) == false Then { Buy("+2", AtStop, LatestEntryPrice + (0.05 * 5)); } If MarketPosition(0) == -1 && CurrentContracts == 1 and crossup(c, ma(c,5)) == false Then { Sell("-2", AtStop, LatestEntryPrice - (0.05 * 5)); } 즐거운 하루되세요 > yanartas 님이 쓴 글입니다. > 제목 : 질문입니다. > 선물에서 시스템을 작성해서 운영하고자 합니다. 피라미딩에 관련한 질문입니다. 일단 1계약으로 매수, 매도하는 시스템을 작성하였습니다. 신호는 AtMarket으로 작성하였습니다. 피라미딩은 매수(매도)로 진입하였을 때 진입가격대비 5틱 상승(하락)했을 때 추가로 1계약을 진입하도록 하였습니다. 신호는 AtStop으로 작성하였습니다. 예를들면 이렇습니다. if marketposition(0) <= 0 and crossup(c, ma(5)) then { buy('b", atmarket, def, 1);} if marketposition(0) >= 0 and crossdown(c, ma(10)) then { sell("s", atmarket, def, 1); } If MarketPosition(0) == 1 && CurrentContracts == 1 Then { Buy("+2", AtStop, LatestEntryPrice + (0.05 * 5)); } If MarketPosition(0) == -1 && CurrentContracts == 1 Then { Sell("-2", AtStop, LatestEntryPrice - (0.05 * 5));} 그런데 한가지 문제점이 생겼는데, 예를들어 매도로 진입한 후에 매도로 진입한 봉에서 가격이 상승하더니 매수 피라미딩신호가 발생하여 매수로 포지션이 바뀌어 버리는 현상이 발생합니다. 아마도 제 생각으로는 AtStop으로 피라미딩을 진입하게 만들어서 이런 현상이 발생한 듯 합니다. 원래 제 의도는 초기진입이 매수("b")라면 그 후에는 매도("s") 혹은 매수피라미딩("+2") 신호만 발생시키고 싶고, 초기진입이 매도("s")라면 그 후에는 매수("b") 혹은 매도피라미딩("-2") 신호만 발생시키고 싶습니다. 즉, 매수 진입 후 매도피라미딩 진입이나, 매도 진입 후 매수피라미딩 신호는 나오지 않게 하고 싶습니다. 왜 이런 현상이 발생하는지 그 이유와 이를 방지할 수 있는 방법을 간단한 예시로 부탁드리겠습니다. 감사합니다.