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

 
законопослушный гражданин:

Si je comprends bien, l'auteur du code a suggéré ce qui suit :

si owl ouvre une transaction d'achat avec stop and take, alors son morceau de code ouvre une transaction de vente au même moment au même endroit (en tenant compte du spread) avec stop and take au lieu d'une transaction d'achat.

Ainsi la logique de recherche d'un point d'entrée de l'EA ne change pas, et seule la direction avec prise en compte du spread change.

c'est exactement ce dont j'ai besoin

Si vous voulez inverser tous les échanges, il suffit d'échanger

vOrderOpenSell et vOrderOpenBuy


//+-----------------------------------------------------------------------------------------------+
void OnTick()
  {
// Получим значение индикатора
   dMA = iMA(Symbol(), 0, iPeriodMA, 0, MODE_SMA, PRICE_CLOSE, 0);

// Если нет открытых ордеров, то входим в условие
   if(bCheckOrders() == true)
     {
      // Если появился сигнал на покупку, то откроем ордер на покупку
      if(bSignalBuy() == true)
         vOrderOpenSell();

      // Если появился сигнал на продажу, то откроем ордер на продажу
      if(bSignalSell() == true)
         vOrderOpenBuy();
     }
  }
 
SGarnov:

Premier résultat. Il y a un conflit entre les paires de devises et l'EA a un conflit sur le placement de l'ordre en attente. Par exemple, j'ai placé un ordre en attente pour EURUSD, l'EA a suivi l'algorithme (Acheter à 1.18901, ouvrir une transaction, fixer un stop à 1.18751, prendre le profit à 1.19051 et un ordre de vente à 1.18751) tout est ok comme prévu.

Mais maintenant, il est temps d'ouvrir une transaction sur la paire GBPUSD où les prix sont différents et où l'EA fait tout ce qu'il faut, à l'exception de la définition d'un ordre en attente. Un ordre de vente à 1.39393 s'est déclenché et l'EA a essayé de l'ouvrir, de fixer un stop à 1.39633 et de prendre 1.39153 mais l'ordre d'achat à 1.39633 est entièrement dupliqué en EURUSD et un ordre de vente à 1.18751)

Je viens de trouver un autre problème : un stop à 1.18751 et un ordre de vente en suspens à 1.18901 et un take à 1.18595 déclenchés sur un trade ouvert EURUSD. Le conseiller expert n'a pas ajouté le stop déclenché, qui se trouve dans l'historique.

Ce sont les problèmes.

J'ai trouvé une erreur dans les commandes et je travaille sur les ajouts.

 
MakarFX:

Si vous devez inverser tous les échanges, il suffit d'échanger ici

vOrderOpenSell et vOrderOpenBuy


Non, je n'ai pas besoin d'une inversion mais d'un "miroir" des transactions à perte vers un autre terminal en tenant compte du spread.

mais les testeurs ne donnent pas de telles possibilités, j'ai besoin de hiboux dans le testeur pour "refléter" les transactions avec le spread comme si elles étaient ouvertes dans un autre terminal mais selon la logique de ce hibou, disons, par le biais d'un copieur de registre.

J'en ai besoin pour tester le TS

 
Alexey Viktorov:

Makar a correctement indiqué OrderMagicNumber(), mais a mal compris l'erreur. Lisez la documentation pour la syntaxe de cette fonction... il devrait s'agir soit d'un index dans la liste des commandes, soit d'un ticket d'une commande spécifique, mais pas d'une magik. Et OrderTicket() ne sera d'aucune utilité ici. N'essayez pas de l'y mettre.

C'est logique. Je l'ai compilé et remplacé par OrdersHistoryTotal, et dans les paramètres du terminal j'ai fait l'historique des trois derniers jours. Je vais le tester.

 
законопослушный гражданин:

Je n'ai pas besoin de reverse, mais de "miroir" des trades perdants vers un autre terminal, en tenant compte du spread, comme dans le sujet de l'auteur du code.

Mais les testeurs ne fournissent pas de telles possibilités, pour cela j'ai besoin de hiboux dans le testeur pour "refléter" les trades avec le spread, comme s'ils étaient ouverts dans un autre terminal mais selon la logique de ce hibou, disons, à travers un copieur avec rewind.

J'en ai besoin pour vérifier le TS.

Si le problème avec les ordres d'entrée sur le marché essaie de remplacer ceci

///////////////
if (cmd==OP_SELL) // Переворачиваем ордера OP_SELL
{
Ret=OrderSend (symbol,OP_BUY,volume,Ask,slippage,takeprofit-sprd,stoploss-sprd,comment,magic,expiration,arrow_color);
}
if (cmd==OP_BUY) // Переворачиваем ордера OP_BUY
{
Ret=OrderSend (symbol,OP_SELL,volume,Bid,slippage,takeprofit+sprd,stoploss+sprd,comment,magic,expiration,arrow_color);
}

Et si le problème concerne toutes les commandes, alors vérifiez STOPLEVEL

 
MakarFX:

........................., et travailler avec l'addition

Je suis arrivé à la conclusion que c'est difficile à mettre en œuvre, votre code est beaucoup plus simple, plus clair et plus logique, mais ..... pour une raison quelconque n'ajoute pas non plus. L'essentiel est de ne pas abandonner.

 
SGarnov:

J'en suis arrivé à la conclusion que c'est difficile à mettre en œuvre, votre code est beaucoup plus simple, plus clair et plus logique, mais ..... ne correspond pas non plus. L'essentiel est de ne pas abandonner.

Je sers l'Union soviétique !
 
SGarnov:

J'en suis arrivé à la conclusion que c'est difficile à mettre en œuvre, votre code est beaucoup plus simple, plus clair et plus logique, mais ..... ne correspond pas non plus. L'essentiel est de ne pas abandonner.

MakarFX:
Je sers l'Union Soviétique !

Vous devriez peut-être aussi tenir compte du nombre d'arrêts déclenchés. Par exemple, l'EA trouvera un stop dans l'historique, et s'il y en a deux, il devrait en ajouter trois et quatre, tout dépend du paramètre externe "nombre de stop loss".

 
SGarnov:

Vous devriez peut-être aussi tenir compte du nombre d'arrêts déclenchés. Par exemple, l'EA va trouver un stop dans l'historique, et s'il y en a deux, il devrait les ajouter tous les deux trois et quatre, tout dépend du paramètre externe "nombre de stop loss".

Il y a une comptabilité du nombre de stops déclenchés et si le "Nombre d'ordres perdants" est supérieur à celui spécifié dans les paramètres, alors les ordres en attente ne sont plus placés (déjà coché).
 

Bonjour à tous, aidez-nous !

J'ai un problème de ce genre. J'ai acheté un vpc chez mql5 tout fonctionne bien, je me suis installé un expert, j'ai configuré 8 graphiques et j'ai installé un expert. Et j'ai transféré le tout au vpc.

J'ai dû désinstaller metatrade de mon ordinateur car il ne m'appartenait pas.

Et maintenant, quand j'y vais depuis mon ordinateur.

Tout fonctionne, l'expert. Il fonctionne, mais je ne peux pas le voir pour effectuer des changements dans les paramètres. Comment puis-je renvoyer l'EE et les horaires afin de pouvoir les gérer depuis mon ordinateur ?

Merci !