아래의 수식을 대입하여 시뮬레이션 해보았습니다.
자정을 시초가로 인식하고 진입을 하는 문제가 있네요.
그리고 시초가에 매매가 이루어지지 않는 날이 많습니다.
ntime 이나 Dayopen을 사용하여 대입해 보았는데도 먹히질 않네요.
바쁘시겠지만 점검 좀 부탁드립니다.
- 아 래 -
input : n1(10),n2(20);
if NextBarSdate != sDate Then
{
if NextBarOpen > c Then
buy("b",AtMarket);
if NextBarOpen < c Then
Sell("s",AtMarket);
}
if MarketPosition == 1 Then
ExitLong("bx",AtStop,Highest(H,BarsSinceEntry)-n1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,lowest(L,BarsSinceEntry)-n1);
SetStopProfittarget(n2*PriceScale,PointStop);
답변 1
예스스탁
예스스탁 답변
2021-09-29 09:02:58
안녕하세요
예스스탁입니다.
해당 수식이 장시작일과 장종료일이 같은 국내종목에 적용하면 시초가 진입 수식이 맞습니다.
해외선물과 같이 장시작과 장종료가 다른날인 종목에 적요용하면 맞지 않습니다.
이런 종목은 시초가진입을 위해서는 시간을 지정해 주실수 밖에 없습니다.
CME종목을 기준으로 작성해 드립니다. 다른거래소 종목면 해당 종목에 맞게 시작시간을 지정해 주셔야 합니다.
input : n1(10),n2(20);
var : DD(0),OO(0);
var : Year(0),V1(0),V2(0),V3(0),V4(0),summer(False);
var : StartTime(0);
if sdate != sdate[1] Then
{
DD = DayOfWeek(sdate);
if DD == 1 Then
OO = DayOpen;
Year = Floor(bdate/10000);
V1 = (10000 * Year) + (100 * 3) + 1;
V2 = 15 - dayofweek(v1);
v3 = (10000 * Year) + (100 * 11) + 1;
v4 = 8 - dayofweek(v3);
Summer = bdate > (10000 * Year) + (100 * 3) + v2
And bdate < (10000 * Year) + (100 * 11) + v4;
if summer == true Then
StartTime = 70000;
Else
StartTime = 80000;
}
if StartTime > 0 and
((NextBarSdate != sDate and NextBarStime >= StartTime) or
(NextBarSdate == sDate and NextBarStime >= StartTime and sTime < StartTime)) Then
{
if NextBarOpen > c Then
buy("b",AtMarket);
if NextBarOpen < c Then
Sell("s",AtMarket);
}
if MarketPosition == 1 Then
ExitLong("bx",AtStop,Highest(H,BarsSinceEntry)-n1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,lowest(L,BarsSinceEntry)-n1);
SetStopProfittarget(n2*PriceScale,PointStop);
즐거운 하루되세요
> 승부사1 님이 쓴 글입니다.
> 제목 : 시초가 기준 매매수식 수정 부탁드립니다.
> 아래의 수식을 대입하여 시뮬레이션 해보았습니다.
자정을 시초가로 인식하고 진입을 하는 문제가 있네요.
그리고 시초가에 매매가 이루어지지 않는 날이 많습니다.
ntime 이나 Dayopen을 사용하여 대입해 보았는데도 먹히질 않네요.
바쁘시겠지만 점검 좀 부탁드립니다.
- 아 래 -
input : n1(10),n2(20);
if NextBarSdate != sDate Then
{
if NextBarOpen > c Then
buy("b",AtMarket);
if NextBarOpen < c Then
Sell("s",AtMarket);
}
if MarketPosition == 1 Then
ExitLong("bx",AtStop,Highest(H,BarsSinceEntry)-n1);
if MarketPosition == -1 Then
ExitShort("sx",AtStop,lowest(L,BarsSinceEntry)-n1);
SetStopProfittarget(n2*PriceScale,PointStop);