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

 

Un conseil. Je suis bloqué sur une question.

CommentiOpen compte-t-il pour Ask ou Bid ?

double DayOpenone = NormalizeDouble(iOpen(Symbol(), PERIOD_D1, 0), Digits);

double DayOpentwo = NormalizeDouble(iOpen(Symbol(), PERIOD_D1, 1), Digits); 

Le problème est que la comparaison du prix d'ouverture d'aujourd'hui avec le prix d'ouverture d'hier semble causer une colocation des spreads et ensuite il y a d'autres problèmes dans le code. Soit seulement les bai ou les ventes sont négociées parce que les prix iOpen ne sont pas corrects certains jours.

 
Порт-моне тв iOpen compte-t-il pour Ask ou Bid ?

Le problème est que la comparaison du prix ouvert d'aujourd'hui avec le prix ouvert d'hier semble conduire à une colocation de spreads et ensuite j'ai des problèmes dans le code. Je ne peux négocier que des offres ou des ventes parce que les prix iOpen ne sont pas corrects certains jours.

Le graphique est basé sur le prix de l'offre

 

Les gars, s'il vous plaît, conseillez-nous.

J'écris un EA multi-devises, tout fonctionne comme prévu sauf l'ouverture des ordres. Veuillez me dire quel est le problème.

      if((USDTP<=0)&&(JPYTP>=3)&&(z_USDJPY!=2))
        {
         Alert("Продавай USDJPY. USD=", USDTP, ", JPY=", JPYTP);
         z_USDJPY=2; //
         text_massage="Продавай USDJPY";
         SendNotification(text_massage);
         RefreshRates();
         Ask1=MarketInfo("USDJPY",MODE_ASK);
         Bid1=MarketInfo("USDJPY",MODE_BID);
         Point1=MarketInfo("USDJPY",MODE_POINT);
         OrderSend("USDJPY", OP_BUY, 0.1, Bid1, 3, NormalizeDouble((Ask1+StopLoss*Point1),2), NormalizeDouble((Ask1-TakeProfit*Point1),2), NULL, 0, 0, 0);
        }

Je ne reçois pas d'erreur, je n'ouvre pas les commandes.

 
Sergey Dymov un EA multi-devises, tout fonctionne comme prévu sauf l'ouverture des ordres. Veuillez me dire quel est le problème.

Je ne reçois pas d'erreur, mais les commandes ne s'ouvrent pas.

CommanderEnvoyer

Valeur retournée

Renvoie le numéro de ticket attribué à l'ordre par le serveur commercial ou -1 en cas d'échec. Pour obtenir des informations sur les erreurs, vous devez appeler GetLastError().

Même le compilateur vous dit que les Ordersend doivent être vérifiés.

L'achat se fait avec Ask. Mais cela peut aussi fonctionner avec Bid, si le slippage est au moins égal à l'écart, ce qui peut rendre plus difficile la découverte de ce bogue.

 

un EA multi-devises et tout fonctionne comme prévu sauf l'ouverture des ordres. Je cherche des messages d'erreur.

      if((USDTP<=0)&&(JPYTP>=3)&&(z_USDJPY!=2))
        {
         Alert("Продавай USDJPY. USD=", USDTP, ", JPY=", JPYTP);
         z_USDJPY=2; //
         text_massage="Продавай USDJPY";
         SendNotification(text_massage);
         RefreshRates();
         Ask1=MarketInfo("USDJPY",MODE_ASK);
         Bid1=MarketInfo("USDJPY",MODE_BID);
         Point1=MarketInfo("USDJPY",MODE_POINT);
         OrderSend("USDJPY", OP_BUY, 0.1, Bid1, 3, NormalizeDouble((Ask1+StopLoss*Point1),2), NormalizeDouble((Ask1-TakeProfit*Point1),2), NULL, 0, 0, 0);
        }

Il n'y a pas d'erreur, mais la commande ne s'ouvre pas.

Avez-vous remarqué où se trouve l'erreur ?

       if((USDTP<=0)&&(JPYTP>=3)&&(z_USDJPY!=2))
        {
         Alert("Продавай USDJPY. USD=", USDTP, ", JPY=", JPYTP);
         z_USDJPY=2; //
         text_massage="Продавай USDJPY";
         SendNotification(text_massage);
         RefreshRates();
         Ask1=MarketInfo("USDJPY",MODE_ASK);
         Bid1=MarketInfo("USDJPY",MODE_BID);
         Point1=MarketInfo("USDJPY",MODE_POINT);
         int nDigits = (int)MarketInfo("USDJPY", MODE_DIGITS);
         OrderSend("USDJPY", OP_SELL, 0.1, NormalizeDouble(Bid1, nDigits), 3, NormalizeDouble((Ask1-StopLoss*Point1), nDigits), NormalizeDouble((Ask1+TakeProfit*Point1), nDigits), NULL, magic, 0, 0);
        }

https://docs.mql4.com/ru/trading/ordersend

Примечание

Lors de l'ouverture d'un ordre au marché (OP_SELL ou OP_BUY), seuls les derniers cours acheteur (pour la vente) ou vendeur (pour l'achat) peuvent être utilisés comme cours d'ouverture. Si l'opération est effectuée pour un instrument financier différent de l'instrument actuel, alors pour obtenir les derniers cours pour cet instrument, il faut utiliser la fonctionMarketInfo() avec le paramètre MODE_BID ou MODE_ASK.

Vous ne pouvez pas utiliser un prix estimé ou non normalisé. Si le prix d'ouverture demandé n'était pas dans le flux de prix, ou si le prix demandé n'est pas normalisé en fonction du nombre de décimales, l'erreur 129 (ERR_INVALID_PRICE) sera générée. Si le prix d'ouverture demandé est gravement dépassé, une erreur 138 (ERR_REQUOTE) est générée quelle que soit la valeur du paramètre slippage. Si, en revanche, le prix demandé n'est plus d'actualité mais est toujours présent dans le flux de prix, l'ordre sera ouvert au prix actuel et seulement si le prix actuel se situe dans la fourchette prix+slippage.

...

Il est également souhaitable de définir une magie unique pour le robot.

OrderSend - Торговые функции - Справочник MQL4
OrderSend - Торговые функции - Справочник MQL4
  • docs.mql4.com
OrderSend - Торговые функции - Справочник MQL4
 
Mihail Matkovskij #:

le prix d'ouverture ne figure pas dans le flux de prix ou le prix demandén'est pas normalisé en fonction dunombre de chiffres après la virgule, alors

.

Pour autant que je sache, Ask et Bid sont déjà normalisés. Une question similaire a déjà été posée et il n'y a pas eu de contradiction.

La magie et les chiffres de stoploss et de profit peuvent être appropriés, mais l'intention de l'auteur n'est pas connue.

 
Andrey Sokolov #:

Pour autant que je sache, Ask et Bid sont déjà normalisés. Une question similaire a déjà été posée et il n'y a pas eu de contradiction.

Peut-être est-il approprié de mentionner la magie et les chiffres de stop-loss et de profit, mais je ne sais pas quelle est l'idée de l'auteur.

Pour autant que je sache, la documentation n'en dit pas un mot. Donc, vous feriez mieux de prendre des précautions. Ça n'empirera pas la situation.

En ce qui concerne le SL et le TP, ils sont calculés. Et par conséquent, ils doivent absolument être normalisés en fonction de la valeur des chiffres.

 

Bonjour les amis.

 
Pouvez-vous me dire si le bénéfice sur l'article est encerclé en bleu, cela inclut-il la commission et le swap ?
 

Bon après-midi.

Comment puis-je obtenir l'heure d'ouverture du deuxième ordre et des ordres suivants, car OpenOrderTime() ne donne que le premier, et aussi comment puis-je obtenir le prix d'ouverture du deuxième ordre et des ordres suivants, car l'analogue de OpenOrderPrice() donne aussi le prix du premier?

Raison: