예스스탁
예스스탁 답변
2025-01-03 09:52:19
안녕하세요
예스스탁입니다.
1
각 진입식의 Time < 95000, Time < 150000 조건은
지정하신 시간조건과 맞지 않아 삭제해 드립니다.
당일봉수를 지정한 시작시간 이후의 봉수로 변경하고
수식내 당일 첫진입 두번째 진입의 구분돠 지정시간이후 진입횟수로 변경해 드립니다.
2
input : StartTime(193000),EndTime(012000);
input: tt(150000);
var: chkP(3), reChkP(10), stopChk(20);
var: HH(0), LL(0), BS(0), SS(0);
var: dayChk(0);
var : Tcond(False),ii(0),TotalCount(0),PreDay(0),DayEntry(0);
TotalCount = TotalTrades;
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
PreDay = TotalCount[1];
ii = 0;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
Else
ii = ii + 1;
DayEntry = (TotalCount-PreDay)+IFF(MarketPosition != 0,1,0);
if BarIndex == 0 then ClearDebug();
if ii == chkP then
{
HH = Highest(Max(C,O), chkP+1);
LL = Lowest(Min(C,O), chkP+1);
#if date == 20240612 then messageLog("--HH %.2f, LL: %.2f", HH, LL);
}
#if High >= HH and MarketPosition == 0 and ExitDate(1) < Date and time > 93000 then messageLog("HH %.2f, High: %.2f", HH, High);
if Tcond == true
and ii >= chkP
and bDate == NextBarbdate
and dayEntry == 0
Then {
Buy("B1", AtStop, HH);
Sell("S1", AtStop, LL);
}
//if dayChk == 0 and High >= HH and MarketPosition == 0 and ExitDate(1) < Date and time > 93000 then {
// messageLog("HH %.2f, High: %.2f", HH, High);
// dayChk = 1;
//}
if dayEntry > 0 and Tcond == true
// and LatestEntryName(1) != "B2"
// and LatestEntryName(1) != "S2"
// and LatestEntryName(0) != "B2"
// and LatestEntryName(0) != "S2"
Then {
if ii < reChkP Then {
HH = Highest(Max(C,O), ii+1);
LL = Lowest(Min(C,O), ii+1);
}
Else {
HH = Highest(Max(C,O), reChkP);
LL = Lowest(Min(C,O), reChkP);
}
Buy("B2", AtStop, HH);
Sell("S2", AtStop, LL);
}
if (MarketPosition == 1) Then
{
if ii < stopChk Then
{
BS = Lowest(Min(C,O), ii+1);
}
Else
{
BS = Lowest(Min(C,O), stopChk);
}
ExitLong("EL", AtStop, BS);
}
if (MarketPosition == -1) Then
{
if ii < stopChk Then
{
SS = Highest(Max(C,O), ii+1);
}
Else
{
SS = Highest(Max(C,O), stopChk);
}
#messageLog(" SS %.2f", SS);
ExitShort("ES", AtStop, SS);
}
즐거운 하루되세요
> 가자아이 님이 쓴 글입니다.
> 제목 : 재문의 드립니다.
> 보내주신 서식으로 시뮬레이션을 했으나 생각과 다른 매매가 이루어져 다시 여쭙습니다.
다시 문의 드립니다.
1. 미국 미니 나스닥100 5분봉
2. 미국시간으로 19:30분에 시스템 시작
3. 미국시간으로 그 다음날 01:20분에 청산 (약 6시간만 매매, 그 외의 시간은 아무런 매매가 이루지지 않음)
4. 5분봉 기준으로 19:30분부터 3개의 봉이 지나고 4개째 봉부터 매수/매도 체결
input : StartTime(093000),EndTime(065500);
input: tt(150000);
var: chkP(3), reChkP(10), stopChk(20);
var: HH(0), LL(0), BS(0), SS(0);
var: dayChk(0);
var : Tcond(False),ii(0);
IF Endtime > starttime Then
SetStopEndofday(Endtime);
Else
{
if sDate != sDate[1] Then
SetStopEndofday(Endtime);
}
if (sdate != sdate[1] and stime >= EndTime) or
(sdate == sdate[1] and stime >= EndTime and stime[1] < EndTime) Then
Tcond = False;
if (sdate != sdate[1] and stime >= StartTime) or
(sdate == sdate[1] and stime >= StartTime and stime[1] < StartTime) Then
{
Tcond = true;
IF Endtime <= starttime Then
{
SetStopEndofday(0);
}
}
if BarIndex == 0 then ClearDebug();
if bdate !=Bdate[1] Then
ii = 0;
Else
ii = ii +1;
if ii == chkP then
{
HH = Highest(Max(C,O), chkP+1);
LL = Lowest(Min(C,O), chkP+1);
#if date == 20240612 then messageLog("--HH %.2f, LL: %.2f", HH, LL);
}
#if High >= HH and MarketPosition == 0 and ExitDate(1) < Date and time > 93000 then messageLog("HH %.2f, High: %.2f", HH, High);
if Tcond == true and
ii >= chkP
and Time < 95000
and sDate == NextBarSdate
and EntryDate(0) < Date
and EntryDate(1) < Date
Then {
Buy("B1", AtStop, HH);
Sell("S1", AtStop, LL);
}
//if dayChk == 0 and High >= HH and MarketPosition == 0 and ExitDate(1) < Date and time > 93000 then {
// messageLog("HH %.2f, High: %.2f", HH, High);
// dayChk = 1;
//}
if ExitDate(1) == Date and Time < 150000 and Tcond == true
// and LatestEntryName(1) != "B2"
// and LatestEntryName(1) != "S2"
// and LatestEntryName(0) != "B2"
// and LatestEntryName(0) != "S2"
Then {
if ii < reChkP Then {
HH = Highest(Max(C,O), ii+1);
LL = Lowest(Min(C,O), ii+1);
}
Else {
HH = Highest(Max(C,O), reChkP);
LL = Lowest(Min(C,O), reChkP);
}
Buy("B2", AtStop, HH);
Sell("S2", AtStop, LL);
}
if (MarketPosition == 1) Then {
if ii < stopChk Then {
BS = Lowest(Min(C,O), ii+1);
}
Else {
BS = Lowest(Min(C,O), stopChk);
}
ExitLong("EL", AtStop, BS);
}
if (MarketPosition == -1) Then {
if ii < stopChk Then {
SS = Highest(Max(C,O), ii+1);
}
Else {
SS = Highest(Max(C,O), stopChk);
}
#messageLog(" SS %.2f", SS);
ExitShort("ES", AtStop, SS);
}