Судя по вашему коду, вы хотите выставить ордер точно в заданную
минуту. Однако, если в эту минуту от сервера не приходил ни один
тик на терминал, то следовательно, процедура int start()
незапускалась ни разу в эту минуту. Последствия очевидны - условие
не может быть выполнено, т.к. в ту самую минуту для которого оно
предназначено, условие не проходит проверку. Start запускается
только по приходу новой цены, но никак не в заданное время.
Получается, что если ставить вручную ордер, то берется последний
пришедший тик?
Если так, то как програмно реализовать выставление ордеров по
последнему тику в заданное время?
maxtor:Получается, что если ставить вручную ордер, то берется последний
пришедший тик? Если так, то как програмно реализовать выставление
ордеров по последнему тику в заданное время?
" организовать программу таким образом, чтобы основной код эксперта исполнялся постоянно, без пауз между тиками. Для этого необходимо в специальной функции start() эксперта организовать бесконечный цикл, в который следует вставить весь основной код программы. Если в начале каждого цикла принудительно обновлять информацию об окружении, то вся конструкция может успешно работать. Недостатком зацикленного эксперта является невозможность открыть панель настроек. Попробуйте зациклить эксперт - и вы не сможете его настроить.
Эту же идею можно успешно реализовать с помощью скрипта, то есть организовать бесконечный цикл в нём. Но скрипт не имеет настраиваемых переменных.
Обеспечить настраиваемость торговой системы и своевременность исполнения всех распоряжений пользователя путём поддержания непрерывной работы можно лишь используя одновременно эксперт для настроек и скрипт для немедленного исполнения."
Судя по вашему коду, вы хотите выставить ордер точно в заданную
минуту. Однако, если в эту минуту от сервера не приходил ни один
тик на терминал, то следовательно, процедура int start()
незапускалась ни разу в эту минуту. Последствия очевидны - условие
не может быть выполнено, т.к. в ту самую минуту для которого оно
предназначено, условие не проходит проверку. Start запускается
только по приходу новой цены, но никак не в заданное время.
Получается, что если ставить вручную ордер, то берется последний
пришедший тик?
Если так, то как програмно реализовать выставление ордеров по
последнему тику в заданное время?
Получается, что если ставить вручную ордер, то берется последний
пришедший тик? -->
Немного не так, выставляя ордер вручную вам либо нужна текущая
цена и брокер вам её сообщит, либо не нужна, если это отложенный
ордер. Тоже самое произойдет, если принудительно запустить
процедуру start в вашу целевую минуту - эксперт получит цену и
откроет ордер. Можно зациклить советник, как вам и посоветовали,
но я воздерживаюсь от подобных трюков - не лежит душа. Новая
цена, пришедшая даже после вашей целевой минуты меня бы удовлетворила.
Если так, то как програмно реализовать выставление ордеров
по последнему тику в заданное время? -->
К сожалению, нельзя предсказать какой тик будет последний перед
той минутой, в которой вы хотите выставить ордер. Возможно, что
новой цены не будет в течение нескольких минут перед вашей целевой
минутой. Увы, нет новой цены - нет тика - нет запуска start.
К сожалению, нельзя предсказать какой тик будет последний перед
той минутой, в которой вы хотите выставить ордер. Возможно, что
новой цены не будет в течение нескольких минут перед вашей целевой
минутой. Увы, нет новой цены - нет тика - нет запуска start.
Вы немного не поняли меня. Ничего предсказывать ненужно
Нужно взять последний уже пришедший тик 1 минуту-5 минут назад
и выставить на основе этой цены два ордера в заданную минуту
" организовать программу таким образом, чтобы основной код
эксперта исполнялся постоянно, без пауз между тиками. Для этого
необходимо в специальной функции start() эксперта организовать бесконечный цикл, в который следует вставить
весь основной код программы. Если в начале каждого цикла принудительно
обновлять информацию об окружении, то вся конструкция может
успешно работать. Недостатком зацикленного эксперта является
невозможность открыть панель настроек. Попробуйте зациклить
эксперт - и вы не сможете его настроить.
Эту же идею можно успешно реализовать с помощью скрипта, то есть
организовать бесконечный цикл в нём. Но скрипт не имеет настраиваемых
переменных.
Обеспечить настраиваемость торговой системы и своевременность
исполнения всех распоряжений пользователя путём поддержания
непрерывной работы можно лишь используя одновременно эксперт
для настроек и скрипт для немедленного исполнения."
Делаете скрипт, не забывая в заголовке указать #property show_inputs ,
для установки переменных. В скрипте делаете конструкцию типа:
intstart(){boolcondition=true;
while(condition){if(проверяете совпадает ли текущее время, со временем уставонки позиции){
если совпадает, то открываем ордер. Не забыть обновить данные.
устанавливаем condition=false;, т.к. нам скрипт больше не нужен
}Sleep(1000); устанавливаем время задержки до следующей итерации
}}
К сожалению, нельзя предсказать какой тик будет последний перед
той минутой, в которой вы хотите выставить ордер. Возможно, что
новой цены не будет в течение нескольких минут перед вашей целевой
минутой. Увы, нет новой цены - нет тика - нет запуска start.
Вы немного не поняли меня. Ничего предсказывать ненужно
Нужно взять последний уже пришедший тик 1 минуту-5 минут назад
и выставить на основе этой цены два ордера в заданную минуту
Да, точно. Это возможно. Необходимо только запустить start в нужный
вам момент.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Судя по вашему коду, вы хотите выставить ордер точно в заданную минуту. Однако, если в эту минуту от сервера не приходил ни один тик на терминал, то следовательно, процедура int start()
незапускалась ни разу в эту минуту. Последствия очевидны - условие не может быть выполнено, т.к. в ту самую минуту для которого оно предназначено, условие не проходит проверку. Start запускается только по приходу новой цены, но никак не в заданное время.
Получается, что если ставить вручную ордер, то берется последний пришедший тик?
Если так, то как програмно реализовать выставление ордеров по последнему тику в заданное время?
Здесь поможет зацикленный скрипт.
Здесь поможет зацикленный скрипт.
А подскажите где пример поглядеть
Типа вот этого правила?
" организовать программу таким образом, чтобы основной код эксперта исполнялся постоянно, без пауз между тиками. Для этого необходимо в специальной функции start() эксперта организовать бесконечный цикл, в который следует вставить весь основной код программы. Если в начале каждого цикла принудительно обновлять информацию об окружении, то вся конструкция может успешно работать. Недостатком зацикленного эксперта является невозможность открыть панель настроек. Попробуйте зациклить эксперт - и вы не сможете его настроить.
Эту же идею можно успешно реализовать с помощью скрипта, то есть организовать бесконечный цикл в нём. Но скрипт не имеет настраиваемых переменных.
Обеспечить настраиваемость торговой системы и своевременность исполнения всех распоряжений пользователя путём поддержания непрерывной работы можно лишь используя одновременно эксперт для настроек и скрипт для немедленного исполнения."
Судя по вашему коду, вы хотите выставить ордер точно в заданную минуту. Однако, если в эту минуту от сервера не приходил ни один тик на терминал, то следовательно, процедура int start()
незапускалась ни разу в эту минуту. Последствия очевидны - условие не может быть выполнено, т.к. в ту самую минуту для которого оно предназначено, условие не проходит проверку. Start запускается только по приходу новой цены, но никак не в заданное время.
Получается, что если ставить вручную ордер, то берется последний пришедший тик?
Если так, то как програмно реализовать выставление ордеров по последнему тику в заданное время?
Получается, что если ставить вручную ордер, то берется последний пришедший тик? -->
Немного не так, выставляя ордер вручную вам либо нужна текущая цена и брокер вам её сообщит, либо не нужна, если это отложенный ордер. Тоже самое произойдет, если принудительно запустить процедуру start в вашу целевую минуту - эксперт получит цену и откроет ордер. Можно зациклить советник, как вам и посоветовали, но я воздерживаюсь от подобных трюков - не лежит душа. Новая цена, пришедшая даже после вашей целевой минуты меня бы удовлетворила.Если так, то как програмно реализовать выставление ордеров по последнему тику в заданное время? -->
К сожалению, нельзя предсказать какой тик будет последний перед той минутой, в которой вы хотите выставить ордер. Возможно, что новой цены не будет в течение нескольких минут перед вашей целевой минутой. Увы, нет новой цены - нет тика - нет запуска start.
К сожалению, нельзя предсказать какой тик будет последний перед той минутой, в которой вы хотите выставить ордер. Возможно, что новой цены не будет в течение нескольких минут перед вашей целевой минутой. Увы, нет новой цены - нет тика - нет запуска start.
Вы немного не поняли меня. Ничего предсказывать ненужно
Нужно взять последний уже пришедший тик 1 минуту-5 минут назад и выставить на основе этой цены два ордера в заданную минуту
Здесь поможет зацикленный скрипт.
А подскажите где пример поглядеть
Типа вот этого правила?
" организовать программу таким образом, чтобы основной код эксперта исполнялся постоянно, без пауз между тиками. Для этого необходимо в специальной функции start() эксперта организовать бесконечный цикл, в который следует вставить весь основной код программы. Если в начале каждого цикла принудительно обновлять информацию об окружении, то вся конструкция может успешно работать. Недостатком зацикленного эксперта является невозможность открыть панель настроек. Попробуйте зациклить эксперт - и вы не сможете его настроить.
Эту же идею можно успешно реализовать с помощью скрипта, то есть организовать бесконечный цикл в нём. Но скрипт не имеет настраиваемых переменных.
Обеспечить настраиваемость торговой системы и своевременность исполнения всех распоряжений пользователя путём поддержания непрерывной работы можно лишь используя одновременно эксперт для настроек и скрипт для немедленного исполнения."
Делаете скрипт, не забывая в заголовке указать #property show_inputs , для установки переменных. В скрипте делаете конструкцию типа:
Спасибо.
Пойду разбираться :-)
Геморой, однако :-)
Не поделитесь куском кода для примера?
К сожалению, нельзя предсказать какой тик будет последний перед той минутой, в которой вы хотите выставить ордер. Возможно, что новой цены не будет в течение нескольких минут перед вашей целевой минутой. Увы, нет новой цены - нет тика - нет запуска start.
Вы немного не поняли меня. Ничего предсказывать ненужно
Нужно взять последний уже пришедший тик 1 минуту-5 минут назад и выставить на основе этой цены два ордера в заданную минуту
Да, точно. Это возможно. Необходимо только запустить start в нужный вам момент.
Геморой, однако :-)
Не поделитесь куском кода для примера?
Вот вам код, рабочий, только что проверил. Но учтите время(час, минута, секунда) надо выставлять локальное.