커뮤니티
데이트레이딩 수식을 오버나잇 수식으로 변경(국내선물 거래용)
아래 수식으로 전략실행차트(주간)를 사용하고 있습니다.
데이트레이딩용이며 end of day는 151500 입니다.
데이트레이딩 수식을 오버나잇으로 하고 싶습니다.
더불어 전략실행차트를 복합으로 변경하여 사용하고 싶습니다.
복합으로 하면 야간장에서도 실행되므로 오버나잇 리스크에 대응할 수 있습니다.
요청1
- 복합으로 세팅된 전략차트이므로 오버나잇하려면 아래 수식에서 end of day만 삭제하면 되는 것인지요?
요청2
- 데이트레이딩에서 설정된 진입시간을 복합 전략차트에서도 사용할 수 있게 수식을 변경해 주십시요.
데이트레이딩 수식에서 b1(진입명)은 첫번째 한번만 진입하고 , 두번째 진입부터는 b2(진입명)로 계속 반복진입합니다.
이 프로세스는 복합 전략차트 오버나잇에서도 동일하게 수행되야 합니다.
복합전략차트에서 오버나잇하면서 미결제가 청산되어 포지션이 없이 다음날 주간장이 개시되었을 때
거래 시작시간(for b1)을 input으로 조정하고 싶습니다.
ex)
input : 진입시간(084500) ; // 오전 8시45분 부터 b1 거래 시작 1번, 이후 b2 거래 반복
ex)
input : 진입시간(180000) ; // 오후 6시 부터 b1 거래 시작 1번, 이후 b2 거래 반복
ex)
input : 진입시간(010000) ; // 오전 1시 부터 b1거래 시작 1번, 이후 b2 거래 반복
요청3
- 진입제한시간, 거래횟수, 누적패수 내용은 삭제하여 주십시요.
항상 고맙습니다.
*********************************************************************************************************************
// ==================================================
// [입력 변수 설정]
// ==================================================
input : 최대(999999),최소(700);
input : 진입시간(084500),진입제한시간(100000);
input : 거래횟수(5),누적패수(5);
input : b1(2.25),진입눌림1(0.25),진입돌파1(0.25);
input : 경과봉(0);
input : b2(3.50),진입눌림2(0.50),진입돌파2(0.50);
input : als(4.5),atr1(0),atr2(5.5);
input : bls(5.5),btr1(0),btr2(6.5);
input : eod(151500);
// ==================================================
// [변수 선언]
// ==================================================
var : T1(0),entry(0),LL(0),EH(0),E1(0),H1(0),i1(0),S1(0),L1(0),V1(0);
var : Tcond(false);
var : loss(0);
// ==================================================
// [일자 변경 시 손실 카운트 초기화]
// ==================================================
if bdate != bdate[1] Then
loss = 0;
// ==================================================
// [직전 트레이드 손실 시 누적 패수 증가]
// ==================================================
if TotalTrades > TotalTrades[1] and PositionProfit(1) < 0 Then
loss = loss+1;
// ==================================================
// [진입 가능 시간 조건 ON]
// ==================================================
if (sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then
Tcond = true;
// ==================================================
// [진입 제한 시간 이후 조건 OFF]
// ==================================================
if (sdate != sdate[1] and stime >= 진입제한시간) or
(sdate == sdate[1] and stime >= 진입제한시간 and stime[1] < 진입제한시간) Then
Tcond = false;
// ==================================================
// [일중 진입 시작 시 기준값 초기화]
// ==================================================
if (sdate != sdate[1] and stime >= 진입시간) or
(sdate == sdate[1] and stime >= 진입시간 and stime[1] < 진입시간) Then{
T1 = TotalTrades; // 진입 기준 거래번호
E1 = 0; // 패턴 상태 초기화
LL = L; // 일중 최저가 초기값
}
// ==================================================
// [메인 로직 : 진입 시간 이후만 실행]
// ==================================================
if stime >= 진입시간 then{
// ----------------------------------------------
// [일중 최저가 갱신]
// ----------------------------------------------
if L < LL Then
LL = L;
// ----------------------------------------------
// [진입 차수 계산]
// ----------------------------------------------
if MarketPosition == 0 Then
entry = TotalTrades-T1;
Else
entry = (TotalTrades-T1)+1;
// ==================================================
// [1차 진입 로직]
// ==================================================
if MarketPosition == 0 and entry == 0 Then{
// --- 1차 진입 시작 조건 ---
if E1 == 0 and C >= LL+B1 Then{
E1 = 1;
H1 = H;
i1 = index;
V1 = LL; // 시작 기준 저점
}
// --- 눌림 구간 체크 ---
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
// 저가가 시작점 이상일 때만 눌림 허용
if L >= V1 and L <= H1-진입눌림1 Then{
E1 = 2;
i1 = index;
S1 = H1; // 돌파 기준 고점
}
}
// --- 시작점 이탈 시 패턴 초기화 ---
if E1 >= 1 and L < V1 Then{
E1 = 0;
LL = L;
}
// --- 1차 매수 진입 ---
if loss < 누적패수 and E1 == 2 and index > i1 and
C >= S1+진입돌파1 and Tcond and 최대 >= C and C >= 최소 Then{
buy("b1");
}
}
// ==================================================
// [체결 발생 시 패턴 리셋]
// ==================================================
if TotalTrades > TotalTrades[1] Then{
E1 = 0;
LL = L;
}
// ----------------------------------------------
// [최저가 재갱신 보호]
// ----------------------------------------------
if L < LL Then
LL = L;
// ==================================================
// [2차 진입 로직]
// ==================================================
if MarketPosition == 0 and entry >= 1 and entry < 거래횟수 Then{
// --- 2차 진입 시작 조건 ---
if E1 == 0 and C >= LL+B2 Then{
E1 = 1;
H1 = H;
i1 = index;
V1 = LL; // 시작 기준 저점
}
// --- 눌림 구간 체크 ---
if E1 == 1 and index > i1 then{
if H > H1 Then
H1 = H;
// 저가가 시작점 이상일 때만 눌림 허용
if L >= V1 and L <= H1-진입눌림2 Then{
E1 = 2;
i1 = index;
S1 = H1;
}
}
// --- 시작점 이탈 시 패턴 초기화 ---
if E1 >= 1 and L < V1 Then{
E1 = 0;
LL = L;
}
// --- 2차 매수 진입 ---
if dayindex>=경과봉 and loss < 누적패수 and E1 == 2 and index > i1 and
C >= S1+진입돌파2 and Tcond and 최대 >= C and C >= 최소 Then{
buy("b2");
}
}
}
if MarketPosition== 1 Then
{
if IsEntryName("b1") == true Then
{
SetStopLoss(als,PointStop);
SetStopTrailing(atr2,atr1,PointStop,1);
}
Else if IsEntryName("b2") == true Then
{
SetStopLoss(bls,PointStop);
SetStopTrailing(btr2,btr1,PointStop,1);
}
Else
{
SetStopLoss(0);
SetStopTrailing(0,0);
}
}
SetStopEndofday(eod);
답변 2
예스스탁 예스스탁 답변
2026-05-06 13:30:17
예스스탁 예스스탁 답변
2026-05-06 15:53:56