Testare 'CopyTicks'. - pagina 3

 

Non sto testando, sto ricordando agli sviluppatori. La pratica dimostra che non è mai superfluo)).

Per quanto riguarda la direzione dell'affare - in Forti è sempre data dallo scambio.

L'algoritmo attualmente utilizzato nel terminale non è adatto a questo - bisogna prendere le informazioni dallo scambio.

 
Dmitriy Skub:

Non sto testando, sto ricordando agli sviluppatori. La pratica dimostra che non è mai superfluo)).

Riguardo alla direzione dell'affare - sui forti è sempre data dallo scambio.

L'algoritmo che è ora usato nel terminale non è adatto a questo - dobbiamo necessariamente prendere informazioni dallo scambio.

Ci sono solo diversi topic sui copyticks (e mqltickinfo) che finiscono con "waiting".

Qui c'è di più, per esempio:

https://www.mql5.com/ru/forum/61607


Quindi, davvero, "in attesa". :-)

CopyTicks на медленном рынке
CopyTicks на медленном рынке
  • www.mql5.com
На нём видно, что после получения первых 10 тиков после запуска терминала, CopyTicks перестаёт работать:. - - Категория: автоматические торговые системы
 
Qual è la situazione con CopyTicks() ora nella build 1210?
 
Михаил:
E ora, nella build 1210, come sta andando CopyTicks()?
Tutto va bene:storia di zecca
 
Михаил:
E ora, nella build 1210, com'è con CopyTicks()?

Quasi funziona. Nessun duplicato. I volumi non si perdono.

Ma manca la direzione degli scambi nelle bandiere. Il calcolo bid/ask non dà la giusta fedeltà.

La struttura attuale è vecchia e differisce da quella descritta nell'aiuto. Quindi capisco che questa è una build intermedia. Quindi, come sempre, aspettiamo il prossimo))

 
Dmitriy Skub:

Funziona quasi. Nessun duplicato. I volumi non mancano.

Ma manca la direzione degli scambi nelle bandiere. Il calcolo bid/ask non dà la giusta fedeltà.

La struttura reale è vecchia e differisce da quella descritta nella guida. Quindi capisco che questa è una build intermedia. Quindi, come sempre, aspettiamo il prossimo))

Grazie
 

Forum sul trading, sistemi di trading automatico e test di strategie di trading

MqlTick

zimbabve15, 2016.02.03 06:15

Broker "Opening" tool ED-3.16 tabella sinistra - i dati di tick sono scritti dall'indicatore nella procedura OnCalculate tramite la richiesta SymbolInfoTick, tabella destra - tramite CopyTicks. Struttura di entrambi: tempo, bid, ask, flipper, volume, time_msec, flag.

Perché le stesse zecche hanno volumi e bandiere diverse?

Se riceviamo dati grezzi dal broker con zero flag attraverso SymbolInfoTick, allora sembra che il terminale elabori il tick in arrivo e gli assegni un flag in base al confronto con il tick precedente? Cosa fare con i volumi? La differenza è significativa.


Forum sul trading, sistemi di trading automatico e test di strategia

MqlTick

zimbabve15, 2016.02.03 06:39

FiboFroup media la tabella dei tick di sinistratramite SymbolInfoTick, la tabella di destra tramite CopyTicks. Struttura di entrambi: tempo, bid, ask, strike, volume, time_msec, flag.

Le bandiere sono diverse, perché i valori bid/ask negli stessi tick, scritti in modi diversi.


 
zimbabve15:


È un'epidemia postare "fogli" senza alcun codice?
 

CopyTicks

//////////////////////////////////////////////////////////////////////////////////////////////////////////

MqlTick tick_array[];

int OnInit()
{
int copied=CopyTicks(_Symbol,tick_array,COPY_TICKS_ALL,0,countHistoryTicks);
if(Save_File!=NOT_SAVE)
{
SaveTicksToFile(tick_array);
}
return(INIT_SUCCEED);

}


void SaveTicksToFile(MqlTick &massiveTicks[])

{

nome del file, file_buffer;

StringConcatenate(filename,Symbol(),".txt");

int file_handle=FileOpen(filename,FILE_READ|FILE_WRITE|FILE_ANSI|FILE_SHARE_READ);

FileSeek(file_handle,0,SEEK_END);

int sizeMassiveTicks=ArraySize(massiveTicks);

int i=0;

mentre(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_calculated,

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);

se(ArrayResize(g_ticks,totale+1,1000)<0)

{

Alert(": l'indicatore non ha abbastanza memoria per salvare i dati del prossimo tick;)

}

else

{

g_ticks[totale]=tick;

UpTick[rates_total-1]=totale;

}

se(totale>999)

{

SaveTempTicks();

ArrayFree(g_ticks);

}

return(rates_total);

}

void SalvaTempTicks()

{

// Creazione del file di cronologia dei tick

int hTicksFile=FileOpen(Symbol()+"fullTicks.tks",FILE_BIN|FILE_READ|FILE_WRITE|FILE_SHARE_READ|FILE_SHARE_WRITE);

se(hTicksFile<1)

ritorno;

FileSeek(hTicksFile,0,SEEK_END);

// file record

int total=ArraySize(g_ticks),i=0;

mentre(i<totale)

{

if(FileWriteStruct(hTicksFile,g_ticks[i])==0)

{

Print("Saving data to a temporary file failed...");

ritorno;

}

i++;

}

FileClose(hTicksFile);

}

 
Per favore correggi il tuo post(Inserisci il codice correttamente nel forum). Sarebbe bene che tu allegassi il file stesso (*.mq5) oltre al codice nel tuo messaggio.