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

 
WinProject:
Bonsoir, pourriez-vous me conseiller s'il vous plaît. Je lis FileOpen de leur fichier texte .csv. Il y a trois valeurs dans chaque ligne du fichier, ce sont l'instrument, la date (par ordre décroissant) et le prix. Je veux obtenir le commentaire du prix de la dernière date (c'est la première ligne), mais le fichier est toujours lu jusqu'à la fin et j'obtiens le commentaire du prix le plus ancien (de la dernière ligne). Comment puis-je faire passer la valeur du prix de la première ligne dans le commentaire sans aucune solution de contournement ?

FileSeek()

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы". общая папка всех установленных на компьютере терминалов  – обычно расположена в каталоге C:\Documents and Settings\All Users\Application...
 
Igor Makanu:

Chaque courtier dispose de ses propres fournisseurs de cotations, il y en a souvent plusieurs, ainsi que des algorithmes de lissage des cotations.

Si vous avez besoin de ticks réels, transférez votre TS vers MQL5 - il y a des tests avec des ticks réels, vous gagnerez du temps lors des tests.

Parlez-nous brièvement des algorithmes de lissage des devis, qu'est-ce que c'est ? mql5 permet de faire un test sur l'historique du TS par ticks, c'est à dire que le résultat sera un à un avec les requotes et les gaps, et il y a une possibilité de faire un test sur ticks en tenant compte du Bid Asc, des requotes et des gaps ?

 
Seric29:

Parlez-nous brièvement des algorithmes de lissage des devis, quels sont-ils ? Sur mql5 il y a une possibilité de tester le TS sur l'historique des tics, c'est-à-dire que le résultat sera un à un en tenant compte des requotes et des gaps, et il y a une possibilité de tester sur les ticks en tenant compte des Bid Asc ainsi que des requotes et des gaps ?

toutes les informations sont disponibles publiquement sur ce forum, à propos des tiques rechercher les messages admin il y a 6-8 ans

sur la qualité des tests - articles

 
Alexey Viktorov:

Essayez peut-être d'ouvrir un volume de clôture opposé et d'appliquer OrderCloseBy ?

Salutations. Pouvez-vous me dire ce que je fais de mal ?

OrderCloseBy() donne l'erreur 3

3

ERR_INVALID_TRADE_PARAMÈTRES

Paramètres incorrects

exemple de code

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


datetime time; int ticket_buy; int ticket_sell; 
bool open=false; bool close=false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
ticket_sell=OrderSend(NULL, OP_SELL, 0.1, Bid, 0, 0, 0, "", 0, 0, Red);  

time=TimeCurrent();
//if (Digits() ==3 || Digits()==5) {trailingStep*=10; }
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
//---
   
  }
void OnTick(){
if(!open && TimeCurrent()>=time+2600){
   ticket_buy=OrderSend(NULL, OP_BUY, 0.1, Ask, 1, 0, 0, "buy order", 0, 0, Blue);
   open=true;
}
if(!close && TimeCurrent()>=time+3000){
   if(OrderCloseBy(ticket_buy, ticket_sell , Black)){ }
   close=true;
}

}//+------------------------------------------------------------------+
 
Andrey Sokolov:

Salutations. Pouvez-vous me dire ce que je fais de mal ?

OrderCloseBy() donne l'erreur 3

3

ERR_INVALID_TRADE_PARAMÈTRES

Paramètres incorrects

exemple de code

Le code fonctionne dans le testeur, il faut nettoyerOrderSend(), pas de prix et de lot normalisés.

et la deuxième condition - tous les courtiers ne permettent pas d'utiliser OrderCloseBy() - je pense que c'est la raison principale de l'erreur

 
Igor Makanu:

le code fonctionne dans le testeur,

Vous fermez, n'est-ce pas ? Quel est votre courtier ? J'ai Alpari.
 
Igor Makanu:

mise au point de OrderSend(), pas de prix et de lot normalisés


Je ne comprends pas bien ce qu'il faut normaliser ici et pourquoi, alors qu'il n'y a pas d'opérations mathématiques ?
 
Andrey Sokolov:
Je ne suis pas sûr de ce qu'il faut normaliser ici et pourquoi lorsqu'il n'y a pas d'opérations mathématiques ?

Parce que vous devez vous habituer à envoyer des prix normalisés au serveur, maintenant l'ordre est envoyé - demain il ne l'est pas, vous serez constamment à la recherche de vos erreurs.

Qu'est-ce qui est compliqué ? Tenez, copiez-le vous-même si c'est compliqué :

ticket_sell=OrderSend(_Symbol, OP_SELL, 0.1, Bid,10,
                     NormalizeDouble(0.0,_Digits),NormalizeDouble(0.0,_Digits), "", 0, 0, clrRed);  

les opérations mathématiques n'ont rien à voir avec cela, il y avait un comportement étrange du terminal dans les nouvelles constructions, à toutes les questions les développeurs ont écrit - écrivez vos codes correctement - ils ont raison ;)))

sur le serveur Metakvot vérifier votre code - tout fonctionne

SZS : 0 n'est pas 0.0, donc il se peut qu'il n'y ait pas tout à fait le résultat attendu - c'est aussi une bonne habitude de ne pas chercher les bugs ;)

 
Igor Makanu:

et la deuxième condition - tous les courtiers ne permettent pas l'utilisation de OrderCloseBy() - je pense que c'est la raison principale de l'erreur

En général, je comprends bien que si Alpari et probablement d'autres ne le supportent pas, il est préférable de ne pas l'utiliser du tout, en le marquant comme ne fonctionnant pas ?

 
Andrey Sokolov:

En général, ai-je raison de supposer que si Alpari et peut-être d'autres ne le supportent pas, il est préférable de ne pas l'utiliser du tout, de le marquer comme ne fonctionnant pas ?

la fonction fonctionne

hélas, les paramètres de chaque serveur doivent être vérifiés - il y a très peu de solutions universelles (alpars a aussi stoplevel = 0, vous pouvez être surpris avec le trailing)

si je ne me trompe pas, dans MarketInfo() il y avait une demande pour déterminer si un serveur va fermer une position en utilisant l'ordre opposé.

Raison: