Difficultés de traduction :) - page 4

 
Alexey Volchanskiy:

Vous êtes les bienvenus. Mais j'ai écrit que je suis un chaton paresseux))

C'est la raison pour laquelle je ne tire pas le diable par les couilles à chaque fois, mais je garde les données d'ordre en classe.

Purement sur une question : vraisemblablement, vous vouliez examiner les positions, pas les mandats ? М... J'aurais fait les choses différemment, mais le flux en direct est quelque chose comme ça.

J'ai 40 de ces fonctions dans mon modèle pour toutes les occasions. Je les ai séparément pour les ordres, et séparément pour les positions. Ils sont très rapides à utiliser ; nous utilisons ceux dont nous avons besoin dans notre EA et, en outre, nous pouvons étendre ou modifier l'algorithme de l'EA en quelques minutes. C'est pourquoi j'utilise les fonctions dans un seul fichier et je n'ai pas besoin de connecter quoi que ce soit en plus.

Oui, j'aimerais revoir les positions et, si possible, les ordres également, ce serait formidable).

Aleksey, si vous avez le temps et que vous le souhaitez après la promenade nocturne, faites-moi voir à quoi cela devrait ressembler et je réécrirai tout ce que j'ai par analogie.

Merci !

//==================

P.S. en écrivant, vous avez donné une réponse)

(c) pourquoi faut-il mettre toutes sortes de choses aprèsavoir inséré le code !!!!?

C'est pour savoir quelle fonction, comme un commentaire, il y en a beaucoup

Merci pour la réponse, je vais continuer à creuser )))).

 
Alexey Volchanskiy:

Vous êtes les bienvenus. Mais j'ai écrit que je suis un chaton paresseux))

C'est la raison pour laquelle je ne tire pas le diable par les couilles à chaque fois, mais je garde les données d'ordre en classe.

Purement sur une question : vraisemblablement, vous vouliez examiner les positions, pas les mandats ? М... J'aurais fait les choses différemment, mais le direct est comme ça.

Ce stupide site a encore planté, je vais aller sur reddit, tout est clair là-bas.

****************** site web stupide ! !!!!!!!!!!!!!

pourquoi tu dois mettre de la merde après avoir mis le code !!!!

Non Alexey, ce n'est pas tout à fait ça. PositionSelect(Symbol()) sélectionnera la même position. C'est bien pour les filets.

Voici un morceau avec des parenthèses non appariées aussi, tout le monde ici le comprend.

    for(i = 0; i < PositionsTotal(); i++)
     {
      if(PositionGetTicket(i) > 0 && PositionGetString(POSITION_SYMBOL) == Symbol() && PositionGetInteger(POSITION_MAGIC) == magic)
       {
        if(PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_BUY || PositionGetInteger(POSITION_TYPE) == POSITION_TYPE_SELL)
         {
 
Vitaly Muzichenko:

Oui, je voulais jeter un coup d'oeil aux positions et si vous pouvez, les commandes aussi, ce serait super)


Pour les ordres en cours, ce serait presque la même chose

    for(i = 0; i < Orders Total(); i++)
     {
      if(OrderGetTicket(i) > 0 && Order GetString(POSITION_SYMBOL) == Symbol() && Order GetInteger(POSITION_MAGIC) == magic)
       {
        if(Order GetInteger(POSITION_TYPE) == POSITION_TYPE_BUY_STOP || Order GetInteger(POSITION_TYPE) == POSITION_TYPE_SELL_STOP) // или другие типы
         {
 
Alexey Viktorov:

C'est presque la même chose pour les ordres en attente

Un grand merci aux cinq rédacteurs pour leur aide !
 
Vitaly Muzichenko:

Alexei, une question pour vous :

Dans quelle mesure est-il long et difficile de traduire des projets écrits en style procédural ? Pourquoi la procédure ? - j'avais l'habitude de faire comme ça, avoir un modèle pour toutes les occasions, y écrire 3-5 lignes pour les conditions, et n'importe quel hibou est prêt en une demi-heure avec tout le débogage

Suivant :

Est-il possible de réécrire la fonction d'ouverture de position pour l'appliquer de la même manière que dans quad, je me suis juste habitué à leurs noms et à leur utilisation au fil des ans, et je n'ai pas besoin de brancher de bibliothèques.

Eh bien, et un bloc de conditions pour l'ouverture et la création de graphiques :

Beaucoup plus de graphiques, écrit une fois sur cinq, de sorte qu'il ya quelque chose fait par .opa temps et le prix de la sélection du premier point et le second. Dans la quatrième, ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) et ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), mais dans la cinquième, une telle construction ne fonctionne pas(

Merci d'avance pour la réponse !

J'ai réécrit un autre projet hier, il s'agit d'un conseiller expert assez important. Mon client l'a optimisé pendant des semaines, il a un code lourd et beaucoup de paramètres. Je l'ai encouragé à passer à 5 avec hedge, je lui ai dit qu'il pouvait l'optimiser dans le cloud. Aujourd'hui, il écrit qu'il se pisse dessus à une telle vitesse qu'il lui a fallu quelques heures pour tout optimiser, ce qui lui prenait des semaines auparavant. Évidemment, il y a généralement quelques milliers d'agents libres dans le nuage.

Maintenant, pour répondre à votre question, j'ai acquis une certaine expérience, il y a quelques réponses.

Laissez-les garder le style procédural, personne ne vous oblige à utiliser la POO.

2. Voici un bon article sur les fonctions dans MQL4 et 5. Il y a une table là-bas . https://www.mql5.com/ru/articles/81.

Voici une bibliothèque sur l'utilisation combinée des fonctions de trading 4 et 5. Je n'ai pas essayé, mais c'est intéressant. https://www.mql5.com/ru/code/16006

Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • 2010.05.11
  • Sergey Pavlov
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 

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

Difficultés de traduction :)

Vitaly Muzichenko, 2016.08.15 21:00

Je suis d'accord.)

Alexey, alors comme un jeu) s'il vous plaît traduire cette fonctionnalité à cinq :

//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions(string symb="0", int type=-1, int mg=-1) {
 int kp=0;
  if(symb=="0") { symb=Symbol();}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      kp++;
 }}}}
  return(kp);
 }

Comment l'utiliser en quatre - vous savez.

Merci !


J'ai un point de vue légèrement différent sur la traduction. Pas de "remplacements" dans VS. J'ajoute juste une seule ligne. Le code de travail de la fonction mentionnée pour MT5-Hedge

// https://www.mql5.com/ru/code/16006
#include <MT4Orders.mqh>

//===============================================================================================
//------------------------------- Возвращает количество позиций --------------------------------+
//===============================================================================================
int NumberOfPositions(string symb="0", int type=-1, int mg=-1) {
 int kp=0;
  if(symb=="0") { symb=Symbol();}
  for(int i=0; i<OrdersTotal(); i++) {
   if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
    if((OrderSymbol()==symb||symb=="")&&(type<0||OrderType()==type)&&(mg<0||OrderMagicNumber()==mg)) {
     if(OrderType()==OP_BUY || OrderType()==OP_SELL) {
      kp++;
 }}}}
  return(kp);
 }

Le code est devenu immédiatement multiplateforme.

De même, l'exécution du conseiller expert MT4 de quelqu'un d'autre dans MT5-tester - exemple.

 
fxsaber:

J'ai une vision légèrement différente de la traduction. Pas de "remplacements" dans VS. J'ajoute juste une seule ligne. Code de travail de la fonction mentionnée pour MT5-Hedge

Le code est devenu multiplateforme d'un seul coup.

De même, l'exécution du conseiller expert MT4 de quelqu'un d'autre dans MT5-tester - exemple.

Cool ! J'ai utilisé CTrade hier pour la vitesse de traduction, je n'ai pas encore regardé la bibliothèque. Mais je vais certainement y jeter un coup d'œil.
 
Alexey Volchanskiy:
Cool ! J'ai utilisé CTrade hier pour la vitesse de traduction, je n'ai pas encore regardé la bibliothèque. Mais je vais certainement y jeter un œil.

Mon MT4Orders.mqh n'a pas fonctionné pour moi - il entre en conflit avec la bibliothèque standard que j'utilise déjà. Il ne devrait probablement être que sur une feuille propre.

'::' - unexpected token Trade.mqh       126     22
'::' - unexpected token Trade.mqh       1477    14
'MqlTradeResult' - identifier already used      Trade.mqh       1477    55
see previous declaration of '           0       0
'&' - semicolon expected        Trade.mqh       1477    70
'if' - expressions are not allowed on a global scope    Trade.mqh       1483    4
'else' - expressions are not allowed on a global scope  Trade.mqh       1485    4
'if' - expressions are not allowed on a global scope    Trade.mqh       1488    4
'else' - expressions are not allowed on a global scope  Trade.mqh       1493    4
'return' - expressions are not allowed on a global scope        Trade.mqh       1499    4
')' - expressions are not allowed on a global scope     Trade.mqh       1500    3
declaration of 'action' hides global declaration in file 'Trade.mqh' at line 1480       DealInfo.mqh    244     55

**

 
Alexey Volchanskiy:

Mon MT4Orders.mqh n'a pas fonctionné pour moi - il entre en conflit avec la bibliothèque standard que j'utilise déjà. Il ne devrait probablement être que sur une feuille propre.

**

#include <MT4Orders.mqh> // если есть #include <Trade/Trade.mqh>, вставить эту строчку ПОСЛЕ
 

Question - comment connaître la commission d'une position dans MQL5 ?

Je l'ai fait dans MQL4 comme ceci

double oProfit = OrderProfit() + OrderSwap() + OrderCommission(); // MQL4

Il n'y a pas de commission dans MQL5.

double oProfit = PositionGetDouble(POSITION_PROFIT) + PositionGetDouble(POSITION_SWAP);

J'ai regardé dans les propriétés de la commande, et il n'y a pas de commission non plus. Que dois-je faire ?

Raison: