Fehler, Irrtümer, Fragen - Seite 873

 
mario065:

Hallo Reshetov,

Für Sie ist es "Was zum Teufel?", für mich ist es die Bedingung, dass ich die Änderungsfunktion aufrufen muss.

Wenn Sie sich den Code ansehen würden, hätten Sie ihn nicht geschrieben.

Das tut der Code:

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

Was nützt es, wenn es da ist? Für welche Position berechnen Sie diesen Mist? Versuchen Sie mit Print() oder dem Debugger zu sehen, welche Werte die Variablen SL, TP und Open vor if() haben und welche Werte die offene Position im Log hat.
 

Vielen Dank, Herr Reshetov,

Erledigt:

  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);
           }
        }
      }
     }

Die Änderungsfunktion selbst:

//+------------------------------------------------------------------+
//| 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);
  }

Okay, jetzt geht es nicht mehr darum, Positionen zu finden.

Behoben: ERR_TRADE_SEND_FAILED - 4756

Jetzt lautet die Meldung 4753 - Position nicht gefunden.

Manchmal funktioniert es, aber es gibt einen solchen Fehler, dass die Position nicht gefunden wurde.

 
mario065:

Vielen Dank, Reschetow,

Erledigt:

Die Änderungsfunktion selbst:

Okay, jetzt geht es nicht mehr darum, Positionen zu finden.

Behoben: ERR_TRADE_SEND_FAILED - 4756

Stunde 4753- Gegenstand nicht gefunden.

Manchmal funktioniert es, aber es gibt einen solchen Fehler, dass die Position nicht gefunden wurde.

Verwenden Sie lieber vorgefertigte Handelsklassen. Siehe Wie man die Standard Library Trade Classes beim Schreiben eines EAs verwendet

Ändern Sie zum Beispiel die Position für ein Symbol:

//--- Класс 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);
  }
...
}
Er ist sehr kurz und klar formuliert.
 

Ich habe sie.

Yedelkin hat geholfen. Hier ist der Code.

Danke :)

Dateien:
 

meine IP-Adresse freizugeben (ich bekomme derzeit eine auf meinem Heimcomputer:

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

).

Ich habe auch die Berechtigung in der Cloud und in den Signaldiensten verloren, und übrigens nutzt ein echtes Konto die Signale (früher, denn jetzt gibt es keine Berechtigung).

Läuft mit bis zu 10 Terminals + Browser. Ich habe die Website nicht heruntergeladen, sie nicht beschädigt usw. - Ich habe nichts getan, was gegen die Forenregeln verstößt.

 
notused:

meine IP-Adresse freizugeben (ich bekomme derzeit eine auf meinem Heimcomputer:

).

Ich habe auch die Berechtigung in der Cloud und in den Signaldiensten verloren, und übrigens nutzt ein echtes Konto die Signale (früher, denn jetzt gibt es keine Berechtigung).

Läuft mit bis zu 10 Terminals + Browser. Ich habe die Website nicht heruntergeladen, sie nicht beschädigt usw. - Ich habe nichts getan, was gegen die Regeln dieses Forums verstößt.

Gleiches Problem, mit etwa 14-00 auf Kiew, sagte der Moderator, dass ich nicht in das Verbot, was ist dann der Grund?

 
notused:

meine IP-Adresse freizugeben (ich bekomme derzeit eine auf meinem Heimcomputer:

).

Ich habe auch die Berechtigung in der Cloud und in den Signaldiensten verloren, und übrigens nutzt ein echtes Konto die Signale (früher, denn jetzt gibt es keine Berechtigung).

Läuft mit bis zu 10 Terminals + Browser. Ich habe die Website nicht heruntergeladen, sie nicht beschädigt usw. - Ich habe nichts getan, was gegen die Forenregeln verstößt.

Seltsam? Denn wenn ich schon gesperrt bin, und das sogar per IP, dann kann ich wohl auch nicht im Forum reden?
 
Reshetov:
Seltsam? Nach allem, wenn Sie in einem Verbot sind, und sogar auf IP, so scheint es, und das Forum zu kommunizieren, kann nicht?

Der Moderator sagte, dass nicht in das Verbot, weil ich unter meinem Spitznamen zu gehen, und IP über Auto hide ip geändert, aber es ist nur eine Maske, Terminals immer noch unter dem nativen laufen und die Signale werden nicht übertragen!

Admins antworten!

 
remjte:

Der Moderator sagte, dass nicht in das Verbot, weil ich unter meinem Spitznamen zu gehen, und IP über Auto hide ip geändert, aber es ist nur eine Maske, Terminals immer noch unter dem nativen laufen und die Signale werden nicht übertragen!

Admins antworten!

Gehen Sie besser zu servicedesk. Obwohl, wahrscheinlich kann nicht, wenn Sie ein Profil gesperrt haben?
 
Reshetov:Reschetow:
Besserer Kontakt zum Service Desk

Ich melde mich von einer anderen IP aus an. Aber das Konto ist nicht gesperrt - es ist die IP, die gesperrt ist. Ich habe den Kundendienst angeschrieben und werde abwarten, was sie morgen sagen werden.