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

 
Vitaly Muzichenko:
Je n'en ai pas trouvé, et je ne m'en souviens pas ici.

en gros, il y a une offre, il y a un prix moyen des ordres sur le réseau

un chalut est une offre moins le prix moyen du réseau, par rapport à l'étape spécifiée

Si quelque chose ne va pas, vous passez immédiatement par la boucle et couvrez toute la grille.

cet algorithme est rudimentaire et doit être amélioré du point de vue de la robustesse, mais il donne de bons résultats sur de courtes distances

Au fait, je cherche des idées pour améliorer la stabilité des algorithmes.

 
trader781:

en gros, il y a une offre, il y a un prix moyen des ordres sur le réseau

un chalut est une offre moins le prix moyen du réseau, par rapport à l'étape spécifiée

Si quelque chose ne va pas, vous passez immédiatement par la boucle et couvrez toute la grille.

cet algorithme est rudimentaire et doit être amélioré du point de vue de la robustesse, mais il donne de bons résultats sur de courtes distances

Au fait, je cherche des idées pour améliorer la stabilité de l'algorithme.

Mon chalut fonctionne bien à la fois individuellement et sur l'ensemble de la maille.

Avez-vous lu ma question? Je n'attends pas une réponse de votre part mais des professionnels.

 
Vitaly Muzichenko:

Oui, logiquement, cela pourrait être, par exemple, que le terminal a perdu la connexion - il y a beaucoup de raisons pour cela, j'ai eu des pertes de connexion 50 fois par jour.

Quel est le meilleur moyen d'obtenir des prix actualisés, tout en étant moins gourmand en ressources, remarquez - pour la recherche sur le réseau.

Il n'y a donc pas beaucoup d'options...

Voici ce que je fais : dans la boucle d'ordre, après avoir passé tous les filtres pour le symbole, le numéro magique et le type, je récupère le bon prix dans une variable via SymbolInfoDouble() et je fais des calculs de niveau avec lui juste avant d'envoyer une demande de transaction (si le calcul a donné un résultat tel qu'une modification est nécessaire). Vous pouvez aussi utiliser SymbolInfoTick() - ce qui convient le mieux à votre logique. Bien sûr, nous pouvons obtenir non seulement un prix mais l'ensemble des paramètres du dernier tick, mais parfois il suffit d'obtenir un seul prix pour un certain type d'ordre - Ask ou Bid - et de travailler avec lui, et d'obtenir de toute façon l'autre prix pour un autre type d'ordre à la prochaine itération de la boucle. C'est pourquoi l'utilisation du prix obtenu une fois avant la boucle peut entraîner le risque d'obtenir un prix obsolète si le tick est manqué en raison de calculs prolongés.

 
Artyom Trishkin:
Et si elle n'en reçoit pas du tout ? Comment ralentir le cycle ?

Et j'ai laissé cela à la discrétion de chacun. Mais à la demande des utilisateurs, je vais vous révéler un énorme secret...

       int d = 0;
        do
         {
          d++;
         }
        while(!SymbolInfoTick(_Symbol, mqlTick) && d < 7);
 

Bonjour à tous !

Pourriez-vous me dire comment écrire des infobulles/popups ?

En gros, j'ai besoin d'un indicateur sous une certaine barre pour dessiner une icône et lorsque je clique sur cette icône, un petit texte avec une description s'affiche.

Merci !

 
LuckySith:

Bonjour à tous !

Pourriez-vous me dire comment écrire une infobulle/popup ?

En gros, j'ai besoin que l'indicateur dessine une icône sous une certaine barre et affiche un petit texte avec une description lorsque j'appuie sur cette icône.

Merci !

SetIndexLabel

Définit le texte de description de la ligne d'indicateur à afficher dans la DataWindow et l'infobulle.

voidSetIndexLabel(
intindex,// numéro de ligne
string text// texte de description
) ;

Paramètres

indice

[Le numéro d'index de la ligne. Doit être compris entre 0 et 7.

texte

[Texte de la description de la ligne de l'indicateur. NULL signifie que la valeur de cette ligne n'est pas affichée dans la DataWindow.

 
Alekseu Fedotov:

SetIndexLabel

Définit le texte de description de la ligne de l'indicateur pour l'affichage des informations dans la DataWindow et l'infobulle.

voidSetIndexLabel(
intindex,// numéro de ligne
string text// texte de description
) ;

Paramètres

indice

[Le numéro d'index de la ligne. Doit être compris entre 0 et 7.

texte

[Texte de la description de la ligne de l'indicateur. NULL signifie que la valeur de cette ligne n'est pas affichée dans la DataWindow.

Hmm, donc c'est une ligne.
Et pour moi, en cliquant sur l'icône
 
LuckySith:
Hmm, donc c'est une ligne.
Et pour moi, quand tu cliques sur l'icône.

Peu importe, vous pouvez le faire sur l'icône.

Lancez les fractales sur le graphique et passez la souris sur l'icône.

 
Bonjour. Pouvez-vous me dire comment si(MarketInfo(Symbol(),MODE_POINT)==0) peut être correct ?
 
Gevorg Hakobyan:
Bonjour. Veuillez indiquer comment if(MarketInfo(Symbol(),MODE_POINT)==0) peut être correct ?
Vérifiez s'il existe un symbole dans l'aperçu du marché. Ça ne peut pas être zéro.
Raison: