Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 6. - page 84

 
paladin80:

Les passages qui sont devenus déficitaires ne sont pas indiqués. Faites un clic droit sur n'importe quel résultat d'optimisation et décochez la case "Ignorer les résultats inutiles".




il ne s'agit pas d'optimisation.

le test est unique.

et ses résultats dans les différents onglets diffèrent de 30 comme je l'ai indiqué ci-dessus

 
lottamer:


il ne s'agit pas d'optimisation.

le test est unique.

et ses résultats varient de 30 en 30 dans différents onglets comme je l'ai indiqué ci-dessus

Ajoutez une capture d'écran du rapport avec les zones à problèmes et voyons ce qu'il en est. Ou téléchargez le rapport complet dans son intégralité.
 

Chers programmeurs, expliquer ce point, voici l'algorithme qui calcule le lot pour Money Managment, mais le problème est que, une fois qu'il comprend que pour ouvrir un lot inférieur à 0,01 c'est-à-dire autorisé, puis suit naturellement Ordre Envoyer Erreur et au revoir, conseiller ce qu'il faut entrer pour ouvrir moins de 0,01 lot ne peut pas être même si l'algorithme l'exige.

double GetSizeLot()
{  
  if (MM==false) 
      MMLot=Lots;
      
  if (MM==true)
     {
      MMLot=((AccountFreeMargin()*TradeLotRiskPercent)/100000);
     }
  return(MMLot);
}
 
ZahvatkiN:

Chers programmeurs, expliquer ce point, voici l'algorithme qui calcule le lot pour Money Managment, mais le problème est que, une fois qu'il comprend que pour ouvrir un lot inférieur à 0,01 c'est-à-dire autorisé, puis suit naturellement Ordre Envoyer Erreur et au revoir, conseiller ce qu'il faut entrer pour ouvrir moins de 0,01 lot ne peut pas être même si l'algorithme l'exige.

1. Il est nécessaire de normaliser.

2. et fixer le lot minimum.

MMLot=NormalizeDouble(MathMax((AccountFreeMargin()*TradeLotRiskPercent)/100000,MinLot),2);
 
ZahvatkiN:

Chers programmeurs, expliquer ce point, voici l'algorithme qui calcule le lot pour Money Managment, mais le problème est que dès qu'il se rend compte que pour ouvrir un lot inférieur à 0,01 c'est-à-dire autorisé, puis bien sûr suit Ordre Envoyer Erreur et au revoir, dites-moi ce qu'il faut entrer que moins de 0,01 lot ne peut pas ouvrir même si l'algorithme l'exige.

double GetSizeLot(double TradeLotRiskPercent)
{  
   double MMLot, MinLot, MaxLot;
   //---
   MinLot=MarketInfo(Symbol(),MODE_MINLOT);
   MaxLot=MarketInfo(Symbol(),MODE_MAXLOT);
   //---
   MMLot=AccountFreeMargin()*TradeLotRiskPercent)/100000;
   if (MMLot<=MinLot) return(MinLot);
   if (MMLot>=MaxLot) return(MaxLot);
   else 
   {  MMLot=NormalizeDouble(MMLot,2);
      return(MMLot);
   }
}

Vous avez la formule pour calculer MMLot divisé par 100000. Vous calculez probablement pour un effet de levier de 1:100 et un compte normal où la taille du lot est de 100 000 de la devise de base (par exemple, USD). Si vous lancez un tel EA sur un compte cent (lot = 10000) et/ou avec un effet de levier différent, il ne comptera pas le lot correctement. Essayez ce modèle :

double GetSizeLot(double TradeLotRiskPercent)
{  
   double MMLot, MinLot, MaxLot;
   int    LotSize, Leverage;
   //---
   MinLot  =MarketInfo(Symbol(),MODE_MINLOT);
   MaxLot  =MarketInfo(Symbol(),MODE_MAXLOT);
   LotSize =MarketInfo(Symbol(),MODE_LOTSIZE);
   Leverage=AccountLeverage();
   //---
   MMLot=AccountFreeMargin()*TradeLotRiskPercent)/ 100*Leverage/LotSize;
   if (MMLot<=MinLot) return(MinLot);
   if (MMLot>=MaxLot) return(MaxLot);
   else 
   {  MMLot=NormalizeDouble(MMLot,2);
      return(MMLot);
   }
}
 
Sij' utilise le compte Alpari_ECN_Live avec un effet de levier de 1:500 et un TradeLotRiskPercent=10, c'est-à-dire 10% du dépôt de 1000$, les lots commenceront à fonctionner à partir de 0.5. Donc, cette formule est seulement pour un effet de levier de 1:100 ? Je suppose qu'il n'y a pas de code universel pour tout effet de levier et tout compte ?
 
ZahvatkiN:
Sij' utilise le compte Alpari_ECN_Live avec un effet de levier de 1:500 et un TradeLotRiskPercent=10, c'est-à-dire 10% du dépôt de 1000$, les lots commenceront à fonctionner à partir de 0.5. Donc, cette formule est seulement pour un effet de levier de 1:100 ? Je suppose qu'il n'y a pas de code universel pour tout effet de levier et tout compte?
Je pense que ma formule 2 (du 23.08.2013 07:30) calcule correctement le lot. Voir 10% de 1000 $ = 100 $ (dépôt), avec un effet de levier de 1:500 le courtier vous donne la possibilité d'ouvrir une transaction de 50 000 $. Un lot chez un courtier représente 100 000 $, alors vos 50 000 $ représentent 0,5 lot.
MMLot=AccountFreeMargin()*TradeLotRiskPercent)/ 100*Leverage/LotSize
MMLot=1000*10/100 * 500/100000 = 100 * 500/100000 = 50000 / 100000 = 0.50
 
paladin80:
Je pense que ma formule 2 (datée du 23.08.2013 07:30) calcule le lot correctement. Voir 10% de 1000 $ = 100 $ (dépôt), avec un effet de levier de 1:500 le courtier vous donne la possibilité d'ouvrir une transaction de 50 000 $. Un lot chez le courtier représente 100 000 $, alors vos 50 000 $ représentent 0,5 lot.
MMLot=AccountFreeMargin()*TradeLotRiskPercent)/100*Leverage/LotSize
MMLot=1000*10/100 * 500/100000 = 100 * 500/100000 = 50000 / 100000 = 0.50

Sama la formule elle-même est calculée sans erreur, seulement dans l'idée de 10% de 1000 est un lot 0,1 plutôt que 0,5) Ici, il est clair pourquoi 0,5 parce que le levier de 1:500, il serait un épaulement 1:100 il ouvrirait un lot juste 0,1 donc la question se pose, mais il ya un algorithme universel pour calculer le lot pour tout levier et le type de compte, ou pour chacun son propre ?
 

Chers utilisateurs du forum, aidez-moi à trouver les coordonnées de la flèche

string arrowName=TimeToStr(Time[i]) ;

ObjectCreate(arrowName+ " Flèche",...) ;

Je réalise un Expert Advisor basé sur un indicateur et je reçois des flèches via iCustom, mais je ne sais pas comment trouver les coordonnées des dernières flèches.

 
nazar77:
Aide-moi à décompiler l'indicateur. Je ne décompilerai pas plus loin que moi, je le garantis.
Va en enfer !!!