Errores, fallos, preguntas - página 555

 
sergey1294:
En Alpari no se pueden colocar stops inmediatamente durante la ejecución del mercado, primero hay que abrir una posición y luego modificarla
Por favor, aclárese: ¿es imposible colocar una orden con topes utilizando sólo un comando OrderSend? ¿O se trata de llamar a PositionSelect antes de establecer un stop en una orden existente?
 
Snaf:

Метатестер пилит диск HDD

Versión 527.

Si miras en el monitor del proceso sigue y sigue con esta tontería.

No hay actividad en la red, no está conectado a la nube. El terminal y el metatester no están funcionando. No se está modificando ningún archivo.

No hay información sobre los nombres de los archivos en la captura de pantalla anterior.

Adjunte un registro más detallado en forma de texto.

 
idispatch:

En MQL4 se podía crear una orden con stops de inmediato, pero en MQL5 no es posible - hay que establecer los stops después de la creación de la orden.

¿Soy lento (por favor, dame un ejemplo de código) o es mi intención?

También puede crear una orden con un stop y un beneficio.

Usted tiene en su solicitud

reqest.sl=SL;

reqest.tp=TP;

Esto es un error. Los niveles de SL y TP deben establecerse a una distancia de los precios de mercado, por lo que estas líneas deben tener un aspecto similar al siguiente

para una posición de compra:

request.sl = SymbolInfoDouble(Symbol(),SYMBOL_BID) - SL * SymbolInfoDouble(Symbol(),SYMBOL_POINT);

request.tp = SymbolInfoDouble(Symbol(),SYMBOL_ASK) + TP * SymbolInfoDouble(Symbol(),SYMBOL_POINT);

invertir para una posición de venta

request.sl = SymbolInfoDouble(Symbol(),SYMBOL_ASK) + SL * SymbolInfoDouble(Symbol(),SYMBOL_POINT);

request.tp = SymbolInfoDouble(Symbol(),SYMBOL_BID) - TP * SymbolInfoDouble(Symbol(),SYMBOL_POINT);

Espero no equivocarme en ningún sitio...

 
idispatch:
Por favor, aclare: en Alpari, ¿es imposible colocar una orden con stops con un solo comando OrderSend? ¿O nos referimos a que antes de fijar los stops de una orden existente, tenemos que llamar a PositionSelect?

Puedes, ¿por qué no?

¿En qué modo se realiza el pedido?

 
ShurikAn:

Puedes hacerlo con un stop y un beneficio.

Usted tiene en su consulta

reqest.sl=SL;

reqest.tp=TP;

Esto es un error. Los niveles de SL y TP deben establecerse a una distancia de los precios de mercado, por lo que estas líneas deben tener este aspecto:

Por supuesto, el SL y el TP se definen como el suyo. Además, escribí más arriba que si sólo agrego

m_request.action = TRADE_ACTION_SLTP;
OrderSend(m_request, m_result);

entonces las paradas se establecerán con éxito en el SL y el TP especificados, lo que no ocurrirá si no se definen correctamente.

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Типы торговых операций - Документация по MQL5
 
Renat:

Puedes, ¿por qué no?

¿En qué modo se realiza el pedido?

MqlTradeRequest m_request;
MqlTradeResult m_result;

m_request.action = TRADE_ACTION_DEAL;
m_request.symbol = Symbol();
m_request.type = ORDER_TYPE_BUY;

m_request.price = Precio; // calculado de antemano y verdadero :)

m_request.sl = SL; // ya está calculado y es correcto :)
m_request.tp = TP; // calculado de antemano y verdadero :)

m_request.volume = Vol;

m_request.type_filling = ORDER_FILLING_FOK;
m_request.deviation = 10;
m_request.type_time = 0;
m_request.expiration = 0;
m_request.magic = 0;
m_request.comment = "";

OrderSend(m_request, m_result);
 
idispatch:
Por favor, aclárense: ¿en Alpari no se puede colocar una orden con stops utilizando un solo comando OrderSend? ¿O se trata de llamar a PositionSelect antes de fijar los stops de una orden existente?

Exactamente. Con las paradas sólo se puede hacer en modo instantáneo

Tipos de ejecución

El terminal cliente dispone de cuatro modos de ejecución de órdenes:

  • Ejecución instantánea
    En esta modalidad, la ejecución de una orden de mercado se realiza al precio ofrecido al corredor. Al enviar una solicitud de ejecución, el terminal sustituye automáticamente el precio actual de la orden. Si el corredor acepta los precios, la orden se ejecutará. Si el corredor no acepta el precio solicitado, entonces se produce la llamada "Requote" - el corredor devuelve los precios a los que se puede ejecutar la orden.
  • Ejecución de la solicitud
    En este modo, la orden de mercado se ejecuta al precio recibido previamente del corredor. Antes de enviar una orden de mercado, se solicitan los precios de ejecución al corredor. Una vez recibida, la ejecución de la orden a ese precio puede ser confirmada o rechazada.
  • Ejecución del mercado
    En este modo de ejecución de órdenes de mercado, la decisión sobre el precio de ejecución la toma el corredor sin ninguna aprobación adicional del operador. El envío de una orden de mercado en esta modalidad implica un acuerdo anticipado con el precio al que se ejecutará.

Al pulsar el botón "Vender por mercado" o "Comprar por mercado", se creará una orden para que el corredor ejecute una operación de venta o de compra, respectivamente, al precio definido por el corredor.

  • En el modo de ejecución "Por mercado", los niveles de Stop Loss y Take Profit sólo pueden fijarse para una posición ya abierta, modificándola.
  • El comentario de una orden puede ser modificado por un corredor o un servidor. Por ejemplo, en el caso de cierre en Stop Loss o Take Profit, incluirá la información pertinente.
  • Si el campo Ejecución está inactivo, significa que la posibilidad de modificarlo está bloqueada en el servidor.
  • Un doble clic en la ventana de apertura de la posición abrirá/ocultará la garrapata.
  • Ejecución de la bolsa
    En este modo, las operaciones comerciales realizadas en el terminal del cliente se transfieren a un sistema comercial externo (bolsa). Lasoperaciones se ejecutan a los precios de las ofertas actuales del mercado.

El modo de ejecución de cada símbolo es seleccionado por su empresa de corretaje.


Todo está escrito en la ayuda del terminal. Pero nadie lo lee.

Para conocer el tipo de ejecución hay que solicitar la propiedad con la función SymbolInfoInteger() con el identificador SYMBOL_TRADE_EXEMODE

SYMBOL_TRADE_EXEMODE

Modo de comercio

ENUM_SYMBOL_TRADE_EXECUTION




ENUM_SYMBOL_TRADE_EXECUTION

Identificador

Descripción

SOLICITUD_DE_EJECUCIÓN_DE_SÍMBOLO

Comercio por encargo

SÍMBOLO_COMERCIO_EJECUCIÓN_INSTANTE

Comerciar a precios de streaming

SÍMBOLO_COMERCIO_EJECUCIÓN_MERCADO

Ejecución_mercado_de_ejecución

INTERCAMBIO_DE_SÍMBOLOS_DE_EJECUCIÓN

Ejecución del intercambio


 

Muchas gracias, ahora lo entiendo.

Y leí la ayuda, lo que no encontré fue mi descuido + la falta de elaboración de referencias cruzadas o algo así en la ayuda:)

 

Al probar el Asesor de Cirujanos https://www.mql5.com/ru/code/611

con una modificación de

[cita].

Para empezar a probar, en la línea 84 sustituya:
double Limit=SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_LIMIT);
por
double Limit= 5;

[/quote]

En una cuenta de demostración normal, cuando la pestaña Comercio de la sección Herramientas está activa, la vista del terminal cambia al final de la prueba.

Archivos adjuntos:
Error01.JPG  382 kb
Error02.JPG  346 kb
 

En una cuenta demo, este es el lío:

Sigue reiniciando al principio.

Y en el XAUUSD, presionas F9 y luego

aunque no se puede hacer doble clic en la ventana de órdenes en la "visión general del mercado".

P.D. Sé que no se puede operar con el XAUUSD).

Razón de la queja: