Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 54

 
Vitaly Muzichenko:
Sie haben bereits einen bestimmten Preis, ab dem Sie nur noch analog zu einem einfachen Trawl trawlen sollten, aber ein einfacher Trawl basiert auf dem Positionseröffnungspreis = OrderOpenPrice() und hier auf dem berechneten Durchschnittspreis und ändert alle Positionen um eine Stufe

Ja, ich habe es verstanden.

Ich schaue mir den Code an, den ich vorhin gepostet habe, und er gibt mir ein Bild wie dieses im Testgerät

Es handelt sich um eine Funktion, mit der ich die Größe dieser Tröge verringern möchte, denn an einem von ihnen befindet sich ein Abfluss.

wie ein früheres Beispiel -

Ich habe jetzt meine Hände voll von Shorts auf das Wachstum des Dollar-Yen und ich will nur dort die Funktion der Versicherung hinzufügen (wenn Verluste einen Prozentsatz des Gleichgewichts erreichen - schließen alle)
Dateien:
TesterGraph.gif  19 kb
 
vitek2010:

Ich war nicht über Ticks sprach ich über die Notwendigkeit, die minimalen und maximalen Werte des Indikators Puffer auf einem kleineren Zeitrahmen berechnet zu beheben, in der Lücke von einem größeren Zeitrahmen werde ich versuchen, es auf dem Screenshot zu zeigen In diesem Fall, desto größer ist der Zeitrahmen genommen, und die kleinere H1 (aber das ist das Fenster der verschiedenen Zeitrahmen):

[img]https://charts.mql5.com/13/642/eurgbp-w1-instaforex-group.png[/img]

Ich werde die Woche 05.12 (rotes Fadenkreuz) betrachten. Dieses Balkendiagramm des oben gezeigten Indikators zeigt deutlich, dass die Gesamtbewegung des Paares am Ende der Woche um 95 Punkte abwärts ging, aber es zeigt nicht, wie viele Punkte während der Woche ab- oder aufwärts gingen.

Und hier auf diesem Bildschirm können Sie die Dynamik dieses Indikators auf dem H1-Chart während dieser Woche sehen:

[img]https://charts.mql5.com/13/642/eurgbp-h1-instaforex-group.png[/img]

Der Indikator hatte einen Minimalwert von 400, stieg dann auf 700 und schloss bei 160 (die Differenz der Zahlen auf zwei Bildschirmen ist nicht wichtig).

Ich brauche alle diese Werte in einem Indikator in einer Bar des Histogramms und das Minimum, Maximum und schließen (in diesem Fall auf dem Wiki). idealerweise auf dem aktuellen Zeitrahmen von dem, den Sie in den Einstellungen des Zeitrahmens angeben

ich habe es auf mt4 insta mit der Kopie von mcl5 gemacht

In dem Code, den Sie oben gezeigt haben, bezieht sich die Referenz auf die aktuelle TF, worüber reden wir also? Wenn Sie von W1 aus auf die M5 zugreifen, dann schreiben Sie das so.

Wenn Sie mit dem aktuellen Zeitrahmen arbeiten, dann ist der Schlusskurs auf Null Bar schwebend, und auf den Rest - nur ein Schlusskurs, nicht viele, wie kann ich ein Histogramm auf einen Wert bauen?

Die Bilder werden über die entsprechende Schaltfläche am oberen Rand des Nachrichtenbearbeitungsfensters eingefügt; es gibt dort viele nützliche Schaltflächen, die ich Ihnen empfehle.

 
trader781:

Ja, ich habe es verstanden.

Ich schaue mir den Code an, den ich vorhin gepostet habe, und er gibt mir ein Bild wie dieses im Testgerät

Das ist die Funktion, mit der ich die Größe dieser Tröge reduzieren möchte, denn schließlich gibt es an einem von ihnen einen Abfluss.

wie ein früheres Beispiel -

Ich habe Shorts auf den Anstieg des Yen/Dollareröffnet und möchte sie nur versichern (wenn die Verluste einen Prozentsatz des Guthabens erreichen - alles schließen)
Ich möchte die Funktion "Bump" nutzen (wenn die Verluste einen bestimmten Prozentsatz des Guthabens erreichen). Und die Bedingungen der TK zu verfeinern, wenn sie sinken - dann sind die Eingaben nicht da und nicht da.
 
Vitalie Postolache:
Sie müssen weniger oft "stoßen" oder das Martingal aufgeben. Und verfeinern Sie die Bedingungen des TS, wenn Sie verlieren - dann sind die Eingaben nicht da und nicht da.

Danke für den Rat, aber ich möchte nur, dass der Code so funktioniert, wie ich es möchte, es geht nicht um Rentabilität/Profitabilität. Ich möchte nur sehen, wie diese Funktionen aussehen.

Nun, ich bin im vorherigen Code auf einen Ausdruck gestoßen(_BuyLot>_SellLot?)Bid:Ask)

Wie soll ich sie interpretieren?

 
trader781:

Danke für den Rat, aber ich möchte nur, dass der Code so funktioniert, wie ich es möchte, es geht nicht um Rentabilität/Profitabilität. Ich möchte nur sehen, wie diese Funktionen aussehen.

Nun, ich bin im vorherigen Code auf einen Ausdruck gestoßen(_BuyLot>_SellLot?)Bid:Ask)

Wie soll ich sie interpretieren?

Lesen Sie hier https://docs.mql4.com/ru/basis/operators/ternary
Условный оператор ?: - Операторы - Основы языка - Справочник MQL4
Условный оператор ?: - Операторы - Основы языка - Справочник MQL4
  • docs.mql4.com
Условный оператор ?: - Операторы - Основы языка - Справочник MQL4
 
trader781:

Danke für den Rat, aber ich möchte nur, dass der Code so funktioniert, wie ich es möchte, es geht nicht um Rentabilität/Profitabilität. Ich möchte nur sehen, wie diese Funktionen aussehen.

Nun, ich bin im vorherigen Code auf einen Ausdruck gestoßen(_BuyLot>_SellLot?)Bid:Ask)

Wie soll ich sie interpretieren?

So steht es in der Abschrift. Der vorherige Eintrag ist kürzer und sieht im Code oft schöner aus, aber der Sinn der Codeausführung ändert sich nicht

if(_BuyLot > _SellLot) {
 xxx = Bid;
 } else {
 xxx = Ask;
}
 
Vitaly Muzichenko:

So steht es in der Abschrift. Der vorherige Eintrag ist kürzer und sieht im Code oft schöner aus, aber er ändert nichts am Sinn der Codeausführung

if(_BuyLot > _SellLot) {
 xxx = Bid;
 } else {
 xxx = Ask;
}

wobei xxx =_BuyLot

sonst

xxx =_SellLot

oder?


Alexey Viktorov:
Lesen Sie hier https://docs.mql4.com/ru/basis/operators/ternary
Ich habe ein Stück unscheinbaren Code in einfacher Sprache geschrieben, und trotzdem kann man kaum erkennen, was er aus meiner Sicht aussagt. Es handelt sich um einen einfachen Algorithmus, der von einem Generator geschrieben wurde.
 
trader781:

wobei xxx =_BuyLot

sonst

xxx =_SellLot

oder?

Nein, das ist es nicht.

if(_BuyLot-_SellLot != 0) {
  if(_BuyLot > _SellLot) {
   AllAwerage= NormalizeDouble(Bid-((_BuyProfit+_SellProfit)/(TickValue*(_BuyLot-_SellLot))*_Point),_Digits);
  } else {
   AllAwerage= NormalizeDouble(Ask-((_BuyProfit+_SellProfit)/(TickValue*(_BuyLot-_SellLot))*_Point),_Digits);
  }
} else {
  AllAwerage=0;
}

Aber das sind eine Menge Codezeilen

 
trader781:

wobei xxx =_BuyLot

sonst

xxx =_SellLot

oder?


Ich habe ein Stück unauffälligen Code in einer einfachen Sprache geschrieben, und trotzdem kann man kaum erkennen, was dort aus meiner Sicht geschrieben steht. Ein einfacher Algorithmus, geschrieben von einem Generator.

Falsch. Der Trap-Operator weist einer Variablen einen Wert zu, nicht dem zu vergleichenden Ausdruck.

double price=(_BuyLot>_SellLot?)Bid:Ask);

Und es ist höchste Zeit, dass wir die Algorithmen verstehen, sowohl die generierten als auch die handschriftlichen. Obwohl es manchmal einfacher ist, etwas mit der Hand zu schreiben, als herauszufinden, was jemand dort verschraubt hat.

 
Vitalie Postolache:


Und die Algorithmen sollten inzwischen abgebaut werden, egal ob sie generiert oder handgeschrieben sind.

Nun, ich verwende noch keine Klassen, Arrays, Makros und importiere nicht aus Windows-Bibliotheken. Alles zu seiner Zeit.
Grund der Beschwerde: