Questions des débutants MQL4 MT4 MetaTrader 4 - page 234

 
leonerd:

OK, je vois, merci. J'ai pensé l'essayer sur l'EA. Mais ici, j'ai obtenu 5203. Dans MT5, le même code fonctionne bien...

Je crois que j'ai trouvé. J'ai défini un délai de 5000 (cela a fonctionné sur MT5, mais pas sur MT4). J'ai mis 500 - cela a fonctionné sur MT4 également.

 

Pouvez-vous m'indiquer comment transférer une fonction d'un indicateur vers un EA pour calculer directement dans celui-ci ?


void OnTick()

{

SovExitBuffer[0]= getValue()// }

) ?


int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

//---
   int limit;
//---
   if(rates_total<=1)
      return(0);
//--- last counted bar will be recounted
   limit=rates_total-prev_calculated;
   if(prev_calculated>0)
      limit=limit+1;

 for(int i=limit-1; i>=0; i--)
 {

  
  upDband1=iMA(NULL,0,25,0,MODE_SMA,PRICE_CLOSE,i)+iStdDev(NULL,0,25,0,MODE_EMA,PRICE_CLOSE,i)*2;
  maDbands1=iMA(NULL,0,25,0,MODE_SMA,PRICE_CLOSE,i);
  deltaDbands1=upDband1-maDbands1;

  ExitBuffer[i]=deltaDbands1; //Это значение нужно получить в советнике в Ontick()
  
  }

   return(rates_total);
  }


 

Pouvez-vous me dire comment écrire ce code 2 erreurs ! 1-une fin de programme inattendue 2-des parenthèses déséquilibrées Qu'est-ce qui ne va pas dans le sens des parenthèses déséquilibrées ?

extern double        Lot   =1;
//-------------------------------------
//----------------------------------
void start()
{
  Lot=OrderLots();
  void RefreshRates();
  CurAskPriceOne = MarketInfo("EURUSD", MODE_ASK);
  CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);
 //----------
 //--Открытие ордера1
    Ticket=OrderSend("EURUSD",OP_BUY,Lot,CurAskPriceOne,2,0,0);
    if (Ticket > 0)
      {
       if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) Print (" One order opene : " , OrderOpenPrice());
      {
      else Print ("Eror opening BUY EURUSD order : ",GetLastError();
//-------------
//--Ордер 2
          Ticket=OrderSend("USDCHF",OP_BUY,Lot,CurAskPriceTwo,2,0,0);
    if (Ticket > 0)
      {
       if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) Print (" One order opene : " , OrderOpenPrice());
      {
      else Print ("Eror opening BUY USDCHF order : ",GetLastError());
      
//---------------------------Закрытие старт
  return;
}
 
Tenimagalon:

Pouvez-vous me dire comment écrire ce code 2 erreurs ! 1- fin de programme inattendue 2- parenthèses déséquilibrées Quel est le problème ?

Erreurs avec les parenthèses fixé - vous avez besoin de chercher la paire, ou mieux - d'abord mettre les crochets, et puis à l'intérieur du code à écrire :

extern double        Lot   =1;
//-------------------------------------
//----------------------------------
void start()
{
   Lot=OrderLots();
   RefreshRates();
   CurAskPriceOne = MarketInfo("EURUSD", MODE_ASK);
   CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);
   //----------
   //--Открытие ордера1
   Ticket=OrderSend("EURUSD",OP_BUY,Lot,CurAskPriceOne,2,0,0);
   if(Ticket > 0)
     {
      if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) 
         Print(" One order opene : " , OrderOpenPrice());
      else
         Print("Eror opening BUY EURUSD order : ",GetLastError());
     }
   //-------------
   //--Ордер 2
   Ticket=OrderSend("USDCHF",OP_BUY,Lot,CurAskPriceTwo,2,0,0);
   if (Ticket > 0)
     {
      if(OrderSelect(Ticket,SELECT_BY_POS,MODE_TRADES)) 
         Print(" One order opene : " , OrderOpenPrice());
     }
   else
      Print("Eror opening BUY USDCHF order : ",GetLastError());
   //---------------------------Закрытие старт
   return;
}

... Mais il n'y a pas de logique dans votre code...

 

Je vais ajouter,

ceci :

Lot=OrderLots();

ne fonctionnera pas, la fonction OrderLots() fonctionne, lisez l'aide.

variables :

CurAskPriceOne et CurAskPriceTwo

ne sont déclarés nulle part,

vous devez le faire de manière approximative.

   double CurAskPriceOne = MarketInfo("EURUSD", MODE_ASK);
   double CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);

comme ceci

 
Eh bien, je suis d'accord pour le lot. Ah.
  double CurAskPriceTwo = MarketInfo("USDCHF", MODE_ASK);

non annoncé et cela a fonctionné. :)

 
À plusieurs reprises, j'ai vu des citations de minutes disparaître rétrospectivement. Par exemple, la nuit dernière (12.02), plusieurs centaines d'enregistrements pour le jour 10-11 ont disparu. Parfois, le problème est traité en appuyant simplement sur "rafraîchir" sur le graphique M1, hier cela n'a pas fonctionné et j'ai dûimporter manuellement les cotations à partir d'un autre terminal. Le broker sur le serveur fonctionne bien, car le même compte ouvert dans une autre copie du terminal donne un graphique normal sans le trou. Quel pourrait être le problème ?
Объем импорта - экономические данные США
Объем импорта - экономические данные США
  • www.mql5.com
Импорт (Imports) отражает объем товаров и услуг из-за рубежа, которые сразу же входят в сети потребления, склады и зоны внешней торговли. При составлении индикатора обычно используется стоимость
 
Je n'arrive pas à comprendre comment ouvrir des ordres, comment les fermer, comment les prendre par type, je n'arrive pas à comprendre comment faire pour que le robot ouvre un putain d'ordre et c'est tout :) Prenons le code le plus simple, que dois-je mettre au début ou à la fin pour que ce bâtard ouvre l'ordre une fois.
extern double lot =1;
int start()
{
  int Ticket;
   Ticket=OrderSend("USDCHF",OP_BUY,Lot,Ask,2,0,0);
 return(1);
}
 
Tenimagalon:
Je n'arrive pas à comprendre comment ouvrir des ordres, comment les fermer, comment les prendre par type, je n'arrive pas à comprendre comment faire pour que le robot ouvre un putain d'ordre et c'est tout :) Prenons le code le plus simple, que dois-je mettre au début ou à la fin pour que ce bâtard ouvre l'ordre une fois.
OrdersTotal() < 1
 
Iurii Tokman:
C'est avant de l'ouvrir ?
(
)
Raison: