Questions des débutants MQL5 MT5 MetaTrader 5 - page 903

 
Vladimir Pavlov:

Stupidement, j'ai fait un script pour copier à l'intérieur de l'ordinateur..... Il ne copie pas !!!

Alors où est la description de l'erreur ? Quel système d'exploitation ? Quelle version de MetaTrader 5 ?

Avez-vous des droits d'écriture sur le dossier ?


Ajouté : il semble que s'il n'y a pas de répertoire, il doit d'abord être créé.


Lors de la copie dans un répertoire existant - pas de problème. MetaTrader 5 fonctionnera sans erreur.

 

Comment puis-je être sûr que la position avec l'identifiant donné a été fermée ?

La solution évidente - lorsque PositionSelectByTicket renvoie false, mais cela peut probablement aussi arriver dans une situation où les positions ouvertes n'ont pas eu le temps d'être chargées dans le terminal lorsqu'il est connecté au compte de trading ?

Une solution légèrement plus compliquée - PositionSelectByTicket renvoie false et HistorySelectByPosition renvoie true. Dans ce cas, si l'historique de ce poste est chargé, alors la liste des postes ouverts doit être chargée.

Совершение сделок - Торговые операции - MetaTrader 5
Совершение сделок - Торговые операции - MetaTrader 5
  • www.metatrader5.com
Торговая деятельность в платформе связана с формированием и отсылкой рыночных и отложенных ордеров для исполнения брокером, а также с управлением текущими позициями путем их модификации или закрытия. Платформа позволяет удобно просматривать торговую историю на счете, настраивать оповещения о событиях на рынке и многое другое. Открытие позиций...
 
. ... Rick D. ... .:

Attendez que le terminal se synchronise. Par exemple, pendant que(HistorySelect).

 
fxsaber:

Attendez que le terminal se synchronise. Par exemple, pendant que (HistorySelect).

Je ne suis pas un expert dans le fonctionnement interne du terminal. Mais il se peut que le tableau des positions ouvertes (et éventuellement l'historique des transactions) soit déjà chargé lors de l'arrivée de OnInit ?

 
. ... Rick D. ... .:

Je ne suis pas un expert du fonctionnement interne du terminal.

Aussi loin d'être un expert. C'est juste que plusieurs options me viennent à l'esprit pour les essayer en même temps. Et ce qui fonctionnera devra être expérimenté.

 
Vladimir Karputov:

La solution la plus simple : ouvrez un graphique de l'instrument financier souhaité dans MetaTrader et placez le conseiller expert dessus.

C'est connu. Mais je me demande comment définir la paire dans le programme ? Existe-t-il une fonction pour cela ?
 
cepreu1:
C'est connu. Mais je voudrais savoir comment définir la paire dans l'application ? Existe-t-il une fonction pour cela ?

Facilement.

Par exemple, les opérations commerciales. Voir la classe de commerceCTrade, méthodeBuy:

bool  Buy( 
   double        volume,          // объем позиции 
   const string  symbol=NULL,     // символ 
   double        price=0.0,       // цена исполнения 
   double        sl=0.0,          // цена Stop Loss 
   double        tp=0.0,          // цена Take Profit 
   const string  comment=""       // комментарий 
   )

J'ai mis en évidence l'endroit où vous pouvez spécifier le symbole requis.


Ou par exemple, recevoir des données sur les prix d'ouverture et de fermeture... -CopyRates:

int  CopyRates( 
   string           symbol_name,       // имя символа 
   ENUM_TIMEFRAMES  timeframe,         // период 
   int              start_pos,         // откуда начнем  
   int              count,             // сколько копируем 
   MqlRates         rates_array[]      // массив, куда будут скопированы данные 
   );
 
Vladimir Karputov:

Facilement.

Par exemple, les opérations commerciales. Voir la classe de commerceCTrade, méthodeBuy:

J'ai mis en évidence l'endroit où vous pouvez spécifier le symbole requis.


Ou par exemple, recevoir des données sur les prix d'ouverture et de fermeture... -CopyRates:

Oui, ok. Mais je n'ai pas spécifié que je voulais assigner une paire au démarrage, mais

sans ouvrir une position. Et Buy le fait en ouvrant une position,

etCopyRates donne lesdonnées historiques de la paire sans l'assigner.

 
cepreu1:

Oui, ok. Mais je n'ai pas spécifié que je voulais attribuer un couple au démarrage, mais...

sans ouvrir une position. Et Buy fait cela en ouvrant une position,

etCopyRates donne lesdonnées historiques de la paire sans l'assigner.

Vous êtes trop prolixe, mais je vais essayer de deviner : vous avez besoin d'un paramètre d'entrée avec le nom du symbole ? Voici ensuite le code - vous spécifiez le symbole souhaité dans le paramètre"InpSymbol". Ce symbole est vérifié dans OnInit() - si un tel symbole n'existe pas, le conseiller expert sera déchargé et un message d'erreur apparaîtra dans l'onglet "Experts" du terminal (ou dans l'onglet "Journal" du testeur de stratégie).

//+------------------------------------------------------------------+
//|                                                   Set Symbol.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
//---
#include <Trade\SymbolInfo.mqh>  
CSymbolInfo    m_symbol;                     // symbol info object
//--- input parameters
input string   InpSymbol="ASDWER";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   if(!m_symbol.Name(InpSymbol)) // sets symbol name
      return(INIT_FAILED);
   RefreshRates();
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!RefreshRates())
      return;
   string text=m_symbol.Name()+"\n"+
               "Ask "+DoubleToString(m_symbol.Ask(),m_symbol.Digits())+"\n"+
               "Bid "+DoubleToString(m_symbol.Bid(),m_symbol.Digits());
   Comment(text);

  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates(void)
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      Print("RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+

Si un symbole spécifié dans le paramètre"InpSymbol" existe, les informations suivantes seront affichées sur le graphique

  • Nom du symbole
  • Demander le prix
  • Prix de l'offre


Voici comment cela fonctionne : nous le démarrons sur EURUSD et spécifions le symbole USDJPY dans les paramètres. Ainsi, il fonctionne avec le symbole EURUSD, mais les données (prix) proviennent de USDJPY


Dossiers :
 
Vladimir Karputov:

Vous êtes un peu trop explicite, mais laissez-moi deviner : vous avez besoin d'un paramètre d'entrée avec un nom de symbole ? Voici ensuite le code - vous spécifiez le symbole requis dans le paramètre"InpSymbol". Ce symbole est vérifié dans OnInit() - si un tel symbole n'existe pas, le conseiller expert sera déchargé et un message d'erreur apparaîtra dans l'onglet "Experts" du terminal (ou dans l'onglet "Journal" du testeur de stratégie).

Si un symbole spécifié dans le paramètre"InpSymbol" existe, les informations suivantes seront affichées sur le graphique

  • Nom du symbole
  • Demander le prix
  • Prix de l'offre


Voici comment cela fonctionne : nous le démarrons sur EURUSD et spécifions le symbole USDJPY dans les paramètres. Ainsi, il fonctionne avec le symbole EURUSD, mais les informations (prix) proviennent des États-Unis.

Vladimir Karputov:

Vous êtes un peu fleur bleue, mais laissez-moi deviner : vous avez besoin d'un paramètre d'entrée avec le nom du symbole ? Voici ensuite le code - vous spécifiez le symbole requis dans le paramètre"InpSymbol". Ce symbole est vérifié dans OnInit() - si un tel symbole n'existe pas, le conseiller expert sera déchargé et un message d'erreur apparaîtra dans l'onglet "Experts" du terminal (ou dans l'onglet "Journal" du testeur de stratégie).

Si un symbole spécifié dans le paramètre"InpSymbol" existe, les informations suivantes seront affichées sur le graphique

  • Nom du symbole
  • Demander le prix
  • Prix de l'offre


Voici comment cela fonctionne : nous le démarrons sur EURUSD et spécifions le symbole USDJPY dans les paramètres. Il s'avère donc qu'il fonctionne avec le symbole EURUSD, mais reçoit des informations (prix) du symbole USDJPY


Oui, mais dans cet exemple, le conseiller expert fonctionne sur l'EURUSD, mais les informations (prix) sont obtenues à partir du symbole USDJPY.

Pourquoi compliquer les choses, je veux dire, si nous prenons cet exemple, alors nous lançons l'Expert Advisor sur EURUSD ( ou tout autre

paire de devises nécessaire) et c'est tout, nous observons cette paire, et ensuite, si nécessaire, nous ouvrons une position.