iCustom est une bonne solution pour iCustom mais iCustom exécute toujours l'ensemble du code de l'indicateur, et si j'ai besoin de beaucoup de paramètres d'indicateur dans un EA (et c'est le cas) alors au lieu d'un calcul d'indicateur nous en aurons plusieurs, ce qui peut ralentir considérablement le processus jusqu'à ce que le tick actuel soit manqué, j'ai oublié les variables prédéfinies......
Je suis désolé, mais je ne comprends pas pourquoi oncalculate devrait transmettre les valeurs des variables prédéfinies si elles sont globales et également disponibles.
Regardez un exemple
//+-------------------------------------------------------+//|Параметры функции PROBA.mq4|//+-------------------------------------------------------+#property strictvoidOnStart()
{
Alert(Сумма(2,5));
int Сум=0;
Сумма(2,5,Сум); // Передаем в функцию 2 числа и получаем суммуAlert(Сум);
}
int Сумма(int a, int b)
{
return a+b;
}
void Сумма(int a, int b, int & s)
{
s= a+b;
}
Les paramètres d'une fonction peuvent être des entrées - que nous lui passons - et des sorties - qu'elle nous renvoie.
ijonhson: int rates_Bars ; int prev_calculated=0 ;
Ces variables sont nécessaires pour calculer l'ensemble de la ligne d'indicateur, mais vous avez besoin d'une seule valeur. Tout est beaucoup plus simple. Analyser le programme d'indicateurs et déterminer la formule utilisée pour le calcul. Et utiliser cette formule dans le conseiller expert
Les gars, dites-moi comment mettre en œuvre cet algorithme :
Il existe une série temporelle avec le volume Volume
Je veux comparer le Volume[1] pour qu'il soit plus grand que chacune des barres précédentes du Volume[1] et spécifier une fenêtre (nombre) de barres précédentes avec une variable externe (extern int).
Écrire un échantillon de code, si ce n'est pas difficile
Les gars, dites-moi comment mettre en œuvre cet algorithme :
Il existe une série temporelle avec le volume Volume
Je veux comparer le Volume[1] pour qu'il soit plus grand que chacune des barres précédentes du Volume[1] et spécifier une fenêtre (nombre) de barres précédentes avec une variable externe (extern int).
Écrire un échantillon de code, si ce n'est pas difficile
Est-ce que ça a marché ? Comment cela fonctionnait-il avant ?
Il a fonctionné sans erreur, il me semble l'avoir supprimé moi-même, par auto-remplacement via ctrl+h, et je ne l'ai pas remarqué >_<. De toute façon, c'est probablement les Illuminati qui ont fait ça. Merci encore !
Les gars, dites-moi comment mettre en œuvre cet algorithme :
Il existe une série temporelle avec le volume Volume
Je veux comparer le Volume[1] pour qu'il soit plus grand que chacune des barres précédentes du Volume[1] et spécifier une fenêtre (nombre) de barres précédentes avec une variable externe (extern int).
Écrire un échantillon de code, si ce n'est pas difficile
Ce n'est pas difficile. Je l'ai écrit sur mes genoux de mémoire (j'ai peut-être oublié quelque chose)...
//+------------------------------------------------------------------+bool IsLastVolumeTheLargest(conststring symbol_name, constENUM_TIMEFRAMES timeframe,constint start_pos,constint count)
{
long array[]; // Массив для хранения объёмов//--- если скопировалось меньше, чем нужно, вернём falseif(CopyTickVolume(symbol_name,timeframe,start_pos,count,array)<count) returnfalse;
//--- вернём флаг того, что максимальный объём находится в последней ячейке массива (соответствует индексу start_pos)returnArrayMaximum(array)==count-1;
}
//+------------------------------------------------------------------+
Bonjour. Je ne peux pas partager le fichier. La tâche - J'ai besoin que le fichier de l'ancienne période (par exemple M20) soit généré sur М1 pendant le test manuel dans МТ4 (MQL4) testeur. Dans ce but, j'ai écrit un indicateur basé sur le script PeriodConverter. Étant donné qu'en mode test, il est impossible d'enregistrer le fichier (EURUSD20.csv) directement dans le dossier Historique, le fichier est enregistré dans le dossier partagé par tous les terminaux - \\MetaQuotes\Terminal\Common. Ensuite, le script bouclé, travaillant sur un graphique M1 standard, copie les données du fichier EURUSD20.csv vers le fichier EURUSD20.hst, situé dans le dossier History. Le fichier EURUSD20.csv ne peut pas être ouvert dans le script, si en même temps il est ouvert dans l'indicateur dans le testeur (5004 ERR_FILE_CANNOT_OPEN File open error). Si vous retirez l'indicateur du testeur, le fichier du script est ouvert et copié sans problème. Le fichier est ouvert dans l'indicateur comme suit : ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_COMMON) ; Le fichier du script est ouvert comme suit : ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ) ; Veuillez indiquer mon erreur.
Bonjour. Je ne peux pas partager le fichier. La tâche - J'ai besoin que le fichier de l'ancienne période (par exemple M20) soit généré sur М1 pendant le test manuel dans МТ4 (MQL4) testeur. Dans ce but, j'ai écrit un indicateur basé sur le script PeriodConverter. Étant donné qu'en mode test, il est impossible d'enregistrer le fichier (EURUSD20.csv) directement dans le dossier Historique, le fichier est enregistré dans le dossier partagé par tous les terminaux - \\MetaQuotes\Terminal\Common. Ensuite, le script bouclé, travaillant sur un graphique M1 standard, copie les données du fichier EURUSD20.csv vers le fichier EURUSD20.hst, situé dans le dossier History. Le fichier EURUSD20.csv ne peut pas être ouvert dans le script, si en même temps il est ouvert dans l'indicateur dans le testeur (5004 ERR_FILE_CANNOT_OPEN File open error). Si vous retirez l'indicateur du testeur, le fichier du script est ouvert et copié sans problème. Le fichier est ouvert dans l'indicateur comme suit : ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_COMMON) ; Le fichier est ouvert dans le script comme suit : ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ|FILE_COMMON) ; Veuillez me signaler mon erreur.
Je ne comprends pas. Cette option indique l'emplacement du fichier - \MetaQuotes\Terminal\Common. Sans cette option, je ne pourrai pas récupérer le fichier qui a été généré dans le testeur. Sans cette option, le fichier sera recherché dans MQL4\Files - et je ne peux pas y placer le fichier du testeur.
Merci, mais elle est
iCustom pour aider
iCustom est une bonne solution pour iCustom mais iCustom exécute toujours l'ensemble du code de l'indicateur, et si j'ai besoin de beaucoup de paramètres d'indicateur dans un EA (et c'est le cas) alors au lieu d'un calcul d'indicateur nous en aurons plusieurs, ce qui peut ralentir considérablement le processus jusqu'à ce que le tick actuel soit manqué, j'ai oublié les variables prédéfinies......
int rates_Bars ;
variable globale définie
int prev_calculated=0 ;
se bloque sur le nombre d'éléments du tableau
Je suis désolé, mais je ne comprends pas pourquoi oncalculate devrait transmettre les valeurs des variables prédéfinies si elles sont globales et également disponibles.
Regardez un exemple
Les paramètres d'une fonction peuvent être des entrées - que nous lui passons - et des sorties - qu'elle nous renvoie.
Ces variables sont nécessaires pour calculer l'ensemble de la ligne d'indicateur, mais vous avez besoin d'une seule valeur. Tout est beaucoup plus simple. Analyser le programme d'indicateurs et déterminer la formule utilisée pour le calcul. Et utiliser cette formule dans le conseiller expert
Les gars, dites-moi comment mettre en œuvre cet algorithme :
Il existe une série temporelle avec le volume Volume
Je veux comparer le Volume[1] pour qu'il soit plus grand que chacune des barres précédentes du Volume[1] et spécifier une fenêtre (nombre) de barres précédentes avec une variable externe (extern int).
Écrire un échantillon de code, si ce n'est pas difficile
Les gars, dites-moi comment mettre en œuvre cet algorithme :
Il existe une série temporelle avec le volume Volume
Je veux comparer le Volume[1] pour qu'il soit plus grand que chacune des barres précédentes du Volume[1] et spécifier une fenêtre (nombre) de barres précédentes avec une variable externe (extern int).
Écrire un échantillon de code, si ce n'est pas difficile
Est-ce que ça a marché ? Comment cela fonctionnait-il avant ?
Il a fonctionné sans erreur, il me semble l'avoir supprimé moi-même, par auto-remplacement via ctrl+h, et je ne l'ai pas remarqué >_<. De toute façon, c'est probablement les Illuminati qui ont fait ça. Merci encore !
Les gars, dites-moi comment mettre en œuvre cet algorithme :
Il existe une série temporelle avec le volume Volume
Je veux comparer le Volume[1] pour qu'il soit plus grand que chacune des barres précédentes du Volume[1] et spécifier une fenêtre (nombre) de barres précédentes avec une variable externe (extern int).
Écrire un échantillon de code, si ce n'est pas difficile
Ce n'est pas difficile. Je l'ai écrit sur mes genoux de mémoire (j'ai peut-être oublié quelque chose)...
Bonjour. Je ne peux pas partager le fichier. La tâche - J'ai besoin que le fichier de l'ancienne période (par exemple M20) soit généré sur М1 pendant le test manuel dans МТ4 (MQL4) testeur. Dans ce but, j'ai écrit un indicateur basé sur le script PeriodConverter. Étant donné qu'en mode test, il est impossible d'enregistrer le fichier (EURUSD20.csv) directement dans le dossier Historique, le fichier est enregistré dans le dossier partagé par tous les terminaux - \\MetaQuotes\Terminal\Common. Ensuite, le script bouclé, travaillant sur un graphique M1 standard, copie les données du fichier EURUSD20.csv vers le fichier EURUSD20.hst, situé dans le dossier History. Le fichier EURUSD20.csv ne peut pas être ouvert dans le script, si en même temps il est ouvert dans l'indicateur dans le testeur (5004 ERR_FILE_CANNOT_OPEN File open error). Si vous retirez l'indicateur du testeur, le fichier du script est ouvert et copié sans problème. Le fichier est ouvert dans l'indicateur comme suit : ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_COMMON) ;
Le fichier du script est ouvert comme suit : ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ) ;
Veuillez indiquer mon erreur.
Bonjour. Je ne peux pas partager le fichier. La tâche - J'ai besoin que le fichier de l'ancienne période (par exemple M20) soit généré sur М1 pendant le test manuel dans МТ4 (MQL4) testeur. Dans ce but, j'ai écrit un indicateur basé sur le script PeriodConverter. Étant donné qu'en mode test, il est impossible d'enregistrer le fichier (EURUSD20.csv) directement dans le dossier Historique, le fichier est enregistré dans le dossier partagé par tous les terminaux - \\MetaQuotes\Terminal\Common. Ensuite, le script bouclé, travaillant sur un graphique M1 standard, copie les données du fichier EURUSD20.csv vers le fichier EURUSD20.hst, situé dans le dossier History. Le fichier EURUSD20.csv ne peut pas être ouvert dans le script, si en même temps il est ouvert dans l'indicateur dans le testeur (5004 ERR_FILE_CANNOT_OPEN File open error). Si vous retirez l'indicateur du testeur, le fichier du script est ouvert et copié sans problème. Le fichier est ouvert dans l'indicateur comme suit : ExtHandle=FileOpen(c_symbol+(string)20+".csv",FILE_BIN|FILE_WRITE|FILE_SHARE_WRITE|FILE_READ|FILE_SHARE_READ|FILE_COMMON) ;
Le fichier est ouvert dans le script comme suit : ExtHandleR=FileOpen("EURUSD20.csv",FILE_BIN|FILE_READ|FILE_SHARE_READ|FILE_COMMON) ;
Veuillez me signaler mon erreur.
L'avez-vous fait remarquer ?
L'avez-vous précisé ?
Je ne comprends pas. Cette option indique l'emplacement du fichier - \MetaQuotes\Terminal\Common. Sans cette option, je ne pourrai pas récupérer le fichier qui a été généré dans le testeur. Sans cette option, le fichier sera recherché dans MQL4\Files - et je ne peux pas y placer le fichier du testeur.