Erreurs, bugs, questions - page 668

 

Si vous vous concentrez sur les couleurs dans le tumblr de Price, il semble y avoir une confusion.

//---

Le bouton Acheter est bleu. Par conséquent, les prix auxquels vous pouvez faire une offre doivent également être bleus. Maintenant, c'est l'inverse et il faut travailler dur pour s'y habituer et il est peu probable que cela fonctionne. C'est une nuance psychologique. )))

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Виды заявок в стакане цен - Документация по MQL5
 

D'après les informations relatives à la pile de prix dans l'aide, la mise en page du test devrait ressembler à ceci :

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   MarketBookAdd(_Symbol);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   MarketBookRelease(_Symbol);
  }
//+------------------------------------------------------------------+
//| OnBook Event                                                     |
//+------------------------------------------------------------------+
MqlBookInfo priceArray[];
//---
void OnBookEvent(const string &symbol_name)
  {
   bool getBook=MarketBookGet(_Symbol,priceArray);
//---
   if(!getBook)
     {
      Print("Не удалось получить содержимое стакана по символу ",Symbol());
     }
  }
//+------------------------------------------------------------------+
//| OnChart event handler                                            |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
  {
   double price_buy=0.0,price_sell=0.0;
//---
   TRADE_EXEMODE=(int)SymbolInfoInteger(_Symbol,SYMBOL_TRADE_EXEMODE); // Узнаем тип исполнения
//---
   if(TRADE_EXEMODE==SYMBOL_TRADE_EXECUTION_MARKET ||
            TRADE_EXEMODE==SYMBOL_TRADE_EXECUTION_EXCHANGE)
     {
      mytrade.SetTypeFilling(ORDER_FILLING_IOC);
      //---
      if(TRADE_EXEMODE==SYMBOL_TRADE_EXECUTION_EXCHANGE)
        {
         int size=ArraySize(priceArray);
         //---
         for(int i=size-1; i>=0; i--)
           {
            if(priceArray[i].type==1)
              {
               price_buy=priceArray[i].price; // Получим ближайшую цену для BUY
               price_sell=priceArray[i+1].price; // Получим ближайшую цену для SELL

               //---
               break;
              }
           }
        }
      else
        {
         price_buy=mylast_tick.ask;
         price_sell=mylast_tick.bid;
        }
     }
//---
   //... Далее следуют функции для совершения торговых операций
  }

//---

Cependant, lors de la réalisation d'une transaction, le journal du conseiller expert affiche un message, à partir duquel on peut voir que, bien qu'il y ait un prix dans la requête, c'était le plus proche dans la profondeur de marché :

price_request=mytrade.RequestPrice();

le résultat est aucun prix (0.000) :

price_result=mytrade.ResultPrice();

et la fonction de commerce renvoie faux:

//---

Dans le journal, nous pouvons voir qu'il y a eu une tentative d'ouvrir une position à un prix nul :

mais la position a néanmoins été ouverte au prix actuel.

//---

Si ces informations ne suffisent pas à déterminer quelle partie est en faute, j'écrirai au Service Desk.

 

Pouvez-vous me dire comment supprimer un ordre en attente ?

trReq.order=ordre_ticket ;

trReq.type=TRADE_ACTION_REMOVE ;

OrdreEnvoi(trReq,trRez) ;

Mon compilateur me donne : TRADE_ACTION_REMOVE can't convert enum

et 2 fois la même erreur.

J'ai déjà essayé la même chose avec la mise à zéro :

trReq.symbol =Symbol() ; //NULL

trReq.magic =MAGIC ; //0

trReq.volume =0.0 ;

trReq.type =0 ;

trReq.price =0.0 ;

trReq.sl =0.0 ;

trReq.tp =0.0 ;

trReq.type_time =0 ;

trReq.expiration=0 ;

ne fonctionne pas. build 597.

Donnez-moi un exemple complet, s'il vous plaît. Merci d'avance.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
stroka:
...

Donnez un exemple complet, s'il vous plaît. Merci d'avance.

Il existe un exemple complet dans la bibliothèque standard. Fonction OrderDelete(). Il dispose d'une documentation. Vous pouvez également y prendre des fonctions pour toutes les opérations de trading.

//+------------------------------------------------------------------+
//| Delete specified pending order.                                  |
//| INPUT:  ticket - ticket of order for delete.                     |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CTrade::OrderDelete(ulong ticket)
  {
//--- variables
   string action,result;
//--- check stopped
   if(IsStopped(__FUNCTION__)) return(false);
//--- clean
   ClearStructures();
//--- setting request
   m_request.action    =TRADE_ACTION_REMOVE;
   m_request.order     =ticket;
//--- order check
   if(!OrderCheck(m_request,m_check_result))
     {
      //--- copy return code
      m_result.retcode=m_check_result.retcode;
      if(m_log_level>LOG_LEVEL_NO)
         printf(__FUNCTION__+": %s [%s]",FormatRequest(action,m_request),FormatRequestResult(result,m_request,m_result));
      return(false);
     }
//--- order send
   if(!OrderSend(m_request,m_result))
     {
      if(m_log_level>LOG_LEVEL_NO)
         printf(__FUNCTION__+": %s [%s]",FormatRequest(action,m_request),FormatRequestResult(result,m_request,m_result));
      return(false);
     }
   if(m_log_level>LOG_LEVEL_ERRORS)
      printf(__FUNCTION__+": %s [%s]",FormatRequest(action,m_request),FormatRequestResult(result,m_request,m_result));
//--- ok
   return(true);
  }
 
Le terminal ne se connecte pas à la communauté mql5. J'entre le login et le mot de passe dans les paramètres du terminal, j'appuie sur ok et rien ne se passe. Lorsque j'entre à nouveau dans les paramètres, le login est enregistré, mais le mot de passe est vide. Je ne peux rien télécharger du marché. Je peux entrer dans le forum sans aucun problème.
 
Dima_S:

À quoi sert de tronquer une chaîne de caractères lorsque vous la définissez comme paramètre externe ?

chaîne de caractères d'entrée - 105 caractères maximum peuvent être spécifiés, s'ils sont plus nombreux, ils seront tronqués à droite.

construire 597

construit 607 - même problème.
 

veuillez me dire pourquoi le code suivant ne trouve pas la fenêtre correspondante (j'ai vérifié, la fenêtre avec cette classe existe)

#import "user32.dll"
   int FindWindowA(string &lpClassName, string &lpWindowName);
#import

string FormClass="TMyMainForm";
string FormName="";
int hnd = FindWindowA(FormClass,FormName);
if (hnd==0) printf("not found");
else printf("found");
 

Il semble qu'il y ait une sorte d'erreur dans

//+------------------------------------------------------------------+
//| Open position.                                                   |
//| INPUT:  symbol     -symbol for trade,                            |
//|         order_type -direct for open,                             |
//|         volume     -volume of position,                          |
//|         price      -price for open,                              |
//|         stop       -price of stop loss,                          |
//|         take       -price of take profit,                        |
//|         comment    -comment of position.                         |
//| OUTPUT: true-if successful, false otherwise.                     |
//| REMARK: no.                                                      |
//+------------------------------------------------------------------+
bool CTrade::PositionOpen(const string symbol,ENUM_ORDER_TYPE order_type,double volume,
                          double price,double sl,double tp,const string comment)

Avec le code de retour 10008 (commande passée), cette méthode renvoie false.

L'ordre est finalement exécuté.

De ce fait, plus que le nombre requis d'ordres ont été ouverts sur le compte de démonstration.

RQ      0       Trades  14:00:18        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
IO      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
MH      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MQ      0       Trades  14:00:18        '3119321' : deal #2888080 buy 0.10 USDCHF at 0.91144 done (based on order #4880065)
NL      0       Trades  14:00:18        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
MK      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
IS      0       Trades  14:00:18        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MN      0       Trades  14:00:19        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
NE      0       Trades  14:00:19        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
JQ      0       Trades  14:00:19        '3119321' : exchange buy 0.10 USDCHF at 0.00000
PJ      0       Trades  14:00:19        '3119321' : deal #2888081 buy 0.10 USDCHF at 0.91144 done (based on order #4880066)
KG      0       Trades  14:00:20        '3119321' : deal #2888082 buy 0.10 USDCHF at 0.91145 done (based on order #4880067)
KF      0       Trades  14:00:20        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
LM      0       Trades  14:00:20        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
HJ      0       Trades  14:00:20        '3119321' : exchange buy 0.10 USDCHF at 0.00000
DR      0       Trades  14:00:20        '3119321' : deal #2888083 buy 0.10 USDCHF at 0.91146 done (based on order #4880068)
HR      0       Trades  14:00:21        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
OJ      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
CE      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MN      0       Trades  14:00:21        '3119321' : deal #2888084 buy 0.10 USDCHF at 0.91146 done (based on order #4880069)
DI      0       Trades  14:00:21        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
CF      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
OP      0       Trades  14:00:21        '3119321' : exchange buy 0.10 USDCHF at 0.00000
GI      0       Trades  14:00:22        '3119321' : deal #2888085 buy 0.10 USDCHF at 0.91146 done (based on order #4880070)
QD      0       Trades  14:00:22        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
JS      0       Trades  14:00:22        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
NK      0       Trades  14:00:22        '3119321' : exchange buy 0.10 USDCHF at 0.00000
MD      0       Trades  14:00:22        '3119321' : deal #2888086 buy 0.10 USDCHF at 0.91146 done (based on order #4880071)
NS      0       Trades  14:00:23        '3119321' : accepted exchange buy 0.10 USDCHF at 0.00000
MH      0       Trades  14:00:23        '3119321' : exchange buy 0.10 USDCHF at 0.00000 placed for execution
IG      0       Trades  14:00:23        '3119321' : exchange buy 0.10 USDCHF at 0.00000
....

Et le journal du conseiller expert

(EURUSD,H1)     14:00:18        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:18        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:19        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:20        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:21        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:21        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:22        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:23        CTrade::PositionOpen:  [placed]
(EURUSD,H1)     14:00:23        CTrade::PositionOpen:  [placed]
....

Dites-moi, s'il vous plaît, quand peut-il y avoir une situation où un ordre de marché a été placé sur le serveur mais n'a pas été exécuté (même partiellement) ?
Документация по MQL5: Торговые функции / OrdersTotal
Документация по MQL5: Торговые функции / OrdersTotal
  • www.mql5.com
Торговые функции / OrdersTotal - Документация по MQL5
 
olyakish:

Il semble y avoir une erreur dans

Avec le code de retour 10008 (commande passée), cette méthode renvoie false.

L'ordre finit par être exécuté.

De ce fait, plus que le nombre requis d'ordres ont été ouverts sur le compte de démonstration.

Et le journal de l'expert

Dites-moi quand il peut y avoir une situation où un ordre de marché est placé sur le serveur mais n'est pas exécuté (même partiellement) ?

Le même problème est décrit au tout début de la page. Il est décrit ici : https://www.mql5.com/ru/forum/1111/page679#comment_164002. Aucune réponse n'a encore été donnée.

//---

Où votre compte de démonstration est-il ouvert ?

 
tol64:

Le même problème est décrit au tout début de la page. Le voici : https://www.mql5.com/ru/forum/1111/page679#comment_164002. Aucune réponse n'a encore été donnée.

//---

Où votre compte de démonstration est-il ouvert ?

1. Je suis en retard pour voir ce fil de discussion.

2. À A*****i.

J'ai posté ce message dans la rubrique "humour" du forum 4, mais je pense qu'il devrait également figurer ici :

Je suis en train d'analyser les vols des conseillers experts (MT5) et j'ai trouvé ceci dans les logs

.....(EURUSD,H1)        16:43:16        CTrade::PositionClose:  [not enough money]
... Où... dans le DC ? ??
Raison: