Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
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.
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". :-)
Et maintenant, dans la version 1210, comment se comporte CopyTicks() ?
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)).
Ç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)).
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.
CopyTicks
//////////////////////////////////////////////////////////////////////////////////////////////////////////
MqlTick tick_array[] ;
int OnInit()}
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) ;
}