Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 841

 
Merci pour la réponse, mais je voulais dire quelles fonctions mql4 peuvent être utilisées pour mettre en œuvre cela ?
 
MiroshA:
Merci pour la réponse, mais je voulais dire quelles fonctions de mql4 peuvent mettre en œuvre ceci ?
Différents. En fonction de l'algorithme que vous décidez de développer.
 

Bonjour, Mon Expert Advisor est attaché à plusieurs fenêtres de paires de devises et achète aux pullbacks les plus probables. J'utilise des variables globales pour l'échange d'informations entre les copies en cours d'exécution de l'EA. les données sont mises à jour toutes les secondes. J'ai eu l'idée de sauvegarder toutes ces informations dans un fichier, mais je ne l'ai pas fait parce que cela ferait appel à la clé USB trop souvent.

Je ne vois pas vraiment comment contourner ce problème, la seule solution est de définir chaque devise à un nombre spécifique par défaut et d'utiliser les mêmes variables globales, par exemple 01023334455 où 01 est USD, 02 est EUR, 3, 4, 5 sont les données pour le change.

 
pycha:

Bonjour, Mon Expert Advisor est attaché à plusieurs fenêtres de paires de devises et achète aux pullbacks les plus probables. J'utilise des variables globales pour l'échange d'informations entre les copies en cours d'exécution de l'EA. les données sont mises à jour toutes les secondes. J'ai eu l'idée de sauvegarder toutes ces informations dans un fichier, mais je ne l'ai pas fait parce que cela ferait appel à la clé USB trop souvent.

Je ne vois pas vraiment comment contourner ce problème, la seule solution est de définir chaque devise à un nombre spécifique par défaut et d'utiliser les mêmes variables globales, par exemple 01023334455 où 01 est USD, 02 est EUR, 3, 4, 5 sont les données pour le change.

Qu'en est-il du symbole dans le nom de la variable ? En conséquence, s'il existe une telle variable GV... ...et il est possible d'y stocker une valeur. De cette façon, nous avons une seule variable, qui sert deux objectifs.

 

je veux juste que le logiciel soit plus universel. de cette façon vous pouvez mettre 01 -usd , 02 eur dans un fichier et quand vous ouvrez la fenêtre usdaud il trouvera que aud n'est pas sur la liste et lui donnera le numéro 03, en sauvegardant l'information dans le fichier. de cette façon je n'ai pas besoin de recompiler le logiciel chaque fois que j'ouvre une nouvelle monnaie qui n'a pas été essayé

 
AlexeyVik:

Mais qu'en est-il de l'insertion d'un symbole dans un nom de variable ? Par conséquent, s'il existe une telle variable GV ... ...et une valeur peut y être inscrite. Ainsi, nous avons une variable qui sert à deux fins.


Je vais vous expliquer pourquoi cela ne fonctionne pas. après un certain temps, le programme supprime toutes ses variables pour éliminer les déchets inutiles, s'il y en a. GV1 GV2 et ainsi de suite jusqu'à ce qu'il n'y en ait plus. donc s'il y a une variable créée par une autre copie du programme, elle sera aussi supprimée, et elles sont restaurées après 1 seconde. et si je nomme une variable par un symbole, je dois passer par toutes les variations de symboles possibles pour toutes les supprimer.



Ma question est la suivante : existe-t-il d'autres astuces que les GV - variables qui permettent de faire passer des données d'une instance d'un programme à une autre par le biais du système d'exploitation ?

 
pycha:

je veux juste que le logiciel soit plus universel. de cette façon vous pouvez mettre 01 -usd , 02 eur dans un fichier et quand vous ouvrez la fenêtre usdaud il trouvera que aud n'est pas dans la liste et lui donnera le numéro 03, en sauvegardant l'information dans le fichier. de cette façon je n'ai pas besoin de recompiler le logiciel chaque fois que j'ouvre une nouvelle monnaie qui n'a pas été essayée


Pourquoi dois-je le réaffecter ? Il existe une liste de symboles. Elle est indépendante du tri. Il s'avère que vous pouvez trouver le numéro du symbole dans la liste et l'utiliser.
 
OK, merci à tous.
 
pycha:

Je vais vous expliquer pourquoi cela ne fonctionne pas. pendant un certain temps, le programme supprime toutes ses variables pour éliminer les déchets inutiles s'il y en a. GV1 GV2 et ainsi de suite jusqu'à ce qu'il n'y en ait plus. donc, s'il y a une variable créée par une autre copie du programme, elle sera aussi supprimée, et elles sont restaurées après 1 seconde. et si vous faites un nom de variable par un symbole, vous devez passer par toutes les variations de symboles possibles pour éliminer tous les .



Ma question est la suivante : existe-t-il d'autres astuces que GV - variables qui permettent de transférer des données d'une copie du programme à une autre via la RAM ?

Alors essayez de faire une structure dans une bibliothèque, remplissez et lisez à partir de là.
 

Bonsoir, aidez-moi à comprendre le code ci-dessous, sell est écrit sur le même principe, pourquoi trois options d'ouverture, car j'ai dû bricoler l'option pour éviter d'ouvrir un ordre ensuite - lorsque l'ordre s'ouvre sur la barre actuelle et se ferme sur un no draw,

et le signal reste et s'ouvre à nouveau, j'ai donc dû l'écrire comme ceci. Le problème est qu'un seul ordre d'achat et de vente est ouvert et que tout le reste est silencieux. Je vous en suis reconnaissant à l'avance.

//+------------------------------------------------------------------+
//| Open Order Buy                                                   |
//+------------------------------------------------------------------+
if (!OrdersTotal()==true)
{
if (PLO0>S0 && PLO1<=S1 && PLO2<S2)
if (!OrdersHistoryTotal()==true)
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,StopLossBuy,0,NULL,0,0,clrGreen);
RefreshRates();
{
if(ticket<0)
{
Print("OrderSend OP_BUY завершилась с ошибкой #",GetLastError());
}
else
Print("Функция OrderSend OP_BUY успешно выполнена");
}
}
if (OrdersHistoryTotal()==true)
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderCloseTime()>0 && OrderType()==OP_BUY && OrderSymbol()==Symbol()&& PLO0>S0 && PLO1<=S1 && PLO2<S2 && OrderCloseTime()< Time[0])
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,StopLossBuy,0,NULL,0,0,clrGreen);
RefreshRates();
{
if(ticket<0)
{
Print("OrderSend OP_BUY завершилась с ошибкой #",GetLastError());
}
else
Print("Функция OrderSend OP_BUY успешно выполнена");
}
}
if (OrdersHistoryTotal()==true)
if(OrderSelect(ticket,SELECT_BY_TICKET)>0 && OrderCloseTime()>0 && !OrderType()==OP_BUY && OrderSymbol()==Symbol()&& PLO0>S0 && PLO1<=S1 && PLO2<S2)
{
ticket=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,StopLossBuy,0,NULL,0,0,clrGreen);
RefreshRates();
{
if(ticket<0)
{
Print("OrderSend OP_BUY завершилась с ошибкой #",GetLastError());
}
else
Print("Функция OrderSend OP_BUY успешно выполнена");
}
}
}