안녕하세요 하단 로직을 수식으로 짜고 있는데 실행 시 시스템 적용 시 진입이 발생하지 않아 검토 부탁드립니다
1차 신호: X봉 고가/저가를 돌파
1차 신호 이후 XX봉 수 동안 되돌림 발생하는지 감지
2차 신호: 되돌림 이후 1차 신호의 고가/저가를 다시 돌파하면 매수/매도
혹여나 제가 작성한 코드가 이해하기 어려우면 위 로직을 수식으로 작성부탁드리겠습니다
도움주셔서 감사합니다
Inputs: X1(20), WaitLen(5);
Vars: hh(0), ll(0),
BreakBar(-1), LongReady(False), ShortReady(False);
// 1. 고점/저점 계산
hh = Highest(H, X1);
ll = Lowest(L, X1);
// 2. 1차 돌파 감지
If BreakBar == -1 and CrossUp(C, hh[1]) then
Begin
BreakBar = CurrentBar;
LongReady = False;
End;
If BreakBar == -1 and CrossDown(C, ll[1]) then
Begin
BreakBar = CurrentBar;
ShortReady = False;
End;
// 3. 되돌림 감지 (고가 아래 / 저가 위로 다시 내려왔는지)
If BreakBar > 0 and CurrentBar <= BreakBar + WaitLen then
Begin
If Close < hh then LongReady = True;
If Close > ll then ShortReady = True;
End;
// 4. 되돌림 이후 재돌파 → 진입
If LongReady and Close > hh then
Begin
Buy("B1", AtMarket, DEf, 1);
BreakBar = -1;
LongReady = False;
End;
If ShortReady and Close < ll then
Begin
Sell("B2", AtMarket, DEf, 1);
BreakBar = -1;
ShortReady = False;
End;
// 5. 대기 기간 초과 → 초기화
If BreakBar > 0 and CurrentBar > BreakBar + WaitLen then
Begin
BreakBar = -1;
LongReady = False;
ShortReady = False;
End;
답변 1
예스스탁
예스스탁 답변
2025-05-13 18:43:24
안녕하세요
예스스탁입니다.
올려주신 수식에서 1차돌파와 되돌림 재돌파가
내용상 동일봉에서 동시 발생하는 조건이라 진입이 되지 않습니다.
변수에 값 저장 후 한봉전 값을 이용하게 작성하시면 됩니다.
Input : X1(20), WaitLen(5);
Vars : hh(0),ll(0);
var : ups(0),uph(0),upi(0);
var : dns(0),dnl(0),dni(0);
hh = Highest(H, X1);
ll = Lowest(L, X1);
if C > HH[1] Then
{
ups = 1;
upH = H;
upi = Index;
}
Else
{
if ups == 1 and C < uph Then
ups = 2;
}
if CrossDown(C,LL[1]) Then
{
dns = 1;
dnl = L;
dni = Index;
}
Else
{
if dns == 1 and C > dnL Then
dns = 2;
}
if ups[1] == 2 and C > upH[1] and Index > upi[1] and Index <= upi[1]+WaitLen Then
Buy();
if dns[1] == 2 and C < dnL[1] and Index > dni[1] and Index <= dni[1]+WaitLen Then
Sell();
즐거운 하루되세요
> sewzie 님이 쓴 글입니다.
> 제목 : 수식 문의드립니다
> 안녕하세요 하단 로직을 수식으로 짜고 있는데 실행 시 시스템 적용 시 진입이 발생하지 않아 검토 부탁드립니다
1차 신호: X봉 고가/저가를 돌파
1차 신호 이후 XX봉 수 동안 되돌림 발생하는지 감지
2차 신호: 되돌림 이후 1차 신호의 고가/저가를 다시 돌파하면 매수/매도
혹여나 제가 작성한 코드가 이해하기 어려우면 위 로직을 수식으로 작성부탁드리겠습니다
도움주셔서 감사합니다
Inputs: X1(20), WaitLen(5);
Vars: hh(0), ll(0),
BreakBar(-1), LongReady(False), ShortReady(False);
// 1. 고점/저점 계산
hh = Highest(H, X1);
ll = Lowest(L, X1);
// 2. 1차 돌파 감지
If BreakBar == -1 and CrossUp(C, hh[1]) then
Begin
BreakBar = CurrentBar;
LongReady = False;
End;
If BreakBar == -1 and CrossDown(C, ll[1]) then
Begin
BreakBar = CurrentBar;
ShortReady = False;
End;
// 3. 되돌림 감지 (고가 아래 / 저가 위로 다시 내려왔는지)
If BreakBar > 0 and CurrentBar <= BreakBar + WaitLen then
Begin
If Close < hh then LongReady = True;
If Close > ll then ShortReady = True;
End;
// 4. 되돌림 이후 재돌파 → 진입
If LongReady and Close > hh then
Begin
Buy("B1", AtMarket, DEf, 1);
BreakBar = -1;
LongReady = False;
End;
If ShortReady and Close < ll then
Begin
Sell("B2", AtMarket, DEf, 1);
BreakBar = -1;
ShortReady = False;
End;
// 5. 대기 기간 초과 → 초기화
If BreakBar > 0 and CurrentBar > BreakBar + WaitLen then
Begin
BreakBar = -1;
LongReady = False;
ShortReady = False;
End;