Erreurs, bugs, questions - page 873

 
mario065:

Bonjour Reshetov,

Pour vous, c'est "Qu'est-ce que c'est ?", pour moi, c'est le moment où je dois faire un appel à la fonction de modification.

Si vous aviez regardé le code, vous ne l'auriez pas écrit.

Le code le fait :

  double Open = NormalizeDouble(PositionGetDouble(POSITION_PRICE_OPEN),4);
  double SL   = NormalizeDouble(PositionGetDouble(POSITION_SL),4);
  double TP   = NormalizeDouble(PositionGetDouble(POSITION_TP),4);

A quoi bon si c'est là ? Pour quelle position calculez-vous cette merde ? Essayez d'utiliser Print() ou le débogueur pour voir les valeurs des variables SL, TP et Open avant if() et les valeurs de la position ouverte dans le journal.
 

Merci Reshetov,

C'est fait :

  double buy_trail = 0;
  double sel_trail = 0;
  double SL,TP,Open;
  if(PositionSelect(Symbol())){
    if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
      {
      Open = PositionGetDouble(POSITION_PRICE_OPEN);
      SL   = PositionGetDouble(POSITION_SL);
      TP   = PositionGetDouble(POSITION_TP);
      Bid  = SymbolInfoDouble(Symbol(),SYMBOL_BID);
      buy_trail = NormalizeDouble(Bid - Open,Digits());
      if(buy_trail > MStop)
       {
        if(NormalizeDouble((Bid - MStop),Digits()) >= Open && Open > SL)
          {
           ModifyPosition(Symbol(),Open,TP);
          }
          if(NormalizeDouble((Bid - MStop),Digits()) > SL && Open <= SL)
           {
            ModifyPosition(Symbol(),NormalizeDouble((SL + 0.001),Digits()),TP);
           }
        }
      }
    if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
      {
      Open = PositionGetDouble(POSITION_PRICE_OPEN);
      SL   = PositionGetDouble(POSITION_SL);
      TP   = PositionGetDouble(POSITION_TP);
      Ask  = SymbolInfoDouble(Symbol(),SYMBOL_ASK);
      sel_trail = NormalizeDouble(Open - Ask,Digits());
      if(sel_trail > MStop)
       { 
        if(NormalizeDouble((Ask + MStop),Digits()) <= Open && Open < SL)
          {
           ModifyPosition(Symbol(),Open,TP);
          }
          if(NormalizeDouble((Ask + MStop),Digits()) < SL && Open >= SL)
           {
            ModifyPosition(Symbol(),NormalizeDouble((SL - 0.001),Digits()),TP);
           }
        }
      }
     }

La fonction de modification elle-même :

//+------------------------------------------------------------------+
//| Modify position.                                                 |
//+------------------------------------------------------------------+
bool ModifyPosition(const string symbol,double StopLoss,double Takeprofit){
//---- обявяване на структурата и резултата на търговското искане
   MqlTradeRequest request={0};
   MqlTradeResult result={0};
//---- структурна инициализация на  търговското искане MqlTradeRequest за модифициране на  позиция
   request.action       = TRADE_ACTION_SLTP;
   request.symbol       = symbol;
   request.sl           = StopLoss;
   request.tp           = Takeprofit;
   string word          = "";
   StringConcatenate(word,
                     "<<< ============ Modifyposition():   Модифицираме позицията  ",
                     symbol," ============ >>>");
   Print(word);
//---- модифицираме позицията и  проверяваме резултата от търговското искане
   if(!OrderSend(request,result) || result.deal==0)
     {
      Print("Modify error =", GetLastError());
      return(false);
     }
   return(true);
  }

Ok, maintenant ce n'est pas de trouver des positions.

Débarrassé de : ERR_TRADE_SEND_FAILED - 4756

Maintenant c'est 4753 - Position non trouvée.

Parfois, cela fonctionne, mais il y a un tel bug qui n'a pas trouvé la position.

 
mario065:

Merci Reshetov,

C'est fait :

La fonction de modification elle-même :

Ok, maintenant ce n'est pas de trouver des positions.

Débarrassé de : ERR_TRADE_SEND_FAILED - 4756

Heure 4753- Article non trouvé.

Parfois, cela fonctionne, mais il y a un tel bug qui n'a pas trouvé la position.

Vous feriez mieux d'utiliser des classes de métiers prêtes à l'emploi. Voir comment utiliser les classes commerciales de la bibliothèque standard lors de l'écriture d'un EA

Par exemple, modifier la position d'un symbole :

//--- Класс CTrade
#include <Trade\Trade.mqh>

//--- Объект класса CTrade
CTrade mytrade;



void OnTick() {
...
  if (myposition.Select(_Symbol))
  {
    int newStoploss = 250;
    int newTakeprofit = 500;
    double SL = mysymbol.Ask() – newStoploss*_Point;    
    double TP = mysymbol.Ask() + newTakeprofit*_Point;  
    // модифицируем открытую позицию по этому символу
    mytrade.PositionModify(_Symbol,SL,TP);
  }
...
}
C'est très court et clair.
 

Je l'ai.

Yedelkin a aidé. Voici le code.

Merci :)

Dossiers :
 

débanner mon IP (je suis actuellement en train d'en obtenir un sur mon ordinateur personnel :

403 - запрещено. Доступ запрещен.
Предоставленные учетные данные не дают права на просмотр этого каталога или страницы.

).

J'ai également perdu l'autorisation dans le nuage et dans les services de signaux, et d'ailleurs, un compte réel utilise (utilisait, car il n'y a pas d'autorisation maintenant) les signaux.

Fonctionne jusqu'à 10 terminaux + navigateur. Je n'ai pas téléchargé le site, je ne l'ai pas cassé, etc. - Je n'ai rien fait de contraire aux règles du forum.

 
notused:

débanner mon IP (je suis actuellement en train d'en obtenir un sur mon ordinateur personnel :

).

J'ai également perdu l'autorisation dans le nuage et dans les services de signaux, et d'ailleurs, un compte réel utilise (utilisait, parce que maintenant il n'y a pas d'autorisation) les signaux.

Fonctionne jusqu'à 10 terminaux + navigateur. Je n'ai pas téléchargé le site, je ne l'ai pas cassé, etc. - Je n'ai rien fait d'incompatible avec les règles de ce forum.

Même problème, avec environ 14-00 Kiev, le modérateur a dit que je ne suis pas dans l'interdiction, alors quelle est la raison ?

 
notused:

débanner mon IP (je suis actuellement en train d'en obtenir un sur mon ordinateur personnel :

).

J'ai également perdu l'autorisation dans le nuage et dans les services de signaux, et d'ailleurs, un compte réel utilise (utilisait, parce que maintenant il n'y a pas d'autorisation) les signaux.

Fonctionne jusqu'à 10 terminaux + navigateur. Je n'ai pas téléchargé le site, je ne l'ai pas cassé, etc. - Je n'ai rien fait de contraire aux règles du forum.

Étrange ? Après tout, si je suis banni, et même par IP, alors je suppose que je ne peux pas non plus parler sur le forum ?
 
Reshetov:
Étrange ? Après tout, si vous êtes dans une interdiction, et même sur IP, il semblerait, et le forum de communiquer trop ne peut pas ?

Le modérateur a dit que pas dans le ban parce que je vais sous mon pseudo, et IP changé via auto cacher ip, mais ce n'est qu'un masque, les terminaux encore courir sous le natif et les signaux ne sont pas transmis !

Les administrateurs répondent !

 
remjte:

Le modérateur a dit que pas dans le ban parce que je vais sous mon pseudo, et IP changé via auto cacher ip, mais ce n'est qu'un masque, les terminaux encore courir sous le natif et les signaux ne sont pas transmis !

Les administrateurs répondent !

Mieux vaut aller à Servicedesk. Bien que, probablement, vous ne pouvez pas, si vous avez un profil bloqué ?
 
Reshetov:Reshetov:
Meilleur contact avec le Service Desk

Je me connecte depuis une autre IP. Mais le compte n'est pas interdit - c'est l'IP qui est interdite. J'ai écrit au service d'assistance, je vais attendre ce qu'ils vont dire demain.