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 voudrais poser une question complémentaire...
Il y a des paires sur lesquelles l'EA n'optimise en rien, même les premiers résultats n'apparaissent pas. USDCHF, par exemple.
A quoi peut-il être lié ?
Eh bien, c'est reparti.
Encore une fois pour la vingt-sixième fois.
Il n'existe pas d'instruments identiques en termes d'évolution des prix, mais des instruments similaires.
Nous n'essaierons pas de deviner ou de conjurer sur les graphiques où entrer et quand le faire.
C'est pourquoi s'il n'y a pas de résultats, ou seulement des résultats médiocres, il faut changer les fourchettes et les périodes d'optimisation, et vous pouvez également jouer avec le SL et les niveaux de suivi. Pour certains symboles, j'ai diminué la période jusqu'à trois ou même deux semaines, j'ai essayé d'augmenter la SL pour les croisements en Yen. En général, j'essaie de trouver les meilleures valeurs qui donnent de bons résultats lors de l'optimisation. En conséquence, je considère comme relativement corrects les paramètres qui donnent 6-8 mille combinaisons rentables en 10 mille passages lors de l'optimisation avec la génétique. Ensuite, selon la loi des grands nombres, la probabilité de profit est deux fois plus élevée que la probabilité de perte, ce qui signifie que l'optimisation n'est qu'une formalité et que les profits dépasseront les pertes au moins deux fois en cas de nombre significatif de semaines. En réalité, plus.
Donc, partagez la façon dont vous testez et quels sont les résultats. Ce n'est pas facile en une semaine.
Mon solde pour la semaine est de +$690 et l'équité.... L'équité est un peu plus de +750$, eh, c'était près de 1000$ cet après-midi. Presque tous les postes ont été fermés.
A propos de l'erreur. Elle se trouve ici dans la fonction startM1(). Pour cette raison, il y avait une différence dans les premières transactions sur le testeur et la démo.
//+------------------------------------------------------------------+
void startM1() {ticket = -1;RefreshRates() ;
if (total < HM_ALL) { BuSll (0,1,772012000) ; cmmnt() ;
if( !(DayOfWeek( ) == 1 && Hour( ) <2) && !(DayOfWeek( ) == 5 && Hour( ) >=18))
{if (Trd_Up_X && VSR() > 0 && bu<HM_Up_X&&Flq) {
if (MOS( 0, lots, sl, tp, WindowExpertName(), mn)==1) {Flq=false;}} // remplacer par >=
if (Trd_Dn_Y && VSR() < 0 && sll<HM_Dn_Y&&Flq) {
if (MOS( 1, lots, sl, tp, WindowExpertName(), mn)==1) {Flq=false;}} // remplacer par >=
}}
//+------------------------------------------------------------------+
L'erreur n'est pas critique, à cause d'elle l'interdiction d'ouvrir un deal de plus sur un bar n'a pas fonctionné.
Je le corrigerai dans les nouvelles versions, mais pour l'instant vous pouvez le faire manuellement.
SHooter777ру: Советник понравился. После сегодняшнего слива демки оптимизацию делаю под 200$ (MiniForex). В принципе почти не отличается от 2000$. в оптимизационных сетах стоплоссы ставлю 50 с шагом 10, но все равно лучшие профиты со стоплоссами от 500 получаются. Уже в конечных сетах подбираю приемлемые в пределах 50-200 вручную. Влияет ли шаг и стоп в сетах на торговлю? (По наблюдениям не заметил). Еще вопрос: Можно ли оптимизировать под MicroForex (мин. лот 0,01)? Торгую на Pro Finance Group Inc платформа PFG FX Trader 4 (поддерживает MQL4). К сожалению на МикроФорексе нет демки.
Quelqu'un a-t-il essayé l'EA dans la vie réelle ? Est-il très différent de la démo ?
L'image montre le trading dans la démo cette semaine avec les ensembles SHooter777r .Ayant +800 en solde de trading j'ai décidé d'utiliser un autre EA sur 3 paires et ... L'avidité a tué l'avidité - les fonds disponibles sont tombés en dessous de 100 et, bien sûr, les contre-positions n'ont pas été ouvertes, de sorte que mon compte a presque été ruiné.
Bonne chance à tous pour négocier !
J'ai téléchargé l'EA et j'ai été à nouveau convaincu que pour lire rapidement l'année de quelqu'un d'autre, il faut une connaissance plus professionnelle du langage mql, pour écrire son propre code, la connaissance et l'expérience sont un minimum. Les auteurs, si vous publiez le code, écrivent des commentaires dans celui-ci et divisent l'ensemble du code en blocs.
Cela peut être un conseiller expert intéressant, j'ai peut-être recommandé quelque chose à partir de ma propre expérience, mais je ne veux pas me plonger dans le code brut. Le temps est précieux.
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.
Je suis désolé ! J'ai passé une demi-heure à écrire les instructions, mais ce forum glitchy ne fait pas que passer les lettres, il a aussi perdu tout le texte.
Je vais l'écrire dans wordpress et le coller ici. Attendez un peu.
La nouvelle version de L9 contient un certain nombre d'ajouts et de changements mineurs, mais je pense qu'ils sont nécessaires.
Premièrement : la fonction FLG() a été ajoutée - elle est responsable de deux choses
//+------------------------------------------------------------------+
bool FLG (int cs )
{ int AE = AccountEquity( ) ;
switch(cs)
{cas 0 : if((DayOfWeek( ) == 5 && Hour( ) >=22) || (TrBlnc && (AE > UBlnc))
retour (true);sinon retour (false) ;
cas 1 : 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)) ;
if (dOC>20) Gp = true ; Print (Gp) ;
string var1=TimeToStr(smtm,TIME_DATE|TIME_SECONDS) ;
if((TrBlnc && ((AE > UBlnc)||(AE < DBlnc)) || (!Flq)
|| ((DayOfWeek( ) == 1 && Hour( ) <2) || (DayOfWeek( ) == 5 && Hour( ) >=18))
|| ((DayOfWeek( ) == 1 && Hour( ) <14) && Gp))
retour (false);sinon retour (true) ;
}
}
//+------------------------------------------------------------------+
a) FLG( 0 ) - fermeture forcée des positions ouvertes aux conditions spécifiées.
b) FLG( 1 ) - interdit l'ouverture de positions à des conditions spécifiques.
Vous pouvez y insérer toute condition supplémentaire et ne pas "surcharger" la fonction void startM1() et d'autres endroits.
J'ai sélectionné la fin de la semaine pour la fermeture forcée if((DayOfWeek( ) == 5 && Hour( ) >= 22) et l'augmentation de l'équité à une certaine taille.
et interdire l'ouverture à un Gep supérieur à une certaine valeur if(dOC>20) Gp = true ; et si le Gep augmente à if((TrBlnc && ((AE > UBlnc))
ou diminue à ||(AE < DBlnc))
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 ;
Ce qui suit n'est pas une modification mais plutôt un ajout plus substantiel et fait référence à Delta_G12 ; désormais, il ne s'agit plus de delta AO mais de la fonction G12(),
qui, en fonction de son paramètre extern int Indctr ; utilise soit le premier AO si Indctr = 1
ou si Indctr = 2 toute autre fonction ou indicateur ( j'utilise le mien, TSM joint), si int Indctr = 0 alors les signaux sont additionnés à partir des deux indicateurs &&
//+FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF++.
double G12() {switch(Indctr)
{case 0 :
iCusAO_1 = iAO(NULL, 240, 1) ; iCusAO_2 = iAO(NULL, 240, 2) ;
iCusTSM_1 = iCusTSM (24, 1) ; iCusTSM_2 = iCusTSM (24, 2) ;
Dlt_AO12 = iCusAO_1 -iCusAO_2 ; Dlt_TSM12 = iCusTSM_1-iCusTSM_2 ;
si ( Dlt_AO12>=0 && Dlt_TSM12 <=0) retourner (0) ;
si ( Dlt_AO12<=0 && Dlt_TSM12 >=0) retourner (0) ;
retour(Dlt_AO12) ;
cas 1 :
iCusAO_1 = iAO(NULL, 240, 1) ; iCusAO_2 = iAO(NULL, 240, 2) ;
Dlt_AO12 = iCusAO_1 -iCusAO_2 ; return(Dlt_AO12) ;
cas 2 :
iCusTSM_1 = iCusTSM (24, 1) ; iCusTSM_2 = iCusTSM (24, 2) ;
Dlt_AO12 = iCusTSM_1-iCusTSM_2 ; return(Dlt_AO12);}}
//+--------------------------------------------------------------------------------------+
double iCusTSM (int pr, int shft)
{ return (iCustom(NULL, 240, "iCus_N7S_TSM_forExp",pr,1,shft)) ; }
//+--------------------------------------------------------------------------------------+