MQL госпиталь (бывшая "Больничка"): исправляем ошибки

aleksei3122

Местный знаток
Поправьте пожалуйста старого намбера, ошибки при компиляции

_http://file.sampo.ru/nv9k24/
 
Последнее редактирование модератором:

osvit

Активный участник
Не меняется настройки цвета

Люди подправьте индюка. В настройках при смене цвета и ширину линий не чего не происходит, а хотелось бы. Заранее большое спасибо.
 

Вложения

Walle2323

Активный участник
Люди подправьте индюка. В настройках при смене цвета и ширину линий не чего не происходит, а хотелось бы. Заранее большое спасибо.
В чем проблема? У меня цвет и ширина линий изменяются, :nda:
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    374 КБ · Просмотры: 105

osvit

Активный участник
В чем проблема? У меня цвет и ширина линий изменяются, :nda:

Реально не понял. Удалил ехе на всякий случай, в едиторе прописал свои цвета сохранил, ну все как надо. перезагрузил терминал и... Не чего.
Остался один вариант скомпилируйте у себя и скиньте если не трудно. Большая кнопка "Спасибо" с меня.
 

поручик

Гость
В чем проблема? У меня цвет и ширина линий изменяются, :nda:

Проблема - при смене ТФ все возвращается в исходное
(это я тебе перевел, что парень спрашивал)

=====
2 Освит проверь
 

Вложения

Последнее редактирование:

поручик

Гость
так сделал

#property indicator_width2 3 добавил
#property indicator_width3 3

SetIndexStyle(1, DRAW_HISTOGRAM); укоротил
SetIndexStyle(2, DRAW_HISTOGRAM);
 

Prelagatay

Местный житель
Доброго дня. Поглядите почему не открывается ни в тестере ни на графике. Спасибо.

Вот и второй перестал нормально работать. На Альпари-демо продолжает работать без проблем, а на реале Fxclub начал при модификации ордера запрашивать DLL и прекращать работать по алгоритму хотя работал нормально выдавая при модификации error1. Кто то убирал зависимость от DLL в коде но видать не совсем аккуратно. Посмотрите пожалуйста, может поддастся лечению и один и другой, хотя этот важнее он у меня на реале откусывал потихоньку.
 

Вложения

RoboMaks

Элитный участник
Вот и второй перестал нормально работать. На Альпари-демо продолжает работать без проблем, а на реале Fxclub начал при модификации ордера запрашивать DLL и прекращать работать по алгоритму хотя работал нормально выдавая при модификации error1. Кто то убирал зависимость от DLL в коде но видать не совсем аккуратно. Посмотрите пожалуйста, может поддастся лечению и один и другой, хотя этот важнее он у меня на реале откусывал потихоньку.

Как таковых особых нарушений кода у него нет, некоторые мелочи подправил. Но его желательно сильно упростить - разработчики всё-же сильно перестарались во всех проверках :)
Код:
Expand Collapse Copy
int SendOrder(int Type, double Lots, int TP, int SL, int Magic, string Cmnt, int& err)
{
  double Price, Take, Stop;
  int Ticket, Slippage, Color, Err; 
  bool Delay = False;
  Print("Функция SendOrder");
  [B]while(!IsStopped())
  {
    if(!IsExpertEnabled())
    {
      err = ERR_TRADE_DISABLED;
      Print("Эксперту запрещено торговать!");
      return(-1);
    }
    Print("Эксперту разрешено торговать");
    if(!IsConnected())
    {
      err = ERR_NO_CONNECTION;
      Print("Связь отсутствует!");
      return(-1);
    }
    Print("Связь с сервером установлена");
    if(IsTradeContextBusy())
    {
      Print("Торговый поток занят!");
      Print("Ожидаем 3 сек...");
      Sleep(3000);
      Delay = True;
      continue;
    }
    Print("Торговый поток свободен");
    if(Delay) 
    {
      Print("Обновляем котировки");
      RefreshRates();
      Delay = False;
    }
    else
    {
      Print("Задержек не было");
    }
    switch(Type)
    {
      case OP_BUY:
        Print("Инициализируем параметры для BUY-ордера");
        Price = NormalizeDouble( Ask, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble( Ask + TP * Point, Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Ask - SL * Point, Digits));
        Color = Blue;
        break;
      case OP_SELL:
        Print("Инициализируем параметры для SELL-ордера");
        Price = NormalizeDouble( Bid, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble( Bid - TP * Point, Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Bid + SL * Point, Digits));
        Color = Red;
        break;
      case OP_BUYSTOP:
        Print("Инициализируем параметры для BUYSTOP-ордера");
        Price = NormalizeDouble(Ask + Dist * Point, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble((Ask + Dist * Point) + (TakeProfit * Point), Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Ask + Dist * Point - SL * Point, Digits));
        Color = DarkBlue;
        break;
      case OP_SELLSTOP:
        Print("Инициализируем параметры для SELLSTOP-ордера");
        Price = NormalizeDouble( Bid - Dist * Point, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble((Bid - Dist * Point) - (TakeProfit * Point), Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Bid - Dist * Point + SL * Point, Digits));
        Color = Maroon;
        break;
 
      default:
        Print("Тип ордера не соответствует требованиям.");
        return(-1);
    }
    Slippage = MarketInfo(Symbol(), MODE_SPREAD);
    Print("Slippage = ",Slippage);
    if(IsTradeAllowed())
    {
      Print("Торговля разрешена, отправляем ордер...");
      Ticket = OrderSend(Symbol(), Type, Lots, Price, Slippage, Stop, Take, Cmnt, Magic, 0, Color);
      if(Ticket < 0)
      {
        Err = GetLastError();
        if (Err == 4   || /* SERVER_BUSY */
            Err == 130 || /* INVALID_STOPS */ 
            Err == 135 || /* PRICE_CHANGED */ 
            Err == 137 || /* BROKER_BUSY */ 
            Err == 138 || /* REQUOTE */ 
            Err == 146 || /* TRADE_CONTEXT_BUSY */
            Err == 136 )  /* OFF_QUOTES */
        {
          Print("Ошибка(OrderSend - ", Err, "): ", ErrorDescription(Err));
          Print("Ожидаем 3 сек...");
          Sleep(3000);
          Delay = True;
          continue;
        }
        else
        {
          Print("Критическая ошибка(OrderSend - ", Err, "): ", ErrorDescription(Err));
          err = Err;
          break;
        }
      }
      break;
    }
    else
    {
      Print("Эксперту запрещено торговать или торговый поток занят!");
      Print("Ожидаем 3 сек...");
      Sleep(3000);
      Delay = True;
      continue;
    }
  }
  Print("Ордер отправлен успешно. Тикет = ",Ticket);
  return(Ticket);[/B]
}
Из библиотек у него только stdlib - обработка ошибок, просто он теряет время на этих многочисленных проверках и в результате потери тиковых данных наоборот возникают ненужные ошибки.
Лучше добавить в него отдельную установку ТП-СЛ вместо всего этого - открытия ордеров сразу с ТП-СЛ работает не на всех типах счетов, что тоже будет приводить к ошибкам.
 

Вложения

  • #ADX CCI (5 digits)v3.2.mq4
    #ADX CCI (5 digits)v3.2.mq4
    59 КБ · Просмотры: 71
  • Сохраненное изображение 2016-3-11_1-53-24.234.jpg
    Сохраненное изображение 2016-3-11_1-53-24.234.jpg
    119,1 КБ · Просмотры: 47

gek

Элитный участник
Как таковых особых нарушений кода у него нет, некоторые мелочи подправил. Но его желательно сильно упростить - разработчики всё-же сильно перестарались во всех проверках :)
Код:
Expand Collapse Copy
int SendOrder(int Type, double Lots, int TP, int SL, int Magic, string Cmnt, int& err)
{
  double Price, Take, Stop;
  int Ticket, Slippage, Color, Err; 
  bool Delay = False;
  Print("Функция SendOrder");
  [B]while(!IsStopped())
  {
    if(!IsExpertEnabled())
    {
      err = ERR_TRADE_DISABLED;
      Print("Эксперту запрещено торговать!");
      return(-1);
    }
    Print("Эксперту разрешено торговать");
    if(!IsConnected())
    {
      err = ERR_NO_CONNECTION;
      Print("Связь отсутствует!");
      return(-1);
    }
    Print("Связь с сервером установлена");
    if(IsTradeContextBusy())
    {
      Print("Торговый поток занят!");
      Print("Ожидаем 3 сек...");
      Sleep(3000);
      Delay = True;
      continue;
    }
    Print("Торговый поток свободен");
    if(Delay) 
    {
      Print("Обновляем котировки");
      RefreshRates();
      Delay = False;
    }
    else
    {
      Print("Задержек не было");
    }
    switch(Type)
    {
      case OP_BUY:
        Print("Инициализируем параметры для BUY-ордера");
        Price = NormalizeDouble( Ask, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble( Ask + TP * Point, Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Ask - SL * Point, Digits));
        Color = Blue;
        break;
      case OP_SELL:
        Print("Инициализируем параметры для SELL-ордера");
        Price = NormalizeDouble( Bid, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble( Bid - TP * Point, Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Bid + SL * Point, Digits));
        Color = Red;
        break;
      case OP_BUYSTOP:
        Print("Инициализируем параметры для BUYSTOP-ордера");
        Price = NormalizeDouble(Ask + Dist * Point, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble((Ask + Dist * Point) + (TakeProfit * Point), Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Ask + Dist * Point - SL * Point, Digits));
        Color = DarkBlue;
        break;
      case OP_SELLSTOP:
        Print("Инициализируем параметры для SELLSTOP-ордера");
        Price = NormalizeDouble( Bid - Dist * Point, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble((Bid - Dist * Point) - (TakeProfit * Point), Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Bid - Dist * Point + SL * Point, Digits));
        Color = Maroon;
        break;
 
      default:
        Print("Тип ордера не соответствует требованиям.");
        return(-1);
    }
    Slippage = MarketInfo(Symbol(), MODE_SPREAD);
    Print("Slippage = ",Slippage);
    if(IsTradeAllowed())
    {
      Print("Торговля разрешена, отправляем ордер...");
      Ticket = OrderSend(Symbol(), Type, Lots, Price, Slippage, Stop, Take, Cmnt, Magic, 0, Color);
      if(Ticket < 0)
      {
        Err = GetLastError();
        if (Err == 4   || /* SERVER_BUSY */
            Err == 130 || /* INVALID_STOPS */ 
            Err == 135 || /* PRICE_CHANGED */ 
            Err == 137 || /* BROKER_BUSY */ 
            Err == 138 || /* REQUOTE */ 
            Err == 146 || /* TRADE_CONTEXT_BUSY */
            Err == 136 )  /* OFF_QUOTES */
        {
          Print("Ошибка(OrderSend - ", Err, "): ", ErrorDescription(Err));
          Print("Ожидаем 3 сек...");
          Sleep(3000);
          Delay = True;
          continue;
        }
        else
        {
          Print("Критическая ошибка(OrderSend - ", Err, "): ", ErrorDescription(Err));
          err = Err;
          break;
        }
      }
      break;
    }
    else
    {
      Print("Эксперту запрещено торговать или торговый поток занят!");
      Print("Ожидаем 3 сек...");
      Sleep(3000);
      Delay = True;
      continue;
    }
  }
  Print("Ордер отправлен успешно. Тикет = ",Ticket);
  return(Ticket);[/B]
}
Из библиотек у него только stdlib - обработка ошибок, просто он теряет время на этих многочисленных проверках и в результате потери тиковых данных наоборот возникают ненужные ошибки.
Лучше добавить в него отдельную установку ТП-СЛ вместо всего этого - открытия ордеров сразу с ТП-СЛ работает не на всех типах счетов, что тоже будет приводить к ошибкам.
RoboMaks,привет!
Можешь прикрутить алерт при появлении линий?
 

Вложения

  • ForexTime MT4.png
    ForexTime MT4.png
    103,4 КБ · Просмотры: 199
  • ShmenTrendlineindi.mq4
    ShmenTrendlineindi.mq4
    7,8 КБ · Просмотры: 59

Prelagatay

Местный житель
Как таковых особых нарушений кода у него нет, некоторые мелочи подправил. Но его желательно сильно упростить - разработчики всё-же сильно перестарались во всех проверках :)
Код:
Expand Collapse Copy
int SendOrder(int Type, double Lots, int TP, int SL, int Magic, string Cmnt, int& err)
{
  double Price, Take, Stop;
  int Ticket, Slippage, Color, Err; 
  bool Delay = False;
  Print("Функция SendOrder");
  [B]while(!IsStopped())
  {
    if(!IsExpertEnabled())
    {
      err = ERR_TRADE_DISABLED;
      Print("Эксперту запрещено торговать!");
      return(-1);
    }
    Print("Эксперту разрешено торговать");
    if(!IsConnected())
    {
      err = ERR_NO_CONNECTION;
      Print("Связь отсутствует!");
      return(-1);
    }
    Print("Связь с сервером установлена");
    if(IsTradeContextBusy())
    {
      Print("Торговый поток занят!");
      Print("Ожидаем 3 сек...");
      Sleep(3000);
      Delay = True;
      continue;
    }
    Print("Торговый поток свободен");
    if(Delay) 
    {
      Print("Обновляем котировки");
      RefreshRates();
      Delay = False;
    }
    else
    {
      Print("Задержек не было");
    }
    switch(Type)
    {
      case OP_BUY:
        Print("Инициализируем параметры для BUY-ордера");
        Price = NormalizeDouble( Ask, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble( Ask + TP * Point, Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Ask - SL * Point, Digits));
        Color = Blue;
        break;
      case OP_SELL:
        Print("Инициализируем параметры для SELL-ордера");
        Price = NormalizeDouble( Bid, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble( Bid - TP * Point, Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Bid + SL * Point, Digits));
        Color = Red;
        break;
      case OP_BUYSTOP:
        Print("Инициализируем параметры для BUYSTOP-ордера");
        Price = NormalizeDouble(Ask + Dist * Point, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble((Ask + Dist * Point) + (TakeProfit * Point), Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Ask + Dist * Point - SL * Point, Digits));
        Color = DarkBlue;
        break;
      case OP_SELLSTOP:
        Print("Инициализируем параметры для SELLSTOP-ордера");
        Price = NormalizeDouble( Bid - Dist * Point, Digits);
        Take = IIFd(TP == 0, 0, NormalizeDouble((Bid - Dist * Point) - (TakeProfit * Point), Digits));
        Stop = IIFd(SL == 0, 0, NormalizeDouble( Bid - Dist * Point + SL * Point, Digits));
        Color = Maroon;
        break;
 
      default:
        Print("Тип ордера не соответствует требованиям.");
        return(-1);
    }
    Slippage = MarketInfo(Symbol(), MODE_SPREAD);
    Print("Slippage = ",Slippage);
    if(IsTradeAllowed())
    {
      Print("Торговля разрешена, отправляем ордер...");
      Ticket = OrderSend(Symbol(), Type, Lots, Price, Slippage, Stop, Take, Cmnt, Magic, 0, Color);
      if(Ticket < 0)
      {
        Err = GetLastError();
        if (Err == 4   || /* SERVER_BUSY */
            Err == 130 || /* INVALID_STOPS */ 
            Err == 135 || /* PRICE_CHANGED */ 
            Err == 137 || /* BROKER_BUSY */ 
            Err == 138 || /* REQUOTE */ 
            Err == 146 || /* TRADE_CONTEXT_BUSY */
            Err == 136 )  /* OFF_QUOTES */
        {
          Print("Ошибка(OrderSend - ", Err, "): ", ErrorDescription(Err));
          Print("Ожидаем 3 сек...");
          Sleep(3000);
          Delay = True;
          continue;
        }
        else
        {
          Print("Критическая ошибка(OrderSend - ", Err, "): ", ErrorDescription(Err));
          err = Err;
          break;
        }
      }
      break;
    }
    else
    {
      Print("Эксперту запрещено торговать или торговый поток занят!");
      Print("Ожидаем 3 сек...");
      Sleep(3000);
      Delay = True;
      continue;
    }
  }
  Print("Ордер отправлен успешно. Тикет = ",Ticket);
  return(Ticket);[/B]
}
Из библиотек у него только stdlib - обработка ошибок, просто он теряет время на этих многочисленных проверках и в результате потери тиковых данных наоборот возникают ненужные ошибки.
Лучше добавить в него отдельную установку ТП-СЛ вместо всего этого - открытия ордеров сразу с ТП-СЛ работает не на всех типах счетов, что тоже будет приводить к ошибкам.
Благодарю. Не смотря на все излишества это пока самый стабильный бот из имеющихся у меня.
 

robert.smith

Почетный гражданин
Здравствуйте. На компе установлен терминал Build 950. Работает индикатор Coridor FullSSA normalize - mtf + lines 3.01 nmc.
Скачал другой терминал (Build 950), чтобы посмотреть другие котировки, библиотеку libSSA.dll закинул в Libraries, но индикатор не выводится на график.
Скачал еще один терминал - тоже самое.
Установил терминал на другой компьютер - не устанавливается на график и все тут.
Также не устанавливаются другие SSA индикаторы.

Подскажите, пожалуйста, в чем причина и что делать, чтобы поставить их на график?
 

Вложения

aleksergy

Местный житель
Здравствуйте. На компе установлен терминал Build 950. Работает индикатор Coridor FullSSA normalize - mtf + lines 3.01 nmc.
Скачал другой терминал (Build 950), чтобы посмотреть другие котировки, библиотеку libSSA.dll закинул в Libraries, но индикатор не выводится на график.
Скачал еще один терминал - тоже самое.
Установил терминал на другой компьютер - не устанавливается на график и все тут.
Также не устанавливаются другие SSA индикаторы.

Подскажите, пожалуйста, в чем причина и что делать, чтобы поставить их на график?
Может забыли поставить галочку-Разрешить импорт DLL.
 
Верх