커뮤니티
수식 수정좀 부탁드려요
2018-11-13 21:23:45
176
글번호 123631
아래 작성된 청산 수식이 어떤 때는 조건을 만족하는 다음 봉에서 청산이 되고, 어떤 때는 조건을 만족하는 봉에서 청산이 되기도 하며, 또 어떤 경우는 지정된 시간을 한 참 지나서 청산됩니다.
문제점이 없는지 좀 살펴봐주세요.
예를 들면 오전 10시 ~16시 까지는 진입신호 발생후 12분 후에 청산하는 조건에서
진입 시간이 10시 00분 00초 라고 가정하면 청산은 10시 12분 00초에 청산되어야 하지만 봉의 완성이 분 단위까지 정확하게 일치하지 않으므로 10시12분 00초 후에 발생되는 첫 봉에서 청산되는게 맞는데 첫봉을 지나 두 번 째 봉에 청산되거나 여러개 봉을 지나서 청산되는 겁니다.
if MarketPosition != 0 then
{
if EntryTime >= 100000 and EntryTime < 160000 then
{
if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+12 Then
{
ExitLong();
ExitShort();
}
}
if EntryTime >= 160000 and EntryTime < 223000 then
{
if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+6 Then
{
ExitLong();
ExitShort();
}
}
if EntryTime >= 223000 or EntryTime < 20000 then
{
if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+3 Then
{
ExitLong();
ExitShort();
}
}
}
답변 1
예스스탁 예스스탁 답변
2018-11-14 13:56:52
안녕하세요
예스스탁입니다.
수식에서 시간은 완성봉의 시간으로 파악됩니다.
완성봉으로 지정한 분을 넘어가는 첫봉에서 신호가 발생합니다.
현재 수식에서 다른 부분은 큰 문제가 없습니다.
다만 진입이 22시30분~2시 사이에 발생한 것은
0시를 기준으로 포지션이 다음날로 넘어 갈수 있어
영업일 변경기준 24시간을 체크하게 변경해 드립니다.
var : S1(0),D1(0),TM(0),TF(0);
if Bdate != Bdate[1] Then{
S1 = TimeToMinutes(stime);
D1 = sdate;
}
if D1 > 0 then
{
if sdate == D1 Then
TM = TimeToMinutes(time)-S1;
Else
TM = TimeToMinutes(time)+1440-S1;
}
if MarketPosition != 0 then
{
if EntryTime >= 100000 and EntryTime < 160000 then
{
if TM >= TM[BarsSinceEntry]+12 Then
{
ExitLong();
ExitShort();
}
}
if EntryTime >= 160000 and EntryTime < 223000 then
{
if TM >= TM[BarsSinceEntry]+6 Then
{
ExitLong();
ExitShort();
}
}
if EntryTime >= 223000 or EntryTime < 20000 then
{
if TM >= TM[BarsSinceEntry]+3 Then
{
ExitLong();
ExitShort();
}
}
}
즐거우 하루되세요
> 천왕봉 님이 쓴 글입니다.
> 제목 : 수식 수정좀 부탁드려요
> 아래 작성된 청산 수식이 어떤 때는 조건을 만족하는 다음 봉에서 청산이 되고, 어떤 때는 조건을 만족하는 봉에서 청산이 되기도 하며, 또 어떤 경우는 지정된 시간을 한 참 지나서 청산됩니다.
문제점이 없는지 좀 살펴봐주세요.
예를 들면 오전 10시 ~16시 까지는 진입신호 발생후 12분 후에 청산하는 조건에서
진입 시간이 10시 00분 00초 라고 가정하면 청산은 10시 12분 00초에 청산되어야 하지만 봉의 완성이 분 단위까지 정확하게 일치하지 않으므로 10시12분 00초 후에 발생되는 첫 봉에서 청산되는게 맞는데 첫봉을 지나 두 번 째 봉에 청산되거나 여러개 봉을 지나서 청산되는 겁니다.
if MarketPosition != 0 then
{
if EntryTime >= 100000 and EntryTime < 160000 then
{
if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+12 Then
{
ExitLong();
ExitShort();
}
}
if EntryTime >= 160000 and EntryTime < 223000 then
{
if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+6 Then
{
ExitLong();
ExitShort();
}
}
if EntryTime >= 223000 or EntryTime < 20000 then
{
if TimeToMinutes(stime) >= TimeToMinutes(EntryTime)+3 Then
{
ExitLong();
ExitShort();
}
}
}
다음글
이전글