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

ash1

Прохожий
Ошибка ordermodifyerror 130 возникает в процессе тестирования советника

Ошибка ordermodifyerror 130 возникает в процессе тестирования советника. Вы можете это исправить?
 

Вложения

osvit

Активный участник
советник cm-insurer

Друзья возможно ли в советнике сделать что бы он разруливал не крайние позиции, а ту которую укажут в настройках?
 

Вложения

Земфира

Интересующийся
Привет всем.!!! Есть трендовый советник Omega Trend. Сливает. Помогите пож. с "Set" файлами на EUR/USD, GBP/USD, USD/CHF, EUR/JPY ??? Или что-то еще ???
 

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 - обработка ошибок, просто он теряет время на этих многочисленных проверках и в результате потери тиковых данных наоборот возникают ненужные ошибки.
Лучше добавить в него отдельную установку ТП-СЛ вместо всего этого - открытия ордеров сразу с ТП-СЛ работает не на всех типах счетов, что тоже будет приводить к ошибкам.
Ув.RoboMaks, возможно ли прописать в блоке ММ риск хотя бы от 0.1, а то немного жадный бот иногда заставляет нервничать с маржой.
 

vjakrasikv

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

Вложения

Walle2323

Активный участник

Вложения

RoboMaks

Элитный участник
возможно ли прописать в блоке ММ риск хотя бы от 0.1, а то немного жадный бот иногда заставляет нервничать с маржой.

Прописать-то не проблема -
extern double MM_RiskPercent = 0.1; //Процент риска используемый при расчете ММ.

но нужный вариант расчёта надо правильно выбирать в MM_Mode
 

Вложения

  • #ADX CCI (5 digits)v3.2.mq4
    #ADX CCI (5 digits)v3.2.mq4
    59 КБ · Просмотры: 54
  • Сохраненное изображение 2016-3-14_19-38-41.218.jpg
    Сохраненное изображение 2016-3-14_19-38-41.218.jpg
    116,5 КБ · Просмотры: 57

osvit

Активный участник
ТР Mouse

Люди добрые есть скрипт установка ТР с помощью мыши. Система проста берешь скрипт и куда кинешь там и встанет ТР всех ордеров. Есть большая просьба, при броске скрипта появляется горизонтальная линия, а при перемещении линии соответственно меняются установки.
 

Вложения

osvit

Активный участник
Друзья выручайте!!!

Очень нужно. Советник выставляет отложники на каждом тике. Нужно чтобы выставлялся только один ну максимум два. Все остальное остается прежним это очень важно. Заранее большое спасибо.
 

Вложения

vga

Активный участник
Приветствую! Господа программисты, просьба поправить если возможно советник. Хороший робот, не компилируется в новом билде.
 

Вложения

gince

Местный знаток
Приветствую! Господа программисты, просьба поправить если возможно советник. Хороший робот, не компилируется в новом билде.

Ошибок нет, компилиться, но предупреждений полно, пробуй.
 

Вложения

  • Like
Реакции: vga

ered2000

Активный участник
Ошибки при компиляции

Посмотреть вложение TMA++.mq4

Не компилируется. У меня есть скомпилированная версия, но в ней не работает режим MTF, индикатор просто пропадает с экрана. Почините пожалуйста.
 
Верх