Errores, fallos, preguntas - página 873

 
mario065:

Hola Reshetov,

Para ti es "¿Qué demonios?", para mí es la condición cuando tengo que hacer una llamada a la función de modificación.

Si miraras el código, no lo habrías escrito.

El código lo hace:

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

¿De qué sirve si está ahí? ¿Para qué posición calculas esta mierda? Intente utilizar Print() o el depurador para ver qué valores de las variables SL, TP y Open hay antes de if() y qué valores tiene la posición abierta en el registro.
 

Gracias Reshetov,

Hecho:

  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 propia función de modificación:

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

Bien, ahora no es encontrar posiciones.

Se deshizo de : ERR_TRADE_SEND_FAILED - 4756

Ahora es 4753 - Posición no encontrada.

A veces funciona, pero hay un error que no encuentra la posición.

 
mario065:

Gracias Reshetov,

Hecho:

La propia función de modificación:

Bien, ahora no es encontrar posiciones.

Se deshizo de : ERR_TRADE_SEND_FAILED - 4756

Hora 4753- Artículo no encontrado.

A veces funciona, pero hay un error que no encuentra la posición.

Es mejor que uses clases de comercio ya hechas. Vea cómo utilizar las clases comerciales de la biblioteca estándar al escribir un EA

Por ejemplo, modificar las posiciones de un símbolo:

//--- Класс 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);
  }
...
}
Sale muy corto y claro.
 

Lo tengo.

Yedelkin ayudó. Aquí está el código.

Gracias :)

Archivos adjuntos:
 

desbloquear mi IP (actualmente tengo una en mi ordenador de casa:

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

).

También he perdido la autorización en la nube y en los servicios de señales, y por cierto, una cuenta real está usando (usaba, porque ahora no hay autorización) las señales.

Funciona con hasta 10 terminales + navegador. No he descargado el sitio, no lo he roto, etc. - No he hecho nada contrario a las normas del foro.

 
notused:

desbancar mi IP (actualmente tengo una en mi ordenador de casa:

).

También he perdido la autorización en la nube y en los servicios de señales, y por cierto, una cuenta real está usando (usaba, porque ahora no hay autorización) las señales.

Funciona con hasta 10 terminales + navegador. No he descargado el sitio, no lo he roto, etc. - No he hecho nada incompatible con las normas de este foro.

El mismo problema, con alrededor de 14-00 en Kiev, el moderador dijo que no estoy en la prohibición, entonces ¿cuál es la razón?

 
notused:

desbancar mi IP (actualmente tengo una en mi ordenador de casa:

).

También he perdido la autorización en la nube y en los servicios de señales, y por cierto, una cuenta real está usando (usaba, porque ahora no hay autorización) las señales.

Funciona con hasta 10 terminales + navegador. No he descargado el sitio, no lo he roto, etc. - No he hecho nada contrario a las normas del foro.

¿Extraño? Al fin y al cabo, si estoy baneado, e incluso por IP, supongo que tampoco puedo hablar en el foro.
 
Reshetov:
¿Extraño? Después de todo, si en la prohibición, e incluso por IP, entonces sería imposible comunicarse en el foro, también?

¡El moderador dijo que no en la prohibición porque voy bajo mi apodo, y el IP cambiado a través de auto ocultar ip, pero es sólo una máscara, los terminales todavía se ejecutan bajo el nativo y las señales no se transmiten!

¡Los administradores responden!

 
remjte:

¡El moderador dijo que no en la prohibición porque voy bajo mi apodo, y el IP cambiado a través de auto ocultar ip, pero es sólo una máscara, los terminales todavía se ejecutan bajo el nativo y las señales no se transmiten!

¡Los administradores responden!

Mejor ir a servicedesk. Aunque, probablemente no pueda, si tiene un perfil bloqueado?
 
Reshetov:Reshetov:
Mejor contacto con el Servicio de Atención al Cliente

Me estoy conectando desde una IP diferente. Pero la cuenta no está prohibida, es la IP la que está prohibida. He escrito al servicio de atención al cliente, voy a esperar lo que me digan mañana.

Razón de la queja: