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

 
Mikhail Tkachev:

Je demande l'aide de la communauté...
Comment déclarer et créer correctement des objets globaux MQL5 ?

Les globaux sont déclarés ici

//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//--- 
int      Global_1;
double   Global_2;
string   Global_3;
long     Global_4;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
 
Alexey Viktorov:

Je ne sais pas comment vous dire de lire la documentation. Si vous l'avez lu et que la fonction standard ne convient pas pour une raison quelconque, vous auriez dû le dire tout de suite...

Eh bien, à propos de "envoyer", laissez les modérateurs décider qui envoyer et où l'envoyer... ! Ban, par exemple... Devinez qui. En ce qui concerne les fonctions régulières, je n'ai pas vu l'analyse de json et la sauvegarde/écriture de fichiers json dans la documentation. Mais vous, comme d'habitude, vous connaissez une section secrète de la documentation où tout est là... Et je ne savais pas... Putain de merde. Honte à moi. Je suis sur le point de me faire chuter par Alexei... :)

 

aidez les gens, aller ouvrirun maximum de 2 ordres en même temps, je mets ainsi ne pas ouvrir un seul, sans pos_total ouvre


void OPENORDER(string ord)

  {
    int pos_total=PositionsTotal();
    double priceL=m_symbol.Ask();
   if (pos_total>=2)
   {
   if(ord=="Sell")      
   
        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")  
         //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }
}


Qu'est-ce que je fais de mal ?

 
Eugen8519:

aidez les gens, aller ouvrirun maximum de 2 ordres en même temps, je mets ainsi ne pas ouvrir un seul, sans pos_total ouvre



Qu'est-ce que je fais de mal ?

Vous avez écrit pour ouvrir si vous avez déjà 2 positions ou plus
.
if (pos_total<=2)
 
Alexey Viktorov:

Makar, vous aviez l'habitude de faire la bonne chose et maintenant vous voulez faire la chose stupide...

Repensez à vos maths de cinquième année environ. Combien y a-t-il de (-3)-(-7) et combien y a-t-il de (-3)+(-7) ?

C'est difficile de vérifier sur une calculatrice, Excell vous aidera.


Alexey connaît les mathématiques depuis la 5e année. Bravo, Alexey. Juste le Capitaine Rétrospection. :)

 
Mihail Matkovskij:

Alexei connaît les maths depuis la 5e année. Bravo, Alexei.

Dans ce cas, vous avez tort.
 
MakarFX:

Oui, merci. J'ai tiré des conclusions hâtives. Je l'ai bien compris)

La question n'était pas que la fonction peut avoir des valeurs négatives, mais pourquoi ajouter le swap et la commission au bénéfice. Toi et Alexei n'avez probablement pas compris.

Tsaryoff5614 voulait calculer le profit de l'ordre dans l'historique et la fonction était appelée lastloss (si vous parlez anglais).

https://www.mql5.com/ru/forum/160683/page1559#comment_23786144

Vous avez confondu vous et moi. Et puis toi et Alexey... Imbécile...

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам
  • 2021.08.02
  • www.mql5.com
В этой ветке я хочу начать свою помощь тем, кто действительно хочет разобраться и научиться программированию на новом MQL4 и желает легко перейти н...
 
MakarFX:
Vous avez tort dans ce cas.

Merci pour le conseil, mais il ne filtre pas du tout, il ouvre jusqu'à cinq positions.

   if(InpTrailingOrderLimit==0)
        return;
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==m_symbol.Name() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY)
              {
               if(m_position.PriceCurrent()-m_position.PriceOpen()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if(m_position.StopLoss()<m_position.PriceCurrent()-(ExtTrailingOrderLimit+ExtTrailingOrderStep))        
                       OPENORDER("Buy");
              
                  
              }
            else
              {
               if(m_position.PriceOpen()-m_position.PriceCurrent()>ExtTrailingOrderLimit+ExtTrailingOrderStep)
                  if((m_position.StopLoss()>(m_position.PriceCurrent()+(ExtTrailingOrderLimit+ExtTrailingOrderStep))))
                        OPENORDER("Sell");


il lui demande d'ouvrir des positions, mais peu importe où je mets pos_total, cela ne fonctionne pas.

 
Eugen8519:

Merci pour le conseil, mais il ne filtre pas du tout, il ouvre jusqu'à cinq positions.


Il lui demande d'ouvrir une position, mais peu importe où je mets pos_total, ça ne marche pas.

Il n'est pas nécessaire de retirer
if (pos_total<=2)

Je dois changer le signe comme je l'ai écrit.

 
Mihail Matkovskij:

La question n'était pas que la fonction peut avoir des valeurs négatives, mais pourquoi ajouter le swap et la commission au bénéfice. Vous et Alexey n'avez probablement pas compris.

Tsaryoff5614 voulait calculer le profit, mais sa fonction s'appelait lastloss. Il s'est embrouillé avec moi. Et maintenant, toi et Alexey... Imbécile...

C'est pourquoi nous l'ajoutons, afin de pouvoir calculer tout le bénéfice de la période.