커뮤니티
질문드립니다.
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인지.. 감이 안잡힙니다.
또 피라미딩 로직을 제거하면 정상작동하니 말이지요
다음글