Auto-apprentissage du langage MQL5 à partir de zéro - page 81

 
Alexey Viktorov #:

J'espère vraiment que tu n'as pas écrit ça...

Voici une fonction qui fonctionne

Il suffit d'entrer le montant du risque pour qu'il ne soit pas comptabilisé dans la marge libre totale...

Merci, Alexey, pour vos commentaires ! Ma version du calcul du lot fonctionne, et seule la partie du code où le tableau est écrit ne fonctionne pas.

À l'origine, je l'ai conçu pour pouvoir définir différentes tailles de risque pour différentes paires de devises.

Pour être honnête, je ne comprends pas bien comment utiliser votre code pour un EA multi-devises.

Salutations, Vladimir.

 
MrBrooklin #:

Merci, Alexey, pour vos commentaires ! Le calcul du lot dans ma version fonctionne, et seule cette partie du code, où le tableau est écrit, ne fonctionne pas.

Il a été conçu à l'origine pour permettre de spécifier différentes tailles de risque pour différentes paires de devises.

Pour être honnête, je ne comprends pas bien comment utiliser votre code pour un EA multi-devises.

Sincèrement, Vladimir.

Très simple. Je ne pensais pas que tu aurais des difficultés avec ça après tout ce que tu as appris.

/********************************************************************\
|   Calculate optimal lot size     Расчет объема лота                |
/********************************************************************/
//double contractSize(double Lot)
double contractSize(string symbol, double risk)
 {
//  double volume = Lot > 0.0 ? Lot : AccountInfoDouble(ACCOUNT_MARGIN_FREE)/10000,
  double volume = AccountInfoDouble(ACCOUNT_MARGIN_FREE)*risk/10000,
         v = volume,
         volumeStep = SymbolInfoDouble(symbol, SYMBOL_VOLUME_STEP),
         minLot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MIN),
         maxLot = SymbolInfoDouble(symbol, SYMBOL_VOLUME_MAX);
  v = round(volume/volumeStep)*volumeStep;
  return(fmin(maxLot, fmax(minLot, v)));
 }/******************************************************************/

Et la fonction s'appelle

double lot = contractSize(symbol[Number], Risk[Number]);
 
Alexey Viktorov #:

Très simple. Je ne pensais pas, après tout ce que tu as appris, que tu aurais des problèmes avec ça...

Et la fonction est appelée.

Merci encore, Alexey ! Je vais essayer de l'utiliser dans mon EA ce soir.

Je suis plutôt novice en matière de tableaux, d'où la difficulté. Jusqu'à présent, je n'en avais pas besoin, mais je réalise maintenant qu'il s'agit d'une grande lacune que je devrai combler dans un avenir proche. J'ai commencé à étudier l'article de Dmitry Fedoseyev, mais jusqu'à présent il y a beaucoup de choses qui ne sont pas claires. J'ai besoin de temps pour assimiler la matière.

Salutations, Vladimir.

 
SanAlex #:

Voici un truc avec lequel j'ai joué.

Peut-être que tu devrais comprendre l'essentiel d'abord.
 
SanAlex #:

quelque chose - j'ai essayé le code un peu partout - il semble fonctionner.

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

C'est sur le point de commencer - j'ai une autre bosse sur la route.

Sasha, écrivez-vous également de tels codes à la demande en freelance ? Je me suis toujours demandé comment on écrit des codes de 2 ou plusieurs MILLIERS de lignes. Mais maintenant je commence à comprendre... Calculer le nombre de lignes dans mon code et le vôtre... Et vérifier l'écart maximum, c'est n'importe quoi... C'est beaucoup plus facile d'utiliser l'option "Je ne sais pas".

  MqlTick tick;
    if(!SymbolInfoTick(posSymbol, tick))
      return;
    if(tick.ask-tick.bid > inpSpred)
      return;

Si vous voulez que cela fonctionne, mais que tout le monde n'est pas en mesure de comprendre ce que vous avez écrit, vous pouvez vous contenter de trois lignes

  MqlTick tick;
    if(!SymbolInfoTick(posSymbol, tick) || tick.ask-tick.bid > inpSpred)
      return;
 
SanAlex #:

ce code est extrait du terminal

Continuez à faire du bon travail.
 
SanAlex #:

Je ne sais pas comment écrire du code moi-même - je prends toutes les fonctions dans la documentation et avec un peu de bricolage, je les modifie pour mes propres besoins.

\\\\\\\\\\\\\\\\\\\\

Je regarde aussi vos codes et dans la base de code. J'apprends - je ne suis pas un théoricien - il est plus facile de creuser moi-même que d'expliquer - comment creuser.

Il est déjà clair que vous ne pouvez que creuser. Pourquoi mettre les codes ici ?
 
SanAlex #:

juste pour - juste pour vous amuser.

A qui d'autre allez-vous poser vos questions intelligentes ?

Ils t'ont donné dix ans pour une raison.
 
SanAlex #:

Quittez le Golfe de Finlande et venez à la Mer Noire avec nous

Je suis à Kaliningrad en fait.
 
SanAlex #:

Quittez le Golfe de Finlande et venez à la Mer Noire avec nous