conseiller expert - questions diverses - page 33

 

MQL4 :

MODE_LOTSTEP

24

Étape pour le changement de lot


Print("Step for changing lots=",MarketInfo(Symbol(),MODE_LOTSTEP));

MQL5 :

SYMBOL_VOLUME_STEP

Pas de changement de volume minimal pour l'exécution des transactions

double


Print(" Step: ",SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

Cela vous informe sur le plus petit pas vers le haut ou vers le bas de la taille du lot. Si c'est 0,01, vos lots doivent correspondre à 0,01, 0,02, 0,03, 0,04, etc.

Si c'est 0,1, alors votre changement de taille de lot devra correspondre à 0,1, puis 0,2, puis 0,3, etc.

Je ne comprends donc pas ce que vous dites :

   if(lotsize>=(lotstep*100))
     {
      lotstep=lotstep*100;
      Print("lot step: ",lotstep);
     }

Vous voulez peut-être parler d'un pas de lot différent ?

Normalement, vous ne modifiez pas la valeur car elle est fixe pour chaque symbole.

 
Max Enrik:
// lot plus
if(sparam==lotbuttonplus)
  {
   if(lotsize>=(lotstep*100))
     {
      lotstep=lotstep*100;
      Print("lot step: ",lotstep);
     }

Les choses peuvent devenir confuses si vous changez la valeur d'une variable au nom intuitif. Je suggère que lottep soit toujours lottep, rien d'autre.

Que diriez-vous de quelque chose comme ceci ?

   double increment = (lotsize < lotstep*100) ? lotstep : lotstep*100;
   lotmaxdivide=lotmax/lotmax *(lotvalue*10);
   lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? increment*10 : increment));
Edit : désolé, je viens de voir la réponse de Marco. Je suis d'accord sur la dénomination de lotstep.
 

Marco vd Heijden:

Donc je ne comprends pas votre :

   if(lotsize>=(lotstep*100))
     {
      lotstep=lotstep*100;
      Print("lot step: ",lotstep);
     }

Vous voulez peut-être parler d'un pas de lot différent ?
Normalement, vous ne devriez pas changer la valeur car elle est fixe pour chaque symbole.

Oui ! Je veux dire un pas de lot différent, donc quand la taille du lot atteint la taille de 1,00 pour EURUSD. J'ai alors besoin d'augmenter la taille du lot de 1,00. Avant que la taille du lot n'atteigne 1.00 - la taille du lot augmente de 0.01, 0.02 etc. ( ce que je veux ) - mais après que la taille du lot ait atteint 1.00 - alors la taille du lot augmente de 1.00, 2.00, 3.00, etc.
C'est ce que je veux faire dans ce sous-thème.

Merci beaucoup plus.

 
honest_knave:

Les choses peuvent devenir confuses si vous changez la valeur d'une variable au nom intuitif. Je suggère que lottep soit toujours lottep, rien d'autre.
Que diriez-vous de quelque chose comme ceci ?

   double increment = (lotsize < lotstep*100) ? lotstep : lotstep*100;
   lotmaxdivide=lotmax/lotmax *(lotvalue*10);
   lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? increment*10 : increment));
Edit : désolé, je viens de voir la réponse de Marco. Je suis d'accord sur la dénomination de lotstep.

( Je n'ai pas changé - ... ? ? lottep : lottep*100 - ... ? lottep : lottep*10 )

Ouais ! Dans mon code original les choses sont confuses.
Après votre grande aide, j'ai résolu mon problème. Merci beaucoup.

J'aimerais aussi que la taille du lot augmente comme ceci.
Donc la taille du lot augmente comme ceci 0.99, 1.00, 1.01, 1.11.
Mais j'ai besoin de 0,99, 1,00, 1,10, 1,20, etc.

Merci d'avance.

 

Je pense que 0,99, 1,00, 1,01, 1,02. serait la meilleure idée.

S'en tenir au plus petit pas disponible, je suppose.

Pourquoi voulez-vous faire ces ULTRA GRANDS pas ?

Avez-vous essayé ?

S'il vous plaît, essayez.
 
Marco vd Heijden:

Je pense que 0.99, 1.00, 1.01, 1.02. serait la meilleure idée.
S'en tenir au plus petit pas disponible, je suppose.
Pourquoi voulez-vous prendre ces ULTRA GRANDS pas ?
Vous avez déjà essayé ?

S'il vous plaît, essayez.

J'ai déjà essayé, je pense que si j'ai besoin d'atteindre la taille de lot 5.00, je devrais cliquer 40 fois sur le bouton lot plus ( + ctrl ).

 

Wow et pourquoi cinq ?

Vous pouvez utiliser + et - à la place de *.

lotsize=lotsize+0.1;
lotsize=lotsize-0.1;

Mais il y a une ligne dans mon robot qui le sauve de la destruction totale et c'est celle-ci :

static input double lotsmax=1;// Max Lots (please respect the setting)
 
Marco vd Heijden:

Mais il y a une ligne dans mon robot qui le sauve de la destruction totale et c'est celle-ci :

C'est tout à fait vrai, et bien sûr, je respecte ce cadre.

Mais c'est juste un problème - je veux dire que je peux l'ajuster à tout moment.
Peut-être que j'ai besoin d'un peu d'expérience sur cette taille de lot.

Je pense que ce sous-thème peut être clos pour le moment.

Merci @Marco vd Heijden et @honest_knave.

#Lot Step - Fermé

 

#Lot Size Max - Open

@Marco vd Heijden- merci beaucoup plus pour votre dernier commentaire, qui est j'ai inspiré pour écrire cette partie de code pour mes EA. ( Je viens d'arrêter d'écrire d'autres fonctions - que j'essaie d'écrire celui-ci avant les autres )

Donc, comme d'habitude, j'essaie de tester quelque chose pour la taille de lot maximale.
Lorsque la taille du lot est supérieure à la taille maximale du lot, la fonction d'impression ne me permet pas d'accéder au mode de négociation.
Après avoir résolu ce problème, j'ai besoin de mettre cette fonction sur les boutons Vendre et Acheter.

Q : Comment puis-je faire en sorte que la fonction d'impression m'informe du mode de négociation ? ( - la taille du lot est supérieure à la taille maximale du lot ou inférieure à celle-ci ).
Q : Cette méthode est-elle utile pour la taille de lot maximale ?

Merci d'avance.

void example()
  {
   string trademode;
   ENUM_ACCOUNT_TRADE_MODE accounttype=(ENUM_ACCOUNT_TRADE_MODE) AccountInfoInteger(ACCOUNT_TRADE_MODE);

   if(accounttype==ACCOUNT_TRADE_MODE_DEMO)
     {
      switch(accounttype)
        {
         case ACCOUNT_TRADE_MODE_DEMO:
            if( lotsize > ( lotstep * lotsizemax ) ) return;
            trademode="demo";
            break;
         case ACCOUNT_TRADE_MODE_CONTEST:
            trademode="contest";
            break;
         default:
            trademode="live";
            break;
        }
     }
   Print("Trade Mode: ",trademode);
  }
 

Non que pour vérifier si c'est un compte de démonstration ou un compte réel, le concours est rarement utilisé.

Le lot maximum peut être très facile.

//---
// calculate lotsize here
//---

// check if lotsize is not too high

if(lotsize>lotsize_max)
{
  lotsize=losize_max;
}