Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 583

 

Здравствуйте, помогите разобраться. Не работает торговый робот, советник, Эксперт. скачивала все возможное хотела проверить как это все работает. Итог смайлы улыбаются а робот не торгует. Думала депозит мал но на демо счете тоже самое. заранее спасибо

 
Lilia.solomko:

Здравствуйте, помогите разобраться. Не работает торговый робот, советник, Эксперт. скачивала все возможное хотела проверить как это все работает. Итог смайлы улыбаются а робот не торгует. Думала депозит мал но на демо счете тоже самое. заранее спасибо

Каким образом определили, что робот не торгует? Убедились, что для открытия сделки выполнены все условия, отвечающие торговой стратегии? Или просто поставили робота, а он не открыл сразу сделку?

 
Lilia.solomko:

Здравствуйте, помогите разобраться. Не работает торговый робот, советник, Эксперт. скачивала все возможное хотела проверить как это все работает. Итог смайлы улыбаются а робот не торгует. Думала депозит мал но на демо счете тоже самое. заранее спасибо

Что пишет в этих двух вкладках?


 
Помогите пожалуйста написать функцию : закрывать ордера от большего лота к меньшему (string Symbol, int type, bool hand orders, int Magic)
То есть выбор символа, типа, учитываются ли ручные ордера, меджик номер.
 
Tigerfreerun:
Помогите пожалуйста написать функцию : закрывать ордера от большего лота к меньшему (string Symbol, int type, bool hand orders, int Magic)
То есть выбор символа, типа, учитываются ли ручные ордера, меджик номер.

Есть, готовое.

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 11.12.2008                                                     |
//|  Описание : Закрытие позиций в порядке сортировки по размерам лотов.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента        (    ""       - любой символ,      |
//|                                             NULL      - текущий символ)    |
//|    op - операция                        (    -1       - любая позиция)     |
//|    mn - MagicNumber                     (    -1       - любой магик)       |
//|    sd - Направление сортировки лотов    (MODE_ASCEND  - возрастание,       |
//|                                          MODE_DESCEND - убывание)          |
//+----------------------------------------------------------------------------+
void ClosePosBySortLots(string sy="", int op=-1, int mn=-1, int sd=MODE_DESCEND) {
  double a[][2];                  // Массив лотов и тикетов
  int    i, k=OrdersTotal();      // Счётчик и количество ордеров
  int    p=0;                     // Количество позиций

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            p++;
            ArrayResize(a, p);
            a[p-1][0]=OrderLots();
            a[p-1][1]=OrderTicket();
          }
        }
      }
    }
  }

  // вдруг позиций нету, тогда и закрывать нечего
  if (p>0) {
    ArraySort(a, WHOLE_ARRAY, 0, sd);
    for (i=0; i<p; i++) {
      if (OrderSelect(a[i][1], SELECT_BY_TICKET)) {
        // проверим незакрытость на всякий случай,
        // может какая-то позиция уже закрылась по стопу/тейку
        if (OrderCloseTime()==0) ClosePosBySelect();
      }
    }
  }
}
 
Alekseu Fedotov:

Есть, готовое.

Пробовал использовать, почему-то не работает.
Где в этой функции само закрытие, на сколько я вижу там отсылка к другой функции? 
 
Tigerfreerun:
Пробовал использовать, почему-то не работает.
Где в этой функции само закрытие, на сколько я вижу там отсылка к другой функции? 

Да, там закрытие полноценной функцией ClosePosBySelect(), а не простой отправкой торгового приказа без проверок состояния и результатов.

Поиск по сайту даст вам ссылку на кимовскую функцию ClosePosBySelect()

 
Tigerfreerun:
Пробовал использовать, почему-то не работает.
Где в этой функции само закрытие, на сколько я вижу там отсылка к другой функции? 

В шапке этой функции есть адрес сайта, заходи качай все библиотеки,

работают на ура.  

 

Строю горизонтальные отрезки. Индикатор правильно, по координатам ставит линии, но в какой то момент, на новом баре ставится линия на одной, произвольной цене, состоящая из множества отрезков разной длинны, наложеных дру на друга. Цена установки "чужих" не подходит ни под одно условие. Откуда они, как предотвратить?

if(Line)
  {
   n_++;
   Setline(n_,Time[b_u_pbu],High[b_u_pbu],Time[b_u_pbu1],High[b_u_pbu],clrLime);
  }
//
void Setline(int sh,datetime tm,double pr,datetime tm1,double pr1,color clr)
  {
   ObjectCreate("-"+sh,OBJ_TREND,0,tm,pr,tm1,pr1,clr);
   ObjectSet("-"+sh,7,STYLE_SOLID);
   ObjectSet("-"+sh,10,false);
   ObjectSet("-"+sh,6,clr);
   ObjectSet("-"+sh,8,2);
  }
 
bij:

Строю горизонтальные отрезки. Индикатор правильно, по координатам ставит линии, но в какой то момент, на новом баре ставится линия на одной, произвольной цене, состоящая из множества отрезков разной длинны, наложеных дру на друга. Цена установки "чужих" не подходит ни под одно условие. Откуда они, как предотвратить?

Имена линий меняются и отсюда множество линий.

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

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