[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

 
valenok2003:

Copyright
string copyright = "\xA9";
 
ToLik_SRGV:

Dankeschön
 
Ich komme noch einmal auf die Frage zurück, die ich https://forum.mql4.com/ru/15972/page693 gestellt habe - hier die Parameterübergabe 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?
 
Infinity:
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
 
cyclik33:


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, "");

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 16.05.2008                                                     |
//|  Описание : Возвращает нормализованное значение торгуемого лота.           |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    lo - нормализуемое значение лота.                                       |
//|    ro - способ округления          (   False    - в меньшую,               |
//|                                        True     - в большую сторону)       |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//+----------------------------------------------------------------------------+
double NormalizeLot(double lo, bool ro=False, string sy="") {
  double l, k;
  if (sy=="" || sy=="0") sy=Symbol();
  double ls=MarketInfo(sy, MODE_LOTSTEP);
  double ml=MarketInfo(sy, MODE_MINLOT);
  double mx=MarketInfo(sy, MODE_MAXLOT);

  if (ml==0) ml=0.1;
  if (mx==0) mx=100;

  if (ls>0) k=1/ls; else k=1/ml;
  if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k;

  if (l<ml) l=ml;
  if (l>mx) l=mx;

  return(l);
}
 
Vinin:

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


 
Infinity:


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?

Sie können dies mit Parametern tun, aber nicht mit Mustern. Sie müssen zunächst die Kriterien festlegen. Ähnlich, nicht ähnlich. Und wenn sie ähnlich ist, in welchem Umfang. Zumindest um wie viel (in Prozenten). Im einen Fall die Zeitkomponente, im anderen Fall die Preiskomponente. Wie man sie miteinander in Beziehung setzt. Obwohl ich eine neuronale Schicht anbringen kann. Die Kohonen-Schicht leistet dabei gute Arbeit
 

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? Ga
 
Necron:
Roger, 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.