커뮤니티

질문입니다.

프로필 이미지
yanartas
2018-03-18 19:31:49
182
글번호 117485
답변완료
선물거래에서 피라미딩에 관한 질문입니다. 예를들어, 1계약을 거래하는 시스템이 다음과 같이 있다고 가정해봅니다. if c > ma(c, 10) then { buy("b", atmarket, def, 1); } if c < ma(c, 5) then { sell("s", atmarket, def, 1); } 위 시스템에서 피라미딩을 쌓으려합니다. 피라미딩 진입 로직은 다음과 같습니다. 매수1계약 진입 후 c값이 직전c값보다 크면 1계약추가진입합니다. 만약 c값이 직전c값보다 작다면 1계약을 줄입니다. 여기서 중요한 점은 매수시그널이 발생한 상황이라면 적어도 1계약은 유지하고 있어야합니다. 즉, 매수시그널이 발생한 후 포지션이 0이 되면 안되게 하고 싶습니다. 추가진입과 그에대한 청산은 매도시그널이 나올때까지 계속됩니다. 매도쪽도 마찬가지입니다. 매도시그널이 발생하고 c값이 직전c값보다 작으면 추가 1계약진입합니다. 만약 c값이 직전c값보다 커지면 1계약을 줄입니다. 매도시그널 발생 후 적어도 1계약은 유지하고 있어야 합니다. 역시 매수시그널이 발생할 때까지 계속 시행합니다. 또한, 매수나 매도 피라미딩 시그널이 오리지널 매수매도 시그널과 겹치지 않아야 합니다. 다음과 같은 로직을 예시로 부탁드립니다. 감사합니다.
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-03-19 14:41:11

안녕하세요 예스스탁입니다. 피라미딩을 모든진입신호 허용으로 설정하고 적용하시면 됩니다. if MarketPosition <= 0 and c > ma(c, 10) then { buy("b", atmarket, def, 1); } if MarketPosition >= 0 and c < ma(c, 5) then { sell("s", atmarket, def, 1); } if MarketPosition == 1 Then{ if BarsSinceEntry > 0 and C > C[1] Then buy("bb",OnClose,def,1); if C < C[1] and CurrentContracts >= 2 Then exitlong("bx",OnClose,def,"",1,1); } if MarketPosition == -1 Then{ if BarsSinceEntry > 0 and C < C[1] Then sell("ss",OnClose,def,1); if C > C[1] and CurrentContracts >= 2 Then ExitShort("sx",OnClose,def,"",1,1); } 즐거운 하루되세요 > yanartas 님이 쓴 글입니다. > 제목 : 질문입니다. > 선물거래에서 피라미딩에 관한 질문입니다. 예를들어, 1계약을 거래하는 시스템이 다음과 같이 있다고 가정해봅니다. if c > ma(c, 10) then { buy("b", atmarket, def, 1); } if c < ma(c, 5) then { sell("s", atmarket, def, 1); } 위 시스템에서 피라미딩을 쌓으려합니다. 피라미딩 진입 로직은 다음과 같습니다. 매수1계약 진입 후 c값이 직전c값보다 크면 1계약추가진입합니다. 만약 c값이 직전c값보다 작다면 1계약을 줄입니다. 여기서 중요한 점은 매수시그널이 발생한 상황이라면 적어도 1계약은 유지하고 있어야합니다. 즉, 매수시그널이 발생한 후 포지션이 0이 되면 안되게 하고 싶습니다. 추가진입과 그에대한 청산은 매도시그널이 나올때까지 계속됩니다. 매도쪽도 마찬가지입니다. 매도시그널이 발생하고 c값이 직전c값보다 작으면 추가 1계약진입합니다. 만약 c값이 직전c값보다 커지면 1계약을 줄입니다. 매도시그널 발생 후 적어도 1계약은 유지하고 있어야 합니다. 역시 매수시그널이 발생할 때까지 계속 시행합니다. 또한, 매수나 매도 피라미딩 시그널이 오리지널 매수매도 시그널과 겹치지 않아야 합니다. 다음과 같은 로직을 예시로 부탁드립니다. 감사합니다.