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
No estoy probando, estoy recordando a los desarrolladores. La práctica demuestra que nunca es superflua)).
En cuanto a la dirección del comercio, en Forts siempre la da la bolsa.
El algoritmo que se utiliza actualmente en el terminal no es adecuado para esto: hay que tomar la información de la bolsa.
No estoy probando, estoy recordando a los desarrolladores. La práctica demuestra que nunca es superflua)).
Sobre la dirección del trato - en los fuertes siempre se da por el cambio.
El algoritmo que se utiliza ahora en el terminal no es adecuado para esto: debemos tomar necesariamente la información del intercambio.
Sólo hay varios temas sobre copyticks (y mqltickinfo) que terminan con "waiting".
Aquí hay más, por ejemplo:
https://www.mql5.com/ru/forum/61607
Así que realmente, "esperando". :-)
Y ahora, en la compilación 1210, ¿cómo va CopyTicks()?
Y ahora, en la compilación 1210, ¿cómo es con CopyTicks()?
Casi funciona. No hay duplicados. Los volúmenes no se pierden.
Pero falta la dirección de las operaciones en las banderas. El cálculo de la oferta y la demanda no ofrece una fidelidad adecuada.
La estructura real es antigua y difiere de lo descrito en la ayuda. Así que entiendo que se trata de una construcción intermedia. Así que, como siempre, estamos esperando el siguiente))
Casi funciona. No hay duplicados. No faltan los volúmenes.
Pero falta la dirección de las operaciones en las banderas. El cálculo de la oferta y la demanda no ofrece una fidelidad adecuada.
La estructura real es antigua y difiere de la descrita en la ayuda. Así que entiendo que se trata de una construcción intermedia. Así que, como siempre, estamos esperando el siguiente))
Foro sobre comercio, sistemas de comercio automatizados y prueba de estrategias de comercio
MqlTick
zimbabve15, 2016.02.03 06:15
Herramienta "Apertura" del broker ED-3.16 tabla izquierda - los datos de los ticks son escritos por el indicador en el procedimiento OnCalculate a través de la petición SymbolInfoTick, tabla derecha - a través de CopyTicks. Estructura de ambos: tiempo, bid, ask, flipper, volumen, time_msec, flag.
¿Por qué los mismos ticks tienen volúmenes y banderas diferentes?
Si recibimos los datos en bruto del corredor con cero banderas a través de SymbolInfoTick, entonces parece que el terminal procesa el tick entrante y le asigna una bandera basada en la comparación con el tick anterior? ¿Qué hacer con los volúmenes? La diferencia es significativa.
Foro sobre comercio, sistemas de comercio automatizados y pruebas de estrategias
MqlTick
zimbabve15, 2016.02.03 06:39
Tabla de ticks de la izquierda del corredor FiboFroupa través de SymbolInfoTick , tabla de la derecha a través de CopyTicks. Estructura de ambos: hora, bid, ask, strike, volumen, time_msec, flag.
Las banderas son diferentes, porque los valores de oferta y demanda en los mismos ticks, se escriben de diferentes maneras.
CopyTicks
//////////////////////////////////////////////////////////////////////////////////////////////////////////
MqlTick tick_array[];
int OnInit()}
void SaveTicksToFile(MqlTick &massiveTicks[])
{
cadena nombre_archivo,archivo_buffer;
StringConcatenate(nombre de archivo,Symbol(),".txt");
int file_handle=FileOpen(nombre de archivo,FILE_READ|FILE_WRITE|FILE_ANSI|FILE_SHARE_READ);
FileSeek(file_handle,0,SEEK_END);
int sizeMassiveTicks=ArraySize(massiveTicks);
int i=0;
while(i<sizeMassiveTicks)
{
StringConcatenate(file_buffer,TimeToString(massiveTicks[i].time,TIME_DATE|TIME_SECONDS)," ",DoubleToString(massiveTicks[i].bid,_Digits)," ",DoubleToString(massiveTicks[i].ask,_Digits)," ",DoubleToString(massiveTicks[i].last,_Digits)," ",IntegerToString(massiveTicks[i].volume,_Digits)," ",IntegerToString(massiveTicks[i].time_msc)," ",IntegerToString(massiveTicks[i].flags,_Digits));
FileWrite(file_handle,file_buffer);
i++;
}
FileClose(file_handle);
}
SymbolInfoTick
////////////////////////////////////////////////////////////////////////
int OnCalculate(const int rates_total,
const int prev_calculado,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
MqlTick last_tick;
SymbolInfoTick(Symbol(),last_tick);
TickStruct tick={0,0,0,0,0,0,0};
tick.time=TimeCurrent();
tick.bid=last_tick.bid;
tick.ask=last_tick.ask;
tick.flag=last_tick.flags;
tick.last=last_tick.last;
tick.time_msc=last_tick.time_msc;
tick.volume=last_tick.volume;
int total=ArraySize(g_ticks);
if(ArrayResize(g_ticks,total+1,1000)<0)
{
Alert(": el indicador no tiene suficiente memoria para guardar los datos del siguiente tick;)
}
si no
{
g_ticks[total]=tick;
UpTick[rates_total-1]=total;
}
if(total>999)
{
SaveTempTicks();
ArrayFree(g_ticks);
}
return(rates_total);
}
void SaveTempTicks()
{
// Creación del archivo de historial de ticks
int hTicksFile=FileOpen(Symbol()+"fullTicks.tks",FILE_BIN|FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE);
if(hTicksFile<1)
volver;
FileSeek(hTicksFile,0,SEEK_END);
// registro de archivos
int total=ArraySize(g_ticks),i=0;
while(i<total)
{
if(FileWriteStruct(hTicksFile,g_ticks[i])==0)
{
Print("El almacenamiento de datos en un archivo temporal ha fallado...");
volver;
}
i++;
}
FileClose(hTicksFile);
}