예스스탁
예스스탁 답변
2025-05-16 11:16:25
안녕하세요
예스스탁입니다.
1
예스랭귀지에서 시간은 6자리숫자입니다.
작성하신 식에서는 시간이 모두 4자리입니다.
2
지정한 시간의 봉이 없을 수도 있고
각봉의 끝시간은 초단위까지 있어 정확히 같지 않을수 있습니다.
지정한 시간이후 첫봉이 지정되게 표현하시면 됩니다.
3
Inputs:
ORLen(1), // OR 범위 길이 (1=2봉, 2=3봉, ...) 1~3(step 1)
RR(1.5), // 익절: 손절의 RR배 1.5~2.5 (step 0.25)
MinRange(0.0); // OR 범위가 이 값보다 작으면 진입 안함 0~0.03 (step 0.005)
Vars:
orHigh(0), orLow(0), orRange(0),
tradeEntered(False),
orStartTime(2300 - (ORLen - 1) * 10000); // OR 시작 시간 계산
// Opening Range 계산
If (Time >= orStartTime and time[1] < orStartTime) Then
Begin
orHigh = High;
orLow = Low;
tradeEntered = False;
End;
If Time > orStartTime and Time <= 233000 Then
Begin
orHigh = MaxList(orHigh, High);
orLow = MinList(orLow, Low);
End;
If Time == 233000 Then
orRange = orHigh - orLow;
// 자정 봉에서 돌파 여부 확인
If Time >= 0 and Time <= 30 and tradeEntered == False and MarketPosition == 0 Then
Begin
If orRange >= MinRange Then
Begin
If Close > orHigh Then
Begin
Buy("ORB_Long", AtMarket, DEf, 1);
tradeEntered = True;
End
Else If Close < orLow Then
Begin
Sell("ORB_Short", AtMarket, DEf, 1);
tradeEntered = True;
End;
End;
End;
// 롱 포지션: 손절 / 익절
If MarketPosition == 1 Then
Begin
If Close < EntryPrice - orRange Then
ExitLong("StopL");
If Close > EntryPrice + orRange * RR Then
ExitLong("TargetL");
End;
// 숏 포지션: 손절 / 익절
If MarketPosition == -1 Then
Begin
If Close > EntryPrice + orRange Then
ExitShort("StopS");
If Close < EntryPrice - orRange * RR Then
ExitShort("TargetS");
End;
즐거운 하루되세요
> sewzie 님이 쓴 글입니다.
> 제목 : 시스템 진입 오류
> 안녕하세요
해당 코드가 진입이 전혀 발생하지 않아 혹시 틀린 부분이 있는 검증 부탁드립니다. 감사합니다.
전략
전일 23:00~23:30 사이 형성된 고저 범위를 기준으로,
자정(00:00)봉에서 돌파 시 다음 봉에 진입하고,
손절은 해당 범위만큼, 익절은 손절의 1.5배로 설정합니다.
Inputs:
ORLen(1), // OR 범위 길이 (1=2봉, 2=3봉, ...) 1~3(step 1)
RR(1.5), // 익절: 손절의 RR배 1.5~2.5 (step 0.25)
MinRange(0.0); // OR 범위가 이 값보다 작으면 진입 안함 0~0.03 (step 0.005)
Vars:
orHigh(0), orLow(0), orRange(0),
tradeEntered(False),
orStartTime(2300 - (ORLen - 1) * 100); // OR 시작 시간 계산
// Opening Range 계산
If Time == orStartTime Then
Begin
orHigh = High;
orLow = Low;
tradeEntered = False;
End;
If Time > orStartTime and Time <= 2330 Then
Begin
orHigh = MaxList(orHigh, High);
orLow = MinList(orLow, Low);
End;
If Time == 2330 Then
orRange = orHigh - orLow;
// 자정 봉에서 돌파 여부 확인
If Time >= 0 and Time <= 30 and tradeEntered == False and MarketPosition == 0 Then
Begin
If orRange >= MinRange Then
Begin
If Close > orHigh Then
Begin
Buy("ORB_Long", AtMarket, DEf, 1);
tradeEntered = True;
End
Else If Close < orLow Then
Begin
Sell("ORB_Short", AtMarket, DEf, 1);
tradeEntered = True;
End;
End;
End;
// 롱 포지션: 손절 / 익절
If MarketPosition == 1 Then
Begin
If Close < EntryPrice - orRange Then
ExitLong("StopL");
If Close > EntryPrice + orRange * RR Then
ExitLong("TargetL");
End;
// 숏 포지션: 손절 / 익절
If MarketPosition == -1 Then
Begin
If Close > EntryPrice + orRange Then
ExitShort("StopS");
If Close < EntryPrice - orRange * RR Then
ExitShort("TargetS");
End;