[ARCHIVE !] Toute question de débutant, pour ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 4. - page 385

 
Comment utiliser les fichiers d'indicateurs et de conseillers experts dans EX4 ?
 
Las-tochka:

Il suffit de les transférer sur un graphique, de définir des paramètres et d'utiliser les données de la base de données.


Bien que cela ne soit pas mieux))))

Types de fichiers


Dans MQL4 il y a 3 types de fichiers avec le code du programme : mq4, ex4 et mqh.

Les fichiers de type mq4 sont le code source d'un programme. Les fichiers de ce type contiennent les codes sources de tous les types de programmes (Expert Advisors, scripts et indicateurs). Pour créer les codes des programmes, on utilise MetaEditor. Une fois qu'un code de programme est complètement ou partiellement terminé, il peut être sauvegardé et réouvert ultérieurement dans cet éditeur pour d'autres modifications. Les fichiers de type mq4 ne peuvent pas être utilisés pour l'exécution dans le terminal client. Pour lancer un programme en vue de son exécution, il faut le compiler au préalable. Après la compilation du code source du programme, un fichier portant le même nom et l'extension ex4 est créé.

Un fichier ex4 est un programme compilé qui est prêt à être utilisé dans le terminal du client. Pour les fichiers de ce type, la possibilité d'édition n'est pas prévue. Si l'on doit apporter des modifications à un programme, il faut s'adresser à son code source (fichier mq4), le modifier et le compiler à nouveau. Le nom d'un fichier ex4 ne permet pas de déterminer le type de programme auquel il fait référence - qu'il s'agisse d'un script, d'un conseiller expert ou d'un indicateur. Les fichiers ex4 peuvent être utilisés comme fichiers de bibliothèque.

Les fichiers de type mqh sont des fichiers d'inclusion. Il s'agit du code source des blocs de programmes utilisateurs fréquemment utilisés. Ces fichiers peuvent être inclus dans les sources des Expert Advisors, des scripts et des indicateurs personnalisés lors de la compilation. Les fichiers inclus contiennent généralement des descriptions des fonctions à importer (voir par exemple les fichiers stdlib.mqh ou WinUser32.mqh) ou des descriptions des constantes et variables courantes (stderror.mqh et WinUser32.mqh). En règle générale, les fichiers mqh sont stockés dans le répertoire Directory_terminal\experts\include.

Les fichiers d'inclusion sont appelés ainsi car ils sont généralement "inclus" au stade de la compilation dans le fichier source principal à l'aide de la directive #include. Bien que les fichiers mqh puissent contenir le code source d'un programme et que MetaEditor les compile, ils ne sont pas indépendants et autosuffisants, c'est-à-dire qu'ils ne nécessitent pas de compilation pour produire des fichiers exécutables de type ex4. Les fichiers .mq4 peuvent également être utilisés comme fichiers d'inclusion, qui doivent également être stockés dans le répertoire terminal\experts\include .

Dans le navigateur du terminal client, dans les sections "Expert Advisors", "Custom Indicators" et "Scripts", seuls sont affichés les noms de fichiers ayant l'extension ex4 et se trouvant dans le répertoire correspondant. Les fichiers compilés dans une ancienne version de MetaEditor ne sont pas lancés et sont grisés.

Il existe également d'autres types de fichiers qui ne forment pas un programme complet, mais qui sont utilisés lors de la création de programmes d'application. Par exemple, un programme peut être compilé à partir de plusieurs fichiers distincts ou une bibliothèque créée au préalable peut être utilisée à cette fin. Des bibliothèques de fonctions utilisateur peuvent être créées par l'utilisateur pour stocker des blocs de programmes utilisateur fréquemment utilisés. Il est recommandé de stocker les bibliothèques dans le répertoire terminal\experts\libraries. Les fichiers mq4 et ex4 peuvent être utilisés comme bibliothèques. Les bibliothèques ne peuvent pas être lancées seules. L'utilisation de fichiers d'inclusion est préférable à l'utilisation de bibliothèques, en raison de la consommation supplémentaire de ressources informatiques lors de l'appel de fonctions de bibliothèque.

Dans la première partie du tutoriel "Introduction à la programmation MQL4", nous nous intéresserons aux fichiers de code source des programmes mq4 et aux fichiers compilés des programmes ex4.

 
où dois-je le mettre pour l'appliquer sur le graphique ?
 
Las-tochka:


J'ai trouvé une autre chose amusante, un robot, lorsqu'il est testé avec différents courtiers sur leurs terminaux mt4, donne des résultats de test différents en raison de l'absence de cotations, à la fois l'un et l'autre ! Mais avec tout cela, il n'y a pas du tout d'erreur d'alignement ? ??? Je suis choqué ! ?!??

L'effet papillon se manifeste))))

Qu'en pensez-vous ?

Je pense que le testeur n'a pas à montrer les profits/pertes potentiels de manière fiable, il s'agit seulement de voir si la logique de l'EA fonctionne correctement et si toutes les erreurs mathématiques et logiques du code sont correctes.
 

BeerGod:
Думаю что тестер никоем образом не обязан достоверно показывать потенциальную прибыль/убытки, он лишь для того чтобы увидеть правильно ли рабоает логика советника, всё ли в порядке с математикой и логическими ошибками в коде.

Y a-t-il des informations sur le bien-fondé de la question ?

La question n'est pas celle du profit. Et le testeur, à mon avis, est un outil, et la façon de l'utiliser dépend de chacun d'entre nous.


 
Myth63:
Où dois-je le placer pour pouvoir l'utiliser sur le graphique ?


Si vous voulez exécuter un expert, un indicateur ou un script sur un graphique, il suffit de faire un clic gauche sur le programme correspondant dans la barre d'outils du navigateur et de le faire glisser sur le graphique.

Mais il est préférable de télécharger le tutoriel depuis https://book.mql4.com/ru/ (en bas à gauche de la page) Bonne chance !

 

Bonne journée !

J'utilise un indicateur qui montre les MA d'autres périodes.

J'en mets deux dans la fenêtre, le terminal commence à ralentir terriblement !

Experts, quel est le problème avec la lenteur de l'indicateur, il n'a que 15 lignes ?

Fixe qui comprend.

Je vous en suis reconnaissant.

#property indicator_chart_window
#property indicator_buffers 1

extern double tf = 240; // Тф с какого береть МА
extern int period = 34; // Период МА
extern string _МА_ = "0--SMA 1--EMA 2--SMMA 3--LWMA";
extern int method = 2; // Метод МА
extern int price = 4; //
extern int shift = 0; //

extern string _LINE_ = "ЦВЕТ ТОЛЩИНА СТИЛЬ БАР";
extern color clr = Yellow; // Цвет линии
extern int width = 2; // Толщина линии
extern int style = 2; // Стиль линии
extern int CountBars = 500; // Количество баров отрисовки МА

datetime time_0;
double ma[];
//+------------------------------------------------------------------+
int init() {
//----
SetIndexBuffer(0, ma);
SetIndexStyle(0, DRAW_LINE, style, width, clr);
SetIndexLabel(0, "MA " + tf);
IndicatorShortName("Moving Average (" + tf + ", " + period + ")");
if (CountBars >= Bars)
CountBars = Bars;
SetIndexDrawBegin(0, Bars - CountBars + 1);
return (0);
}
//+------------------------------------------------------------------+
int start() {
//----
int cb = IndicatorCounted();
SetIndexDrawBegin(0, Bars - CountBars + 1);
int i = Bars - cb - 1;
double ctf = Period();
double r = tf / ctf;
while(i >= 0) {
int k = MathFloor(i / r);
ma[i] = iMA(Symbol(), tf, period, shift, method, price, k);
i --;
}
if (Time[0] == time_0) return (0);
time_0 = Time[0];
return (0);
}
//+------------------------------------------------------------------+

 
Myth63:
Où dois-je le mettre dans le graphique ?
Les experts des dossiers, et tous les autres types sont similaires par leur nom. Après avoir redémarré le terminal, ils seront disponibles dans le navigateur, mais ils seront grisés, contrairement à ceux qui ont le code source.
 

Bonjour, veuillez me conseiller : Mon problème est le suivant : dans mon conseiller expert, il ne devrait y avoir qu'un seul signal de transaction (lorsque les trois indicateurs ont franchi leurs zones respectives).

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1)

Voici la question. Comment écrire cette ligne correctement, pour qu'il n'y ait qu'UN seul signal. (Sinon, il s'avère que le conseiller expert fait des transactions dans l'algorithme suivant : le RSI franchit le seuil de 35 - transaction ; le STOCH franchit le seuil de 20 - transaction ; le CCI franchit le seuil de -100 - transaction ; nous avons donc trois transactions).

Il n'y a qu'UN SEUL signal de transaction lorsque les trois indicateurs ont franchi leurs zones.

 
artemka_1981:

Bonjour, veuillez me conseiller : Mon problème est le suivant : dans mon conseiller expert, il ne devrait y avoir qu'un seul signal de transaction (lorsque les trois indicateurs ont franchi leurs zones respectives).

if(SignalType_1 && (RSI >= 35 && Stoch >= 20 && CCI >= -100)) return(+1)

Voici la question. Comment écrire cette ligne correctement, pour qu'il n'y ait qu'UN seul signal. (Sinon, il s'avère que le Conseiller Expert fait des transactions selon l'algorithme suivant : RSI croise la ligne 35 - transaction ; STOCH croise la ligne 20 - transaction ; CCI croise la ligne -100 - transaction ; il fait trois transactions)

Le signal d'un accord n'est donné que lorsque les trois indicateurs ont franchi leur zone.

Essayez de cette façon :

bool GO = true;// глобальная переменная
//---------------------

if(GO && SignalType_1 && RSI >= 35 && Stoch >= 20 && CCI >= -100) {GO=false; return(+1);}//запретить повторный вход
//---------------
{OrderClose(.......); GO = true; }//открыть семафор при закрытии позиции.