int init()
{ RefreshRates();
if (NumberOfOrders()>15) return(0); // если число открытых ордеров превышает число 15, тогда советние не торгуетif (OpenStop()>30) return(0); // если число отложеных ордеров превышает число 15, тогда советние не торгует
}
NumberOfOrders - ф-я считает к-во открытых орд. OpenStop - ф-я считает к-во отложек.
Выполняется условие для открытия ордера, и советник выставляет подряд произвольное к-во отложек..
>splxgf: это вариант кода останавливает советника при превышении к-ва сделок. А как написать, что бы при срабатывании условия выставлялся один ордер?
int MaxOpenOrders=15;
int start()
{
//bla-blaif (((OrderOpenPrice()-pAsk) >= -60 || OrdersTotal()<MaxOpenOrders) //открываем новые если количество открытых и отложенных ордеров не превышает 15
OrderSend...
Скажите, уважаемые, есть что-нибудь похожее у Вас:
Алгоритм прост: аналог сетки, в которой каждые n пунктов открывается ордер (бай или селл в зависимости от направления движения цены). Ордера открываются до тех пор пока не получится прибыль m пунктов. По достижении этого значения все ордера закрываются, все начинается сначала.
Zhunko: Была задача сохранить закачанную историю в файлы истории. В процессе загрузки вся история держится в памяти. После закрытия окна МТ4 начинается сохранение в файлы средствами МТ4. Это не быстрый процесс.
Вадим, я решил проблему сохранения таким образом:
if(Bars<7000)
{
int handle, bar, wParam;
handle=WindowHandle(Symbol(),Period());
switch(Period())
{
casePERIOD_M1: wParam = 33137; break;
casePERIOD_H1: wParam = 33135; break;
casePERIOD_D1: wParam = 33134; break;
}
for(bar=1;bar<7000;bar=+100)
{
Comment(Bars);
PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000);
PostMessageA(handle,WM_COMMAND,33135,0); Comment(Bars); Sleep(10000);
PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000);
PostMessageA(handle,WM_COMMAND,33134,0); Comment(Bars); Sleep(10000);
PostMessageA(handle,WM_KEYDOWN,VK_HOME,0); Comment(Bars); Sleep(10000);
PostMessageA(handle,WM_COMMAND,33137,0); Comment(Bars); Sleep(10000);
bar=Bars;
RefreshRates();
if(Bars>=7000) {PostMessageA(handle,WM_KEYDOWN,VK_END,0); StartProfit();} //обязательный выход, иначе просто остается и подкачивает данные
}
}
Благодаря перепрыгиванию между тайм-фреймами идет одновременно сохранение истории по нескольким тайм-фреймам (в данном случае - минутки, 1 час, день). Таким образом нет необходимости выключать терминал, но загрузка идет не так быстро, удалось добиться скорости примерно 1 мин (при таких условиях) на одну валютную пару, т.е. если запустить на много валют, терминал на полчаса зависнет. Советник начинает использовать исторические данные без перезагрузки терминала.
Благодаря перепрыгиванию между тайм-фреймами идет одновременно сохранение истории по нескольким тайм-фреймам (в данном случае - минутки, 1 час, день). Таким образом нет необходимости выключать терминал, но загрузка идет не так быстро, удалось добиться скорости примерно 1 мин (при таких условиях) на одну валютную пару, т.е. если запустить на много валют, терминал на полчаса зависнет. Советник начинает использовать исторические данные без перезагрузки терминала.
У меня тоже самое только многократно надёжнее. При переключении ТФ история не сохраняется в файлы. Только при выгрузке терминала.
Бывает иногда, что терминал сам начинает сохранять историю, но это никак не связано с переключением ТФ.
У меня такая проблема. В своем шаблоне использую индикатор "Полосы Боллинджера" (iBands - https://docs.mql4.com/ru/indicators/iBands) один из его параметров - deviation (стандартное отклонение) определяется там как int. Нельзя ли его как-то оформить как double? В МТ4 в разделе Custom Indicators есть другие полосы Боллинджера (обозначены как "Bands"), там deviation определяется как double. Но как его вставить в MQL4. Он ведь не входит в стандартный набор встроенных индикаторов? Спасибо.
Уважаемые ПРОФИ!
прошу у вас помощи!
заключает по 20 -80 сделок. Я не могу понять, это от ДЦ зависит ??
вместо одной - ставит 100 шт.
прошу помощи !!
Функция старт выполняется на каждом тике, и если условие открытия ордера выполняется, то на каждом тике будет открываться новый ордер.
Вводите ограничения по максимальному количеству открытых ордеров или один ордер на бар и т.п.
Функция старт выполняется на каждом тике, и если условие открытия ордера выполняется, то на каждом тике будет открываться новый ордер.
Вводите ограничения по максимальному количеству открытых ордеров или один ордер на бар и т.п.
Огромное спасибо за ответ!
splxgf, я об этом тоже думал:
NumberOfOrders - ф-я считает к-во открытых орд. OpenStop - ф-я считает к-во отложек.
Выполняется условие для открытия ордера, и советник выставляет подряд произвольное к-во отложек..
>splxgf: это вариант кода останавливает советника при превышении к-ва сделок. А как написать, что бы при срабатывании условия выставлялся один ордер?
init выполняется только один раз https://docs.mql4.com/ru/basis/functions/special
А вообще есть учебник https://book.mql4.com/ru/
Если нужно чтобы условие срабатывало только один раз, то это сложнее
init выполняется только один раз https://docs.mql4.com/ru/basis/functions/special
А вообще есть учебник https://book.mql4.com/ru/
Если нужно чтобы условие срабатывало только один раз, то это сложнее
спасибо!
Буду разбираться!
Порылся в базе, не нашел, но может плохо искал.
Скажите, уважаемые, есть что-нибудь похожее у Вас:
Алгоритм прост: аналог сетки, в которой каждые n пунктов открывается ордер (бай или селл в зависимости от направления движения цены). Ордера открываются до тех пор пока не получится прибыль m пунктов. По достижении этого значения все ордера закрываются, все начинается сначала.
Заранее благодарю за внимание.
Была задача сохранить закачанную историю в файлы истории. В процессе загрузки вся история держится в памяти. После закрытия окна МТ4 начинается сохранение в файлы средствами МТ4. Это не быстрый процесс.
Вадим, я решил проблему сохранения таким образом:
Благодаря перепрыгиванию между тайм-фреймами идет одновременно сохранение истории по нескольким тайм-фреймам (в данном случае - минутки, 1 час, день). Таким образом нет необходимости выключать терминал, но загрузка идет не так быстро, удалось добиться скорости примерно 1 мин (при таких условиях) на одну валютную пару, т.е. если запустить на много валют, терминал на полчаса зависнет. Советник начинает использовать исторические данные без перезагрузки терминала.
Вадим, я решил проблему сохранения таким образом:
Благодаря перепрыгиванию между тайм-фреймами идет одновременно сохранение истории по нескольким тайм-фреймам (в данном случае - минутки, 1 час, день). Таким образом нет необходимости выключать терминал, но загрузка идет не так быстро, удалось добиться скорости примерно 1 мин (при таких условиях) на одну валютную пару, т.е. если запустить на много валют, терминал на полчаса зависнет. Советник начинает использовать исторические данные без перезагрузки терминала.
У меня тоже самое только многократно надёжнее. При переключении ТФ история не сохраняется в файлы. Только при выгрузке терминала.
Бывает иногда, что терминал сам начинает сохранять историю, но это никак не связано с переключением ТФ.
У меня тоже самое только многократно надёжнее. При переключении ТФ история не сохраняется в файлы. Только при выгрузке терминала.
Бывает иногда, что терминал сам начинает сохранять историю, но это никак не связано с переключением ТФ.
А как настроить, чтобы закачивал только определенные тайм-фреймы (не все): минутки, 1 час и дни?
Так: string sTimeFrame = {"M1", "H1", "D1"}; // Строка с перечислением сканируемых ТФ.
На минутках закачивает не больше 2000 баров, а моему советнику требуется больше 7000. После закачки с помощью этого скрипта, мой советник докачивает.
Так задумано, что не все бары закачиваются?
Здравствуйте уважаемое сообщество.
У меня такая проблема. В своем шаблоне использую индикатор "Полосы Боллинджера" (iBands - https://docs.mql4.com/ru/indicators/iBands) один из его параметров - deviation (стандартное отклонение) определяется там как int. Нельзя ли его как-то оформить как double? В МТ4 в разделе Custom Indicators есть другие полосы Боллинджера (обозначены как "Bands"), там deviation определяется как double. Но как его вставить в MQL4. Он ведь не входит в стандартный набор встроенных индикаторов? Спасибо.