expert advisor - verschiedene Fragen - Seite 33

 

MQL4:

MODE_LOTSTEP

24

Schritt zum Ändern von Losen


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

MQL5:

SYMBOL_VOLUMEN_SCHRITT

Minimaler Volumenänderungsschritt für die Geschäftsausführung

doppelt


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

Es informiert Sie also über den kleinsten Schritt nach oben oder unten in der Losgröße, wenn er 0,01 beträgt, dann müssen Ihre Lose 0,01, 0,02, 0,03, 0,04 usw. entsprechen.

Wenn es 0,1 wäre, dann müsste Ihre Änderung der Losgröße 0,1, dann 0,2, dann 0,3 usw. entsprechen.

Ich verstehe also nicht, was Sie meinen:

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

Vielleicht meinen Sie einen anderen Losgrößenschritt?

Normalerweise würden Sie den Wert nicht ändern, da er für jedes Symbol festgelegt ist.

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

Die Dinge können verwirrend werden, wenn Sie den Wert einer intuitiv benannten Variablen ändern. Ich würde vorschlagen, dass lotstep immer lotstep ist, nichts anderes.

Wie wäre es mit etwas wie diesem?

   double increment = (lotsize < lotstep*100) ? lotstep : lotstep*100;
   lotmaxdivide=lotmax/lotmax *(lotvalue*10);
   lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? increment*10 : increment));
Edit: Entschuldigung, habe gerade Marcos Antwort gesehen. Ich stimme zu, was die Benennung von lotstep betrifft.
 

Marco vd Heijden:

Ich verstehe also nicht, was Sie meinen:

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

Vielleicht meinen Sie eine andere Losgröße?
Normalerweise würden Sie den Wert nicht ändern, da er für jedes Symbol festgelegt ist.

Ja! Ich meine eine andere Losgröße, also wenn die Losgröße 1,00 für EURUSD erreicht ist. Dann muss ich die Losgröße um 1,00 erhöhen. Bevor die Losgröße 1,00 erreicht - Losgröße erhöhen 0,01, 0,02 usw. (was ich will) - aber nach Losgröße erreicht 1,00 - dann Losgröße erhöhen 1,00, 2,00, 3,00, etc.
Das ist es, was ich in diesem Unterthema tun möchte.

Danke viel mehr.

 
honest_knave:

Die Dinge können verwirrend werden, wenn Sie den Wert einer intuitiv benannten Variablen ändern. Ich würde vorschlagen, dass lotstep immer lotstep ist, nichts anderes.
Wie wäre es mit etwas wie diesem?

   double increment = (lotsize < lotstep*100) ? lotstep : lotstep*100;
   lotmaxdivide=lotmax/lotmax *(lotvalue*10);
   lotsize=fmin(lotmaxdivide,lotsize+(( ctrlfalse) ? increment*10 : increment));
Edit: Entschuldigung, habe gerade Marcos Antwort gesehen. Ich stimme zu, was die Benennung von lotstep betrifft.

( Ich habe nur wenig geändert - ... ? lotstep : lotstep*100 - ...? lotstep : lotstep*10 )

Yeah! In meinem ursprünglichen Code sind die Dinge verwirrend.
Nach deiner großartigen Hilfe, habe ich mein Problem gelöst. Herzlichen Dank dafür.

Ich möchte auch, dass die Losgröße so zunimmt.
Also Losgröße erhöht sich wie folgt 0,99, 1,00, 1,01, 1,11.
Aber ich brauche so 0,99, 1,00, 1,10, 1,20 usw.

Vielen Dank im Voraus.

 

Ich denke, 0,99, 1,00, 1,01, 1,02. wäre die beste Idee.

Halten Sie sich an den kleinsten verfügbaren Schritt.

Warum wollen Sie diese ULTRA GROSSEN Schritte machen?

Haben Sie es schon ausprobiert?

Bitte versuchen Sie es.
 
Marco vd Heijden:

Ich denke 0.99, 1.00, 1.01, 1.02. wäre die beste Idee.
Halten Sie sich an den kleinsten verfügbaren Schritt.
Warum wollen Sie diese ULTRA GROSSEN Schritte machen?
Haben Sie es schon ausprobiert?

Bitte versuchen Sie es.

Ich habe es bereits versucht, denke, wenn ich brauche, um Losgröße 5,00 zu erreichen, sollte ich 40 Mal klicken Sie auf Los plus Taste ( + ctrl ).

 

Wow und warum fünf?

Du kannst einfach + und - anstelle von * verwenden.

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

Aber es gibt eine Zeile in meinem Roboter, die ihn vor der totalen Zerstörung bewahrt, und das ist diese:

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

Aber es gibt eine Zeile in meinem Roboter, die ihn vor der totalen Zerstörung bewahrt, und das ist diese:

Das ist absolut richtig, auch ich respektiere natürlich diese Einstellung.

Aber das ist nur ein Thema - ich meine, ich kann es jederzeit ändern.
Vielleicht brauche ich ein wenig Erfahrung mit der Losgröße.

Ich denke, dieses Unterthema kann für den Moment geschlossen werden.

Danke @Marco vd Heijden und @honest_knave

#Lot Step - Geschlossen

 

#Lot Size Max - Offen

@Marco vd Heijden- vielen Dank für Ihren letzten Kommentar, der mich inspiriert hat, diesen Teil des Codes für meine EA's zu schreiben. ( Ich habe gerade aufgehört, andere Funktionen zu schreiben - dass ich versuche, diese eine vor anderen zu schreiben )

Also, wie in der Regel versuche ich, etwas für Losgröße max zu testen.
Wenn Losgröße besser als Losgröße max, Druck-Funktion lässt mich nicht über den Handel-Modus.
Nachdem ich dieses Problem zu lösen, muss ich diese Funktion verkaufen und kaufen Taste Funktionen setzen.

F: Wie kann ich die Druckfunktion so einstellen, dass sie mich auch über den Handelsmodus informiert? ( - Losgröße besser als Losgröße max oder weniger als es )
F: Ist diese Methode nützlich für Losgröße max?

Vielen Dank im Voraus.

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);
  }
 

Nein, das ist für die Überprüfung, ob es sich um ein Demo-Konto oder ein Live-Konto, Wettbewerb ist selten verwendet.

Lot max kann sehr einfach sein.

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

// check if lotsize is not too high

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