[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 279
![MQL5 - Sprache von Handelsstrategien, eingebaut ins Kundenterminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Werfen Sie den Algorithmus in Worte, denn er ist ein wenig unklar...
Ungefähr wie folgt:
//Bestimmen Sie die Gesamtzahl der Handelstage.
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Tage=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);
Berechnen Sie dann für den angegebenen Zeitraum den Gewinn/Tage = %/Tag
Ich muss die Wochenendtage für diesen gesamten Zeitraum berechnen und von der Berechnung ausschließen:
Gewinn/(freie Tage)
Ungefähr wie folgt:
//Bestimmen Sie die Gesamtzahl der Handelstage.
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Tage=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);
Berechnen Sie dann für den angegebenen Zeitraum den Gewinn/Tage = %/Tag
Ich muss die Wochenendtage für diesen gesamten Zeitraum berechnen und von der Berechnung ausschließen:
Gewinn/(freie Tage)
Überprüfen Sie, ob Sie die erforderliche Historie für den Zeitraum haben und berechnen Sie Ihren "Gewinn/Tage". Verwenden Sie einfach keinen Kalender (Konstanten in Ihrer Formel) und das war's. In die Historie gehen nur Handelstage ein (es gibt auch Feiertage). Binden Sie sich z. B. an die Tagesbalken.
Wenn Sie einen bestimmten Kalender (z. B. Gregorianisch oder Julianisch) verwenden möchten. Was ist der Trick, gibt es eine neue Bar, gibt es einen neuen Song?
Ungefähr wie folgt:
//Bestimmen Sie die Gesamtzahl der Handelstage.
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Tage=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24) + 1);
Berechnen Sie dann für den angegebenen Zeitraum den Gewinn/Tage = %/Tag
Ich muss die Wochenendtage für diesen gesamten Zeitraum berechnen und von der Berechnung ausschließen:
Gewinn/(freie Tage)
Sie können die Anzahl der täglichen Balken seit dem Startdatum des Tests berechnen.
Sie können die Anzahl der täglichen Balken mit mehr als 20 Stunden zählen (um arbeitsfreie Tage auszuschließen). Sie können einen neuen Tag verfolgen, als ob ein neuer Balken erschienen wäre, und so weiter (wie die gesamte Historie der Trades lesen und einzigartige Daten berechnen).
Sie können die Anzahl der täglichen Balken seit dem Startdatum des Tests zählen.
Sie können die Anzahl der Tagesbalken mit mehr als 20 Stundenbalken zählen (um unvollständige Wochenenden auszuschließen). Sie können einen neuen Tag verfolgen, wenn ein neuer Balken erscheint, und so weiter (wie das Lesen der gesamten Geschichte des Handels und das Zählen der einzelnen Daten).
Prüfen Sie, ob Sie die erforderliche Historie für den Zeitraum haben und zählen Sie Ihren "Gewinn/Tage". Verwenden Sie einfach keine Kalenderwerte (Konstanten in Ihrer Formel) und das war's. In die Historie gehen nur Handelstage ein (es gibt auch Feiertage). Binden Sie sich z. B. an die Tagesbalken.
Wenn Sie einen bestimmten Kalender (z. B. Gregorianisch oder Julianisch) verwenden möchten. Was ist der Trick, gibt es eine neue Bar, gibt es einen neuen Song?
Ich habe es auf diese Weise gemacht:
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24));
for(i=0; i<Days; i++)
{
if(TimeDayOfWeek(CurTime()-i*24*3600)==6 || TimeDayOfWeek(CurTime()-i*24*3600)==7) Days3++;
}
Tage-=Tage3;
Ich habe dies getan:
OrderSelect(0,SELECT_BY_POS,MODE_HISTORY);
Days=MathRound((TimeCurrent()-OrderOpenTime())/(3600*24));
for(i=0; i<Days; i++)
{
if(TimeDayOfWeek(CurTime()-i*24*3600)==6 || TimeDayOfWeek(CurTime()-i*24*3600)==7) Days3++;
}
Tage-=Tage3;
nein, mit dieser Auftragsauswahl wählen Sie Aufträge in der Historie aus (EINMAL), und gehen dann nur einen (den letzten). Ist nicht alles verwirrend?
Führen Sie eine Auftragssuche in der Schleife durch, und wenden Sie Ihre Bedingungen auf jeden Auftrag an.
// Durchsuche alle Aufträge in der Schleife
for(int i=0;i<=OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))
{
// Wenn das Symbol und die magische Zahl übereinstimmen, ist die Bestellung unsere
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
// Sehen Sie hier nach.
}
}
}
Nein, mit dieser Auftragsauswahl wählen Sie Aufträge in der Historie aus (EINMAL) und gehen dann nur zu einem (dem letzten). Ist nicht alles verwirrend?
Gehen Sie die Aufträge in der Schleife durch, und wenden Sie auf jeden Auftrag Ihre eigenen Bedingungen an.
// Durchsuche alle Aufträge in der Schleife
for(int i=0;i<=OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS, MODE_HISTORY))
{
// Wenn das Symbol und die magische Zahl übereinstimmen, ist die Bestellung unsere
if(OrderSymbol()==Symbol() && OrderMagicNumber()==MagicNumber)
{
// Sehen Sie hier nach.
}
}
}
Nun, natürlich habe ich mich geirrt:
TimeDayOfWeek(CurTime()-i*24*3600)==7
anstelle von 7 sollte es 0 sein.
Überprüft, bei Konten, die über eine Woche alt sind. Sie scheint korrekt angezeigt zu werden.
Wie wird der iMA berechnet?
Kann ich irgendwo nachlesen, wie die iMA-Funktion berechnet wird (oder ist sie klassifiziert)?
Ich interessiere mich besonders für MODE_LWMA.
Ich möchte aussehen und optimieren nach meinem Geschmack, aber etwas Google-Quellen nicht bekommen
Nun, natürlich habe ich mich geirrt:
TimeDayOfWeek(CurTime()-i*24*3600)==7
anstelle von 7 sollte es 0 sein.
Überprüft, bei Konten, die über eine Woche alt sind. Sie scheint korrekt angezeigt zu werden.