Fehler, Irrtümer, Fragen - Seite 553

 
Urain:

Dann machen Sie einen Vorschlag im Profil-Thread (es gibt allerdings keinen Fehler).

Nun... Ich glaube, das ist ein Fehler. Nach meinem Verständnis kann ich im Kalender das Ende des Zeitraums als heutiges Datum auswählen,
dann wird erwartet, dass der Tester und der Optimierer bis zur aktuellen Zeit arbeiten, aber das passiert nicht ((
die entwickler sind sich dessen bewusst und es liegt in ihrer Macht, eine gute Plattform zu schaffen. wenn nicht, dann nicht.

 

Ich habe diesen Artikel "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 gelesen und darin die folgenden Zeilen gefunden:


Bei 3- und 5-stelligen Kursen multiplizieren wir die Werte für Stop Loss und Take Profit mit 10.

Das im Terminal enthaltene MACD-Beispiel enthält die gleichen Informationen:

//--- Abstimmung für 3 oder 5 Ziffern
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_angepasster_Punkt=m_Symbol.Punkt()*Ziffern_angepasst;

Was ist diese Aktion? Warum werden Variablen mit 10 mit 3 und 5 Dezimalstellen multipliziert?

Пошаговое руководство по написанию MQL5-советников для начинающих
Пошаговое руководство по написанию MQL5-советников для начинающих
  • 2010.06.09
  • Samuel
  • www.mql5.com
Написание советников на MQL5 проще чем кажется, вы легко можете этому научиться. В этом руководстве вы познакомитесь с основными моментами, необходимыми для написания простого советника на основе конкретной торговой стратегии. Рассмотрена структура советника, использование встроенных технических индикаторов и торговых функций, вопросы отладки и тестирования советника на исторических данных.
 
progeon:

Ich habe diesen Artikel "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 gelesen und darin die folgenden Zeilen gefunden:

Bei 3- und 5-stelligen Kursen multiplizieren wir die Werte für Stop Loss und Take Profit mit 10.

Das im Terminal enthaltene MACD-Beispiel enthält die gleichen Informationen:

//--- Abstimmung für 3 oder 5 Ziffern
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_angepasster_Punkt=m_Symbol.Punkt()*Ziffern_angepasst;

Was ist diese Aktion? Warum werden Variablen mit 10 mit 3 und 5 Dezimalstellen multipliziert?

Es ist für die Freunde, die daran gewöhnt sind, alles in vier Ziffern zu zählen, und die ihre Meinung nicht ändern wollen.

Wenn wir also einen Stop-Loss von 100 Punkten in den Parametern festlegen, erhalten wir bei fünfstelligen Berechnungen 1000 Punkte und bei vierstelligen Berechnungen 100 Punkte, was dasselbe ist.

Die vierstellige Zahl hat Vorteile, die Leichtigkeit der Neuberechnung des Gewinns, 1 pip 1% der investierten Mittel.

 
progeon:

Ich habe diesen Artikel "A Step-by-Step Guide to Writing MQL5 Expert Advisors for Beginners" https://www.mql5.com/ru/articles/100 gelesen und darin die folgenden Zeilen gefunden:

Bei 3- und 5-stelligen Kursen multiplizieren wir die Werte für Stop Loss und Take Profit mit 10.

Das im Terminal enthaltene MACD-Beispiel enthält die gleichen Informationen:

//--- Abstimmung für 3 oder 5 Ziffern
int digits_adjust=1;
if(m_symbol.Digits()==3 || m_symbol.Digits()==5) digits_adjust=10;

m_angepasster_Punkt=m_Symbol.Punkt()*Ziffern_angepasst;

Was ist das für eine Aktion? Warum sollte man eine Variable mit 10 mit 3 und 5 Dezimalstellen multiplizieren?


Für eine bessere Kompatibilität mit verschiedenen Brokern (die 4- oder 5-stellige Kurse anbieten), d.h. ohne die Notwendigkeit, die Parameter des Expert Advisors zu ändern.

Dieser Algorithmus basiert auf der Tatsache, dass bei Brokern, die 4-stellige Kurse anbieten, _Digits4 oder 2 sein können (normalerweise bei Paaren mit JPY),

und in den 5-Stellern 5 und 3 entsprechend.

Allerdings bin ich selbst an der Sicherheit dieser Methode interessiert, da es Tools mit unterschiedlichenWerten von _Digitsgibt.

Ich persönlich prüfe mit "EURUSD". Aber zumindest gibt es Broker im MT4, bei denen der Eurodollar einen etwas anderen Namen hat, zum BeispielEURUSD_fx

oder so ähnlich.

 
crOss:
пункты 1 и 2 уходят, если фиксировать правое время на момент начала теста/оптимизации.
никто не просит актуальность до секунды... но один торговый день - это, извините, ни в какие ворота.

Urain:

Dann müssen Sie nicht nur das Jahr, den Monat und das Datum eingeben, sondern auch die Stunde und die Minuten des Endes.

Nicht unbedingt, die Zeit kann rein programmatisch festgelegt werden, wenn die Prüfung/Optimierung läuft.

Ehrlich gesagt, finde ich den Vorschlag recht vernünftig. Ich bin sehr dafür.

Im Moment ist das für mich irrelevant, aber vielleicht ist es bald sehr wünschenswert.

 
Urain:

Dies ist für diejenigen, die es gewohnt sind, alles in vierstelligen Punkten zu zählen, und die nicht umbauen wollen.

Wenn wir also in den Parametern einen Stoploss von 100 Punkten einstellen, erhalten wir eine Neuberechnung von 1000 Punkten im fünfstelligen Bereich und 100 Punkten im vierstelligen Bereich, was dasselbe ist.

Die vierstellige Zahl hat Vorteile, die Leichtigkeit der Neuberechnung des Gewinns, 1 pip 1% der investierten Mittel.

Ich sehe, lassen Sie uns fortfahren) Eine weitere Frage - der gleiche Artikel verwendet NormalizeDouble Funktion bei der Bildung von Stop Loss und Take Profit aus welchem Grund? Es scheint bedeutungslos zu sein.

mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); // Stop Loss
mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); // Take Profit
Документация по MQL5: Преобразование данных / NormalizeDouble
Документация по MQL5: Преобразование данных / NormalizeDouble
  • www.mql5.com
Преобразование данных / NormalizeDouble - Документация по MQL5
 
progeon:

Ich verstehe, lassen Sie uns fortfahren) Eine solche Frage - in demselben Artikel wird die Funktion NormalizeDouble bei der Bildung von Stop Loss und Take Profit aus welchem Grund verwendet? Es scheint bedeutungslos zu sein.

Bei der Berechnung der Stufen werden Operationen mit Verdopplungen durchgeführt, und das Ergebnis wird nicht normalisiert, so dass Sie Requotes erhalten, wenn Sie es an den Server weitergeben. Aus diesem Grund wird das Ergebnis der Berechnung normalisiert.
 
Urain:
Es ist nicht sinnlos, bei der Berechnung des Niveaus werden Operationen mit Doubles durchgeführt, und das Ergebnis wird nicht normalisiert, wenn Sie es so an den Server weitergeben, erhalten Sie Requotes. Aus diesem Grund wird das Ergebnis der Berechnung normalisiert.
Angenommen, der Stop-Loss ist 100, der Point ist 0,00001. Was kann bei der Multiplikation dieser beiden Werte passieren? Werden die 9er irgendwo auftauchen? Zum Beispiel 0,0009999?
 
progeon:
Stoploss sagen wir 100, Punkt 0,00001. Was könnte bei der Multiplikation der beiden entstehen? Werden die 9er irgendwo auftauchen? Zum Beispiel 0,0009999?
   double a=1.45861+32*_Point;
   Print(DoubleToString(a,16));

Eine normale Zahl sollte 1,45893 lauten, aber wir erhalten 1,4589300000000002

 
Renat:

Wir haben geplant, in den EA-Informationen eine Registerkarte "Sicherheit" einzurichten, auf der die Sicherheitsstufe und die Liste der aufgerufenen DLL-Funktionen angezeigt werden.

Rechtzeitig zum Start des Shops werden wir an den EX5-Dateien arbeiten.

Renat, es gibt noch zwei Fragen zu DLL-Aufrufen im neuen EX5-Format.

1. Wie wird sich der Code verhalten, wenn Anrufe deaktiviert sind? Wie jetzt - läuft er nicht einmal?

2. Wenn er nicht startet, wofür ist dann MQL5_DLLS_ALLOWED /TERMINAL_DLLS_ALLOWED?