Preguntas de un "tonto" - página 85

 
AUser:

Estoy tratando de averiguar cómo guardar los datos en un archivo. He escrito el siguiente código:

Sólo se guarda en un archivo el último valor del precio. Quiero el valor de los precios en una columna. ¿En qué me he equivocado?

Consulte "Peculiaridades de funcionamiento al especificar banderas de lectura y escritura" en MQL5 Reference / Constantes, enumeraciones y estructuras estándar / Constantes de entrada/salida / Banderas de apertura de archivos
 

Soy muy tonto)) Escuché el consejo anterior y reescribí el código, aunque no entiendo por qué estaba así... de todas formas no ha cambiado nada. En idea es el programa más elemental para escribir algo en un archivo, y yo soy tan tonto...))

void OnInit()
{
double BID = SymbolInfoDouble(_Symbol,SYMBOL_BID);
int FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
FileIsEnding(FILE);
FileWrite(FILE,BID);
}
void OnDeinit(const int reason)
{
int FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
FileClose(FILE);
}

Sólo un recordatorio, estoy tratando de escribir un programa para guardar ticks en un archivo. Por alguna razón, sólo guarda el último tic.

 
AUser:

Soy muy tonto)) Escuché el consejo anterior y reescribí el código, aunque no entiendo por qué estaba así... de todas formas no ha cambiado nada. En idea es el programa más elemental para escribir algo en un archivo, y yo soy tan tonto...))

Sólo un recordatorio, estoy tratando de escribir un programa para guardar ticks en un archivo. Por alguna razón, sólo guarda el último tick.

Función
FileIsEnding(FILE);

No pone el cursor del archivo al final del mismo, como probablemente pretendía.

Resuélvelo y serás feliz. :)

 
AUser:

Soy muy tonto)) Escuché el consejo anterior y reescribí el código, aunque no entiendo por qué estaba así... de todos modos, nada ha cambiado. En idea es el programa más elemental para escribir algo en un archivo, y yo soy tan tonto...))

Sólo un recordatorio, estoy tratando de escribir un programa para guardar ticks en un archivo. Por alguna razón, sólo guarda el último tic.

Esta es la forma correcta de hacerlo.

int FILE;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   FILE = FileOpen("FILE",FILE_WRITE|FILE_CSV,'\t',CP_ACP);
//---
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   FileClose(FILE);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double BID = SymbolInfoDouble(_Symbol,SYMBOL_BID);
   FileWrite(FILE,BID);
  }
//+------------------------------------------------------------------+
 
sergey1294:

así es como debe ser

Exactamente, gracias))
 
ZahvatkiN:

He observado que en MT4 antes de abrir una operación se puede establecer el nivel de stop-loss y take-profit, pero en MT5 no, ¿o es posible, pero de otra manera?

 
sergeev:

ZahvatkiN:

Me he dado cuenta de que en MT4 antes de abrir una operación, se podía establecer el nivel de stoploss y takeprofit, pero MT5 no lo tiene o es posible, pero de otra manera?


Se discutió aquí https://www.mql5.com/ru/forum/1111/page561
 

Hola.Código.Trabajando TF M15.La transición al bloque de apertura y cierre tiene lugar en una nueva barra.

Si debido a una recotización (por ejemplo), la posición no se abre, entonces se reabrirá en la siguiente barra.

Y si el criterio de entrada (mirando el OHLC de la barra anterior) desaparece, la posición no se abrirá.

¿Lo he entendido bien?

ZS.Probablemente tenga sentido entrar al menos en un nuevo minuto.

void OnTick()
  {CopyTime (_Symbol,PERIOD_M15,0,1,time);
   if (lastbar==time[0]) return;
   lastbar=time[0];
   
  SearchForExit();
  SearchForEnter();
 
   return;
  }
 

Colegas, ¿podéis decir de un vistazo, sin benchmarking, qué es más rápido: ejecutar CopyTime() de todo el historial una vez o llamarlo cada vez sólo para algunas barras (que pueden ser menos que Bars() de todo el historial) y copiar el tiempo de sólo una -la barra actual- en Arr?

Si no te remontas al punto de referencia, sino que razonas lógicamente, basándote en el conocimiento, ¿cómo puedes justificar tu respuesta? ...Aunque entiendo que esto ya va en la dirección de C/C++...

 
Lo correcto es solicitar una profundidad razonablemente adecuada para cada desafío. Y no es necesario hacer consultas en profundidad. Lo importante es que el historial puede descargarse de forma asíncrona en cualquier momento.