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
Maintenant, un petit mot sur les drapeaux qui ne sont pas inclus dans la fonction FLG comme eux-mêmes sont indépendants.
A) Flg est un flag d'initialisation, il est nécessaire pour éviter d'ouvrir la pose après une panne ou un début de fonctionnement, s'il y a un signal d'entrée (ce signal est de longue durée), car il peut être trop tard. La logique est la suivante : si VSR!=0, c'est-à-dire s'il y a un signal, alors Flg=faux ; dès que le signal disparaît, le drapeau est remis à zéro.
if (!Flg){if (VSR () ==0) {Flg=true ; return (0);}}
B) Flq - drapeau intéressant, interdisant d'ouvrir une seconde position sur la même barre. Au départ, je voulais interdire l'ouverture d'une position à perte sur une seule barre mais je l'implémenterai lorsque j'aurai terminé avec ma fonction BuSll qui rendra la chose plus facile. Pour l'instant, il existe une telle variante.
Il est fixé à la position d'ouverture
{if (Trd_Up_X && VSR() > 0 && bu <HM_Up_X ) {
si (MOS( 0, lots, sl, tp, WindowExpertName(), mn)>=1) {Flq=false;}}
if (Trd_Dn_Y && VSR() < 0 && sll<HM_Dn_Y ) {
si (MOS( 1, lots, sl, tp, WindowExpertName(), mn)>=1) {Flq=false;}}
Au fait, j'ai écrit plus tôt sur la correction de cette fonction.
Il se réinitialise toutes les 4 heures. Si vous pensez que c'est trop pour certaines paires, vous pouvez ajouter à la fonction H1() réinitialiser le drapeau toutes les heures pour toutes les paires sauf certaines if (Symbol()!="GBPJPY" || Symbol()!="USDCHF"){ Flq = true ; }
Quelque chose à propos de la dernière version ne fonctionne pas.
L'optimiseur n'ouvre même pas une seule transaction à la première étape.
Le testeur avec des paramètres optimisés pour l'EA précédent fonctionne de la même manière.
Avez-vous trouvé pourquoi il n'est pas optimisé ?
Avez-vous trouvé pourquoi il n'a pas été optimisé ?
Non.
Je n'ai pas eu beaucoup de temps.
La dernière fois, il y a eu un problème à cause de l'absence d'historique.
Je suis juste en train de remettre l'histoire en marche.
Je vous tiendrai au courant demain matin.
Avez-vous trouvé pourquoi il n'a pas été optimisé ?
Il ne veut pas optimiser.
La septième version est optimisée avec les mêmes données historiques.
Le dernier ne le fera pas.
Partout le résultat est 0.
Reposé l'expert. Probablement une version corrompue. Le forum était gelé.
Et faites attention à ces lignes dans Expert Advisor
le solde initial, le minimum et le maximum, lorsque le conseiller expert effectue des transactions.
//------------------------------------------------------------------//
bool TrBlnc = true ; int StrtBlnc = 3000 ; int DBlnc = 1500 ; int UBlnc = 4000 ;
//------------------------------------------------------------------//
L'interdiction est implémentée dans la fonction bool FLG (int cs )
Un peu plus sur la logique du conseiller.
Il y a un problème - les lacunes fréquentes. Pendant les écarts, les paramètres optimisés et les conditions d'entrée sur le marché sont désynchronisés, car les valeurs des indicateurs et les prix se déchirent. Il faut du temps pour s'en remettre. Pour l'AO, j'ai défini 12 heures, et je considère un écart significatif comme une variation de prix de plus de 20 points standard (pour certaines paires, il peut et doit y avoir d'autres valeurs).
Ainsi, ce que nous avons fait :
Nous avons d'abord déterminé s'il y avait un vide
string dttm = StringConcatenate (Year(), ".",Month(), ".",Day()) ;
datetime smtm=StrToTime(dttm) ;
bool Gp ;
int shft = iBarShift(NULL,0,smtm) ;
double iOpn = iOpen (NULL,0,shft) ; double iCls = iClose (NULL,0,shft+1) ;
double dOC = MathAbs ((iOpn - iCls)/(Point*10)) ;
si (dOC>20) Gp = true ;
Si c'est le cas et que Gp = vrai, alors la condition pour l'interdiction est la suivante
((DayOfWeek( ) == 1 && Hour( ) <14) && Gp))
Bien que j'aie quelques doutes sur le fait que la fonction
iBarShift (NULL,0,smtm) ;
peut-être serait-il préférable de l'écrire de la manière suivante
iBarShift (NULL,60,smtm,true) ; mais non, le dernier paramètre par défaut est toujours faux ?
J'attends vos réflexions et vos suggestions.
Faites également attention à ces lignes dans l'EA
le solde initial, le minimum et le maximum, lorsque l'EA effectue des transactions.
//------------------------------------------------------------------//
bool TrBlnc = true ; int StrtBlnc = 3000 ; int DBlnc = 1500 ; int UBlnc = 4000 ;
//------------------------------------------------------------------//
Cette interdiction est mise en œuvre dans la fonction bool FLG (int cs )
Pourquoi avez-vous besoin de telles restrictions ?
Pourquoi avez-vous besoin de telles restrictions ?
Si vous n'en avez pas besoin, ne l'utilisez pas ! Je prépare l'EA pour de vrai et comme un EA multi-devises. À l'avenir, il s'agira d'une bifurcation, où l'EA ne sera pas autorisé à trader depuis le bas, afin de ne pas tout perdre en cas de force majeure, ainsi que depuis le haut - un oiseau dans la main vaut mieux qu'une grue))). MM cependant
Et maintenant des nouvelles du terrain ou du front))
Le week-end dernier, je n'ai pas eu le temps de préparer les fichiers du set pour la version L9, j'ai fini de travailler dessus tard plus les vacances)))).
J'ai donc décidé de faire l'expérience. J'ai mis la version de L9 avec les sets de la semaine dernière et d'une autre version.
Ce que nous avons à la fin des deux jours : solde -70$ Capitaux propres +420$ Bon coup !
Ainsi, si vous effectuez des tests ou des optimisations, assurez-vous que les capitaux propres se situent dans la fourchette définie dans les paramètres.
bool TrBlnc = true ; int StrtBlnc = 3000 ; int DBlnc = 1500 ; int UBlnc = 4000 ;
ou ajouter à int init() ligne if ( IsOptimization( ) ) TrBlnc = false;//if ( IsTesting() ) TrBlnc = false ;
Ça a marché.
L'optimisation est en cours.
Peut-être ces variables devraient-elles être déplacées en dehors du code ?
Ce serait plus facile pendant l'optimisation et dans le travail réel, aussi.
Le conseiller expert ne devra pas être recompilé à chaque fois que la balance est modifiée.