Está perdiendo oportunidades comerciales:
- Aplicaciones de trading gratuitas
- 8 000+ señales para copiar
- Noticias económicas para analizar los mercados financieros
Registro
Entrada
Usted acepta la política del sitio web y las condiciones de uso
Si no tiene cuenta de usuario, regístrese
Wo, y fxsaber está molesto porque yo soy el único que se dio cuenta de este error, por lo que nadie necesita la lib )). Es que nuestra gente es muy observadora.
Una anécdota de la vida - Yo estaba conduciendo un webinar, repetí 10 veces que habrá una grabación. Al final vuelvo a decir, la grabación será mañana, si tienen preguntas - pregunten. Y ahora adivina la primera pregunta ))))
Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading
Como trabajar correctamente en MT5 con OrderSend
fxsaber, 2016.10.13 07:10
Autoescrito muy simple sobrecarga OrderSend: hasta OnTrade devuelve una respuesta, todos los OrderSends posteriores devuelven false. A medida que se recibe la respuesta - false forzado se cancela.
ZY Si quieres tener todas las funciones (no para SB), debes llamar OnTrade OnTick y OnTimer independientemente cuando llegue la sincronización correspondiente.
Tenga en cuenta esta circunstancia en MT5 cuando trabaje con las funciones habituales de MT4-Order: OrderSend, OrderModify, OrderClose, OrderDelete.
Es posible añadir la sincronización garantizada (como en MT4) del historial después de las órdenes comerciales a MT5 por usted mismo utilizando el algoritmo en la cita.
La idea es interesante. Sin embargo, convertido MT4 Expert Advisor en MT5 funciona lentamente.
Sólo la implementación de OrderSelect(index, SELECT_BY_POS, MODE_HISTORY) es lenta. Podría ser más rápido, pero entonces no habría una cierta clasificación de la historia, que está disponible en MT4 y que algunas personas utilizan. Si no se utiliza, sería posible hacer que este modo no funcione más lento que en MT4. Todo lo demás definitivamente no es más lento. Así que si no usas el mencionado modo OrderSelect, busca frenos fuera de MT4Orders.
En cuanto a las series de tiempo y otras cosas, este tema se hace hincapié en la descripción - no se ha tocado. Lo más probable es que usted tiene frenos allí.
ENUM_ORDER_TYPE_FILLING::ORDER_FILLING_RETURN.
Por lo tanto, si en OrderModify el llenado se establece a través de COrderInfo::TypeFilling(), entonces en el mismo RoboForexEU-MetaTrader 5 habrá un error lógico [Unsupported filling mode]. Sin embargo, este error no se produce en MetaQuotes-Demo - ¿está mal configurado el servidor del desarrollador?
Esto puede causar el error [Unsupported filling mode] en algunos servidores de trading al intentar modificar órdenes pendientes a través de OrderModify.
Si se ha encontrado con este problema, puede evitar este error de la siguiente manera
// https://www.mql5.com/ru/forum/1111/page1759#comment_2906850
if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(Request.symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE)
Request.type_filling = (ENUM_ORDER_TYPE_FILLING)::OrderGetInteger(ORDER_TYPE_FILLING);
biblioteca estándar y escribió un EA de prueba
#include <Trade\Trade.mqh>;
#include <Trade\OrderInfo.mqh>
// Vía MT5-Standard Library - sólo MT5
// Establece SellLimit y luego establece su SL/TP
void MT5Order( const double Price )
{
CTrade Trade;
if ((ENUM_SYMBOL_TRADE_EXECUTION)::SymbolInfoInteger(_Symbol, SYMBOL_TRADE_EXEMODE) == SYMBOL_TRADE_EXECUTION_EXCHANGE)
Trade.SetTypeFilling(ORDER_FILLING_RETURN);
Trade.OrderOpen(_Symbol, ORDER_TYPE_SELL_LIMIT, 1, 0, Price, 0, 0, ORDER_TIME_GTC, 0, __FUNCTION__);
const ulong Ticket = Trade.ResultOrder();
if (Ticket > 0)
{
COrderInfo Order;
if (Order.Select(Ticket))
Trade.OrderModify(Order.Ticket(), Order.PriceOpen(), Order.PriceOpen() + SLTP, Order.PriceOpen() - SLTP, Order.TypeTime(), Order.TimeExpiration());
}
}
#include <MT4Orders.mqh> // https://www.mql5.com/es/code/16006
// A través de MT4-OSJS - variante multiplataforma (MT4/5)
// Establece SellLimit y luego establece su SL/TP
void MT4Order( const double Price )
{
const int Ticket = OrderSend(_Symbol, OP_SELLLIMIT, 1, Price, 0, 0, 0, __FUNCTION__);
if ((Ticket > 0) && OrderSelect(Ticket, SELECT_BY_TICKET))
OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() + SLTP, OrderOpenPrice() - SLTP, OrderExpiration(), clrNONE);
}
void OnTick()
{
static bool FirstRun = true;
if (FirstRun)
{
const double Price = SymbolInfoDouble(_Symbol, SYMBOL_BID) + 100 * _Point;
MT5Order(Price); // Vía MT5-Standard Library - sólo MT5
MT4Order(Price); // A través de MT4-OSJS - variante multiplataforma (MT4/5)
FirstRun = false;
}
}
puedes comparar el código de las funciones MT4Order y MT5Order.
Sí, tienes razón, la lentitud se debe a OrdersHistoryTotal()
Podría valer la pena hacer una versión más rápida de esta función. Funcionará sin lentitud, pero no es 100% compatible con MT4.
Mirado el código ahora. Hay varias maneras de acelerarlo. Por ejemplo, en el tester puede dar un poco de sincronización con MT5-historia, ya que todo es sencillo en el tester.
Pero, para ser sincero, ni en el tester ni en el trading real me he encontrado nunca con tareas en las que el TS necesitara analizar el historial.
Por lo tanto, dudo que haga tal aceleración.
Podría valer la pena hacer una versión más rápida de esta función. Funcionará sin ningún retraso, pero no es 100% compatible con MT4.
Eché un vistazo al código ahora. Hay varias maneras de acelerarlo. Por ejemplo, en el tester puede importarte un bledo la sincronización con el historial de MT5, ya que todo es sencillo en el tester.
Pero, para ser sincero, ni en el tester ni en el trading real me he encontrado nunca con tareas en las que el TS necesitara analizar el historial.
Por eso dudo que haga tal aceleración.
Yo utilizo el análisis del historial, mi MM implica operar una situación, durante la cual tiene lugar el cierre y la apertura de posiciones, y el riesgo se tiene en cuenta utilizando el resultado financiero desde el inicio de la situación.
En la situación podemos imaginar que se identifica una tendencia - el trabajo en su desarrollo hasta su finalización es diferente - apertura y cierre de posiciones, pero es importante saber lo que puede arriesgar, porque cuanto más tiempo se ejecuta la tendencia, mayor es la probabilidad de su finalización - de ahí el diferente volumen de órdenes abiertas y puntos de salida.