Test des "CopyTicks". - page 3

 

Je ne teste pas, je rappelle aux développeurs. La pratique montre qu'elle n'est jamais superflue)).

Quant à la direction du commerce - à Forts, elle est toujours donnée par l'échange.

L'algorithme actuellement utilisé dans le terminal n'est pas adapté à cela - il faut prendre des informations à la bourse.

 
Dmitriy Skub:

Je ne teste pas, je rappelle aux développeurs. La pratique montre qu'elle n'est jamais superflue)).

A propos de la direction du marché - sur les forts, elle est toujours donnée par l'échange.

L'algorithme qui est actuellement utilisé dans le terminal ne convient pas pour cela - nous devons nécessairement prendre des informations de l'échange.

Il y a juste plusieurs sujets sur les copyticks (et mqltickinfo) se terminant par "waiting".

En voici d'autres, par exemple :

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


Donc vraiment, "attendre". :-)

CopyTicks на медленном рынке
CopyTicks на медленном рынке
  • www.mql5.com
На нём видно, что после получения первых 10 тиков после запуска терминала, CopyTicks перестаёт работать:. - - Категория: автоматические торговые системы
 
Quelle est la situation de CopyTicks() maintenant dans la version 1210 ?
 
Михаил:
Et maintenant, dans la version 1210, comment se comporte CopyTicks() ?
Tout va bien :histoire de tiques
 
Михаил:
Et maintenant, dans la version 1210, comment ça se passe avec CopyTicks() ?

Ça marche presque. Pas de doublons. Les volumes ne sont pas perdus.

Mais, la direction des échanges dans les drapeaux est manquante. Le calcul de l'écart entre l'offre et la demande ne donne pas une fidélité correcte.

La structure réelle est ancienne et diffère de ce qui est décrit dans l'aide. Je comprends donc qu'il s'agit d'une construction intermédiaire. Par conséquent, comme toujours, nous attendons le prochain)).

 
Dmitriy Skub:

Ça marche presque. Pas de doublons. Les volumes ne sont pas manquants.

Mais, la direction des échanges dans les drapeaux est manquante. Le calcul de l'écart entre l'offre et la demande ne donne pas une fidélité correcte.

La structure réelle est ancienne et diffère de celle décrite dans l'aide. Je comprends donc qu'il s'agit d'une construction intermédiaire. Donc, comme toujours, nous attendons le prochain)).

Merci
 

Forum sur le trading, les systèmes de trading automatisés et l'essai de stratégies de trading

MqlTick

zimbabve15, 2016.02.03 06:15

Broker "Opening" tool ED-3.16 table de gauche - les données tick sont écrites par l'indicateur dans la procédure OnCalculate via la requête SymbolInfoTick, table de droite - via CopyTicks. Structure des deux : temps, bid, ask, flipper, volume, time_msec, flag.

Pourquoi les mêmes ticks ont-ils des volumes et des drapeaux différents ?

Si nous recevons des données brutes du courtier avec zéro drapeau via SymbolInfoTick, il semble que le terminal traite le tick entrant et lui attribue un drapeau en fonction de la comparaison avec le tick précédent ? Que faire des volumes ? La différence est significative.


Forum sur le trading, les systèmes de trading automatisés et les tests de stratégie

MqlTick

zimbabve15, 2016.02.03 06:39

FiboFroup broker table de ticks de gauchevia SymbolInfoTick , table de droite via CopyTicks. Structure des deux : heure, bid, ask, strike, volume, time_msec, flag.

Les drapeaux sont différents, car les valeurs bid/ask dans les mêmes ticks, sont écrites de manière différente.


 
zimbabve15:


Est-ce une épidémie que de poster des "feuilles" sans aucun code ?
 

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[])

{

string filename,file_buffer ;

StringConcatenate(nom du fichier,Symbol(), ".txt") ;

int file_handle=FileOpen(nom de fichier,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_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) ;

si(ArrayResize(g_ticks,total+1,1000)<0)

{

Alert(" : l'indicateur n'a pas assez de mémoire pour sauvegarder les données du prochain tick ;)

}

sinon

{

g_ticks[total]=tick ;

UpTick[taux_total-1]=total ;

}

si(total>999)

{

SaveTempTicks() ;

ArrayFree(g_ticks) ;

}

retour(taux_total) ;

}

void SaveTempTicks()

{

// Création du fichier d'historique des tics

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

si(hTicksFile<1)

retour ;

FileSeek(hTicksFile,0,SEEK_END) ;

//Écrire le fichier

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

while(i<total)

{

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

{

Print("L'enregistrement des données dans un fichier temporaire a échoué...") ;

retour ;

}

i++ ;

}

FileClose(hTicksFile) ;

}

 
Veuillez corriger votre message(Insérez le code correctement dans le forum). Il serait bon que vous joigniez le fichier lui-même (*.mq5) en plus du code dans votre message.
Raison: