Cualquier pregunta de los recién llegados sobre MQL4 y MQL5, ayuda y discusión sobre algoritmos y códigos - página 813

 
WinProject:
Buenas noches, podrían aconsejarme por favor. Estoy leyendo FileOpen de su archivo de texto .csv. Hay tres valores en cada línea del archivo, que son el instrumento, la fecha (en orden descendente) y el precio. Quiero obtener el comentario del precio de la última fecha (es la primera línea), pero el archivo se lee siempre hasta el final y obtengo el comentario del precio más antiguo (de la última línea). ¿Cómo puedo obtener el valor del precio de la primera línea en el comentario sin ninguna solución?

FileSeek()

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Из соображений безопасности в языке MQL5 строго контролируется работа с файлами. Файлы, с которыми проводятся файловые операции средствами языка MQL5, не могут находиться за пределами файловой "песочницы". общая папка всех установленных на компьютере терминалов  – обычно расположена в каталоге C:\Documents and Settings\All Users\Application...
 
Igor Makanu:

Cada corredor tiene sus propios proveedores de cotizaciones, a menudo hay varios de ellos, además de los algoritmos para suavizar las cotizaciones

Si necesita ticks reales, transfiera su TS a MQL5 - hay pruebas por ticks reales, ahorrará tiempo durante las pruebas

Háblenos brevemente de los algoritmos de alisado de cotizaciones, ¿en qué consisten? mql5 permite realizar pruebas sobre el historial de la TS por ticks, es decir, el resultado será uno a uno con requotes y gaps, y existe la posibilidad de realizar una prueba sobre ticks teniendo en cuenta el Bid Asc, requotes y gaps?

 
Seric29:

Háblenos brevemente de los algoritmos para suavizar las cotizaciones, ¿cuáles son? En mql5 existe la posibilidad de probar el TS en el historial de ticks, es decir, el resultado será uno a uno teniendo en cuenta recotizaciones y gaps, y existe la posibilidad de probar en ticks teniendo en cuenta Bid Asc así como recotizaciones y gaps?

toda la información está disponible públicamente en este foro, acerca de las garrapatas buscar mensajes de administrador 6-8 años atrás

sobre la calidad de las pruebas - artículos

 
Alexey Viktorov:

¿Tal vez intentar abrir un volumen de cierre opuesto y aplicar OrderCloseBy?

Saludos. ¿Pueden decirme qué estoy haciendo mal?

OrderCloseBy() da error 3

3

ERR_INVALID_TRADE_PARAMETERS

Parámetros incorrectos

ejemplo de código

#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict


datetime time; int ticket_buy; int ticket_sell; 
bool open=false; bool close=false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
ticket_sell=OrderSend(NULL, OP_SELL, 0.1, Bid, 0, 0, 0, "", 0, 0, Red);  

time=TimeCurrent();
//if (Digits() ==3 || Digits()==5) {trailingStep*=10; }
   return(INIT_SUCCEEDED);
  }
void OnDeinit(const int reason)
  {
//---
   
  }
void OnTick(){
if(!open && TimeCurrent()>=time+2600){
   ticket_buy=OrderSend(NULL, OP_BUY, 0.1, Ask, 1, 0, 0, "buy order", 0, 0, Blue);
   open=true;
}
if(!close && TimeCurrent()>=time+3000){
   if(OrderCloseBy(ticket_buy, ticket_sell , Black)){ }
   close=true;
}

}//+------------------------------------------------------------------+
 
Andrey Sokolov:

Saludos. ¿Pueden decirme qué estoy haciendo mal?

OrderCloseBy() da error 3

3

ERR_INVALID_TRADE_PARAMETERS

Parámetros incorrectos

ejemplo de código

el código funciona en el probador, ordenandoOrderSend(), sin precio y lote normalizados

y la segunda condición - no todos los brokers permiten usar OrderCloseBy() - creo que esta es la principal razón del error

 
Igor Makanu:

el código funciona en el probador,

Estás cerrando, ¿verdad? ¿Qué corredor tiene? Tengo a Alpari.
 
Igor Makanu:

Ordenar OrderSend(), no normalizar el precio y el lote


No entiendo muy bien qué hay que normalizar aquí y por qué, cuando no hay operaciones matemáticas.
 
Andrey Sokolov:
No se sabe muy bien qué hay que normalizar aquí y por qué cuando no hay operaciones matemáticas.

Porque tienes que acostumbrarte a enviar precios normalizados al servidor, ahora la orden se envía - mañana no, estarás constantemente buscando tus errores

¿Qué tiene de complicado? Toma, cópialo tú mismo si es complicado:

ticket_sell=OrderSend(_Symbol, OP_SELL, 0.1, Bid,10,
                     NormalizeDouble(0.0,_Digits),NormalizeDouble(0.0,_Digits), "", 0, 0, clrRed);  

las operaciones matemáticas no tienen nada que ver, solía haber un comportamiento extraño de la terminal en las nuevas construcciones, a todas las preguntas los desarrolladores escribieron - escribe tus códigos correctamente - tienen razón )))

en el servidor Metakvot comprobar su código - todo funciona

SZS: 0 no es 0.0 , por lo que puede que no se obtenga el resultado esperado - también es una buena costumbre no buscar errores ;)

 
Igor Makanu:

y la segunda condición - no todos los corredores permiten el uso de OrderCloseBy() - Creo que esta es la razón principal del error

En general, entiendo correctamente que si Alpari y probablemente otros no lo soportan, es mejor no usarlo en absoluto marcarlo como que no funciona?

 
Andrey Sokolov:

En general, ¿estoy en lo cierto al suponer que si Alpari y posiblemente otros no lo soportan, lo mejor es no usarlo en absoluto, marcarlo como que no funciona?

la función está funcionando

por desgracia, hay que comprobar la configuración de cada servidor - hay muy pocas soluciones universales (alpars también tiene stoplevel = 0, puede que se sorprenda con el trailing)

si no me equivoco, en MarketInfo() había una solicitud para determinar si un servidor cerrará una posición mediante una orden contraria