Я думаю, проблема в том, что он открывает ордера на уровнях, которые вы прикрепили советником к графику, потому что Hour() возвращает время в часах, которое вы прикрепили. Но вы хотите использовать это, я думаю:
TimeHour(Timecurrent())
Загляните в документацию, чтобы понять, что я имею в виду...
Я думаю, проблема в том, что он открывает ордера на тех уровнях, на которых вы прикрепили советника к графику, потому что Hour() возвращает время в часах, на которое вы его прикрепили.
На самом деле это не помогает решить проблему 01005379, но я не думаю, что это правильно. Например, запуск следующего советника в тестере стратегий показывает изменяющееся значение для Hour(), соответствующее симулированному времени брокера.
int start(){Comment("Hour: "+Hour()+" @ "+TimeToStr(TimeCurrent(), TIME_DATE | TIME_MINUTES));}
Я думаю, что документация пытается сказать, что Hour(), Minute() и т.д. не меняются во время вызова start(). Но они меняются в течение жизни советника.
Этот бар выглядит довольно большим. Происходит ли то же самое с другими ордерами? Возможно, это из-за волатильности на этом конкретном баре.
Теперь то же самое с другими ордерами. Ордер открывается через один бар после того, как значение станет ниже LowValue. Для ордера на продажу я хотел бы, чтобы ордер был открыт, как только Bid станет ниже LowValue.
вам нужно, чтобы ваш код размещения ордеров выполнялся каждый тик. в данный момент он размещает ордер только на открытии бара при условии, что открытие выше или ниже входа.
int start()
{
// на открытии бара получаем high и low
{
if(got_high_and_low)
{
readytotrade = true;
}
}
//каждый тик, если готовы к торговле, проверяем, была ли достигнута цена входа
fxcourt: Вам нужно, чтобы ваш код размещения ордеров выполнялся каждый тик. в настоящее время он будет размещать ордер только на открытии бара при условии, что открытие выше или ниже входа.
Вам нужно перестроить свой код. Это не сложно. Просто разделите его на две части. Первая часть выполняется раз в бар, чтобы собрать данные о входе и другие данные, вторая часть будет следить за тем, чтобы вход был достигнут.
вам нужно, чтобы ваш код размещения ордеров выполнялся каждый тик. в данный момент он размещает ордер только на открытии бара при условии, что открытие выше или ниже входа.
int start()
{
// на открытии бара получаем high и low
{
if(got_high_and_low)
{
readytotrade = true;
}
}
//каждый тик, если готовы к торговле, проверяем, была ли достигнута цена входа
if(readytotrade)
{
//покупаем или продаем
readytotrade = false;
}
}
Я сейчас немного запутался. Помощь будет отличной. ;)
Я выяснил, где была проблема (с вашей помощью). ;)
Спасибо всем вам!
Теперь--->ТЕСТИРОВАНИЕ! (обратное тестирование выглядит очень хорошо)
Я думаю, проблема в том, что он открывает ордера на уровнях, которые вы прикрепили советником к графику, потому что Hour() возвращает время в часах, которое вы прикрепили. Но вы хотите использовать это, я думаю:
Загляните в документацию, чтобы понять, что я имею в виду...
EP

Если мы сможем это исправить, тогда у меня есть мой священный Грааль! :DЯ думаю, проблема в том, что он открывает ордера на тех уровнях, на которых вы прикрепили советника к графику, потому что Hour() возвращает время в часах, на которое вы его прикрепили.
На самом деле это не помогает решить проблему 01005379, но я не думаю, что это правильно. Например, запуск следующего советника в тестере стратегий показывает изменяющееся значение для Hour(), соответствующее симулированному времени брокера.
Я думаю, что документация пытается сказать, что Hour(), Minute() и т.д. не меняются во время вызова start(). Но они меняются в течение жизни советника.
Если мы сможем это исправить, тогда у меня есть мой священный Грааль! :D
Этот бар выглядит довольно большим. Происходит ли то же самое с другими ордерами? Возможно, это из-за волатильности на этом конкретном баре.
Этот бар выглядит довольно большим. Происходит ли то же самое с другими ордерами? Возможно, это из-за волатильности на этом конкретном баре.
Теперь то же самое с другими ордерами. Ордер открывается через один бар после того, как значение станет ниже LowValue. Для ордера на продажу я хотел бы, чтобы ордер был открыт, как только Bid станет ниже LowValue.
вам нужно, чтобы ваш код размещения ордеров выполнялся каждый тик. в данный момент он размещает ордер только на открытии бара при условии, что открытие выше или ниже входа.
int start()
{
// на открытии бара получаем high и low
{
if(got_high_and_low)
{
readytotrade = true;
}
}
//каждый тик, если готовы к торговле, проверяем, была ли достигнута цена входа
if(readytotrade)
{
//покупаем или продаем
readytotrade = false;
}
}
Вам нужно, чтобы ваш код размещения ордеров выполнялся каждый тик. в настоящее время он будет размещать ордер только на открытии бара при условии, что открытие выше или ниже входа.
Хм, и как мне это сделать?
Вам нужно перестроить свой код. Это не сложно. Просто разделите его на две части. Первая часть выполняется раз в бар, чтобы собрать данные о входе и другие данные, вторая часть будет следить за тем, чтобы вход был достигнут.
вам нужно, чтобы ваш код размещения ордеров выполнялся каждый тик. в данный момент он размещает ордер только на открытии бара при условии, что открытие выше или ниже входа.
int start()
{
// на открытии бара получаем high и low
{
if(got_high_and_low)
{
readytotrade = true;
}
}
//каждый тик, если готовы к торговле, проверяем, была ли достигнута цена входа
if(readytotrade)
{
//покупаем или продаем
readytotrade = false;
}
}
Я сейчас немного запутался. Помощь будет отличной. ;)