[WARNUNG GESCHLOSSEN!] Alle Fragen von Neulingen, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Ohne dich kann ich nirgendwo hingehen. - Seite 698
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
Copyright
Dankeschön
Ich komme noch einmal auf die Frage zurück, die ich https://forum.mql4.com/ru/15972/page693 gestellt habe - hier geht es um die Parameterübertragung zwischen Indikatoren und Indikatoren - Experten. Natürlich löst die vorgeschlagene Verwendung von globalen Variablen dieses Problem teilweise, aber es stellt sich eine andere Frage! Gemäß der Beschreibung der globalen Variablen ......... Eine GV-Variable kann nur vom Typ Double sein, aber woher sollen die Expert Advisors wissen, ob die Variable von einem bestimmten Symbol und einem bestimmten Zeitrahmen stammt, wenn sie den Wert einer globalen Variablen erhalten?
Kodieren Sie die Symbole. Es ist zwar möglich, zu diesem Zweck Variablennamen zu verwenden, zum Beispiel EUSRUSD_H1_Var1
Hergestellt im Gorando-Programm, mit dem Zusatz Ihres Martins.
//+------------------------------------------------------------------+
//| Copyright 2005, Gordago Software Corp.
//| http://www.gordago.com/ |
//| Version 2.0 |
//+------------------------------------------------------------------+
void OpenBuy() {
double dStopLoss = 0, dTakeProfit = 0;
double Lots_New = Lot;
wenn (isLossLastPos(NULL, -1, MAGIC))
Lose_Neu *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))
Lose_Neu = Los;
wenn (dBuyStopLossPoint > 0)
dStopLoss = Bid-dBuyStopLossPoint*Point;
wenn (dBuyTakeProfitPoint > 0)
dTakeProfit = Bid + dBuyTakeProfitPoint * Point;
int numorder = OrderSend(Symbol(), OP_BUY, Lots_New, Ask, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenBuy);
if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}
void OpenSell() {
double dStopLoss = 0, dTakeProfit = 0;
double Lots_New = Lot;
wenn (isLossLastPos(NULL, -1, MAGIC))
Lose_Neu *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))
Lose_Neu = Los;
wenn (dSellStopLossPoint > 0)
dStopLoss = Ask+dSellStopLossPoint*Point;
wenn (dSellTakeProfitPoint > 0)
dTakeProfit = Ask-dSellTakeProfitPoint*Point;
int numorder = OrderSend(Symbol(),OP_SELL, Lots_New, Bid, nSlippage, dStopLoss, dTakeProfit, sNameExpert, MAGIC, 0, colorOpenSell);
if (numorder > -1 && lFlagUseSound)
PlaySound(sSoundFileName);
}
Sie haben
void OpenBuy() {
double dStopLoss = 0, dTakeProfit = 0;double Lots_New = Lot;
wenn (isLossLastPos(NULL, -1, MAGIC))
Lose_Neu *= 2;
else if (!isLossLastPos(NULL, -1, MAGIC))
Lose_Neu = Los;
ist eine Funktion, und gleich zu Beginn dieser Funktion weisen Sie der Variablen Lots_New den Wert = Lot zu;
Überlegen Sie sich, wie sie sich danach verändern wird, wenn Sie sie immer wieder in ihren ursprünglichen Zustand zurückversetzen?
Wo habe ich Ihnen gesagt, Sie sollen es schreiben? In den externen Variablen vor der Startfunktion...
Und normalisieren Sie den Wert des Loses auf die richtige Größe:
Lots_New = NormalizeLot(Lot*2, False, "");
Kodifizieren Sie die Symbole. Wir können jedoch auch Variablennamen für diesen Zweck verwenden, z. B. EUSRUSD_H1_Var1
Richtig! Danke! Aber es ist immer noch nicht klar... Es stellt sich heraus, dass ich im Indikator alle Variablennamen schreiben muss, die der gesamten Anzahl der möglichen Symbole entsprechen. Und wenn ich zu einem vordefinierten Zeitpunkt einen Parameter vom Indikator übergeben möchte, muss ich den Symboldefinitionscode des Indikators schreiben. Und dann werde ich mit Hilfe von Vergleichen oder anderen Funktionen des Typs case bestimmen, in welche benannte globale Variable der Parameter geschrieben werden soll! Ich verstehe das alles richtig! ?
Und hier ist eine weitere rhetorische Frage, oder einfach nur, um Ihre Meinung zu erfahren. Es gibt sogenannte "Muster" in der Natur der Analyse. Muster sind nichts anderes als Muster, die auf bestimmten sich wiederholenden Momenten (oder Parametern) beruhen. Aber leider ist der Markt eine instabile Substanz, so dass jedes Muster bis zu einem gewissen Grad als ein ungenaues Muster behandelt werden kann, oder ein wenig von bestimmten Parametern abweichen, die loyal zur Bildung des Musters sind. Wenn wir einen beliebigen Zeitrahmen, z. B. 15 Minuten, als Grundlage für die Analyse nehmen, werden wir feststellen, dass es eine bestimmte Anzahl von Mustern gibt, die zu bestimmten Bedingungen erscheinen. Es gibt eine Reihe von Situationen, in denen kein Muster gebildet wird, aber diese Situationen liegen nahe an der Bildung des Musters, sie passen nur nicht zu bestimmten Parametern (sie weichen ein wenig ab). Diese Situation hätte durch vernünftige Bedingungen für die Musterbildung vermieden werden können. In diesem Fall gäbe es mehr Muster und mehr Möglichkeiten, in den Markt einzusteigen, aber die Zahl der falschen Muster würde zunehmen, da die Parameter nicht streng festgelegt wurden. (Wenn wir bedenken, dass bei strengen Parametern das Muster unter diesen Bedingungen nicht einmal innerhalb eines Tages erscheinen kann).
Frage: Mit welchen Parametern (harte Bedingung oder weiche Bedingung) soll ich ein Muster bilden?
Helfen Sie mir, ein Problem zu lösen!
Ich suche nach Aufträgen, die offen oder in Bearbeitung sind. Wenn sie verfügbar sind, entscheide ich, ob es sich um einen Kauf- oder Verkaufsauftrag handelt. Unter bestimmten Bedingungen (wenn einer größer als der andere oder kleiner als der dritte ist), möchte ich diesen Auftrag schließen. Ändern Sie die Parameter und öffnen Sie sie erneut.
Das Problem ist, dass es immer ein Signal gibt, um den Auftrag zu schließen und zu öffnen. Deshalb wird mein Auftrag geschlossen, dann wieder geöffnet, und so weiter, geöffnet und geschlossen ... )))
Wie lässt sich dieses Problem beheben? Ga
Genau! Danke! Aber es ist immer noch nicht klar. Es stellt sich heraus, dass ich in meinem Indikator alle Variablennamen vorschreiben muss, die der gesamten Anzahl der möglichen Zeichen entsprechen. Und wenn ich zu einem vordefinierten Zeitpunkt einen Parameter vom Indikator übergeben möchte, muss ich den Symboldefinitionscode des Indikators schreiben. Und dann werde ich mit Hilfe von Vergleichen oder anderen Funktionen des Typs case bestimmen, in welche benannte globale Variable der Parameter geschrieben werden soll! Ich verstehe das alles richtig! ?
Und nur eine rhetorische Frage, oder um Ihre Meinung zu erfahren. Es gibt sogenannte "Muster" in der Natur der Analyse. Muster sind nichts anderes als Muster, die auf bestimmten sich wiederholenden Momenten (oder Parametern) beruhen. Aber leider ist der Markt eine instabile Substanz, so dass jedes Muster bis zu einem gewissen Grad als ein ungenaues Muster behandelt werden kann, oder ein wenig von bestimmten Parametern abweichen, die loyal zur Bildung des Musters sind. Wenn wir einen beliebigen Zeitrahmen, z. B. 15 Minuten, als Grundlage für die Analyse nehmen, werden wir feststellen, dass es eine bestimmte Anzahl von Mustern gibt, die zu bestimmten Bedingungen erscheinen. Und es wird einige Situationen geben, in denen das Muster nicht gebildet wird, aber diese Situationen sind sehr nahe an der Bildung des Musters, sie passen nur nicht zu bestimmten Parametern (sie weichen ein wenig ab). Diese Situation hätte durch vernünftige Bedingungen für die Musterbildung vermieden werden können. In diesem Fall gäbe es mehr Muster und mehr Möglichkeiten, in den Markt einzusteigen, aber die Zahl der falschen Muster würde zunehmen, weil die Parameter nicht streng festgelegt wurden. (Wenn wir bedenken, dass bei strengen Parametern das Muster unter diesen Bedingungen nicht einmal innerhalb eines Tages erscheinen kann).
Frage: Mit welchen Parametern (harter oder weicher Zustand) soll ich ein Muster bilden?
Helfen Sie mir, ein Problem zu lösen!
Ich suche nach Aufträgen, die offen oder in Bearbeitung sind. Wenn sie verfügbar sind, entscheide ich, ob es sich um einen Kauf- oder Verkaufsauftrag handelt. Unter bestimmten Bedingungen (wenn einer größer als der andere oder kleiner als der dritte ist), möchte ich diesen Auftrag schließen. Ändern Sie die Parameter und öffnen Sie sie erneut.
Das Problem ist, dass es immer ein Signal gibt, um den Auftrag zu schließen und zu öffnen. Deshalb wird mein Auftrag geschlossen, dann wieder geöffnet, und so weiter, geöffnet und geschlossen ... )))
Wie lässt sich dieses Problem lösen? GaRoger, danke, aber es funktioniert immer noch nicht richtig. Ich habe es noch einmal mit einem Schleppnetz versucht, aber der Fehler ist immer noch da :( Gibt es einen Unterschied zwischen dem Schleppen einer Pose und dem Schleppen mehrerer Posen zur gleichen Zeit?
Ich verstehe, Sie definieren die Variable ro am Anfang der Funktion, aber Sie weisen sie nirgends zu, d. h. sie ist 0.