[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 222

 
smartemiy:

Уважаемые ПРОФИ!

прошу у вас помощи!

заключает по 20 -80 сделок. Я не могу понять, это от ДЦ зависит ??

вместо одной - ставит 100 шт.

прошу помощи !!

Функция старт выполняется на каждом тике, и если условие открытия ордера выполняется, то на каждом тике будет открываться новый ордер.

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

 
splxgf:

Функция старт выполняется на каждом тике, и если условие открытия ордера выполняется, то на каждом тике будет открываться новый ордер.

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

Огромное спасибо за ответ!

splxgf, я об этом тоже думал:

int init()
{  RefreshRates();
   if (NumberOfOrders()>15) return(0); // если число открытых ордеров превышает число 15, тогда советние не торгует
   if (OpenStop()>30) return(0);       // если число отложеных ордеров превышает число 15, тогда советние не торгует
}

NumberOfOrders - ф-я считает к-во открытых орд. OpenStop - ф-я считает к-во отложек.

Выполняется условие для открытия ордера, и советник выставляет подряд произвольное к-во отложек..

>splxgf: это вариант кода останавливает советника при превышении к-ва сделок. А как написать, что бы при срабатывании условия выставлялся один ордер?

 

init выполняется только один раз https://docs.mql4.com/ru/basis/functions/special

int MaxOpenOrders=15;

int start()
  { 
    //bla-bla
    if (((OrderOpenPrice()-pAsk) >= -60 || OrdersTotal()<MaxOpenOrders) //открываем новые если количество открытых и отложенных ордеров не превышает 15
    OrderSend...
  

А вообще есть учебник https://book.mql4.com/ru/

Если нужно чтобы условие срабатывало только один раз, то это сложнее

 
Господа! Так может кто нибудь ответит на мой вопрос про нетбук и 3G модем (на стр 221). За ранее благодарен.
 
splxgf:

init выполняется только один раз https://docs.mql4.com/ru/basis/functions/special

А вообще есть учебник https://book.mql4.com/ru/

Если нужно чтобы условие срабатывало только один раз, то это сложнее

спасибо!

Буду разбираться!

 

Порылся в базе, не нашел, но может плохо искал.

Скажите, уважаемые, есть что-нибудь похожее у Вас:

Алгоритм прост: аналог сетки, в которой каждые n пунктов открывается ордер (бай или селл в зависимости от направления движения цены). Ордера открываются до тех пор пока не получится прибыль m пунктов. По достижении этого значения все ордера закрываются, все начинается сначала.

Заранее благодарю за внимание.

 
Zhunko:
Была задача сохранить закачанную историю в файлы истории. В процессе загрузки вся история держится в памяти. После закрытия окна МТ4 начинается сохранение в файлы средствами МТ4. Это не быстрый процесс.

Вадим, я решил проблему сохранения таким образом:

if(Bars<7000)
  {
    int handle, bar, wParam;
    handle=WindowHandle(Symbol(),Period());
    switch(Period())
            {
                  case PERIOD_M1:  wParam = 33137; break;
                  case PERIOD_H1:  wParam = 33135; break;
                  case PERIOD_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 мин (при таких условиях) на одну валютную пару, т.е. если запустить на много валют, терминал на полчаса зависнет. Советник начинает использовать исторические данные без перезагрузки терминала.

 
forexnew:

Вадим, я решил проблему сохранения таким образом:

Благодаря перепрыгиванию между тайм-фреймами идет одновременно сохранение истории по нескольким тайм-фреймам (в данном случае - минутки, 1 час, день). Таким образом нет необходимости выключать терминал, но загрузка идет не так быстро, удалось добиться скорости примерно 1 мин (при таких условиях) на одну валютную пару, т.е. если запустить на много валют, терминал на полчаса зависнет. Советник начинает использовать исторические данные без перезагрузки терминала.

У меня тоже самое только многократно надёжнее. При переключении ТФ история не сохраняется в файлы. Только при выгрузке терминала.

Бывает иногда, что терминал сам начинает сохранять историю, но это никак не связано с переключением ТФ.

 
Zhunko:

У меня тоже самое только многократно надёжнее. При переключении ТФ история не сохраняется в файлы. Только при выгрузке терминала.

Бывает иногда, что терминал сам начинает сохранять историю, но это никак не связано с переключением ТФ.

А как настроить, чтобы закачивал только определенные тайм-фреймы (не все): минутки, 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. Он ведь не входит в стандартный набор встроенных индикаторов? Спасибо.

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