Errores típicos y cómo afrontarlos en el entorno comercial - página 8

 
fxsaber:

La receta, como se dice, es universal:

  1. Se encontró con una orden de mercado con ID cero - salir inmediatamente.
  2. MT5-OrderSend se ha reescrito para que devuelva siempre un resultado distinto de cero Result.deal - el código fuente se ha publicado en KB.
  3. Después de cada OrderSend o Sleep, envíe al paso 1.
Con este planteamiento, cualquier TC (al 100%) funcionará.

¿Y no es esto de lo que estoy hablando?

A veces la gente tiene una extraña percepción de la información :)

Sólo que no se sale inmediatamente a la orden con ID cero, sino que se procesa en el mismo tick - algún tipo de expectativa predefinida.

El resto es todo lo que estaba diciendo. Resulta que es el fondo :)))

 

Reflexionar sobre la adecuación de su RPT. Una situación real que ocurre cada día en MT4

  1. No hay nada abierto.
  2. Usted ha colocado BuyLimit y luego no OrderSend.
  3. Después de un tiempo ha encontrado 3 posiciones de COMPRA y BuyLimit.
  4. Después de un tiempo se detectan 2 posiciones de COMPRA y BuyLimit.
  5. En un rato tienes 5 posiciones de compra.
  6. Dentro de un tiempo se necesita detectar 1 posición de compra.
  7. Al cabo de un tiempo se detecta el punto 1.

Esto es lo más fácil. Por lo tanto, la plantilla propuesta contiene

// Находит позицию соответствующего типа
bool PositionsScan( const string Symb, const ENUM_POSITION_TYPE Type );
Bueno, y qué nivel de resiliencia TC para escribir y para quién - cada uno decide por sí mismo.
 
fxsaber:

  1. No se ha abierto nada.
  2. Se establece un BuyLimit y luego no hay OrderSend.
  3. Después de un tiempo tiene 3 posiciones de COMPRA y BuyLimit.
  4. Después de un tiempo tiene 2 posiciones de COMPRA y BuyLimit.
  5. En un rato tienes 5 posiciones de COMPRA.
  6. Dentro de un tiempo se necesita detectar 1 posición de compra.
  7. Al cabo de cierto tiempo se detecta el punto 1.

Así que BuyLimit es una posición de EA. Los otros son manuales.

Cualquier ST puede distinguir entre las posiciones propias y las ajenas.

La conversación fue sobre sus propias posiciones.

 
Artyom Trishkin:

Así que BuyLimit es el que establece el asesor. Los otros son manuales.

Cualquier ST puede distinguir entre lo propio y lo ajeno.

La conversación fue sobre sus posiciones.

Nada manualmente o por otro Asesor Experto. Sólo se expone un BuyLimit. Todas las posiciones de COMPRA mencionadas tienen la misma magia que BuyLimit.

 
fxsaber:

Nada manualmente o por otro asesor. Sólo se establece un BuyLimit. Todas las posiciones de COMPRA mencionadas tienen el mismo número mágico de BuyLimit.

Así que - ejecución parcial.

 
Artyom Trishkin:

Así que - rendimiento parcial.

Sólo eso.

 
fxsaber:

Influencia QB para dejar de publicar código con errores, creo que valdría la pena.

 
Artyom Trishkin:

Sólo que no se salga inmediatamente de una orden con ID cero, sino que se procese en el mismo tick - una especie de espera establecida.

Sí, salir inmediatamente no es una buena solución.

 
Los comentarios no relacionados con este tema han sido trasladados a "Cualquier pregunta de los novatos en MQL4, ayuda y discusión sobre algoritmos y códigos".
 
Ivan Ivanov:


2018.02.20 15:20:35.845 Operaciones orden #66745055 comprar 0.01 / 0.01 EURUSDeur en el mercado hecho en 610.625 ms

2018.02.20 15:20:35.935 Trades deal #5461453 buy 0.01 EURUSDeur at 1.23403 done (based on order #66745055)

2018.02.20 15:20:35.845 TestBUY (EURUSDeur,M15) retcode=10009 deal=0 order=66745055

Si la solicitud se cumple (10009) , por qué tratar=0

¡Buenas tardes!

Tengo una pregunta similar para todos y especialmente para fxsaber.
Parece una pregunta primitiva, pero no encuentro respuesta.
Aquí https://www.mql5.com/ru/forum/6343/page939 me dijeron "Intenta buscarlo. fxsaber ha estado trabajando en este problema durante un tiempo. Lo que funcionó, no lo sé, no me interesa". Así que decidí preguntarle.

La cuestión es la siguiente. He abierto una posición y quiero imprimir el contenido de MqlTradeResult:

        MqlTradeRequest request={0};
        MqlTradeResult  result={0};
        
        request.action   = TRADE_ACTION_DEAL;    // type of trade operation
        request.symbol   = Pair1;                // symbol
        request.volume   = lots;                 // volume of lot
        request.type     = oper;                 // order type
        request.price    = priceOpen;            // price for opening
        request.deviation= Slippage;             // allowed deviation from the price
        request.magic    = magic;   
 //============================================================     
        if(OrderSend(request,result))       
        Print ("retcode = " +IntegerToString (result.retcode) + "; ");        
        Print ("deal = " +IntegerToString (result.deal) + "; ");
        Print ("order = " +IntegerToString (result.order) + "; "); 
        Print ("volume = " +DoubleToString (result.volume) + "; ");  
        Print ("price = " +DoubleToString (result.price) + "; ");

retcode, order y volume se imprimen, pero deal y price son siempre ceros.
Por favor, aconséjeme qué estoy haciendo mal y cómo puedo acceder (al menos, imprimirlo primero) al contenido de la estructura de resultados.

Вопросы от начинающих MQL5 MT5 MetaTrader 5
Вопросы от начинающих MQL5 MT5 MetaTrader 5
  • 2018.10.29
  • www.mql5.com
Подскажите пожалуйста, такой показатель тестера в жизни реален? И хороший это или плохой результат за год с депо 3000...