
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
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.
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". :-)
E ora, nella build 1210, come sta andando CopyTicks()?
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))
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))
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.
CopyTicks
//////////////////////////////////////////////////////////////////////////////////////////////////////////
MqlTick tick_array[];
int OnInit()}
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);
}