Inhalte aufrufen

  • Über Facebook anmelden Über Twitter anmelden Über WindowsLive anmelden Log In with Google Anmelden
  • Mitglied werden
Profilbild

Stolpersteine beim programmieren

- - - - -

  • Du kannst leider keine neuen Themen eröffnen
  • Please log in to reply
216 Antworten zu diesem Thema

  #201
OFFLINE   ping

@ping, was Du aber auch wieder alles findest und untersuchst, obwohl Du doch nie Abweichungen gesehen hattest.

 

ich wollte doch testen ob meine Berechnungen stimmen. Dann hab ich irgendwann ein Sleep(5000) zwischen Speicherung vom letzten Preis und OrderSend eingebaut und trotz offensichtlicher Preisveränderung war der Vergleich immer Null.

Zusätzlich frage ich ja noch die Slippage ab. Leider gibt es dafür keine MT4-Variable, so dass man selbst rechnen muss. Nun gilt es noch zu unterscheiden zwischen Anteil der Preisveränderung vom Senden zum Ankommen der Order beim Server und der erfolgten Slippage.

 

Jetzt stellt sich aber gerade wieder eine neue Frage auf:

Macht RefreshRates() eine erneute Abfrage beim Server oder aktualisiert es nur die Variablen mit den eigentlich schon abgerufenen Werten?

Bei einer erneuten Serverabfrage wäre das ja Mist, da sich der Preis auch schon wieder geändert haben kann. ;D

 

Man, die Sache ist noch nicht vom Tisch!

 

Wenn ich die Zeit habe (vielleicht noch dieses WE), werde ich das mal in ein minimales Programmbeispiel auslagern und hier posten. Dann können alle die wollen, an dem Problem mitbasteln.


  • asfranz gefällt das
8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|

  #202
OFFLINE   ping

... beim programmieren ist es wie beim traden, je länger man vorm Bildschirm sitzt, desto enger wird der Fokus. Bezogen auf das letzte Problem bedeutet das, den Ask/Bid-preis brauch man gar nicht, da die Werte ja im Open-Close-Preis stehen. Diese Erleuchtung kam mir dann bei einer entspannten Autofahrt.


  • asfranz gefällt das
8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|

  #203
ONLINE   traderdoc

Ok, ok und ich habe mich schon die ganze Zeit gefragt, was will er denn damit?
So, nun ist ja alles wieder gut und wir können in Ruhe zu Bett gehen.

traderdoc

Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #204
OFFLINE   ping

... juhu, Progjob done. --- pfffff --- Alle Stolpersteine weggeräumt. --- EA (2.151) mit Statistik (1.617) fertig. --- 3.768 Zeilen sind's doch nur geworden (Vorabschätzung war ja 3.000 + 10.000) ---

 

:welldone: :w00t: ;D


  • asfranz gefällt das
8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|

  #205
OFFLINE   ping

... will man die rechnerische Uhrzeit des aktuellen Tages extrahieren, dann muss man echt über:

Please Login or Register to see this Hidden Content

gehen.

 

Meine Logik hätte ja

Please Login or Register to see this Hidden Content

erwartet, aber die bringt auch nur wieder die Zeit des aktuellen Tages.

 

Es gibt eben verschiedene Logiken. o_O


8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|

  #206
ONLINE   traderdoc

Gut, da hätte man aber auch

 

TimeLocal() - StringToTime(TimeToStr(TimeLocal(), TIME_DATE))

 

nehmen können.

 

traderdoc


Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #207
OFFLINE   ping

Gut, da hätte man aber auch

 

TimeLocal() - StringToTime(TimeToStr(TimeLocal(), TIME_DATE))

 

nehmen können.

 

traderdoc

 

... sicherlich gibt es auch noch 10 weitere Lösungsmöglichkeiten, aber darum ging es in meinem Beitrag eigentlich gar nicht.


8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|

  #208
ONLINE   traderdoc

Ich weiss, dass es darum nicht ging, jedoch ein Wort zu dem, worum es ging - zur Logik:

 

StringToTime(TimeToString(TimeLocal(),TIME_MINUTES))

 

geht eben deshalb nicht, so wie Du Dir das vorgestellt hattest, weil MetaQuotes als Basis den 01.01.1970 00:00:00 genommen hat.

 

"The function converts a string containing time or date in "yyyy.mm.dd [hh:mi]" format into datetime type."

 

Und ab da werden immer sie Sekunden gezählt. Auch wenn in dem String nur die Zeit steht, dann wird diese Zeit als die des aktuellen Tages genommen.

Nur so wären dann die Gesamtsekunden ermittelbar.

 

Alles völlig logisch.

 

traderdoc


Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #209
OFFLINE   ping

Hi,

 

mir läuft gerade wieder mal ein Problem über den Weg.

 

Ich möchte in der OnDeinit-Routine meinen StopLoss modifizieren.

Das funktioniert auch, wenn man den EA neu kompiliert (da wird OnDeinit ja auch angesprungen).

Bei MT4-Programmbeendigung macht er es jedoch nicht.

Hat jemand eine Lösung, oder zumindest schon mal eine Erklärung dafür?


Bearbeitet von ping, 06 November 2017 - 09:53 Uhr,

8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|

  #210
ONLINE   traderdoc

Also normalerweise wird die OnDeinit()-Funktion auch durchlaufen, wenn der MT4 geschlossen wird.

In der OnDeinit()-Funktion kann man mittels

 

if (UninitializeReason() == REASON_CLOSE)

 

ermitteln, ob OnDeinit() wegen des Schließens des MT4 durchlaufen wird.

Wäre das der Fall, dann würde die if-Abfrage true sein, und es würde sich das Ändern des SL anschließen.

 

Es existieren 10 Rückgabewerte(0-9) der Funktion UninitializeReason() für verschiedenste Fälle.

Mal unter der Hilfe schauen.

 

traderdoc


Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #211
OFFLINE   ping

ich habe:

 

if(Reason != REASON_CHARTCHANGE)
  Return = OrderModify(...

 

... und wie gesagt, bei kompilieren macht er es ja auch richtig, nur bei Programmende nicht.


geht es denn bei dir?


8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|

  #212
OFFLINE   ping

... habe nun noch bissl rumprobiert und keine Lösung gefunden.

Bei OnDeinit-Grund "MT4-Programmende" werden keine Orderbefehle mehr verarbeitet. Ist wohl so irgendwo in MQL verankert. Die werden ihren Grund haben.

Wird wohl damit zusammenhängen, dass OnDeinit nach 2,5 Sekunden eh abgebrochen wird und die Gefahr besteht, dass in dieser Zeit nicht alle Orders ordnungsgemäß behandelt werden können.

Ein vorheriges Abfangen des Programmendes ist auch nicht möglich, somit ist diese Sache im Papierkorb gelandet und erledigt. Schluchts.


8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|

  #213
ONLINE   traderdoc

Ja, in der Tat, man kann alles mögliche noch abspeichern, löschen etc, aber keine Orderfunktionen bedienen.

Quittiert wird das mit einem lapidaren

 

error #2): common error

 

was soviel bedeutet, keiner weiss Genaueres!

 

Die Begündung wird sicherlich die sein, die Du schon geschrieben hattest. Damit werden wir uns jetzt abfinden müssen.

 

traderdoc


  • ping gefällt das

Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierwünsche.

 


  #214
OFFLINE   ping

was soviel bedeutet, keiner weiss Genaueres!

 

... das haste aber schön gesagt. :)


8(|In Wirklichkeit  *_* ist die Realität ganz anders! 8(| 8(|¡sɹəpuɐ zuɐɓ ʇıəʞɥɔıๅʞɹıM əıp ʇsı*_*ʇəɐʇıๅɐəଧ ɹəp uI8(|

  #215
OFFLINE   kamü

Ich habe eine Frage an die EA Progger:

 

Was muß ich in einen EA einfügen um einen Indikator (MA) auf einen anderen Indikator (Snake) zugreifen zu lassen > First Indikator`s Data

 

Im Chart kann ich das ja einfach anklicken, aber im EA?

 

kamü



  #216
OFFLINE   kamü

Ich habe eine Frage an die EA Progger:

 

Was muß ich in einen EA einfügen um einen Indikator (MA) auf einen anderen Indikator (Snake) zugreifen zu lassen > First Indikator`s Data

 

Im Chart kann ich das ja einfach anklicken, aber im EA?

 

kamü

 

Um meine Frage etwas verständlicher zu machen:

 

ich habe einen Indikator (Snake) und einen EA im Netz gefunden der eigentlich gute Ergebnisse liefert.

 

Bei Betrachtung des Charts habe ich festgestellt , dass ein Signal entsteht wenn ein MA den Snake kreuzt.

 

Im Chart habe ich den MA mit der rechten Maustaste geändert > Anwenden auf "Fist Indikator`s Data".

 

Dadurch sieht das viel ruhiger aus und ich vermute mit dieser Einstellung gäbe es weniger Fehlsignale.

 

Meine Frage ist also welche Zeile im EA muß ich ändern um den MA mit der Einstellung "Fist Indikator`s Data" laufen zu lassen?

Dateianhang



  #217
OFFLINE   kamü

Zusätzliche Bilder:

Dateianhang







0 Benutzer lesen gerade dieses Thema

0 Mitglieder, 0 Gäste, 0 anonyme Nutzer