커뮤니티
진입봉에서만 stoploss 함수 사용하기
2026-07-14 22:31:52
50
글번호 232842
안녕하세요, 혹시 진입한 봉에서만 stoploss 함수 사용이 가능할까요?
if barssinceentry == 0 then setstoploss(10,pointstop);
else ststoploss(9999,poinstop);
이런 수식을 사용하였는데요, 진입봉에서 10포인트 이상 급등/급락하면 진입봉에서 청산을 해야 하는데 계속 다음봉에서 청산되고 있습니다 ㅠㅠ
답변 1
예스스탁 예스스탁 답변
2026-07-15 13:37:23
안녕하세요
예스스탁입니다.
랭귀지에서 if문은 봉완성시입니다.
봉완성시 barssinceentry == 0 면 setstoploss가 셋팅되므로
신호가 발생한 봉에서는 발생하지 못합니다.
진입이 atmarket으로 시가에 나오거나
atstop이나 atlimit으로 봉 중간에 진입하고
진입봉에서만 동작하는 손절이면 별도로 exitlong,exitshort 함수를 이용해서 구현하셔야 합니다.
진입과 같이 셋팅이 되어서 해당봉만 감시하게 하셔야 합니다.
진입의 신호타입별로 다르므로 아래식 참고하시기 바랍니다.
진입이 atmarket인 경우
if MarketPosition <= 0 and 매수조건 Then
{
Buy("b",AtMarket);
ExitLong("bx",AtStop,NextBarOpen-10);
}
if MarketPosition >= 0 and 매도조건 Then
{
Sell("s",AtMarket);
ExitShort("sx",AtStop,NextBarOpen+10);
}
진입이 atstop인 경우
if MarketPosition <= 0 and 매수조건 Then
{
Buy("b",AtStop,H+PriceScale*3);
ExitLong("bx",AtStop,max(NextBarOpen,H+PriceScale*3)-10);
}
if MarketPosition >= 0 and 매도조건 Then
{
Sell("s",AtStop,L-PriceScale*3);
ExitShort("sx",AtStop,min(NextBarOpen,L-PriceScale*3)+10);
}
진입이 atlimit인 경우
if MarketPosition <= 0 and 매수조건 Then
{
Buy("b",AtLimit,L-PriceScale*3);
ExitLong("bx",AtStop,min(NextBarOpen,L-PriceScale*3)-10);
}
if MarketPosition >= 0 and 매도조건 Then
{
Sell("s",AtLimit,H+PriceScale*3);
ExitShort("sx",AtStop,max(NextBarOpen,H+PriceScale*3)+10);
}
즐거운 하루되세요