Erreurs, bugs, questions - page 770

 
maryan.dirtyn:
...

p.s. ceux qui me disent d'utiliser des bibliothèques standard, ne vous donnez pas la peine, j'aime savoir ce que fait mon expert et ne pas espérer qu'il ne s'aplatisse pas par la suite.

Mais les bibliothèques standard peuvent être consultées/étudiées et il est possible de comprendre quelles erreurs ont été commises. Une très bonne opportunité.
 

J'essaie de faire ça depuis 6 heures et j'ai tendance à penser que c'est impossible.

Je ne vais pas utiliser un standard, si vous voulez bien m'excuser...

 
maryan.dirtyn:

J'essaie de faire ça depuis 6 heures et j'ai tendance à penser que c'est impossible.

Je n'utiliserai rien de standard, si vous voulez bien m'excuser...

Qu'est-ce qui vous effraie tant dans les bibliothèques standard? Regardez ce qui se trouve dans le fichier Trade.mqh:

Fonction permettant d'ouvrir une position :

//+------------------------------------------------------------------+
//| Open position.                                                   |
//+------------------------------------------------------------------+
bool CTrade::PositionOpen(const string symbol,const ENUM_ORDER_TYPE order_type,const double volume,
                          const double price,const double sl,const double tp,const string comment)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__)) return(false);
//--- clean
   ClearStructures();
//--- checking
   if(order_type!=ORDER_TYPE_BUY && order_type!=ORDER_TYPE_SELL)
     {
      m_result.retcode=TRADE_RETCODE_INVALID;
      m_result.comment="Invalid order type";
      return(false);
     }
//--- setting request
   m_request.action      =TRADE_ACTION_DEAL;
   m_request.symbol      =symbol;
   m_request.magic       =m_magic;
   m_request.volume      =volume;
   m_request.type        =order_type;
   m_request.price       =price;
   m_request.sl          =sl;
   m_request.tp          =tp;
   m_request.deviation   =m_deviation;
   m_request.type_filling=m_type_filling;
   m_request.comment     =comment;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

//---

Vous devriez convenir que ce n'est pas très différent de ce que vous essayez de faire. Faites attention à la fonction ClearStructures(). Si les arrêts doivent être réglés après l'ouverture de la position, la fonction suivante vous y aidera :

//+------------------------------------------------------------------+
//| Modify specified opened position.                                |
//+------------------------------------------------------------------+
bool CTrade::PositionModify(const string symbol,const double sl,const double tp)
  {
//--- check stopped
   if(IsStopped(__FUNCTION__)) return(false);
//--- clean
   ClearStructures();
//--- setting request
   m_request.action=TRADE_ACTION_SLTP;
   m_request.symbol=symbol;
   m_request.sl    =sl;
   m_request.tp    =tp;
//--- action and return the result
   return(OrderSend(m_request,m_result));
  }

//---

C'est simple et tout fonctionne. Et ensuite, vous pouvez ajouter/changer/expérimenter comme bon vous semble.

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека - Документация по MQL5
 
maryan.dirtyn:

J'essaie de faire ça depuis 6 heures et j'ai tendance à penser que c'est impossible.

Je n'utiliserai aucun des standards, si vous voulez bien m'excuser...

Surtout pour vous :

#include <trade\trade.mqh>
void OnStart()
  {
   CTrade trade;
   trade.Buy(1.0,"EURUSD",SymbolInfoDouble("EURUSD",SYMBOL_ASK),1.20000,1.50000,"Yeah, baby!");
  }

Pour toucher l'inconnu, il suffit d'insérer ce code dans le script, de le compiler, puis de placer le curseur sur Acheter et d'appuyer sur Alt + G.

Vous allez commencer à voyager dans les entrailles de toutes les bibliothèques. En même temps, examinez la gestion des erreurs.

 
Renat:

Surtout pour vous :

Pour toucher l'inconnu, il suffit d'insérer ce code dans le script, de le compiler, puis de placer le curseur sur Acheter et d'appuyer sur Alt+G.

Vous allez commencer à parcourir l'intérieur de toutes les bibliothèques. En même temps, examinez la gestion des erreurs.


"Yeah, baby!"
Vous pouvez même exprimer ce qui précède et tout ira bien. )))
 

Je suppose qu'il n'y a pas d'autre moyen de le faire, n'est-ce pas ?

#include <trade\trade.mqh>
 
maryan.dirtyn:

Je suppose qu'il n'y a pas d'autre moyen de le faire, n'est-ce pas ?

Créez une ou plusieurs fonctions similaires dans le fichier principal et vous n'aurez pas besoin de brancher quoi que ce soit.
 

C'est ce que je fais))... 6ème heure... et je n'arrive pas à trouver est l'erreur

la réticence à utiliser les bibliothèques standard est due au fait que les drapeaux et les variables globales sont utilisés dans les fonctions, et qu'il ne semble pas raisonnable de démonter trade.mqh et d'autres parties

void OnTick(){ if(PositionsTotal()<1){OPEN();}}

bool OPEN(){
             MqlTradeRequest request; ZeroMemory(request);
             MqlTradeResult  result;  ZeroMemory(result);
             

             request.symbol       = _Symbol;
             request.action       = TRADE_ACTION_DEAL;
             request.type_filling = ORDER_FILLING_FOK;
             request.deviation    = 100;
             request.volume       = NormalizeDouble(2,2);
             request.type         = ORDER_TYPE_BUY;
             request.price        = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
             request.tp           = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) + 500*_Point,_Digits);
             request.sl           = NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK) - 500*_Point,_Digits);

             OrderSend(request,result);     
                        
             if(result.retcode==10009 || result.retcode==10008)  Print("Succsesful open");
             else                                               Print("Error open: ",DoubleToString(GetLastError(),0),"  response code: ",result.retcode);
    
   return(true);}
 
maryan.dirtyn:

C'est ce que je fais))... 6ème heure... et je n'arrive pas à trouver est l'erreur

Je ne veux pas utiliser les bibliothèques standard parce que j'utilise des drapeaux et des variables globales à l'intérieur des fonctions, et il ne semble pas raisonnable de séparer trade.mqh et les autres fonctions.

Sur quel serveur et quel symbole essayez-vous ?

J'ai exécuté votre code sur MetaQuotes-Demo et la transaction a réussi :

2012.07.11 15:08:36     Trades  '1026582': deal #109507221 buy 2.00 EURUSD at 1.22625 done (based on order #115678901)
2012.07.11 15:08:36     Trades  '1026582': order #115678901 buy 2.00 / 2.00 EURUSD at 1.22625 done
2012.07.11 15:08:36     Trades  '1026582': instant buy 2.00 EURUSD at 1.22627 sl: 1.22127 tp: 1.23127 (deviation: 100)
 

MetaQuotes-Démo

Connexion : 1219233

EURUSD

Je viens d'essayer sur la fourrière, même histoire. Pas d'arrêt. Je fais tout dans le testeur.

Build 655 (si cela peut aider)