Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 492

 
Ihor Herasko:

Voir la fonction SymbolSelect.

Merci !

 
Veuillez m'indiquer comment décaler le graphique vers la gauche de manière programmatique.
 

Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

Toute question pour les débutants sur MQL4, aide et discussion sur les algorithmes et les codes

labvic, 2018.03.12 14:43

Bonjour à tous, je suis confronté à un tel problème :

J'ouvre une transaction sans stoploss et takeprofit :

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

Je veux fermer cette commande.

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

Je reçois cette erreur : OrderClose error 131

Si au lieu deOrderOpenPrice() je pointe 0.1 ou OrderLots() il y a une erreur : OrderClose error 138

Quel est le problème ?

À en juger par la documentation, il est très difficile d'écrire une fermeture beaucoup plus farfelue.

bool  OrderClose(
   int        ticket,      // номер ордера
   double     lots,        // количество лотов
   double     price,       // цена закрытия
   int        slippage,    // максимальное проскальзывание
   color      arrow_color  // цвет
   );
Au lieu de ticket écrit magik, au lieu de volume écrit open price. Lisez la documentation et n'hésitez pas à la consulter plus souvent lorsque vous écrivez du code.


 
Nikolay Gaylis:
Veuillez m'indiquer comment décaler le graphique encore plus vers la gauche de manière programmatique.

Je dois désactiver le défilement automatique et le décalage (propriétés de graphique CHART_AUTOSCROLL et CHART_SHIFT respectivement) et ensuite utiliser ChartNavigate().

 
Ihor Herasko:

Il faut désactiver l'autoscroll et le décalage (propriétés du graphique CHART_AUTOSCROLL et CHART_SHIFT respectivement) et ensuite utiliser ChartNavigate().

Merci !

 

Bonjour à tous, je suis un débutant et j'essaie de créer une EA. J'en ai écrit un simple pour voir comment il fonctionnerait. Lorsqu'un signal apparaît, l'alerte ne fonctionne pas. Je ne sais pas quelle est l'erreur. Je ne sais pas quelle est l'erreur exacte.

//+------------------------------------------------------------------+
//|                                             тенк больше кидж.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;
  }

Sincèrement, Andrei.

Dossiers :
 
Andrey Ilinykh:

Bonjour à tous, je suis un débutant et j'essaie de créer une EA. J'en ai écrit un simple pour voir comment il fonctionnerait. Lorsqu'un signal apparaît, l'alerte ne fonctionne pas. Je ne sais pas quelle est l'erreur. Je ne sais pas quelle est l'erreur exacte.

Salutations Andrew.

Est-ce que ça marche ! Est-ce que vous le vérifiez dans le testeur ?

 
Nikolay Gaylis:

Cela fonctionne ! Avez-vous vérifié avec un testeur ?

C'est ce que je pensais, pour une raison quelconque.

Non, je n'ai pas encore trouvé le testeur.

J'ai compilé le conseiller expert et je l'utilise sur un graphique en minutes. Le nuage change de couleur mais la fenêtre d'alerte ne s'ouvre pas. Pourrait-il s'agir d'une erreur logicielle ?

Merci !

 
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;
               }
             } 
         }
      }
   }
}
Bonjour à tous, voici la situation : j'ouvre un ordre avec un certain TP et OD. Mais OD se déclenche et un deuxième ordre s'ouvre au prix OD du premier ordre dans la direction opposée (OD est égal au nombre de points perdus sur le premier ordre). Dans le cas d'un SL secondaire, le troisième ordre doit être ouvert dans la direction opposée au deuxième ordre avec un prix égal à la valeur du SL du deuxième ordre (c'est-à-dire le TP correspondant). Question : Comment faire cette cascade d'ouverture de ces trois commandes ?
 
Pouvez-vous me dire si la fonction de fermeture de tous les ordres ouverts par l'EA sur le symbole est correcte ?
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);
      }

}