
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
Ejecutar en el probador mt4orders_exampleexpert.mq5
Al escribir la biblioteca, yo estaba lejos de darse cuenta de todo el alcance de los posibles problemas con los usuarios. Antes de que todos ellos funcionó sin instrucciones.
Ejemplos concisos de la conversión de EA no sólo en la descripción de la biblioteca, sino también en su discusión - en los comentarios (aún más claro allí).
Gracias con ilan1_4_strict.mq4 todo funcionó, pero mi EAs dio 75 errores. Los errores son de este tipo:
Gracias con ilan1_4_strict.mq4 todo funcionó, pero mi ea dio 75 errores. Los errores son de esta naturaleza:
por lo menos, tirar toda la parte de gráficos.
¿Por qué lo necesita en el probador en absoluto?
Como mínimo, desecha todos los gráficos.
¿Para qué los necesitas en el probador?
Gracias con ilan1_4_strict.mq4 todo funcionó, pero mi ea dio 75 errores. Los errores son de este tipo:
En la discusión dijo y en la descripción hay estas palabras
Este trabajo afecta solo al sistema de ordenes.
La cuestión de la posibilidad de crear una biblioteca tan completa, cuando el código MQL4 puede trabajar en MetaTrader 5 sin cambios, no se ha resuelto.
¡Atención!
La biblioteca está contenida en un solo archivo - MT4Orders.mqh. Todos los demás archivos se adjuntan para ejemplos de uso de la biblioteca. Estos archivos no son necesarios para trabajar con la librería.
Durante la transición MT4->MT5 el obstáculo más difícil es el nuevo sistema de órdenes. MT4Orders elimina esta dificultad por completo. Las otras diferencias no son tan desalentadoras. Como son fácilmente reescritas - hay datos de referencia convenientes sobre este tema. Pues bien, la corrección del trabajo de la biblioteca se demostró de la siguiente manera
Se tomaron varios MT4/5-advisors de diferentes tipos (de kodobase) como ejemplo de uso: pips, news, martin, multicurrency, etc.
Foro sobre trading, sistemas automatizados de trading y testeo de estrategias de trading.
Errores, fallos, preguntas
fxsaber, 2016.10.20 15:54
#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;
}
}
La función MT4Order resaltada en amarillo hace lo mismo que la función MT5Order. En cualquier foro se entenderá inmediatamente el código amarillo, el código alternativo MT5 no.
Y cómo escribir para MT5 - cada uno decide por sí mismo. Yo, por ejemplo, uso MT4Orders y en algunos casos raros también puro (SB tiene funcionalidad débil) MQL5. Ambos estilos de escritura trabajan en paralelo. Pero si escribes sólo a través de MT4Orders, el sistema de órdenes será multiplataforma. Por lo tanto, la práctica de escribir código que se ejecuta en ambas plataformas sin cambios.
Así practico escribir código que se ejecute sin cambios en ambas plataformas.
Foro sobre trading, sistemas automatizados de trading y prueba de estrategias de trading
Cómo determinar el último precio de cierre de una orden (MQL5)?
fxsaber, 2016.12.05 10:25 AM
void OnStart()
{
if (OrderSelect(OrdersHistoryTotal() - 1, SELECT_BY_POS, MODE_HISTORY))
Alert(OrderClosePrice());
}
{
int oldticket=0;
int Ticket=0;
ArrayResize(Mas_LOT,OrdersTotal(),3);
ArrayInitialize(Mas_LOT,0);
for(int i=0; i <= OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_TRADES)){
if (OrderSymbol()==Symbol()&& OrderMagicNumber() == Magik){
Mas_LOT[i][0] = OrderTicket();
Mas_LOT[i][1] = OrderLots();
Mas_LOT[i][2] = OrderType();
Mas_LOT[i][3] = (OrderProfit() + OrderSwap() + OrderCommission());
Mas_LOT[i][4] = OrderStopLoss();
Mas_LOT[i][5] = OrderOpenPrice();
Mas_LOT[i][6] = OrderTakeProfit();
}}}}
como convertirlo para mt5 usando la libreria MT4Orders.mqh
Foro sobre comercio, sistemas automatizados de comercio y prueba de estrategias comerciales
Nueva versión de MetaTrader 5 build 1525: presentación del historial en forma de posiciones y mejora del tester
fxsaber, 2017.01.27 19:20
Ejecutando un script multiplataforma.
#property strict
#include <MT4Orders.mqh>
void OnStart()
{
MqlTick Tick;
if (SymbolInfoTick(_Symbol, Tick) && (OrdersTotal() == 0) &&
(OrderSend(_Symbol, OP_BUY, 1, Tick.ask, 0, 0, 0) > 0))
{
const double Lots[] = {0.6, 0.3, 0.1};
for (int i = 0; i < ArraySize(Lots); i++)
if (OrderSelect(0, SELECT_BY_POS) && SymbolInfoTick(_Symbol, Tick))
OrderClose(OrderTicket(), Lots[i], Tick.bid, 0);
const int Total = OrdersHistoryTotal();
for (int i = 0; i < Total; i++)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
OrderPrint();
}
}
En primer lugar en MT5-Hedge. Obtenemos una impresión tan agradable de MT4
#114769087 2017.01.27 19:57:25 buy 0.60 EURUSD 1.06838 0.00000 0.00000 2017.01.27 19:57:25 1.06829 0.00 0.00 -5.40 0
#114769088 2017.01.27 19:57:25 buy 0.30 EURUSD 1.06838 0.00000 0.00000 2017.01.27 19:57:25 1.06829 0.00 0.00 -2.70 0
#114769089 2017.01.27 19:57:25 buy 0.10 EURUSD 1.06838 0.00000 0.00000 2017.01.27 19:57:26 1.06829 0.00 0.00 -0.90 0
y un informe clásico
Como confirmación, ejecutamos el mismo script en MT4.
Informe clásico de MT4
E impresión del registro del script
#170039287 2017.01.27 20:00:57 buy 0.60 EURUSD 1.06854 0.00000 0.00000 2017.01.27 20:00:57 1.06836 0.00 0.00 -10.80 to #170039289 0
#170039289 2017.01.27 20:00:57 buy 0.30 EURUSD 1.06854 0.00000 0.00000 2017.01.27 20:00:58 1.06836 0.00 0.00 -5.40 to #170039290 0
#170039290 2017.01.27 20:00:57 buy 0.10 EURUSD 1.06854 0.00000 0.00000 2017.01.27 20:00:58 1.06836 0.00 0.00 -1.80 from #170039289 0
Usted puede ver claramente que el registro de la secuencia de comandos en MT4 y MT5 coincide - obras multiplataforma.
ZY Si la lógica del script se escribe para MT5 a través de SB, el script no funcionará correctamente. En general, es incluso difícil decir cómo escribir una lógica MQL4 tan simple para MT5.
seleccion por simbolo y majic no funciona
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
{
}
OrderSelect no funciona no selecciona una orden (ticket por indice) para trabajar con ella, ejemplo simple en adjunto y no funciona en mt5 por alguna razon