Низкий и высокий - страница 3

 

Я выяснил, где была проблема (с вашей помощью). ;)

Спасибо всем вам!

Теперь--->ТЕСТИРОВАНИЕ! (обратное тестирование выглядит очень хорошо)

 

Я думаю, проблема в том, что он открывает ордера на уровнях, которые вы прикрепили советником к графику, потому что Hour() возвращает время в часах, которое вы прикрепили. Но вы хотите использовать это, я думаю:

TimeHour(Timecurrent())

Загляните в документацию, чтобы понять, что я имею в виду...

EP

 

Если мы сможем это исправить, тогда у меня есть мой священный Грааль! :D
 
ErrorProgrammer:

Я думаю, проблема в том, что он открывает ордера на тех уровнях, на которых вы прикрепили советника к графику, потому что Hour() возвращает время в часах, на которое вы его прикрепили.

На самом деле это не помогает решить проблему 01005379, но я не думаю, что это правильно. Например, запуск следующего советника в тестере стратегий показывает изменяющееся значение для Hour(), соответствующее симулированному времени брокера.


int start() {Comment("Hour: " + Hour() + "   @ " + TimeToStr(TimeCurrent(), TIME_DATE | TIME_MINUTES));}

Я думаю, что документация пытается сказать, что Hour(), Minute() и т.д. не меняются во время вызова start(). Но они меняются в течение жизни советника.


 
01005379:

Если мы сможем это исправить, тогда у меня есть мой священный Грааль! :D

Этот бар выглядит довольно большим. Происходит ли то же самое с другими ордерами? Возможно, это из-за волатильности на этом конкретном баре.

 
fxcourt:

Этот бар выглядит довольно большим. Происходит ли то же самое с другими ордерами? Возможно, это из-за волатильности на этом конкретном баре.

Теперь то же самое с другими ордерами. Ордер открывается через один бар после того, как значение станет ниже LowValue. Для ордера на продажу я хотел бы, чтобы ордер был открыт, как только Bid станет ниже LowValue.

 

вам нужно, чтобы ваш код размещения ордеров выполнялся каждый тик. в данный момент он размещает ордер только на открытии бара при условии, что открытие выше или ниже входа.

int start()

{

// на открытии бара получаем high и low

{

if(got_high_and_low)

{

readytotrade = true;

}

}

//каждый тик, если готовы к торговле, проверяем, была ли достигнута цена входа

if(readytotrade)

{

//покупаем или продаем

readytotrade = false;

}

}

 
fxcourt:
Вам нужно, чтобы ваш код размещения ордеров выполнялся каждый тик. в настоящее время он будет размещать ордер только на открытии бара при условии, что открытие выше или ниже входа.

Хм, и как мне это сделать?

 

Вам нужно перестроить свой код. Это не сложно. Просто разделите его на две части. Первая часть выполняется раз в бар, чтобы собрать данные о входе и другие данные, вторая часть будет следить за тем, чтобы вход был достигнут.

 
fxcourt:

вам нужно, чтобы ваш код размещения ордеров выполнялся каждый тик. в данный момент он размещает ордер только на открытии бара при условии, что открытие выше или ниже входа.

int start()

{

// на открытии бара получаем high и low

{

if(got_high_and_low)

{

readytotrade = true;

}

}

//каждый тик, если готовы к торговле, проверяем, была ли достигнута цена входа

if(readytotrade)

{

//покупаем или продаем

readytotrade = false;

}

}

Я сейчас немного запутался. Помощь будет отличной. ;)

Причина обращения: