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

 
Konstantin Nikitin:

Merci. En d'autres termes, par quoi divise-t-on le bénéfice en monnaie ?

.../(OrderSymbol()==Sy_1 ? tickValue_1 : tickValue_2));
   
Maxim Kuznetsov:
Vous ne pouvez pas additionner les points de deux instruments différents.

Je comprends que la valeur du point est différente, mais cela n'a pas d'importance dans ce cas.

 
PolarSeaman:

Merci. En d'autres termes, par quoi divise-t-on le bénéfice en monnaie ?

La valeur du point dans la devise du dépôt.
Pour moi, il serait plus correct d'écrire cette fonction sur 1 caractère

int Punkts_B(const string symbol="", const int _Mag=-1)
  {
   double profit = 0;
   for(int t=0;t<OrdersTotal();t++)
     {
      if( !OrderSelect(t,SELECT_BY_POS,MODE_TRADES) )  continue;
      if( OrderSymbol()!=symbol )                      continue;
      if( OrderMagicNumber()!=_Mag )                   continue;
      if( OrderType()!=OP_BUY && OrderType()!=OP_SELL) continue;

      profit+= OrderProfit()+OrderSwap()+OrderCommission();
     }
   return( (int)MathFloor(profit/SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE)) );
  }

int xxx = Punkts_B("EURUSD", 12345) + Punkts_B("GBPUSD", 12345);
Et ajoutez des points si nécessaire lors de l'appel.
 
Konstantin Nikitin:

Valeur du point dans la devise du dépôt.

Que disent les mots(OrderSymbol()==Sy_1 ? tickValue_1 : tickValue_2); ?

Print(Punkts_B("GBPUSD", "AUDUSD",11151)) imprime zéro ;

 
PolarSeaman:

Comme expression de mots(OrderSymbol()==Sy_1 ? tickValue_1 : tickValue_2)) ;

Print(Punkts_B("GBPUSD", "AUDUSD",11151)) ;

Opérateur conditionnel ?

 
Konstantin Nikitin:

Opérateur conditionnel ?

Merci.

 

Chers collègues, aidez-moi.

J'essaie de comprendre comment travailler avec le registre, j'ai créé un conseiller expert simple pour le test. La lecture des données du registre du système se déroule sans problème, mais il y a des problèmes d'écriture, de MT et de plantage de la mémoire... (((

Peut-être que mon œil est déjà trempé et que je ne vois pas l'évidence...

Dossiers :
TestReg.mq5  25 kb
 

Vous devez placer leurs noms à côté des extrémités des courbes dans la fenêtre séparatiste, qui doit être liée à eux.

Veuillez expliquer comment procéder.

 
khorosh:

Vous devez placer leur nom à côté des extrémités des courbes dans la fenêtre de séparation, qui doit leur être liée.

Veuillez expliquer comment procéder.

Objets - ils peuvent être affichés dans n'importe quelle fenêtre du terminal et ses sous-fenêtres.

 

Artyom Trishkin:

Objets - ils peuvent être émis dans n'importe quelle fenêtre du terminal et ses sous-fenêtres.

--------------------------------------------------------------------------------------------------------------------------------------

J'ai essayé comme ça, mais ça ne marche pas.

  if(ObjectFind("Spread")<0) 
    {
     ObjectCreate(1,"Spread", OBJ_TEXT, 0, Time[0],LevLabelSpread );
     ObjectSetText("Spread", "                    Spread", 10, "Arial", clrYellow);
    }
  else
    {
     ObjectMove(1,"Spread", 0, Time[0], LevLabelSpread);
    } 
C'est peut-être dû à la numérotation des fenêtres. S'il y a une fenêtre séparée dans le graphique, son numéro ==1 ?
 
Kirill Belousov:

remplacez dans vos expressions - && par "ET EN MÊME TEMPS", et remplacez || par "OU".

vous devriez être capable de le lire et de voir comment il fonctionne.


la première ligne fonctionnera soit avec magic =777 (quand hand_orders=false) ou magic = 0 (quand hand_orders=true)

la deuxième ligne fonctionne TOUJOURS avec majic=777, et avec hand_orders=true fonctionne EN PLUS avec majic=0

Merci !