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

 
Ihor Herasko:

Смотрите функцию SymbolSelect.

Спасибо!

 
Подскажите пожалуйста как график сместить ещё сильнее влево программно.Спасибо!
 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

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

labvic, 2018.03.12 14:43

Всем привет! Столкнулся с такой проблемой:

Открываю сделку без стоплосса и тэйкпрофита:

OrderSend("EURUSD",OP_BUY,0.1,Ask,0,0,0,"",Magic,0,Red);

Хочу закрыть этот ордер

OrderClose(Magic,OrderOpenPrice(),Ask,0,Red);

Вылезает ошибка: OrderClose error 131

Если вместо OrderOpenPrice() укажу 0.1 или OrderLots(), то ошибка:  OrderClose error 138

В чем проблема?

Судя по документации чудней закрытие написать очень трудно.

bool  OrderClose(
   int        ticket,      // номер ордера
   double     lots,        // количество лотов
   double     price,       // цена закрытия
   int        slippage,    // максимальное проскальзывание
   color      arrow_color  // цвет
   );
Вместо тикета написан магик, вместо объёма написана цена открытия. Читайте документацию и не стесняйтесь почаще заглядывать в неё при написании кода.


 
Nikolay Gaylis:
Подскажите пожалуйста как график сместить ещё сильнее влево программно.Спасибо!

Нужно отключить автоскрол и смещение (свойства графика CHART_AUTOSCROLL и CHART_SHIFT соответственно), а затем использовать ChartNavigate().

 
Ihor Herasko:

Нужно отключить автоскрол и смещение (свойства графика CHART_AUTOSCROLL и CHART_SHIFT соответственно), а затем использовать ChartNavigate().

спасибо!

 

Всех приветствую! Я новичок, пытаюсь создать советника. Написал простейшего, чтобы посмотреть, как он сработает. В момент появления сигнала, не срабатывает алерт. В чем ошибка не понятно. Вы не могли бы мне помочь разобраться, в чём заключается моя ошибка?

//+------------------------------------------------------------------+
//|                                             тенк больше кидж.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
 double tenkan=iIchimoku(NULL,0,9,26,52,MODE_TENKANSEN,1);       //ЗНАЧЕНИЕ ТЕНКАН
 double kijun=iIchimoku(NULL,0,9,26,52,MODE_KIJUNSEN,1);         // ЗНАЧЕНИЕ КИДЖУН
 //-------------------------------------------------------------------+
  if(tenkan>kijun)                                               //"ЗОЛОТОЙ КРЕСТ"
  Alert("ЗОЛОТОЙ КРЕСТ");                                       // ОПОВЕЩЕНИЕ
  return;
  }

С уважением Андрей.

Файлы:
 
Andrey Ilinykh:

Всех приветствую! Я новичок, пытаюсь создать советника. Написал простейшего, чтобы посмотреть, как он сработает. В момент появления сигнала, не срабатывает алерт. В чем ошибка не понятно. Вы не могли бы мне помочь разобраться, в чём заключается моя ошибка?

С уважением Андрей.

Срабатывает!В тестере проверяете?

 
Nikolay Gaylis:

Срабатывает!В тестере проверяете?

Я, почему то , так и думал.

Нет, я пока не разобрался с тестером

Советник скомпилировался, кидаю его на минутный график и слежу. Облако меняет цвет, а окно алерта не открывается. Неужели ошибка ПО?

Спасибо!

 
void Laguerr::  deleteOrders()   //  (int otype)
{
   int k = OrdersTotal();
   datetime mDateOrderOp; 
   
   
   for(int i=k-1;i>=0;i--)
   {
      if (OrderSelect(i,SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol()==nameSym && OrderMagicNumber()== Magic && OrderCloseTime()==0)  // && OrderType() == otype)
         {
            if(OrderType()== OP_BUYSTOP || OrderType()== OP_SELLSTOP) 
            {
               mDateOrderOp = OrderOpenTime();
               int  mTick = OrderTicket();
               //if (OrderType()== OP_BUYSTOP) mOpType = OP_SELL;
               bool flag= false;
               for(int pos=k-1;pos>=0;pos--)
               {
                  if (OrderSelect(pos,SELECT_BY_POS, MODE_TRADES))
                  {
                     if (OrderSymbol()==nameSym && OrderMagicNumber()== Magic && OrderCloseTime()==0)  // && OrderType() == otype)
                     {
                        if(OrderOpenTime() == mDateOrderOp && (OrderType()== OP_BUY || OrderType()== OP_SELL)  ) 
                        {
                            flag = true;   
                            break;
                        } 
                     }
                  }
               }
               if (!flag)
               {
                  if (!OrderDelete(mTick))
                  Print("Ошибка delete ордера . Код ошибки=",GetLastError()); 
                  break;
               }
             } 
         }
      }
   }
}
привет всем ! ситуация такая: открывается ордер, с определенными ТП и СЛ. но срабатывает СЛ ,и открывается второй ордер по цене СЛ первого ордера в противополжную сторону (ТП равен количеству потерянных пунктов по первому ордеру). в случает вторичного СЛ  , отркываться должен третий ордер в противоположную второму ордеру с ценой равной значению СЛ второго ордера (соотвесвующий ТП). сейчас в коде у меня удаляется второй ордер  , если закрылся по ТП первый ордер. Вопрос: как сделать вот этот каскад открытия этих трех ордеров ?
 
Подскажите верно ли реализована функция закрытия всех ордеров открытых советником по символу?
void OrderCloseAll(double close_price)
{
   for(int i=OrdersTotal(); i>-1; i--)
      {
         OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic) OrderClose(OrderTicket(),lot,close_price,slippage,clrWhite);
      }

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