[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 159

 
BooGUY:

todem, j'ai essayé if (d1!=0)

mais l'EA s'ouvre toujours au mauvais endroit. En général, il devrait passer de l'achat à la vente, mais parfois il s'ouvre deux fois pour la vente. Peut-être n'ai-je pas copié quelque chose.


Vous ne pensez pas que c'est un peu tard ?
 
DhP:

Le nombre de passages peut être réduit par :

1. Augmenter le ton.

2. Réduire la plage d'optimisation des paramètres.

3. Réduire le nombre de paramètres à optimiser.

4. Activez "Algorithme génétique".


Voici plus d'informations sur l'algorithme génétique : ..... si vous le pouvez))))

 

Les gars, qu'en est-il du conseiller.... Je sais qu'il n'y a pas de limite à la qualité d'un conseiller, mais à votre avis, quelle est la rentabilité d'un conseiller (rendement annuel) ? ?????.

Plus d'un an.... j'ai obtenu ce qui suit :

Pertes maximales : 8.69% (3768$)

Bénéfice : 27464,5 $, soit un peu plus de 100 %.

Nombre total de transactions : 142

J'ai négocié un lot fixe : 1 lot

Ma première EA...merci à tous ceux qui m'ont aidé)

 

Disons que j'ai un conseiller expert (Mon_expert) et un indicateur (Mon_indicateur).

Expert Advisor utilise les données de l'indicateur (actuellement via iCustom)

Puis-je faire en sorte que le conseiller expert ajoute l'indicateur au graphique pendant l'initialisation et le supprime pendant la désinitialisation ?

 

J'essaie d'écrire un conseiller expert qui fermerait l'ordre le jour suivant (dans tous les cas). Mais l'ordre n'est pas fermé pour une raison quelconque (s'il vous plaît, dites-nous pourquoi ?).

Voici le code pour la vente :


si (OrdersTotal()==0) {

OPENORDER ("Vendre") ;
}
int TC = int TimeCurrent() ;
int OM = int OrderMagicNumber() ;

if (OrdersTotal()==1 && OrderType()==OP_SELL && TC-OM>86400){ // DayMove(3)<0 && DayMove(2)<0 && DayMove(3)<0 && DayMove(4)<0 && DayMove(5)>0
CLOSEORDER("Vendre") ;
}

Il s'agit de la fonction d'ordre d'ouverture/fermeture :

void CLOSEORDER(string ord)
{
for (int i=0 ; i<OrdersTotal() ; i++)
{
si (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)
{
si (OrderSymbol()!=Symbol()||Magic!=OrderMagicNumber()) continuer ;
si (OrderType()==OP_BUY && ord=="Buy")
OrderClose(OrderTicket(),OrderLots(),Bid,3,CLR_NONE) ;
si (OrderType()==OP_SELL && ord=="Sell")
OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE) ;
}
}
}
//--------------------------------------------------------------------


void OPENORDER(string ord)
{
erreur int ;
//Magic=TimeDay(CurTime() ;
Magic = TimeCurrent() ;
si (ord=="Buy" ) error=OrderSend(Symbol(),OP_BUY, LOT,Ask,2,SL,TP, "EMA WMA RSI",Magic,3) ;
si (ord=="Sell") error=OrderSend(Symbol(),OP_SELL,LOT,Bid,2,SL,TP, "EMA WMA RSI",Magic,3) ;
si (erreur==-1) ShowERROR(erreur,0,0) ;
retour ;
}

 
Vovo4ka:

Les gars, qu'en est-il du conseiller.... Je sais qu'il n'y a pas de limite à la qualité d'un conseiller, mais à votre avis, quelle est la rentabilité d'un conseiller (rendement annuel) ? ?????.

Plus d'un an.... j'ai obtenu ce qui suit :

Pertes maximales : 8.69% (3768$)

Bénéfice : 27464,5 $, soit un peu plus de 100 %.

Nombre total de transactions : 142

J'ai négocié un lot fixe : 1 lot

Ma première EA...merci à tous ceux qui m'ont aidé)

S'il s'agit d'un graphique dans une zone optimisée, il n'y a rien à dire sur ses performances futures. S'il s'agit d'un graphique dans une zone non optimisée, on peut espérer qu'il sera rentable. Et la vérité sera révélée en travaillant sur le compte réel.
 
ILL:

...
int OM = int OrderMagicNumber() ;
...


La commande doit être présélectionnée avec OrderSelect(), ce qui n'est pas le cas ici.
 
ilunga:

La commande doit être présélectionnée à l'aide de OrderSelect(), ce qui n'est pas le cas dans ce que vous avez donné.


Hourra ! !! Cela a marché=)

Merci beaucoup.

 
todem:

Faisons-le ensemble. J'ai un indicateur factice qui montre la direction actuelle - en avez-vous besoin ?


Pas de problème - faisons-le ensemble. Tous les développements sont listés dans les liens précédents... Il ne s'agit pas seulement de vérifier une boucle. Je cherche des options pour écrire chaque vérité dans un tableau - mais je n'ai pas encore eu affaire à des tableaux.

//+-------------------------------------------------------------------------------+
// Проверка смены тренда 
bool TrendChange(int Period_MAb, int Period_MAm, int nB)
{
  double maB1=iMA(NULL, 0, Period_MAb, 0, MODE_EMA, PRICE_WEIGHTED, 1);
  double maM1=iMA(NULL, 0, Period_MAm, 0, MODE_EMA, PRICE_WEIGHTED, 1);   
  for (int i=0; i<nB; i++) 
  {
    double maB=iMA(NULL,0, Period_MAb, 0, MODE_EMA, PRICE_WEIGHTED, i);
    double maM=iMA(NULL,0, Period_MAm, 0, MODE_EMA, PRICE_WEIGHTED, i); 
     if ((maM<maB && maM1>maB1)||(maM>maB && maM1<maB1)){
//     Alert("TrendChange-true");
     return(true);
     }
  }
  return(false);   
}

Donc - cette fonction fonctionne ! Qui peut en avoir besoin !

MAIS ! la question porte sur l'économie des ressources - car ma machine n'est pas la plus puissante, et cette fonction est souvent vérifiée. Il s'avère donc que chaque tick doit recalculer une série d'anciennes barres (par exemple dans mon cas nB=610 ). La seule façon de résoudre ce problème est d'écrire un drapeau dans un tableau, puis de vérifier la véracité de ce tableau et de la dernière barre. Quelqu'un a-t-il d'autres variantes ? Des suggestions ?

 
ILL:


Yay !!! Cela a marché=)

Merci beaucoup.

De rien))

Qui me répondrait maintenant))