Funciona incorrectamente en mt5 en comparación con mt4. Abre una operación y la cierra inmediatamente.
¿Cuál puede ser el problema?
Rápidamente corrí a través del código. Es extraño que bajo MT4 tales condiciones fueron escritas
if(!OrderSend(symbol_,type_,LotNormalize(lot_),price_,slip,0,0,"C4F"+IntegerToString(ticket_))) Print("Error: ",GetLastError()," during setting the pending order.");
Nunca llegará a Imprimir. Y el código es sin duda un asesino HDD.
// Lista de cambios:// 26.11.2018// Fix: Comentario de posición MT4 mágica y cerrada: los campos correspondientes de las operaciones de apertura tienen mayor prioridad que los de las operaciones de cierre.// Fix: Se tiene en cuenta el cambio poco frecuente de MT5-OrdersTotal y MT5-PositionsTotal durante el cálculo de MT4-OrdersTotal y MT4-OrderSelect.// Fix: Las órdenes que han abierto una posición pero no han tenido tiempo de ser borradas por MT5 ya no son consideradas por la librería.
Destacado. Este es el tipo de guión
#include <MT4Orders.mqh>
#include <Debug.mqh> // https://c.mql5.com/3/173/Debug.mqh#define AskSymbolInfoDouble(_Symbol, SYMBOL_ASK)
voidOnStart()
{
OrderSend(_Symbol, OP_BUYLIMIT, 0.1, Ask, 0, 0, 0);
int Total = _P(OrdersTotal());
while (!IsStopped())
{
constint NewTotal = OrdersTotal();
if (Total != NewTotal)
{
_P(NewTotal);
// if (NuevoTotal < Total)// Alerta("https://www.mql5.com/ru/forum/290673#comment_9493241");
Total = NewTotal;
}
}
}
en las cuentas de Hedge solía aparecer
2018.11.2615:27:46.513voidOnStart(), Line = 10: OrdersTotal() = 12018.11.2615:27:56.128voidOnStart(), Line = 18: NewTotal = 22018.11.2615:27:56.128voidOnStart(), Line = 18: NewTotal = 1
Ahora solo esto.
2018.11.2615:30:29.224voidOnStart(), Line = 10: OrdersTotal() = 1
Para Netting-cuentas en todos los casos, no hemos logrado superar MT5-causas (orden ejecutada no se elimina) todavía. Es decir, la libreria no sabe (en realidad, y no deberia) sortear los defectos de la plataforma MT5 en todos los casos.
La biblioteca no es capaz (de hecho, no debería ser capaz) de eludir las deficiencias de la propia plataforma MT5 en todos los casos.
Por ejemplo, este
abriendo una posición y OrdersTotal aumentó en uno.
Se ejecutó y OrdersTotal disminuyó en uno, pero PositionsTotal no aumentó en uno. Es decir, hay una posición, pero el Terminal no lo sabe.
Por ejemplo, no hay ni posiciones ni órdenes - TotalPosiciones = 0, TotalOrdenes = 0.
Usted coloca una orden de mercado. En este caso PosicionesTotal = 0, ÓrdenesTotal = 1. La orden de mercado se ejecuta - ÓrdenesTotal = 1.
La orden de mercado se ejecuta - TotalOrdenes = 0. ¡Pero PositionsTotal = 0!
Cuesta mucho esfuerzo encontrarse con esta situación. Es aún más difícil darse cuenta. Pero MT5 crea tales trucos.
MT4Orders intenta evitar estas cosas en la medida de lo posible, pero no siempre es posible. Si los autores de la TS tratan de tener en cuenta estos defectos de la plataforma en pura MQL5 o SB, sólo podemos adivinar. Es poco probable.
Tratando de utilizar su biblioteca. MT5 modo Hedge build 1959, modo de prueba.
La llamada OrderSelect(... , SELECT_BY_TICKET) devuelve false para la orden en el historial, aunque la orden está claramente presente en los registros del tester. ¿Puede sugerir cómo es posible?
fxsaber
Funciona incorrectamente en mt5 en comparación con mt4. Abre una operación y la cierra inmediatamente.
¿Cuál puede ser el problema?
fxsaber
Funciona incorrectamente en mt5 en comparación con mt4. Abre una operación y la cierra inmediatamente.
¿Cuál puede ser el problema?
Rápidamente corrí a través del código. Es extraño que bajo MT4 tales condiciones fueron escritas
Nunca llegará a Imprimir. Y el código es sin duda un asesino HDD.
Lo ajusté para multiplataforma.
fxsaber
Gracias por la ayuda. Pero el problema es el mismo.
Abre una orden y la cierra inmediatamente. Y así cada segundo en círculo y sin parar.
No hay tal problema en mt4.
Gracias por su ayuda. Pero el problema es el mismo.
Abre una orden y la cierra inmediatamente. Y así cada segundo en círculo y sin parar.
No hay tal problema en mt4.
Por desgracia, no tengo la oportunidad de entender su problema.
Destacado. Este es el tipo de guión
en las cuentas de Hedge solía aparecer
Ahora solo esto.
Para Netting-cuentas en todos los casos, no hemos logrado superar MT5-causas (orden ejecutada no se elimina) todavía. Es decir, la libreria no sabe (en realidad, y no deberia) sortear los defectos de la plataforma MT5 en todos los casos.
Foro sobre negociación, sistemas automatizados de negociación y ensayo de estrategias de negociación
Bibliotecas: MT4Orders
fxsaber, 2017.04.20 06:20
La última versión siempre está aquí.Actualizado.
Por ejemplo, este
abriendo una posición y OrdersTotal aumentó en uno.
Por ejemplo, no hay ni posiciones ni órdenes - TotalPosiciones = 0, TotalOrdenes = 0.
Usted coloca una orden de mercado. En este caso PosicionesTotal = 0, ÓrdenesTotal = 1. La orden de mercado se ejecuta - ÓrdenesTotal = 1.
La orden de mercado se ejecuta - TotalOrdenes = 0. ¡Pero PositionsTotal = 0!
Cuesta mucho esfuerzo encontrarse con esta situación. Es aún más difícil darse cuenta. Pero MT5 crea tales trucos.
MT4Orders intenta evitar estas cosas en la medida de lo posible, pero no siempre es posible. Si los autores de la TS tratan de tener en cuenta estos defectos de la plataforma en pura MQL5 o SB, sólo podemos adivinar. Es poco probable.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: MT4Orders
fxsaber, 2018.12.05 19:43
Hola :)
Tratando de utilizar su biblioteca. MT5 modo Hedge build 1959, modo de prueba.
La llamada OrderSelect(... , SELECT_BY_TICKET) devuelve false para la orden en el historial, aunque la orden está claramente presente en los registros del tester. ¿Puede sugerir cómo es posible?