Robot complet pour MT5 - page 5

 

Bonjour !

Le testeur ne veut pas ouvrir une position, il génère une erreur

ERR_TRADE_SEND_FAILED (ÉCHEC)

4756

Échec de l'envoi de la demande d'échange

Rbtg_NYCInclure le testeur

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Je pense que quelque chose doit être corrigé ici

Rbtg_NYCInclude kod

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Je vais maintenant essayer de remplacer cette fonction par la suivante

//+------------------------------------------------------------------+
//| Check for long position opening                                  |
//+------------------------------------------------------------------+
bool CSampleExpert::LongOpened(void)
  {
   bool res=false;
//--- check for long position (BUY) possibility

           {
            double price=m_symbol.Ask();
            double tp   =m_symbol.Bid()+m_take_profit;
            //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,InpLots,price)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
              {
               //--- open position
               if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_BUY,InpLots,price,0.0,tp))
                  printf("Position by %s to be opened",Symbol());
               else
                 {
                  printf("Error opening BUY position by %s : '%s'",Symbol(),m_trade.ResultComment());
                  printf("Open parameters : price=%f,TP=%f",price,tp);
                 }
              }
            //--- in any case we must exit from expert
            res=true;
           }
//--- result
   return(res);
  }
//+------------------------------------------------------------------+
//| Check for short position opening                                 |
//+------------------------------------------------------------------+
bool CSampleExpert::ShortOpened(void)
  {
   bool res=false;
//--- check for short position (SELL) possibility

           {
            double price=m_symbol.Bid();
            double tp   =m_symbol.Ask()-m_take_profit;
            //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,InpLots,price)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
              {
               //--- open position
               if(m_trade.PositionOpen(Symbol(),ORDER_TYPE_SELL,InpLots,price,0.0,tp))
                  printf("Position by %s to be opened",Symbol());
               else
                 {
                  printf("Error opening SELL position by %s : '%s'",Symbol(),m_trade.ResultComment());
                  printf("Open parameters : price=%f,TP=%f",price,tp);
                 }
              }
            //--- in any case we must exit from expert
            res=true;
           }
//--- result
   return(res);
  }
//+------------------------------------------------------------------+
 
SanAlex:

Bonjour !

Le testeur ne veut pas ouvrir une position et donne une erreur

ERR_TRADE_SEND_FAILED (ÉCHEC)

4756

Échec de l'envoi de la demande d'échange

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Je pense que quelque chose doit être corrigé ici.


Oui. C'est votre dealer-Forexclub pour eux type d'ordre FilingFock. Je vais me promener avec le chien et réparer ça. Je ne pensais pas qu'il y avait quelqu'un d'autre sur le forexclub...

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

Oui. C'est votre dealer-Forexclub qui doit avoir un type d'ordre FilingFoc. Je vais me promener avec le chien et réparer ça. Je ne pensais pas qu'il y avait quelqu'un d'autre sur le forexclub...

Le mode de remplissage doit être défini par les règles, et non par le nom du cambiste.


Ajouté.

Vous pouvez voir un exemple dans la classe de commerce CTrade

SetMarginMode

Définit le mode de calcul de la marge en fonction des paramètres actuels du compte.

SetTypeFillingBySymbol

Définit le type d'ordre en fonction des paramètres du symbole spécifié.

Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / SetMarginMode
Документация по MQL5: Стандартная библиотека / Торговые классы / CTrade / SetMarginMode
  • www.mql5.com
SetMarginMode - CTrade - Торговые классы - Стандартная библиотека - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
ElenaFxPro4:

Oui. C'est votre dealer-Forexclub qui doit avoir un type d'ordre FilingFoc. Je vais me promener avec le chien et réparer ça. Je ne pensais pas qu'il y avait quelqu'un d'autre sur le forexclub...

Je n'avais pas remarqué - vous avez sûrement encore un courtier ici.

Rbtg_NYCInclude kod 01

 

Ça marche.

Rbtg_NYCInclure le testeur 01

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

         ENUM_ORDER_TYPE_FILLING TypeFilling = ORDER_FILLING_FOK;
         if (AccountInfoString(ACCOUNT_COMPANY)=="Alpari") TypeFilling = ORDER_FILLING_IOC;

a changé -----------

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Il semble que cela fonctionne bien jusqu'à présent.

Photo 345

 
SanAlex:

Ça marche.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

a changé -----------

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Il semble que cela fonctionne bien jusqu'à présent.


alors que le pré-test de l'algorithme a lieu, je me demande - le résultat est-il le même ?
 
Renat Akhtyamov:
comme il est pré-testé avec l'algorithme, je me demande si le résultat est le même ?

Je suis toujours en train de faire un test d'une minute - mon ordinateur est faible, donc les tests sont lents.

Cela semble bon à première vue - voyons à quoi ressemble le résultat final.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

aucune erreur dans le testeur d'Expert

 
SanAlex:

Bonjour !

Le testeur ne veut pas ouvrir une position, il génère une erreur

ERR_TRADE_SEND_FAILED (ÉCHEC)

4756

Échec de l'envoi de la demande d'échange

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Je pense que quelque chose doit être corrigé ici

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Je vais essayer de remplacer cette fonction par celle-ci.

Vous n'êtes pas obligé de le faire.

La 119e ligne devrait être if (AccountInfoString(ACCOUNT_COMPANY)=="Alpari" || AccountInfoString(ACCOUNT_COMPANY)=="Forex Club International Limited") TypeFilling = ORDER_FILLING_FOK;

et de même pour AUTOOrderSELL. C'EST TOUT. :)


 
ElenaFxPro4:

Pas besoin.

La 119e ligne devrait être if (AccountInfoString(ACCOUNT_COMPANY)=="Alpari" || AccountInfoString(ACCOUNT_COMPANY)=="Forex Club International Limited") TypeFilling = ORDER_FILLING_FOK;

et de même pour AUTOOrderSELL. C'EST TOUT. :)


Je vais le laisser comme ça pour l'instant - je le corrigerai après le test

- ne pas vouloir arrêter le testeur

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

la seule mauvaise chose est que le test est en cours maintenant - et j'ai l'impression d'en faire trop ici

Photo 3456

 
Vladimir Karputov:

Le mode de remplissage doit être défini par les règles, et non par le nom du courtier en devises.


Ajouté.

Vous pouvez voir un exemple dans la classe de commerce CTrade

SetMarginMode

Définit le mode de calcul de la marge en fonction des paramètres actuels du compte.

SetTypeFillingBySymbol

Définit le type d'ordre en fonction des paramètres du symbole spécifié.

Merci beaucoup. Je devrais utiliser le mode automatique mais je ne l'ai pas trouvé. C'est pourquoi j'ai préparé ce patch en tant qu'instructions simples pour le courtier qui doit l'utiliser :) Ils ne sont que deux. Remake. Merci.

Raison: