Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 640
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
Hallo Kameraden!
MT5 hat so wunderbare und sehr nützliche Werkzeuge "Impulse Elliott Wave" und "korrigierende Elliott Wave".
Die Frage ist: Kann ich diese Tools von MT5 in MT4 integrieren?
Ich handle mit MT4, und es ist nicht sehr bequem, für die Analyse auf MT5 umzusteigen.
Oder: Welche anderen Möglichkeiten gibt es, das Problem zu lösen?
Guten Tag, die Sprache hat einen solchen Marktparameter wie MarketInfo(Symbol(), MODE_TICKVALUE). Können Sie in allgemeiner Form beschreiben, wie dieser Wert berechnet wird?
Dies ist der Wert der minimalen Preisänderung (1 Pip) in der Einzahlungswährung bei 1,00 Lot! Die Berechnung ist sehr einfach: 1,00(Lot)/1,36030(aktueller Kurs des Euro) = 0,7351 in Euro.
Dies ist der Wert der minimalen Preisänderung (1 Pip) in der Einzahlungswährung bei 1,00 Lot! Ganz einfach berechnet: 1,00(Lot)/1,36030(aktueller Kurs des Euro) = 0,7351 in Euro.
Außer, dass eine Anfrage über marketinfo irgendwie 10 für alle Paare außer Yen-Paare liefert ))))
Woher haben Sie diese Formel?
außer, dass eine Abfrage über marketinfo irgendwie 10 für alle Paare außer Yen-Paare liefert ))))
Woher haben Sie diese Formel?
Ich mache alle Formeln selbst, und jetzt habe ich sie aus meiner Tabelle genommen.
Und das hier ist von Doki:
MODE_TICKVALUE.
16
Größe der minimalen Änderung des Symbolpreises in der Pfandwährung
Die Berechnungen werden nicht geteilt.
Ich stelle alle Formeln selbst her und habe sie jetzt aus meiner Tabelle erhalten.
Und das ist von den Docks:
MODE_TICKVALUE
16
Größe der Mindestpreisänderung des Instruments in der Einzahlungswährung
Die Berechnungen werden nicht geteilt.
Obwohl für 1 Eurodollar-Lot 1 Pip in Wirklichkeit 10 Dollar kostet, ist es also in Ordnung.
Und Berechnungen sollten nicht nur mit denen geteilt werden, die sich schämen, sie zu zeigen.
Ja, in diesem Fall sollte die Formel korrekt sein - MODE_TICKVALUE = MODE_LOTSIZE * MODE_TICKSIZE - für Euro, die Formel für Kreuze und Yen ist ein bisschen anders
Um ehrlich zu sein, habe ich noch nicht herausgefunden, wie man es anwendet. Es fehlt noch ein Millimeter, es wäre eine Schande, aufzuhören, wenn es fast fertig ist.
Aufgabe, schreibe den Preis nicht in das Array, wenn das Objekt time(2nd parameter+3600sec>current)||(1st parameter time - 2nd parameter time)<3600sec )
Warum einen Fehler emulieren?
Ein Fehler signalisiert, dass der Algorithmus aus irgendeinem Grund, der mit Systembeschränkungen/-fehlern zusammenhängt, nicht ausgeführt werden konnte und kein Ergebnis mit einigen (natürlich begrenzten, aber) Garantien liefert. Die Funktion FillAndPrint() zeigt sehr anschaulich, was eine Fehlersituation bedeutet und was sie nicht bedeutet. Wenn ein Fehler auftritt, wird nicht einmal versucht, das Ergebnis zu drucken. Liegt kein Fehler vor, kann dem Ergebnis vertraut werden. So sollte die Logik "Fehler/kein Fehler" aufgebaut sein.
Aber hier müssen wir den Algorithmus ändern: Wir müssen auch einen zusätzlichen Filter anwenden.
So sollte es auch gemacht werden:
Zunächst haben wir nach Objekttypen und Parametern "gefiltert", indem wir aus allen verfügbaren Objekten nur die benötigten ausgewählt haben, und dann haben wir einen zusätzlichen Filter angewendet. Es ist ungefähr so, wie ein Mensch es tun würde. Das würde ein Mensch doch tun, oder?
Für jede dieser kleinen Teilaufgaben benötigen wir eine eigene Funktion.
Zahlen sollten nicht in Ausdrücken vorkommen, außer in sehr speziellen Fällen, z. B. wenn eine Verdopplung erforderlich ist und diese Verdopplung in der Natur des Algorithmus liegt. Dann kann die Zahl 2 direkt in Ausdrücken verwendet werden. Und in anderen, sehr seltenen Fällen.
In anderen Fällen sollten Mnemotechniken verwendet werden. Erstens verbessern sie das Verständnis dessen, was an einem bestimmten Ort vor sich geht, erheblich und tragen somit dazu bei, die Wahrscheinlichkeit von Fehlern zu verringern. Und zweitens ist der Wert selbst an einer Stelle festgelegt und kann bei Bedarf leicht geändert werden, und es ist unmöglich, einen Fehler zu machen, im Gegensatz zu dem Fall, in dem die Zahl wiederholt im Algorithmus verwendet wird und ohne Verwendung von Mnemonik die Zahlen an mehreren Stellen des Algorithmus korrigiert werden müssen.
Ergebnis des Laufs:
Es wird kein einziges Objekt gefunden. Erhöhen Sie die Werte beider Mnemotechniken 10 Mal auf 36000 (10 Stunden) und führen Sie den Vorgang erneut durch:
Ein Trend hat die Filterung bereits "bestanden". Wir stellen nun den Wert der ersten Mnemonik auf 3600 zurück und führen aus:
Wir können sehen, dass nun beide Trendlinien die Filterung "bestanden" haben. Übrigens empfehle ich, alle Zweige (Teile) des Programms auf diese Weise zu debuggen, nicht nur einen Zweig.
Um Ihnen dabei zu helfen, es irgendwie zu formalisieren, werde ich versuchen, es auf diese Weise zu erklären. Ein Programm ist offenbar wie ein Plan.
Jeder größere Punkt des Plans kann in kleinere Teilpläne untergliedert werden. Kleinere in noch kleinere. Die Punkte der kleinsten Teilpläne werden direkt ausgeführt.
Jeder Plan, jeder Teilplan und sogar die Punkte der kleinsten Teilpläne entsprechen den Funktionen im Programm. Die Elemente in den kleinsten Teilplänen entsprechen "End"-Funktionen, die nur Systemfunktionen aufrufen oder diese gar nicht aufrufen, z. B. AddValue() oder DiffInSecs() sind Beispiele aus der obigen Diskussion. Die obigen Teilplanpositionen entsprechen den Funktionen, die die Funktionen aufrufen, die die nachfolgenden Teilplanpositionen implementieren. Bei den oben genannten sind dies MassTrendNumber(), AddValueIfFound(), AddValueIfFiltered(). "Low-Level"-Funktionen sollten keine "High-Level"-Funktionen aufrufen, und "High-Level"-Funktionen sollten grundsätzlich nicht mehrere Ebenen nach unten springen, d.h. grundsätzlich nur Funktionen auf der darunter liegenden Ebene aufrufen. Diese Regel ist für "Low-Level" viel strenger als für "High-Level".
Versuchen Sie, Ihre Programme zu erstellen, indem Sie die darin enthaltenen Aktionen als (kurze) Funktionen organisieren, die durch diese Art von Baumstruktur verbunden sind, im Sinne von "wer ruft wen auf".
Dieses Programm hat einen degenerierten Baum: einen Zweig, der sich mehrfach "verzweigt". Und sie "verzweigt" sich nicht in zwei kleine Äste, sondern in einen. Aber der Punkt, dass "High-Level"-Funktionen immer wieder "Low-Level"-Funktionen aufrufen, ist zu erkennen. In dieser Änderung habe ich eine weitere Ebene in diese Struktur eingefügt, einen weiteren "unverzweigten Zweig" - AddValueIfFiltered().
https://www.mql5.com/ru/forum/152102 Ichhabe eine Frage
Alles ist richtig! Bei einer vierstelligen Notierung war es immer 1, und beieiner fünfstelligen Notierung ist es jetzt 10, weil es 10 mal mehr (und flachere) Punkte gibt. Und der Wert eines Min.-Ticks sollte aus dem aktuellen Preis berechnet werden!
Ich habe jetzt 4 Ziffern, auf ewoldollar bei 1 Lot kostet 1 Punkt $10 und das war schon immer so. Für Kreuze werden die Kosten zwischen 8 und 16 liegen, die Formel ist hier etwas komplizierter.
Zum Beispiel hat marketinfo für das Euro-Pfund 16,984 zurückgegeben, der Pfund-Dollar-Kurs = 1,6984, d.h. 1 Euro-Pfund-Punkt ist 1 Pfund wert, multipliziert mit dem Pfund-Dollar-Punktwert, der immer 10,0 beträgt (100000 * 0,0001 = 10,0 oder 100000 * 0,00010 = 10,0 - wie man will).
Alle diese Berechnungen sind nur korrekt, wenn Ihr Konto auf Dollar lautet:
In diesem Fall für xUSD (EURUSD, GBPUSD usw.) tickvalue = lot*point = 100000*0,0001 = 10,0
für USDx (USDCHF, USDJPY usw.) tickvalue = lot*point/Bid = 100000*0.01/101.93 = 9.8107
für xUSD/yUSD (EURGBP) tickvalue = Bid(yUSD)*lot*point = 1,6980*100000*0,0001 = 16,98
für Kreuzungen xUSD/USDy (EURJPY) tickvalue = lot*point/Bid(USDy) = 100000*0.01/101.91=9.8126
Ich habe jetzt 4 Ziffern, auf ewoldollar bei 1 Lot kostet 1 Punkt $10 und hat dies immer getan. Für Kreuze werden die Kosten zwischen 8 und 16 liegen, die Formel ist hier etwas komplizierter.
Zum Beispiel hat marketinfo für das Euro-Pfund 16,984 zurückgegeben, der Wechselkurs von evodollar = 1,3604, der Pfund-Dollar-Kurs = 1,6984, d.h. 1 Pip des Euro-Pfunds ist 1 Pfund wert, multipliziert mit dem Pfund-Dollar-Punktwert, der immer 10,0 beträgt (100000*0,0001 = 10,0 oder 100000*0,00010 = 10,0 - wie man will).
Meine ist einfach und praktisch! Und zu der Zeit, als es eine vierstellige Quote gab, hatte ich noch keine Programme geschrieben, ich kann das also nicht beurteilen. :)
Gute Nacht!