Ваши вопросы по языку MQL4

Константин007

Активный участник
Спасибо ВАм! ТО есть если данный сов с разными коментами для разных пар соответственно поставить на все 5 пар, и MaxSymTrade = 1 тогда если на 1 сове идет торговля другие стопнуться? И как только на паре торговля заканчивается все опять работают?
 

Slava78

Элитный участник
Вставил в PriceBorder. Функция у меня стоит во многих моих совах - она рабочая. В комментарий на график добавил вывод количества торгующих символов.
Намутил такой вариант, думаю в него добавить вашу функцию. Правильно?
 

Вложения

  • PriceBorder!!! (Mult).mq4
    28,3 КБ · Просмотры: 17

Константин007

Активный участник
В функции еще есть подсчет суммарного количества лотов сова по торгующим парам - AllLots, только переменную нужно вынести в глобальные для использования.
Это своего рода ограничение по общему кол-ву лотов по всем парам правильно?
 

Slava78

Элитный участник
Пробегись по коду и везде, где прописана Symbol(), замени на текущий.
Спасибо за подсказки, нужна еще помощь. Не работает: увеличение лота, закрытие по общему профиту. Закрывает ордера по лоту(если лот 0.1 - 0.1 закрывает профитом)
 

Вложения

  • PriceBorder!!! (Mult).mq4
    28,6 КБ · Просмотры: 13

vladradon

Программист
По увеличению лота - в 95-й строке прописан базовый лот в OrderSend, а не функция расчета лота из 364-й. Если закрытие по профиту всех символов нужно, то в 254-й и 284-й строке убери проверку на символ.
 

Slava78

Элитный участник
По увеличению лота - в 95-й строке прописан базовый лот в OrderSend, а не функция расчета лота из 364-й. Если закрытие по профиту всех символов нужно, то в 254-й и 284-й строке убери проверку на символ.
Большое спасибо, люблю учится. Сделал что мог, и новую версию( может кому понравится)
 

Вложения

  • PriceBorder!!! (Mult).mq4
    28,2 КБ · Просмотры: 18
  • Multi__2.mq4
    37,1 КБ · Просмотры: 17

skyfx

Новичок форума
Это мой собственный советник. Если у вас есть интерес к Управляемой учетной записи, просто отправьте мне сообщение. Управляется доступно от 20к грн. Я использую его с 11 октября. Низкий риск и низкая просадка. Без мартингейла
 

OSS_5

Активный участник
Всем привет.
Уважаемые программисты подскажите пожалуйста где зарылся недочет (косячок). Добавил показ прибыли на экране. При первой прибыли в тестере эксперт подвисает на секунду другую, потом идет нормально все считает не подвисает. Подскажите, или доработайте, или доработайте и укажите на недоработку. Буду рад любой информации.
 

Вложения

  • VR Smart Grid Lite M1.mq4
    24,7 КБ · Просмотры: 15

vladradon

Программист
Подскажите, или доработайте, или доработайте и укажите на недоработку.
По коду я ничего такого, что может тормозить, не увидел - вроде все нормально. Единственное, там 7 раз запускается функция, возвращающая время закрытия ордера - чем больше раз запускаешь подобные функции, тем больше времени на их обработку уходит и лучше один раз занести в переменную ее значение и уже с переменной работать. Но это на задержку вряд-ли повлияет.
C++:
   if (PRIB)
    {
     double Proff=0,ProfitToday=0,ProfitYestoday=0,ProfitYestoday1=0,ProfitWeek=0,ProfitMonth=0;
     datetime TimeClose=0;
     for (int i=OrdersHistoryTotal()-1; i>=0; i--)
      {
       if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if (OrderSymbol()==Symbol()  && OrderMagicNumber()==iMagicNumber)
          {
           Proff=OrderProfit()+OrderSwap()+OrderCommission();
           TimeClose=OrderCloseTime();
           if (TimeClose>=iTime(Symbol(),PERIOD_D1,0))ProfitToday+=Proff;
           if (TimeClose>=iTime(Symbol(),PERIOD_D1,1) && TimeClose<iTime(Symbol(),PERIOD_D1,0))ProfitYestoday+=Proff;
           if (TimeClose>=iTime(Symbol(),PERIOD_D1,2) && TimeClose<iTime(Symbol(),PERIOD_D1,1))ProfitYestoday1+=Proff;
           if (TimeClose>=iTime(Symbol(),PERIOD_W1,0))ProfitWeek+=Proff;
           if (TimeClose>=iTime(Symbol(),PERIOD_MN1,0))ProfitMonth+=Proff;
          }
        }
      }
      DrawLABEL("nПрибыль сегодня",StringConcatenate("Прибыль сегодня ",DoubleToStr(ProfitToday,2)),10,20,Khaki);
      DrawLABEL("nПрибыль вчера",StringConcatenate("Прибыль вчера ",DoubleToStr(ProfitYestoday,2)),10,40,Khaki);
      DrawLABEL("nПрибыль позавчера",StringConcatenate("Прибыль позавчера ",DoubleToStr(ProfitYestoday1,2)),10,60,Khaki);
      DrawLABEL("nПрибыль за неделю",StringConcatenate("Прибыль за неделю ",DoubleToStr(ProfitWeek,2)),10,80,Khaki);
      DrawLABEL("nПрибыль Прибыль за месяц",StringConcatenate("Прибыль за месяц ",DoubleToStr(ProfitMonth,2)),10,100,Khaki);
    }
 

OSS_5

Активный участник
По коду я ничего такого, что может тормозить, не увидел - вроде все нормально. Единственное, там 7 раз запускается функция, возвращающая время закрытия ордера - чем больше раз запускаешь подобные функции, тем больше времени на их обработку уходит и лучше один раз занести в переменную ее значение и уже с переменной работать. Но это на задержку вряд-ли повлияет.
C++:
   if (PRIB)
    {
     double Proff=0,ProfitToday=0,ProfitYestoday=0,ProfitYestoday1=0,ProfitWeek=0,ProfitMonth=0;
     datetime TimeClose=0;
     for (int i=OrdersHistoryTotal()-1; i>=0; i--)
      {
       if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if (OrderSymbol()==Symbol()  && OrderMagicNumber()==iMagicNumber)
          {
           Proff=OrderProfit()+OrderSwap()+OrderCommission();
           TimeClose=OrderCloseTime();
           if (TimeClose>=iTime(Symbol(),PERIOD_D1,0))ProfitToday+=Proff;
           if (TimeClose>=iTime(Symbol(),PERIOD_D1,1) && TimeClose<iTime(Symbol(),PERIOD_D1,0))ProfitYestoday+=Proff;
           if (TimeClose>=iTime(Symbol(),PERIOD_D1,2) && TimeClose<iTime(Symbol(),PERIOD_D1,1))ProfitYestoday1+=Proff;
           if (TimeClose>=iTime(Symbol(),PERIOD_W1,0))ProfitWeek+=Proff;
           if (TimeClose>=iTime(Symbol(),PERIOD_MN1,0))ProfitMonth+=Proff;
          }
        }
      }
      DrawLABEL("nПрибыль сегодня",StringConcatenate("Прибыль сегодня ",DoubleToStr(ProfitToday,2)),10,20,Khaki);
      DrawLABEL("nПрибыль вчера",StringConcatenate("Прибыль вчера ",DoubleToStr(ProfitYestoday,2)),10,40,Khaki);
      DrawLABEL("nПрибыль позавчера",StringConcatenate("Прибыль позавчера ",DoubleToStr(ProfitYestoday1,2)),10,60,Khaki);
      DrawLABEL("nПрибыль за неделю",StringConcatenate("Прибыль за неделю ",DoubleToStr(ProfitWeek,2)),10,80,Khaki);
      DrawLABEL("nПрибыль Прибыль за месяц",StringConcatenate("Прибыль за месяц ",DoubleToStr(ProfitMonth,2)),10,100,Khaki);
    }
Чтож, будем и дальше в тестере отключать.
 
Верх