안녕하세요. 수고 많으십니다.
특정날짜에 시가 진입해서 특정날짜 시가에 청산하는 전략을 만들고 있습니다.
일봉을 사용하다보니 시가(장시작직후)에만 진입하도록 되어 있는데
10시(장시작 1시간후)에도 분할 매수매도 할 수 있도록 수식 수정 부탁드립니다.
(일봉에서 구현이 어렵다면 한시간봉으로 전략을 만들어 주셔도 됩니다.)
또한 진입 청산 날짜가 계속 추가되다 보면 과거 시뮬레이션을 하려면 라인수가 너무 많아지는 단점이 있습니다. 시뮬레이션 및 실전전략으로 사용하기 위해서 라인 수를 줄여서 컴팩트하게 만들어 주시면 감사하겠습니다.
Input : EntryDate1(20250331), EntryDate2(20250430);
Input : ExitDate1(20250429), ExitDate2(20250528);
Input : EntryTime1(90000), EntryTime2(100000);
Input : ExitTime1(140000), ExitTime2(150000);
If Date == EntryDate1 Then
{
Buy("BUY1", AtStop, NextBarOpen, int(1000000/C));
}
If Date == ExitDate1 Then
{
ExitLong("Sell1", Atstop, NextBarOpen, "BUY1");
}
If Date == EntryDate2 Then
{
Buy("BUY2", AtStop, NextBarOpen, int(1000000/C));
}
If Date == ExitDate2 Then
{
ExitLong("Sell2", Atstop, NextBarOpen, "BUY1");
}
답변 1
예스스탁
예스스탁 답변
2025-05-19 13:20:33
안녕하세요
예스스탁입니다.
일봉에서는 시간지정 불가합니다.
분봉주기에서 적용하셔야 합니다.
1
날짜를 기존과 같이 input변수로 처리하면 방법이 없습니다.
수식 내부에서 배열로 지정하셔야 합니다.
2
기존에는 날짜를 지정해 다음날 시가에 신호가 발생하게 되어 있었는데
10시이면 기존날짜가 아닌 다음날 날짜를 지정하셔야 합니다.
3
var : E(False),X(False),cnt(0);
Array : EDate[100](0),XDate[100](0);
EDate[0] = 20250331;
EDate[1] = 20250430;
XDate[0] = 20250429;
XDate[1] = 20250528;
E = False;
X = False;
for cnt = 0 to 99
{
if sDate == EDate[cnt] Then
E = true;
if sDate == XDate[cnt] Then
X = true;
}
If E == true and NextBarStime >= 100000 and sTime < 100000 Then
{
Buy("BUY", AtStop, NextBarOpen, int(1000000/C));
}
If X == true and NextBarStime >= 100000 and sTime < 100000 Then
{
ExitLong("Sell", Atstop, NextBarOpen);
}
즐거운 하루되세요
> 착한이 님이 쓴 글입니다.
> 제목 : 수식 수정 부탁드립니다.
> 안녕하세요. 수고 많으십니다.
특정날짜에 시가 진입해서 특정날짜 시가에 청산하는 전략을 만들고 있습니다.
일봉을 사용하다보니 시가(장시작직후)에만 진입하도록 되어 있는데
10시(장시작 1시간후)에도 분할 매수매도 할 수 있도록 수식 수정 부탁드립니다.
(일봉에서 구현이 어렵다면 한시간봉으로 전략을 만들어 주셔도 됩니다.)
또한 진입 청산 날짜가 계속 추가되다 보면 과거 시뮬레이션을 하려면 라인수가 너무 많아지는 단점이 있습니다. 시뮬레이션 및 실전전략으로 사용하기 위해서 라인 수를 줄여서 컴팩트하게 만들어 주시면 감사하겠습니다.
Input : EntryDate1(20250331), EntryDate2(20250430);
Input : ExitDate1(20250429), ExitDate2(20250528);
Input : EntryTime1(90000), EntryTime2(100000);
Input : ExitTime1(140000), ExitTime2(150000);
If Date == EntryDate1 Then
{
Buy("BUY1", AtStop, NextBarOpen, int(1000000/C));
}
If Date == ExitDate1 Then
{
ExitLong("Sell1", Atstop, NextBarOpen, "BUY1");
}
If Date == EntryDate2 Then
{
Buy("BUY2", AtStop, NextBarOpen, int(1000000/C));
}
If Date == ExitDate2 Then
{
ExitLong("Sell2", Atstop, NextBarOpen, "BUY1");
}