Die Sprache MQL5 von Grund auf selbst erlernen - Seite 81

 
Alexey Viktorov #:

Ich hoffe wirklich, dass Sie das nicht geschrieben haben...

Hier ist eine funktionierende Funktion

Sie müssen nur den Risikobetrag eingeben, damit er nicht auf die volle freie Marge angerechnet wird...

Danke, Alexey, für dein Feedback! Meine Version der Losberechnung funktioniert, und nur der Teil des Codes, in dem das Array geschrieben wird, funktioniert nicht.

Ursprünglich hatte ich es so konzipiert, dass man für verschiedene Währungspaare unterschiedliche Risikogrößen einstellen kann.

Um ehrlich zu sein, verstehe ich nicht ganz, wie man Ihren Code für einen EA mit mehreren Währungen verwenden kann.

Mit freundlichen Grüßen, Vladimir.

 
MrBrooklin #:

Vielen Dank, Alexey, für dein Feedback! Die Losberechnung in meiner Version funktioniert, und nur der Teil des Codes, in dem das Array geschrieben wird, funktioniert nicht.

Ursprünglich wurde es entwickelt, um unterschiedliche Risikogrößen für verschiedene Währungspaare festzulegen.

Um ehrlich zu sein, verstehe ich nicht ganz, wie man Ihren Code für einen EA mit mehreren Währungen verwenden kann.

Mit freundlichen Grüßen, Vladimir.

Ganz einfach. Ich hätte nicht gedacht, dass Sie nach all dem, was Sie gelernt haben, Schwierigkeiten damit haben würden.

/********************************************************************\
|   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)));
 }/******************************************************************/

Und die Funktion heißt

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

Ganz einfach. Ich hätte nicht gedacht, dass du nach all dem, was du gelernt hast, Probleme damit haben würdest...

Und die Funktion wird aufgerufen.

Nochmals vielen Dank, Alexey! Ich werde versuchen, es heute Abend in meinem EA zu verwenden.

Ich bin ziemlich neu auf Arrays, daher die Schwierigkeiten. Bisher brauchte ich sie nicht, aber jetzt ist mir klar, dass dies eine große Lücke ist, die ich in naher Zukunft schließen muss. Ich habe begonnen, den Artikel von Dmitry Fedoseyev zu studieren, aber bis jetzt ist vieles unklar. Ich brauche Zeit, um den Stoff zu verinnerlichen.

Mit freundlichen Grüßen, Vladimir.

 
SanAlex #:

Hier ist etwas, mit dem ich herumgespielt habe.

Vielleicht sollten Sie erst einmal das Wesentliche verstehen.
 
SanAlex #:

etwas - ich habe den Code überall ausprobiert - er scheint zu funktionieren.

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

Es geht gleich los - ich habe ein weiteres Hindernis auf dem Weg.

Sasha, schreiben Sie solche Codes auch auf Anfrage als Freelancer? Ich habe mich immer gefragt, wie Sie Codes mit 2 oder mehr Tausenden von Zeilen schreiben. Aber jetzt fange ich an, es zu verstehen... Berechne die Anzahl der Zeilen in meinem und deinem Code... Und die maximale Spanne zu überprüfen, ist Unsinn... Es ist viel einfacher, die Option "Ich weiß es nicht" zu verwenden.

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

Wenn Sie wollen, dass es funktioniert, aber nicht jeder verstehen kann, was Sie geschrieben haben, können Sie mit drei Zeilen auskommen

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

dieser Code stammt aus dem Terminal

Setzen Sie Ihre gute Arbeit fort.
 
SanAlex #:

Ich weiß nicht, wie ich selbst Code schreiben soll - ich nehme alle Funktionen aus der Dokumentation und modifiziere sie mit ein bisschen Tüftelei für meine Zwecke.

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

Ich schaue mir auch Ihre Codes und die Codebase an. Ich lerne - ich bin kein Theoretiker - es ist einfacher, selbst zu graben, als zu erklären, wie man gräbt.

Es ist bereits klar, dass man nur graben kann. Warum sind die Codes hier?
 
SanAlex #:

nur um - nur um dich zu unterhalten.

Wem sonst werden Sie Ihre klugen Fragen stellen?

Sie haben dir nicht ohne Grund zehn Jahre gegeben.
 
SanAlex #:

Verlassen Sie den Finnischen Meerbusen und kommen Sie mit uns ans Schwarze Meer

Ich bin eigentlich in Kaliningrad
 
SanAlex #:

Verlassen Sie den Finnischen Meerbusen und kommen Sie mit uns ans Schwarze Meer