커뮤니티

질문드립니다.

프로필 이미지
stockric
2018-03-18 21:16:11
150
글번호 117478
답변완료
var : BLcnt(0),SLcnt(0),추격횟수(0), 피라미딩매수(0); if Bdate != Bdate[1] Then{ BLcnt = 0; SLcnt = 0; } if TotalTrades > TotalTrades[1] and MarketPosition(1) == 1 and IsExitName("StopLoss",1) == true Then BLcnt = BLcnt+1; if TotalTrades > TotalTrades[1] and MarketPosition(1) == -1 and IsExitName("StopLoss",1) == true Then SLcnt = SLcnt+1; 손실횟수제한 로직입니다. 문제는 피라미딩로직을 넣기전에는 잘 작동하였으나, 피라미딩이 작동되고부터는 본 제한로직이 잘 작동하지않습니다. 가령 진입제한이 나오지않아야하는데 나온다거나.. 분명 강조식으로 페인트바되는것을 확인하였으나, 실제 시스템에서 진입은 이루어지지않습니다. stoploss가 나오지않았는데말이지요. 매수조건입니다.(매도조건도 첨부한 로직과 구조는 동일합니다.) if stime >= 080000 or stime < 040000 Then{ If MarketPosition == 0 then if 시그널 and BLcnt < 2 Then Buy("매수",AtStop,Close,DEF); If MarketPosition == 1 Then{ If 조건 Then{ Buy("추가매수",AtStop,Close,DEF);} If crossup(조건) Then exitlong("피라미딩7청산",AtMarket,DEF,"추가매수"); } 저렇게 피라미딩7청산이 이루어지고나면, 이후 매도 신호가 나오지않습니다. 이유가뭘까요.. 반대로 매도후 매수신호가 무시되는것도 마찬가지구요. 청산신호의 오류일까요 exitlong, short함수랑은 관계가없는듯한데.. totaltrade인지.. 감이 안잡힙니다. 또 피라미딩 로직을 제거하면 정상작동하니 말이지요
시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2018-03-19 11:53:31

안녕하세요 예스스탁입니다. 올리신 내용만으로는 어느 부분의 문제인지 알수 없습니다. 다만 피라미딩을 하고 분할청산되는 상황이면 당일 매수/매도 각 손절매 횟수 카운트 하는 내용을 변경해야 합니다. TotalTrades는 거래횟수입니다. 1개의 거래횟수는 진입후 전량청산된 것을 의미합니다. 그러므로 TotalTrades > TotalTrades[1] 조건은 청산완료될때만 체크하게 됩니다. 아래와 같이 변경되면 수식내에서 분할로 청산시에 중간에 발생하는 강제청산 손절매로 청산되는 횟수도 체크할수 있습니다. var : BLcnt(0),SLcnt(0),추격횟수(0), 피라미딩매수(0); if Bdate != Bdate[1] Then{ BLcnt = 0; SLcnt = 0; } if MarketPosition(1) == 1 and TotalTrades > TotalTrades[1] and LatestExitName(1) == "StopLoss" Then BLcnt = BLcnt+1; if MarketPosition == 1 and CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "StopLoss" Then BLcnt = BLcnt+1; if TotalTrades > TotalTrades[1] and MarketPosition(1) == -1 and LatestExitName(1) == "StopLoss" Then SLcnt = SLcnt+1; if MarketPosition == -1 and CurrentContracts < CurrentContracts[1] and LatestExitName(0) == "StopLoss" Then SLcnt = SLcnt+1; 문의하신 내용은 각 진입의 여러 조건이 있을때 모두 살펴보셔야 합니다. 즐거운 하루되세요 > stockric 님이 쓴 글입니다. > 제목 : 질문드립니다. > var : BLcnt(0),SLcnt(0),추격횟수(0), 피라미딩매수(0); if Bdate != Bdate[1] Then{ BLcnt = 0; SLcnt = 0; } if TotalTrades > TotalTrades[1] and MarketPosition(1) == 1 and IsExitName("StopLoss",1) == true Then BLcnt = BLcnt+1; if TotalTrades > TotalTrades[1] and MarketPosition(1) == -1 and IsExitName("StopLoss",1) == true Then SLcnt = SLcnt+1; 손실횟수제한 로직입니다. 문제는 피라미딩로직을 넣기전에는 잘 작동하였으나, 피라미딩이 작동되고부터는 본 제한로직이 잘 작동하지않습니다. 가령 진입제한이 나오지않아야하는데 나온다거나.. 분명 강조식으로 페인트바되는것을 확인하였으나, 실제 시스템에서 진입은 이루어지지않습니다. stoploss가 나오지않았는데말이지요. 매수조건입니다.(매도조건도 첨부한 로직과 구조는 동일합니다.) if stime >= 080000 or stime < 040000 Then{ If MarketPosition == 0 then if 시그널 and BLcnt < 2 Then Buy("매수",AtStop,Close,DEF); If MarketPosition == 1 Then{ If 조건 Then{ Buy("추가매수",AtStop,Close,DEF);} If crossup(조건) Then exitlong("피라미딩7청산",AtMarket,DEF,"추가매수"); } 저렇게 피라미딩7청산이 이루어지고나면, 이후 매도 신호가 나오지않습니다. 이유가뭘까요.. 반대로 매도후 매수신호가 무시되는것도 마찬가지구요. 청산신호의 오류일까요 exitlong, short함수랑은 관계가없는듯한데.. totaltrade인지.. 감이 안잡힙니다. 또 피라미딩 로직을 제거하면 정상작동하니 말이지요