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

 
Taras Slobodyanik:

- Schauen Sie sich die Zeit des letzten Taktes an
- alles zusammenzählen, was in dieser Bar geschlossen wurde
- vom aktuellen Saldo subtrahieren

und so weiter, ein Balken nach dem anderen.

Geht es nicht auch ohne Rechnen? Vielleicht könnten Sie eine Art benutzerdefinierte Funktion schreiben?

 
novichok2018:
Ich habe meine Frage wahrscheinlich nicht richtig formuliert, da die Antworten nicht zum Thema gehören. Es ist mir egal, ob die Positionen geschlossen wurden oder nicht, und der Wert eines Ticks interessiert mich nicht. Ich muss wissen, wie hoch der Kontostand zum Zeitpunkt der Schließung von 1, 2 oder 3 Balken eines bestimmten Symbols war, um einen Vergleich zu haben. Positionen auf diesen Stäben wurden eröffnet und geschlossen, einschließlich Positionen auf anderen Symbolen: einige Positionen wurden im positiven Bereich geschlossen, andere im negativen Bereich und wieder andere wurden noch nicht geschlossen, so dass sich der Saldo geändert hat. Ich muss die spezifischen Werte kennen. Ich danke Ihnen.

es gibt keine Standardfunktionen und auch keine Suche über das Forum oder auf andere Weise

Im Tester können Sie die folgende Situation zu simulieren: beim Handel mit mehreren EAs, können Sie nicht wissen, was das Gleichgewicht Wert war, natürlich können Sie versuchen, Aufträge zu zählen offen, dann suchen Sie nach einer Zeit, wenn es keine offenen Aufträge im Terminal Geschichte ... Und das Endergebnis bedeutet nicht, dass alles berücksichtigt wird.

im Tester können Sie diese Situation leicht simulieren - beschreiben Sie im globalen Bereich eine Variable und prüfen Sie die Bedingung in OnTick if(OrderTotal()==0) StartBalance = AccountBalance();

und beim Öffnen von Aufträgen im Tester haben Sie dann den Anfangswert von balance.... Sie können zu jedem Balken den Wert der Gewinnaufträge hinzufügen, Sie können diese Werte zu einem Array oder einer Liste hinzufügen


Aber wenn Sie diesen Code für ein Konto mit mehreren Expert Advisors verwenden möchten, müssen Sie Ihre Aufgabe nicht als Suche nach dem Saldo vor n-Balken, sondern als Gesamtgewinn der offenen Aufträge formulieren. Keine offenen Aufträge werden nicht hinzugefügt, offene Aufträge - beginnen Sie, den Gewinn für jeden Balken zum Array hinzuzufügen. Das bedeutet, dass Sie nach einer Möglichkeit suchen, die Logik Ihres TS nicht in Bezug auf den Saldo zu ändern, sondern auf den Gewinn der offenen Aufträge und/oder den Gewinn der geschlossenen Aufträge in der Terminal-Historie für einen Zeitraum (Tag, Stunde?)

 
Igor Makanu:

es gibt keine Standardfunktionen und auch keine Suche über das Forum oder auf andere Weise

Im Tester können Sie folgende Situation simulieren: Wenn Sie mit mehreren Expert Advisors handeln, können Sie nicht wissen, wie hoch der Kontostand zu diesem Zeitpunkt war. Natürlich können Sie versuchen, die geöffneten Aufträge zu zählen und dann in der Terminal-Historie nach einem Zeitpunkt zu suchen, an dem es keine offenen Aufträge gab ... Und das Endergebnis bedeutet nicht, dass alles berücksichtigt wird.

im Tester können Sie diese Situation leicht simulieren - beschreiben Sie im globalen Bereich eine Variable und prüfen Sie die Bedingung in OnTick if(OrderTotal()==0) StartBalance = AccountBalance();

und beim Öffnen von Aufträgen im Tester haben Sie dann den Anfangswert von balance.... Sie können zu jedem Balken den Wert der Gewinnaufträge hinzufügen, Sie können diese Werte zu einem Array oder einer Liste hinzufügen


Aber um mit diesem Code auf einem Konto mit mehreren EAs zu arbeiten, sollte die Aufgabe nicht darin bestehen, nach dem Saldo vor n-Balken zu suchen, sondern den Gewinn der offenen Orders, keine offenen Orders, offene Order zu summieren - beginnen Sie damit, den Gewinn für jeden Balken zum Array hinzuzufügen. Das bedeutet, dass Sie nach einer Möglichkeit suchen, die Logik Ihres TS nicht in Bezug auf den Saldo zu ändern, sondern auf den Gewinn der offenen Orders und/oder geschlossenen Orders in der Terminal-Historie für einen Zeitraum (Tag, Stunde?)

Verstanden. Vielen Dank für die ausführliche Antwort.

 

Hallo! Wie erhalte ich die EingabeparameterNACH der Erstellung eines technischen Indikator-Handles, das mit iCustom erstellt wurde.

Zum Beispiel

iCustom(NULL,0, "name_indicator",1,2,3) - wie erhält man die Eingabeparameter 1,2 und 3?

 
Hallo, könnten Sie mir bitte sagen, wie ich den aktuellen Prozentsatz des Drawdowns herausfinden kann?
 
nalyk:
Hallo, könnten Sie mir bitte sagen, wie ich den aktuellen Prozentsatz des Drawdowns herausfinden kann?

Führen Sie ein Konto über das Eigenkapital

 
nalyk:
Hallo, könnten Sie mir bitte sagen, wie ich den aktuellen Prozentsatz des Drawdowns herausfinden kann?
double drawdown = AccountProfit()*100/AccountBalance();
 

Ist es möglich, eine Vorlage auf eine Struktur und eine Klasse anzuwenden, um darin Variablen eines Vorlagentyps zu deklarieren, um später mit diesen Variablen zu arbeiten und auf sie zu verweisen? Ich habe dies mit einer Struktur versucht.

templ(T)struct A
{
  T val;
  int ind;
};

Er kompiliert, erlaubt es aber nicht, der Struktur einen Namen zuzuweisen.

 
Hallo! Helfen Sie mir bei den folgenden Aufgaben:
Es ist notwendig, für jede offene Position auf dem Markt ein Gewinnziel festzulegen, aber nicht insgesamt, sondern einzeln!
Beispiel: EURUSD wurde eröffnet und hat ein Gewinnziel von $1 in seinen Einstellungen, und sobald es erreicht wurde, schloss sich die Position von selbst, nur sie!
Jedes Währungspaar sollte für sich arbeiten, nicht für den Gesamtgewinn!

Ich habe den Code für den Gesamtgewinn für alle Paare gefunden:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в валюте депозита |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            p+=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}
Hilfe bei der Wiederherstellung für jedes Währungspaar separat...... Vielen Dank!
 
ponochka:
Hallo! Bitte helfen Sie mir, folgendes zu tun:
Es ist notwendig, für jede offene Position auf dem Markt ein Gewinnziel zu setzen, aber nicht insgesamt, sondern getrennt!
Beispiel: EURUSD wurde eröffnet und hat ein Gewinnziel von $1 in seinen Einstellungen und sobald es erreicht wurde, schloss sich die Position von selbst, nur das eine!
Jedes Währungspaar sollte für sich arbeiten, nicht für den Gesamtgewinn!

Ich habe den Code für den Gesamtgewinn für alle Paare gefunden:
Hilfe bei der Wiederherstellung für jedes Währungspaar separat...... Vielen Dank!

Übergeben Sie im ersten Parameter dieser Funktion die Zeichenkette mit Ihrem Paar und es werden nur die Gewinne für dieses Paar gezählt.

Übergeben Sie im zweiten Parameter dieser Funktion die Art der Operation (Kauf oder Verkauf) und es wird nur der Gewinn für diese Operation berechnet.

Das gilt auch für die magische Zahl. Dies ist eine universelle Funktion.

Grund der Beschwerde: