L'avenir de MQL5 est MQL5+ ou même MQL6 - page 10

 
J'aimerais voir goto, vous pourriez simplifier considérablement le code, sans parler de la lisibilité. Après tout, une boucle avec une condition est essentiellement une sortie prématurée de la boucle aussi.
 
dimka8:
J'aimerais voir goto, on pourrait simplifier considérablement le code, sans parler de la lisibilité. en fait, une boucle avec une condition est aussi une sortie prématurée de la boucle.
Non, je ne veux pas :)
 
dimka8:
J'aimerais voir le goto, on peut simplifier considérablement le code, sans parler de la lisibilité. en fait, une boucle avec une condition est aussi une sortie prématurée de la boucle.

D'où venez-vous...

 

Un mot ou deux :

Plates-formes croisées obligatoires ....

 
Vasiliy Sokolov:

D'où venez-vous...

à partir de BASIC
 
Alexander Bereznyak:
à partir de BASIC.

Hiasme encore plus simple.

Et les classiques ?

for(...) {
for (...) {
while (...) {
if (...) goto stop;
...
}
}
}
printf("error in program\n");
 

Ce serait bien d'introduire le concept de projet. Avec l'adoption de la POO, tous les programmes sont désormais composés de plusieurs fichiers. Il est peu pratique d'aller constamment à l'onglet avec le fichier principal avant de compiler, si vous modifiez un plugin. Ou une béquille : introduisez un bouton programmable Compile, auquel vous pouvez lier le fichier maître du projet sur lequel vous travaillez.

EMPTY_VALUE peut être étendu à tous les types qui le permettent (int, double, string etc). C'est une petite chose, mais vous pouvez l'utiliser dans de nombreux endroits sans avoir à inventer.

Dans le testeur, créez un outil en forme de croix comme dans MT.

Vous pouvez certainement inventer la variante avec la superposition de plusieurs indicateurs dans une fenêtre d'indicateurs sous le graphique des prix.


Le confort se construit à partir de petits détails. Les développeurs ne veulent pas vraiment accepter cette idée, et ils sont constamment en train de globaliser quelque chose. Peut-être devrions-nous nous arrêter de temps en temps, et consacrer du temps à de petites corrections - confort de l'utilisateur ? )))))).

Exemples : pour mesurer trois fois quelque chose sur un graphique, vous devez cliquer trois fois sur le bouton en forme de croix (ou appuyer sur une combinaison de touches). Les fenêtres des indicateurs dans ME sous le graphique ne peuvent pas être interchangées : tous les indicateurs doivent être retirés, puis ils doivent être placés dans le bon ordre. Encore une fois, pour régler plusieurs indicateurs, il est nécessaire d'entrer dans le menu - menu - sélectionner l'indicateur plusieurs fois. Et pour une raison quelconque, il existe un outil Liste d'indicateurs, qui ne simplifie pas ce cas et ne donne rien de nouveau.... Je pense que tout le monde donnera de tels exemples dans MQL, dans ME, dans MT, dans le testeur sans réfléchir..... L'enfer ! Beaucoup d'agitation ! Pour toute la clarté et la simplicité de l'ensemble, c'est très inconfortable, sous-développé.

https://www.mql5.com/ru/docs/basis/types/integer/enumeration est l'article d'aide sur les transferts. On sait clairement ce qu'ils sont et à quoi ils ressemblent... Mais comment l'utiliser et quel en est l'avantage ? Donnez-moi un exemple simple si vous êtes trop paresseux pour l'écrire en mots.

Je pense que si vous voulez vraiment améliorer quelque chose, vous devriez établir un contact avec des groupes réguliers d'utilisateurs qui utilisent activement le paquet dans différentes directions (programmation, trading manuel, tests, etc.) et recueillir des suggestions raisonnables de leur part pour améliorer ce que vous avez, plutôt que de demander dans une foule où tout le monde voudra tout. Sinon, tout restera en lettres.

Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 

Sur le débogueur :

Par exemple, il existe une expression de la forme

(int)(MathFloor((ticks_stored-1)/ticks_in_candle)-MathFloor(i/ticks_in_candle)) ;

dans l'implémentation actuelle du débogage, le résultat du calcul de l'expression dans le débogueur sera disponible si vous effectuez les opérations suivantes

CandleNumber=(int)(MathFloor((ticks_stored-1)/ticks_in_candle)-MathFloor(i/ticks_in_candle)) ;

et ajouter la variable CandleNumber à la liste des observations via Shift+F9

Si je veux obtenir un résultat du calcul d'une partie de l'expression, par exemple MathFloor(i/ticks_in_candle), j'ajoute cette expression à la liste de surveillance

Je reçois un message "L'expression n'a pas pu être évaluée".

Peut-être que je fais quelque chose de mal, partagez votre expérience, mais le fait est que lors du débogage, je ne peux pas voir non seulement les valeurs des variables déclarées mais aussi les résultats du calcul d'expressions arbitraires (bien sûr, je parle des expressions où toutes les variables au moment actuel de l'observation sont déjà initialisées).

Par exemple, nous avons un tableau UpTick[] et un seul élément de ce tableau est disponible pour le contrôle en ce moment.

Pourquoi ne pas implémenter la possibilité d'ajouter un tableau à la supervision avec l'ouverture d'une fenêtre modale séparée où tous les éléments avec leurs indices sont disponibles :

valeur du type d'indice

0 int 1

1 int 2 etc.

Si le tableau est grand et nécessite beaucoup de mémoire - limitez l'échantillonnage.

Et en général, cela permet de réaliser une plus grande fonctionnalité du débogueur en termes de possibilité de surveiller des expressions, des variables et des tableaux arbitraires.

 
agvozdezkiy:
ÉtendreEMPTY_VALUE à tous les types qui le permettent (int, double, string, etc.). C'est une petite chose, mais elle peut être utilisée dans de nombreux endroits et vous n'avez pas besoin d'inventer la vôtre.

Tout le monde l'a déjà inventé. Utiliser la constante NULL.

Dans le testeur, créez un outil en forme de croix, comme dans MT.

Exemples : pour mesurer trois fois quelque chose sur le graphique, vous devez cliquer trois fois sur le bouton de la croix (ou appuyer sur une combinaison de touches).

Laissez-moi vous confier un secret : il est déjà mis en œuvre. Vous devez cliquer sur la roue de la souris et il y aura un réticule.

Vous pouvez probablement trouver une option permettant de superposer plusieurs indicateurs dans une fenêtre d'indicateurs sous le graphique des prix.

Il est possible de le faire depuis longtemps. Vous faites glisser l'indicateur du navigateur vers la fenêtre avec l'indicateur déjà attaché.

Les fenêtres d'indicateurs dans ME sous le graphique ne peuvent pas être permutées : tous les indicateurs doivent être retirés, puis vous les placez dans le bon ordre.

À mon avis, ce n'est pas la chose la plus utile.

Vous devez aller dans le menu - menu - sélectionner l'indicateur plusieurs fois pour régler plusieurs indicateurs. En outre, il existe un outil Liste d'indicateurs pour une raison quelconque, qui ne simplifie pas et n'apporte rien de nouveau dans ce cas.....

Il y a un navigateur, des favoris, des modèles et des profils. Tout peut être mis en place. Lisez l'aide sur le terminal, vous découvrirez beaucoup de nouvelles choses !

https://www.mql5.com/ru/docs/basis/types/integer/enumeration - Article d'aide sur les transferts. On sait clairement ce qu'ils sont et à quoi ils ressemblent... Mais comment les utiliser et quels en sont les avantages ? Donnez un exemple simple, si vous êtes trop paresseux pour écrire en mots.

Les énumérations sont utilisées pour rendre le code plus lisible et pour supprimer les constantes et les remplacer par des entités familières à l'homme.

Par exemple, les valeurs de l'énumération ENUM_DAY_OF_WEEK peuvent être utilisées pour la comparaison avec la valeur day_of_week de la structure MqlDateTime. Par exemple, vous pouvez l'écrire comme suit

        MqlDateTime dt;
        TimeCurrent( dt );
        if( dt.day_of_week == 0 )
           {
            // Что-то делаем в воскресенье
           }

Ou vous pouvez l'écrire différemment :

        MqlDateTime dt;
        TimeCurrent( dt );
        if( dt.day_of_week == SUNDAY )
           {
            // Что-то делаем в воскресенье
           }

DIMANCHE est une constante nommée de type int avec la valeur 0.

Comment pensez-vous que cela serait plus clair pour une personne qui lit le code ?
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
Документация по MQL5: Основы языка / Типы данных / Целые типы / Перечисления
  • www.mql5.com
Основы языка / Типы данных / Целые типы / Перечисления - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Kozitsyn:

Les listes sont utilisées pour rendre le code plus lisible.

Il existe une autre application infiniment utile. Par exemple :

enum ENUM_OPEN_DIRECTION {
     OPEN_BUY,       // только Buy
     OPEN_SELL,      // только Sell
     OPEN_BOTH,      // Buy + Sell
     OPEN_NONE       // не торговать
};
input ENUM_OPEN_DIRECTION  Trade_Direction = OPEN_BOTH;    // Направление торговли:

Et l'utilisateur obtient une liste déroulante avec un choix de 4 éléments de ce que vous avez écrit là dans les commentaires - "Acheter seulement", "Vendre seulement", etc. Très utile pour répertorier un ensemble d'indicateurs, de délais, un ensemble de conditions, etc. dans la fenêtre des paramètres utilisateur.