A continuación, tenemos que hacer una fijación adecuada que la barra se resuelve, pero aquí tenemos que calcular toda la aproximación a la TOR.
Por lo que veo en tu post, hay que hacer esto:
La esencia es que si el spread es más de lo normal, entonces salimos de nuevo aOnTick, y en un nuevo tick comprobamos el spread, si es normal - enviamos una orden y recordamos que hubo una operación en esta barra.
También hay una segunda vía:
En general, es necesario definir la lógica, cuando debe grabar, y no comprobar de nuevo hasta que la "Nueva barra" se forma.
Señores, ¿pueden darme una pista? He estado tratando de escribir los datos del indicador en un archivo para leerlo más tarde y construir un indicador basado en los datos. El indicador es de entrenamiento, calculo el volumen en cada tick de una barra determinada. Si el tick es positivo su volumen se añade con "+", si es negativo - con "-". Sumo los volúmenes acumulados obtenidos y obtengo un delta y considero este delta acumulado. Esto produce una curva. Sin embargo, esta curva se construye sólo en tiempo real. No se puede trazar en la historia. Para ello, he decidido escribir los datos en un archivo. Me quedé atascado en esta etapa. He conseguido con amargura que el código no genere errores de compilación. Sin embargo, el producto resultante no funciona. El indicador funcionaba antes. Después de haber adjuntado el código para escribir el archivo el indicador ya no funciona. El programa crea un archivo con un registro incomprensible y muere en este punto. Llevo todo el día aquí sentado y no consigo entenderlo. ¿Puede alguien ayudarme?
//+------------------------------------------------------------------+//| ProjectName |//| Copyright 2012, CompanyName |//| http://www.companyname.net |//+------------------------------------------------------------------+#property version"1.00"#property strict#property indicator_separate_window#property indicator_buffers2#property indicator_label1"Вверх"#property indicator_type1DRAW_LINE#property indicator_color1 Salmon
#property indicator_style1STYLE_SOLID#property indicator_width12#property indicator_label2"Вниз"#property indicator_type2DRAW_LINE#property indicator_color2clrDarkTurquoise#property indicator_style2STYLE_SOLID#property indicator_width22inputstring InpFileName="111.csv"; // Имя файла inputstring InpDirectoryName="Data"; // Имя каталога datetime Время=0; // Время прошлого бараdouble Bid1;
double Buf_1[];
// double ExtBuffer;long V1; // объем для текущего тика вверхlong V2; // накопленный объем для всех тиков вверх текущего бараlong V3; // объем текущего тика внизlong V4; // накопленный объем для всех тиков вниз для текущего бараlong V5; // отрицательные и положительные iVolume нарастающим итогом//+------------------------------------------------------------------+//| |//+------------------------------------------------------------------+voidOnInit()
{
IndicatorDigits(0);
SetIndexBuffer(0,Buf_1);
//SetIndexBuffer(1,Buf_2);
Bid1=Bid;
V5=0;
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constdatetime &time[],
constdouble &open[],
constdouble &high[],
constdouble &low[],
constdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
datetime Вр=Time[0]; // Время текущего бараif(Вр>Время) // Если новый бар
{
Время=Вр; // Запомнить// Buf_1[0]=0; // и обнулить последний элемент буфера
}
datetime date_Buf_1[]; // массив дат индикатора datetime time_Buf_1[]; // массив времени // --- считаю объем для положительных и отрицательных тиков if(Bid>=Bid1)
{
if(Bid>Bid1) // если тик положительный..
{
V1=iVolume(NULL,0,0); // если повышающий цену тик, то находим его объем
V2= V1 + V2;
}
else
{
V1=0; // если Bid1 = Bid2, т.е. изменение цены = 0, то iVolume этого тика присваиваем 0;
V2= V1 + V2;
}
}
else
{
V3 = iVolume(NULL, 0, 0); // если понижающий цену тик
V4 = V3 + V4; // то находим его объем
}
V5=V2-V4; // определяем разницу (дельту) между объемами положительных и отрицательных тиков
Bid1=Bid;
Buf_1[0]=V5; // в буфер сгружаем дельту// ExtBuffer = Buf_1 [0];// double macurrent=iMAOnArray(ExtBuffer,0,5,0,MODE_LWMA,0); // запись в файл данных буфера//--- установим для массивов признак таймсерии ArraySetAsSeries(Buf_1,true);
ArraySetAsSeries(date_Buf_1,true);
//--- скопируем таймсерию int copied=CopyTime(NULL,0,0,0,date_Buf_1);
//--- подготовим массив Buf_1 ArrayResize(Buf_1,copied);
//--- скопируем значения линии индикатора for(int i=0;i<copied;i++)
{
Buf_1[i]=V5;
}
//--- откроем файл для записи значений индикатора ResetLastError();
int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_CSV);
if(file_handle!=INVALID_HANDLE)
{
PrintFormat("Файл %s открыт для записи",InpFileName);
PrintFormat("Путь к файлу: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));
//--- сначала запишем значения индикатора FileWrite(file_handle,Buf_1[0]);
//--- запишем время и значения в файл for(int i=0;i<Buf_1[0];i++)
FileWrite(file_handle,time_Buf_1[i],Buf_1[i]);
//--- закрываем файл FileClose(file_handle);
PrintFormat("Данные записаны, файл %s закрыт",InpFileName);
}
elsePrintFormat("Не удалось открыть файл %s, Код ошибки = %d",InpFileName,GetLastError());
return(rates_total);
}
//+------------------------------------------------------------------+
Señores, ¿pueden darme una pista? He estado tratando de escribir los datos del indicador en un archivo para leerlo más tarde y construir un indicador basado en los datos. El indicador es de entrenamiento, calculo el volumen en cada tick de una barra determinada. Si el tick es positivo su volumen se añade con "+", si es negativo - con "-". Sumo los volúmenes acumulados obtenidos y obtengo un delta y considero este delta acumulado. Esto produce una curva. Sin embargo, esta curva se construye sólo en tiempo real. No se puede trazar en la historia. Para ello, he decidido escribir los datos en un archivo. Me quedé atascado en esta etapa. He conseguido con pena que el código no genere errores de compilación. Sin embargo, el producto resultante no funciona. El indicador funcionaba antes. Después de haber adjuntado el código para escribir el archivo el indicador ya no funciona. El programa crea un archivo con un registro incomprensible y muere en este punto. Llevo todo el día aquí sentado y no consigo entenderlo. ¿Puede alguien ayudarme?
Sería una buena idea mover el puntero al final del archivo antes de grabar.
Если выставить позицию за "правую границу" файла (больше, чем размер файла), то последующая запись в файл будет будет произведена не с конца файла, а с выставленной позиции. При этом между предыдущим концом файла и выставленной позицией будут записаны неопределенные значения...
¿Para qué sirve esto? He leído el enlace, pero no lo entiendo.
¿Para qué? Cuando se abre un archivo, el puntero se sitúa al principio del archivo y la información se escribe al principio del mismo. Para escribir en el lugar correcto, tienes que mover el puntero al lugar correcto.
¿Existe algún servicio de formación en línea donde se pueda aprender MQL4 de forma gratuita/pagada mediante ejemplos con un instructor? Casi he leído un tutorial de MQL4, pero no sé programar en absoluto. No estoy familiarizado con la programación antes. Estoy intentando aprender algo en este hilo, pero no he avanzado nada. ¿Puede darme algún consejo?
¿Existe algún servicio de formación en línea donde se pueda aprender MQL4 de forma gratuita/pagada mediante ejemplos con un tutor? Casi he leído un tutorial de MQL4, pero no sé programar en absoluto. No estoy familiarizado con la programación antes. Estoy intentando aprender algo en este hilo, pero no he avanzado nada. ¿Puede darme algunas sugerencias?
1. Trabajar con archivos en mql4 es lo mismo que en mql5.
2. Con el debido respeto a Sergei Kovalev, él también respondió a mis preguntas en su momento, pero en mi opinión, las lecciones de Kirill son más fáciles de entender. En Yandex escribes e inmediatamente 2 enlaces a su lección
Hola! El tutorial de la página web fue suficiente para mí, después de unos años de golpear sobre los bafles aprendí a escribir mis propios indicadores. Pero las preguntas permanecen. Ahora no entiendo por qué se confunden los indicadores. En la M1, después de unas 12 horas, algunos de ellos empiezan a dibujar incorrectamente pero señalan correctamente. Algunos dibujan y señalan incorrectamente. En la M5 siguen dibujando cinco veces más. ¿Puede darme una pista, por favor?
1. El manejo de los archivos en mql4 es el mismo que en mql5.
2. Con el debido respeto a Sergei Kovalev, él también respondió a mis preguntas en su momento, pero en mi opinión, la lección de Kirill es más fácil de entender. En Yandex, escriba en e inmediatamente 2 enlaces a su lección
¿Es posible aprender con la ayuda de las lecciones de "Kirill" si no te has dedicado a la programación antes? ¿Cuánto tiempo tarda?
Para iniciar sesión y usar el sitio web MQL5.com es necesario permitir el uso de Сookies.
Por favor, active este ajuste en su navegador, de lo contrario, no podrá iniciar sesión.
Ha iniciado sesión. La autenticación de dos factores se ha desactivado. Vuelva a configurarla y escanee un nuevo código QR, o continúe con la autenticación de dos factores desactivada.
Que inicialmente sea así.
A continuación, tenemos que hacer una fijación adecuada que la barra se resuelve, pero aquí tenemos que calcular toda la aproximación a la TOR.
Por lo que veo en tu post, hay que hacer esto:
La esencia es que si el spread es más de lo normal, entonces salimos de nuevo aOnTick, y en un nuevo tick comprobamos el spread, si es normal - enviamos una orden y recordamos que hubo una operación en esta barra.
También hay una segunda vía:
En general, es necesario definir la lógica, cuando debe grabar, y no comprobar de nuevo hasta que la "Nueva barra" se forma.
Te entiendo, ¡gracias!
Señores, ¿pueden darme una pista? He estado tratando de escribir los datos del indicador en un archivo para leerlo más tarde y construir un indicador basado en los datos. El indicador es de entrenamiento, calculo el volumen en cada tick de una barra determinada. Si el tick es positivo su volumen se añade con "+", si es negativo - con "-". Sumo los volúmenes acumulados obtenidos y obtengo un delta y considero este delta acumulado. Esto produce una curva. Sin embargo, esta curva se construye sólo en tiempo real. No se puede trazar en la historia. Para ello, he decidido escribir los datos en un archivo. Me quedé atascado en esta etapa. He conseguido con amargura que el código no genere errores de compilación. Sin embargo, el producto resultante no funciona. El indicador funcionaba antes. Después de haber adjuntado el código para escribir el archivo el indicador ya no funciona. El programa crea un archivo con un registro incomprensible y muere en este punto. Llevo todo el día aquí sentado y no consigo entenderlo. ¿Puede alguien ayudarme?
Señores, ¿pueden darme una pista? He estado tratando de escribir los datos del indicador en un archivo para leerlo más tarde y construir un indicador basado en los datos. El indicador es de entrenamiento, calculo el volumen en cada tick de una barra determinada. Si el tick es positivo su volumen se añade con "+", si es negativo - con "-". Sumo los volúmenes acumulados obtenidos y obtengo un delta y considero este delta acumulado. Esto produce una curva. Sin embargo, esta curva se construye sólo en tiempo real. No se puede trazar en la historia. Para ello, he decidido escribir los datos en un archivo. Me quedé atascado en esta etapa. He conseguido con pena que el código no genere errores de compilación. Sin embargo, el producto resultante no funciona. El indicador funcionaba antes. Después de haber adjuntado el código para escribir el archivo el indicador ya no funciona. El programa crea un archivo con un registro incomprensible y muere en este punto. Llevo todo el día aquí sentado y no consigo entenderlo. ¿Puede alguien ayudarme?
Sería una buena idea mover el puntero al final del archivo antes de grabar.
Sería bueno mover el puntero al final del archivo antes de escribir.
¿Para qué es esto? He leído el enlace, pero no lo entiendo.
¿Para qué sirve esto? He leído el enlace, pero no lo entiendo.
¿Para qué? Cuando se abre un archivo, el puntero se sitúa al principio del archivo y la información se escribe al principio del mismo. Para escribir en el lugar correcto, tienes que mover el puntero al lugar correcto.
Señores, ¿pueden darme una pista? Por segunda semana he estado tratando de escribir los datos del indicador en un archivo...
¿Lo has leído?
Todavía estoy aprendiendo MQL4. No he leído.
¿Existe algún servicio de formación en línea donde se pueda aprender MQL4 de forma gratuita/pagada mediante ejemplos con un instructor? Casi he leído un tutorial de MQL4, pero no sé programar en absoluto. No estoy familiarizado con la programación antes. Estoy intentando aprender algo en este hilo, pero no he avanzado nada. ¿Puede darme algún consejo?
Todavía estoy aprendiendo MQL4. No he leído.
¿Existe algún servicio de formación en línea donde se pueda aprender MQL4 de forma gratuita/pagada mediante ejemplos con un tutor? Casi he leído un tutorial de MQL4, pero no sé programar en absoluto. No estoy familiarizado con la programación antes. Estoy intentando aprender algo en este hilo, pero no he avanzado nada. ¿Puede darme algunas sugerencias?
1. Trabajar con archivos en mql4 es lo mismo que en mql5.
2. Con el debido respeto a Sergei Kovalev, él también respondió a mis preguntas en su momento, pero en mi opinión, las lecciones de Kirill son más fáciles de entender. En Yandex escribes e inmediatamente 2 enlaces a su lección
Hola! El tutorial de la página web fue suficiente para mí, después de unos años de golpear sobre los bafles aprendí a escribir mis propios indicadores. Pero las preguntas permanecen. Ahora no entiendo por qué se confunden los indicadores. En la M1, después de unas 12 horas, algunos de ellos empiezan a dibujar incorrectamente pero señalan correctamente. Algunos dibujan y señalan incorrectamente. En la M5 siguen dibujando cinco veces más. ¿Puede darme una pista, por favor?
1. El manejo de los archivos en mql4 es el mismo que en mql5.
2. Con el debido respeto a Sergei Kovalev, él también respondió a mis preguntas en su momento, pero en mi opinión, la lección de Kirill es más fácil de entender. En Yandex, escriba en e inmediatamente 2 enlaces a su lección
¿Es posible aprender con la ayuda de las lecciones de "Kirill" si no te has dedicado a la programación antes? ¿Cuánto tiempo tarda?