[Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas votre chemin. Je ne peux aller nulle part sans toi. - page 545

 
artmedia70 écrit(a) >>
Gourous respectés ! >> Je vous prie de bien vouloir conseiller les nuls coincés dans le désert sur la manière d'organiser le suivi des ordres et des événements sur plusieurs paires de devises et plusieurs échelles de temps simultanément dans un EA. La comptabilité des commandes dans un grand programme et la fonction de suivi des événements ne me donnent pas de réponses claires à mes questions. Je n'ai pas trouvé de réponses dans les immenses étendues de cette merveilleuse ressource. Je n'ai jamais pensé qu'une tâche simple (simple dans mon cœur) puisse immobiliser une bouilloire pendant si longtemps et de manière irréversible, et la clouer dans le mur, qu'elle ne pourra plus en sortir... :)
Je comprends que je dois organiser l'examen des ordres en boucle, mais je ne parviens pas à trouver comment assurer le suivi des positions ouvertes et définir des ordres simultanément pour différentes paires de devises et différents délais. Merde, je suis coincé dans cette situation depuis un mois. J'ai créé un conseiller expert manuel, qui ne traite que sur une paire et une seule période, mais il ne correspond évidemment pas à mon TS et ne satisfait pas aux exigences dont j'ai besoin pour mettre en œuvre un système de trading.
Déjà un appel à l'aide... Aidez-moi à le comprendre. Si seulement un indice, où je peux lire à ce sujet (seulement s'il vous plaît ne me renvoyez pas au tutoriel), et de préférence avec des exemples (qu'est-ce qu'un débutant peut faire sans exemples - sentir est toujours mieux que regarder...).

Je serais reconnaissant à toute personne qui répondrait de quelque manière que ce soit à cet appel à l'aide.

Pensez à un code pour vous-même,

qui encoderait toutes les différences entre les commandes sous la forme d'une variable int et l'attribuerait à un magicien,

Si vous sondez un magicien, vous saurez exactement quel ordre vous tenez.

 
Dites-moi, est-ce que l'EA doit dessiner les objets graphiques dans le testeur dans une fenêtre séparée, et non dans la fenêtre de prix ? Pour une raison quelconque, cela ne fonctionne pas lorsque l'on remplace le zéro par un lors de la création d'un objet.
 
GVA63 >>:

Можeт вопрос покажeтся странным, но отвeт найти нe могу:

почeму при работe в "автматe", при одном и том-жe SL, ТP рeзультат сдeлок разный ? (разница до 3х пунктов). Буду благодарeн, eсли хотябы ссылку дадитe на соотв.

Un dérapage, peut-être ?

Qu'entendez-vous par fonctionnement "automatique" ? Que voulez-vous dire par "automatique" ?

 
Necron >>:
Добрый день. Подскажите пожалуйста как сделать панель на графике, на которую можно было бы поместить несколько графических объектов. Притом координаты объектов должны изменяться при перемещении панели в соответствии с координатами панели. Где-то видел в кодебазе пример такой, но не могу найти. Благодарен за помощь
C'est ça, problème résolu. Exemple ici -> https://www.mql5.com/ru/code/9403
 

La méthode des "points de contrôle" prend en compte les cotations de la période la plus proche.

Si nous optimisons sur 1 heure et que l'historique est téléchargé uniquement pour H1 et M5 -> M5 sera-t-il utilisé ou ignoré ?

 
Merci à tous ceux qui ont répondu à ma question précédente.
Maintenant, une question comme celle-ci :
puis-je utiliser la construction suivante lorsque j'appelle MarketInfo :
.

______________________________________________________________________

for (int ln=1 ; ln<=Instr_Count ; ln++) // Rechercher dans le tableau des instruments de l'arbre
{
for (int mode=1 ; mode<=9 ; mode++) // Parcourir les modes MarketInfo des instruments de l'arbre,
{ // égal à la valeur actuelle ln
Level_old=Mas_Ord_Old[0][ln][mode] ; // Prendre la valeur du tableau Mas_Ord_Old [0][symbole instrument].][MODE=mode]
Level_new=MarketInfo(Instrument[ln] ,mode+10) ; // Prenez la même valeur dans le DC
// Ici Instrument[ln] selon le tableau des noms d'instruments.
// retourner le nom par la valeur de ln, puis
// ajouter 10 à la valeur de mode et laver MODE_XXX)

if (Level_old !=Niveau_nouveau) // Si les données de la société de courtage ont changé
{
Level_old=Niveau_nouveau ; // stocker la nouvelle valeur de Level_nouveau dans Level_old,
Mas_Ord_Nouveau[0][ln][mode]=Niveau_nouveau ; // le stocker dans le tableau Mas_Ord_Nouveau
Inform(10,Level_nouveau) ; // Signaler les changements au courtier
// Cette fonction devrait également être améliorée pour des messages plus informatifs...
}
} // Si les données DC de ce mode n'ont pas changé, répétez
// la boucle sur le mode suivant. Jusqu'au mode=9

} // Nous avons vérifié tous les modes pour la paire de devises donnée, passez au suivant.

..................

Instrument[ln] est un tableau de type chaîne de caractères avec les noms des paires de devises :

Instrument[1] = "EURUSD" ;
Instrument[2] = "USDCHF" ;
Instrument[3] = "GBPUSD" ;
Instrument[4] = "USDJPY" ;
Instrument[5] = "AUDUSD" ;
Instrument[6] = "USDCAD" ;
Instrument[7] = "EURCHF" ;
Instrument[8] = "EURGBP" ;
Instrument[9] = "EURJPY" ;
Instrument[10]= "EURCAD" ;
Instrument[11]= "EURAUD" ;
Instrument[12]= "GBPCHF" ;
Instrument[13]= "GBPJPY" ;
Instrument[14]= "CHFJPY" ;
Instrument[15]= "AUDCAD" ;

__________________________________________________________________________

? ????????????????????????????????????????????
Merci d'avance... :)

 

Je ne suis pas entré dans la logique de votre cycle. Mais un coup d'œil rapide à ce que je vous ai souligné d'un trait rouge a attiré mon attention. Si les données DC n'ont pas changé, répétez l'opération. Mais si c'est le cas ? Que doit faire le conseiller expert s'il n'a pas changé ? Où est le commandement ?

Quand le programmeur va se coucher, il met deux verres près du lit. Un - avec de l'eau - au cas où le programmeur aurait soif. L'autre est vide - au cas où le programmeur ne voudrait pas boire.

Je plaisante, mais en programmation, on doit souvent gérer les deux branches de l'arbre de division dichotomique.

P.S.

Au fait, artmedia70, remarquez comment les crochets et les tirets sont disposés dans votre code dans ma capture d'écran. Le code est beaucoup plus lisible de cette façon. C'est juste pour votre information.

 

Une construction comme :

if(A>B)
{
  // какие-то действия
}

est correcte, mais moins pratique que la construction de type :

if(A>B){
  // какие-то действия
}

Dans le premier cas, l'accolade ouvrante ajoute une ligne supplémentaire au code, tandis que dans le second cas, une ligne supplémentaire est exclue. Dans le second cas, une accolade fermante indique à quelle commande elle se réfère car elle est située directement sous le premier caractère de cette commande. Il est donc aussi facile de trouver la parenthèse ouvrante dans le second cas que dans le premier. Mais quel est l'avantage de la deuxième voie ? En excluant les lignes inutiles, on peut voir plus de code à l'écran et l'œil couvre plus d'informations. Par conséquent, il est plus facile de naviguer dans le code, ce qui signifie plus de confort dans la programmation.

 
J'ai une autre question. Il existe un indicateur (ci-joint) qui indique le prix d'ouverture et il est possible de définir un décalage par rapport à l'heure d'ouverture en heures et d'en ajouter d'autres en minutes. Pouvez-vous me dire comment faire pour que le niveau ne soit dessiné qu'au moment de la fermeture de la barre quotidienne ? Je suis si confus :(
Dossiers :
 
drknn >>:

Конструкция типа:

является правильной, но менее удобна чем конструкция типа:

Conception du type.

if(A>B)
{
  // какие-то действия
}

C'est correct. Mais une construction comme

if(A>B){
  // какие-то действия
}

est obsolète. La ligne de l'exemple (1) n'est pas superflue et est utilisée pour marquer sans ambiguïté le début d'un bloc logique de code. Nous sommes au 21e siècle. Le gain de place est ridicule.

Si cela vous convient, allez-y, mais n'obligez pas les autres à mal l'écrire.

MAIS ! Quel est l'avantage de la deuxième façon d'écrire ? En évitant les lignes inutiles, plus de code tient dans plus de lignes et plus d'informations sont visibles à l'œil. Par conséquent, il est plus facile de naviguer dans le code et donc plus confortable de programmer.

C'est absurde.

Raison: