커뮤니티

같은 신호를 정해진 캔들 범위안에서 진입 제한

프로필 이미지
맘속의행복
2026-01-19 10:00:23
139
글번호 229875
답변완료

첨부 이미지

안녕하세요.

예전에 같은 질문을 드려서 답변을 주신대로 수식을 작성했는데, StopLoss가 발생한 직후에는 여전히 진입이 일어나는 문제가 있습니다.

아래는 1. 예전 제 질문과 선생님이 주신 답변 내용과, 2.제가 적용해본 수식내용입니다.

첨부한 이미지는 진입제한이 적용된 이전과 이후 모습입니다. 손절 직후에도 진입이 일어나지 않게 하는 방법을 알려주시면 감사하겠습니다.


1.

안녕하세요

같은 진입신호를 특정 캔들 범위 안에서는 다시 발생하지 않게 하는 방법이 궁금합니다.

예를 들어, "A"매수신호가 발생한 이후에 20개 캔들 이내에서는 다시 발생하지 않게 하는 것입니다.

항상 감사합니다


예스스탁 예스스탁 답변

안녕하세요

예스스탁입니다.


var : Bidx(0),Sidx(0);


if 매수조건 and (Bidx == 0 or (Bidx > 0 and index >= Bidx+20)) Then

Buy("b");


if 매도조건 and (Sidx == 0 or (Sidx > 0 and index >= Sidx+20)) Then

Sell("s");


if MarketPosition == 1 Then

Bidx = Index[BarsSinceEntry];

if MarketPosition == -1 Then

Sidx = Index[BarsSinceEntry];


2.

var : Bidx(0),Sidx(0);

if 매수조건

and (Bidx == 0 or (Bidx > 0 and index >= Bidx + 10))

Then

{

Buy("매수");

}


if MarketPosition == 1 Then{

Bidx = Index[BarsSinceEntry];

}

if MarketPosition == 1 Then

{

if IsEntryName("매수") == true Then

{

SetStopLoss(0.60,PointStop);

}

}


시스템
답변 1
프로필 이미지

예스스탁 예스스탁 답변

2026-01-20 10:07:22

안녕하세요 예스스탁입니다. 청산이 onclose 진입 후 바로 다음봉에 발생해서 봉완성시에 저장되는 bidx,sidx에 저장이 되지 않았습니다. 다른 방법으로 제외되게 수정해 드립니다. 직전거래가 동일방향 진입이면 직전거래 진입 후 20봉이상 경과해야 진입을 하게 됩니다. 만약 직전거래 진입봉기준이 아닌 청산봉 기준이면 BarsSinceEntry(1)를 BarsSinceExit(1)으로 변경하시면 됩니다. var : Bcond(False),Scond(False); Bcond = MarketPosition == 0 and MarketPosition(1) == 1 and BarsSinceEntry(1) < 20; Scond = MarketPosition == 0 and MarketPosition(1) == -1 and BarsSinceEntry(1) < 20; if 매수신호 and Bcond == False Then Buy("b"); if 매도신호 and Scond == False Then Sell("s"); 즐거운 하루되세요