Alle Inhalte von WOGO
-
Hallo
Hallo Andy! Herzlich Willkommen hier im Forum. Ja, den Anbieter kennen wir hier alle und deine Skepsis ist durchaus berechtigt. Such mal nach P.H. !
-
Was gehört im Winter ins Auto ? Katzenstreu.
Dir ist dein Auto geklaut worden!?! Hast du ja noch garnicht erzählt!
-
Unterstützende Datenausgabe
Debuggen in MQL4 ist ein interessantes Thema. Ohne die richtigen Methoden kann das ziemlich schnell sehr frustrierend sein und ich rede da aus eigener, schmerzhafter Erfahrung. Vorallem auch deshalb, weil man in der Regel den grössten Teil seiner Entwicklungszeit mit Testen und Debuggen verbringt, zumindest geht's mir so. Ich zeig dir mal drei Ansätzte, die ich verwende und mit denen ich bisher alle meine Probleme gelöst habe. Methode 1 Wie von Philipp beschrieben per Print(). Das ist mit Sicherheit die einfachste, flexibelste, aber auch schwer auszuwertendste Variante. Du fügst im Source-Code an der Stelle, wo du eine Berechnung machst, wo du eine Variable abfrägst, oder wo auch immer du den Variablenwert wissen willst ein Print ein und läßt dir den Wert ausgeben. Idealerweise mit Datum/Uhrzeit vorangestellt und zusätzlich mit Filter der Zeit, wann du den Wert wissen willst, also z.B. , wenn du denkst das Verhalten des EA am 02.03.2010 um 00:23:30 kann nicht stimmen, dann aktivierst du die Print-Ausgabe halt nur ein paar Minuten vor bis ein paar Minuten nach dieser Zeit... etwa so: ... if(TimeCurrent()>=StrToTime("2010.03.2 00:10:00") && TimeCurrent()<=StrToTime("2010.03.2 00:30:00")) TestEnabled=true; else TestEnabled=false; ... //Berechung... if(TestEnabled) Print(" Time=",TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS),"VarName: ",VarName); Dann kannst du dir im Log-File (nicht im Journal, da passt fast nichts rein!!!) bequem den Verlauf deines Variblenwertes anschaun. Nachteil: Wenn du zyklisch über längere Zeit was ausgibst, dann hat dein Log-File ganz schnell mal ein paar Hundert MB. Methode 2 Du lässt dir direkt im Chart die Variablen-Werte anzeigen. Das machst du über Text-Objekte, die du einfach an die jeweilige Stelle im Chart schreibst. Ist sehr zielführend, weil übersichtlich, funktioniert aber nur, wenn sich der Wert selten ändert, so dass die Objekte von der Anzahl her in das Chart-Fenster passen. Aktuelles Beispiel, das ich gerade teste: An den Stellen, wo die Zahlen und Sterne erscheinen, wird jeweils ein Wert neu berechnet. Ob das passt seh ich mit dieser Methode sehr einfach, ohne lange durch ein Log-File scrollen zu müssen. Methode 3 ... und das geht in die Richtung, in die du denkst. Ich erzeuge mir in der oberen rechten Ecke des Charts eine Anzahl von Textlabel (z.B. 10 Stück) und lasse mir an diesen Textlabeln die aktuellen Werte von Variablen, die ich kontrollieren will ausgeben. Du kannst das sicher auch in einem separaten Fenster machen, direkt im Chart ist's halt einfacher. Wenn du dann deinen EA im Strategie-Tester laufen lässt, dann werden dir oben in Echtzeit die Werte ausgegeben. Über den Geschwindigkeitsregler des Backtests kannst du dann einstellen, wie schnell die Berechnung abläuft, so dass du auch bei häufiger Neuberechnung noch was sehen kannst. Zusammenfassend kann ich folgendes sagen: Am schnellsten zu einem Ergebnis kommt man per Print, wird das Problem aber komplexer, so ist Methode 3 am Besten. Methode 2 ist vor allem bei der Entwicklung von komplexen Indikatoren hilfreich, wenn man Zwischenschritte kontrollieren will. Hoffe das hilft dir ein bischen weiter.
- The Big Bang Boom x-mas riddle
-
Software MS - Apple zum Dumpingpreis
Aus den FAQ's der Seite: Das wäre eine Erklärung für den Preis. Da die Seite aber scheinbar wirklich kein Impressum hat wär ich auch vorsichtig...
-
Draw Objects Script
Langsam wird's peinlich. Ich hab jetzt schon 2 Versionen dieses Scripts im Forum verteilt und in beiden war ein Fehler. Damit beim nächsten Bug der Updateprozess einfacher wird, stell ich das Script jetzt in einen eigenen Thread. Was funktioniert in der letzten Version nicht? Das Script benennt die gezeichneten Objekte nach der letzten Server-Time. Ist der Markt geschlossen, dann heißen alle gezeichneten Objekte der selben Art (also z.B. alle Rechtecke) gleich und überschreiben somit das vorhergehende. In der aktuellen Version (V3) benutze ich nun die lokale PC-Zeit zum Durchnummerieren. Das Problem sollte somit gelöst sein. WG_DrawObjects_V3.zip Gruß und erfolgreichen Start in die Woche, Wogo
-
Happy Birthday
Alles Gute ajkonly! Feier schön! Bei deinem fortgeschrittenen Alter könnte jeder Geburtstag bereits der letzte sein...
-
kennt einer die Seite " deutschefx.eu"
Megadroid und FAPTurbo sind bekanntere Systeme. Die Systeme Trumpeter und wohl auch Bratislava kenn ich nicht funktionieren aber scheinbar mit einer Martingale-Strategie. Die haben eine zeitlang eine nette Performance-Kurve und dann plötzlich ist dein Konto leer. Wär ich vorsichtig!
-
Möchte einen EA bauen, mit selbstgebautem Indikator
Das geht schon, aber da hängt dein MT halt für die Zeit...
-
Möchte einen EA bauen, mit selbstgebautem Indikator
Du speicherst dir in Init() die aktuelle Minute ab und wartest in Start solange, bis sie vorbei ist. Irgendwie so: int InitMinute; int Init() { InitMinute=Minute(); ... } int Start() { if(Minute() == InitMinute) return; else InitMinute=61; //Sonst macht dein EA bei jeder InitMinute eine Pause ... } Blöd nur, wenn du genau zur Sekunde 0 deinen EA startest, dann wartest du nämlich eine Minute...
-
Trade Forex with Confidence
US$100.000.000 Firmenkapital.
- The Big Bang Boom x-mas riddle
-
Bartimer in Realtime ?
Das schaut doch gut aus. Ja, das ist die Ticksize eines 5-Digit Brokers. Wenn du's mal für EURJPY ausprobierst, dann müßte 0.001 rauskommen.
-
Bartimer in Realtime ?
So wie's aussieht hat dein Broker da einen Zufallsgenerator miteingebaut 0.0001 wäre schon richtig, aber wie die 0.0003 zustande kommen ist mir ein Rätsel. Poste mal ein Stück Code, wie du den "Point" ausgibst!
-
Bartimer in Realtime ?
Auch wenn in deinem Link das selbe Problem beschrieben wird glaub ich das nicht! Wie hast du denn den Point-Wert überprüft? Mit Print()? Das gibt dir nur 4 Nachkommastellen aus, bei einem 5-Digit-Broker also immer 0. Wenn du das wirklich exakt testen willst, dann versuch's mal so: Print(DoubleToStr(Point,5));
-
Bartimer in Realtime ?
Wie gibt's n des? Point ist ja eine vordefinierte Variable, die immer dem Wert MarketInfo(Symbol(), MODE_POINT) entsprechen sollte. Kann eigentlich garnicht sein, dass die 0 ist. Kann es sein, dass du Point nochmal neu deklariert hast, oder dass du es klein geschrieben hast? Was gibt denn MarketInfo(Symbol(), MODE_POINT) zurück?
-
Bartimer in Realtime ?
Gute Gelegenheit den Bug in meinem DrawObjects Script zu korregieren Funktion sind nur 3 Zeilen. Wenn's dich nicht stört, dass zusätzlich die Zeichenobjekte im Chart sind... ansonsten lösch ich die noch raus. Die Zeit zählt jetzt mit einer Periode von ~2s. Kann man über ScriptSleepTimeInMS einstellen. WG_DrawObjects.zip
-
graphische Objekte
NULL stellt einen leeren String dar, aber du hast schon recht. Daran wird's nicht liegen. Die Zeitkoordinate sollte komplett ignoriert werden. @sill3000: Wenn du unter Diagramme-Objekte-Objekte schaust (CTLR-B), werden dir da beiden Objekte angezeigt?
-
graphische Objekte
Zeichnet er garnichts? Probiers mal, wenn du als Zeitkoordinate NULL oder - wenn das auch nicht - geht Time[0] eingibst! ObjectCreate("Name", OBJ_HLINE,0,NULL, price);
-
Screenshots via EA
Ja, z.B so (macht einen Screenshot 1280x800) tmp_filename=Symbol()+"_"+TimeToStr(TimeCurrent(),TIME_DATE)+ ".gif"; if(WindowScreenShot( tmp_filename, 1280, 800)==false) Screenshot="screenshot error: "+Fun_Error(GetLastError()); else Screenshot=tmp_filename;
-
Breakout Indicator
Hi Criss, hast du den Link zu besagtem Indikator noch. Würd ich mir gerne mal anschaun. Gruss, Wogo
-
Breakout Indicator
Also... fürchte das wird jetzt was Längeres. Dabei bin ich doch so schreibfaul. Wie auch immer, ich versuch mich kurz zu halten. Ich hab den Indikator jetzt mehr oder weniger so abgeändert, wie du es vorgeschlagen hast. Er ist heute Abend noch 2 Stunden gelaufen und hat ein paar Signale geliefert, die scheinbar richtig berechnet wurden. Trotzdem ist die Funktion mit dem Auswerten der Ticks evtl. etwas fehleranfällig. Darum stell ich die Version schon mal hier rein, damit du nächste Woche auch mit testen kannst. Das hab ich 1:1 so umgesetzt. Es gibt hierfür folgende Parameter: UseRealTimeSignal wenn gesetzt wertet die eingehenden Ticks fortlaufend aus und sucht sich für die Range des aktuellen Bars die Werte aus den letzten SignalPeriodInS Sekunden. Steht SignalPeriodInS also auf 60, dann werden die Ticks der letzten 60s ausgewertet. Das Ganze unterliegt natürlich einer ziemlichen Genauigkeitsschwankung, je nach dem, wie oft Ticks reinkommen. Nehmen wir mal an ein Tick kam vor 40s und der davor vor 65s, so geht der 40s-Tick als letztes in die Berechnung ein. Ist halt so... Man kann hier natürlich auch Unsinn einstellen. Zu große Werte sprengen den Buffer. Ich hab eine Größe von 4096 Werten gewählt. Soll heissen, du kannst eine SignalPeriode einstellen, innerhalb der 4096 Ticks reinkommen. Wie lange das dann ist hängt natürlich von der Tick-Frequenz ab. Sollte die Buffergröße trotzdem mal nicht reichen, so dürfte es aber zu keinem Fehler kommen, sondern es werden halt die vorhandenen Werte ausgewertet. Diese Real-Time-Berechnung ist natürlich nur aktiv, wenn live Ticks reinkommen. Die historischen Signale werden genau so wie vorher rein bar-bezogen berechnet. Ist UseRealTimeSignal auf "false" gesetzt, dann funktioniert die Signalberechnung wie bisher für jeden einzelnen Bar. Die drei anderen Paramter gab's vorher schon und haben sich nicht geändert. Sollte jetzt so sein. ShowPopupAlarm stellt ein, ob ein Alarm-Fenster aufgehen soll, wenn ein Signal generiert wurde (siehe Screenshot unten!) UseAlert stellt generell ein, ob ein Sound abgespielt werden soll, wenn ein Signal kam SoundFileName wählt das entsprechende wav-File aus. Die zusätzlichen Einstellungen zu Sound-Files, die du vorschlägst, sind meiner Meinung nach überflüssig, da mit den obigen Settings alles abgedeckt werden kann. Welches Sound-File du für welches Währungspaar haben willst kannst du ja frei einstellen. Du mußt deine wav-Files halt nur in das MT-sounds Verzeichnis kopieren. Mist , Long/Short hab ich jetzt vergessen. Ich hab's jetzt noch nachträglich dazuprogrammiert, ist aber nicht im Screenshot. Denk dir einfach vor "Breakout" ein Long bzw. ein Short dazu! Die Pfeile sind jetzt immer 3 Punkte unter/über dem Tief/Hoch des Bars. Hoffe das passt so. Ein kleiner Strich ist nicht so einfach, da er hinter der Kerze angeordnet wäre. Beim Zoomen würde so ein Strich nicht "mitwachsen" und man würd ihn nichtmehr sehen. Ich hab's jetzt so gelöst, dass ein kleiner Pfeil links von der entsprechenden Kerze den Triggerlevel markiert (siehe Screenshot). Denke das schaut ganz gut so aus. Ist drin (siehe Screenshot!). Die gibt allerdings nur den Breakout innerhalb einer Kerze an. Ist UseRealTimeSignal gesetzt, so kann es natürlich auch zu einem Signal kommen, obwohl im Indikatorfenster die Triggerlinie nicht erreicht wurde. Nochmal zu den Pfeilen. Die Pfeilart hab ich geändert, so dass diese jetzt ausgefüllt sind. Zudem kannst du die Farbe jeweils frei wählen: Der History-Parameter gibt noch an, ob du alle Bars im Chart ausgewertet haben willst, oder nur eine best. Anzahl. Das kann hilfreich sein, wenn du eine sehr lange History im Chart hast. Setzt du History auf 0, so werden alle Bars ausgewertet. Hier noch der Screenshot von den 2h GBPUSD heute Abend. Der zeigt meiner Meinung nach den Schwachpunkt der Berechnung über mehrere Balken (Short-Signal um 20:54). Dann erst mal Viel Spass damit. Bin mir sicher, wir werden noch die eine oder andere Runde drehen WG_BreakoutCheck.zip Schönes Wochenende, Wogo
-
Breakout Indicator
Man kann die Pfeilart ändern. Ich stell bei der nächsten Version auf gefüllte Pfeile um und mach die Pfeilfarbe einstellbar, dann solltest du sie auch bei vielen Linien im Chart noch sehen können. Die Objekte sind normalerweise vor den Indikatorlinien, aber hinter den Candles platziert.
-
Breakout Indicator
Hallo Fxler, keine Angst! Wenn du Vorschläge lieferst, die die Qualität des Indikators verbessern, dann ist das schliesslich eine Win-Win-Situation und deine Änderungswünsche halten sich vom Aufwand her in Grenzen. 2) und 3) sind nur ein paar Spielereien, die schnell implementiert sind, 1) muss ich mir noch genauer überlegen. Geht zwar wohl auch recht schnell, funktioniert dann aber nur live. Die historische Darstellung stimmt dann halt nichtmehr genau. Wie auch immer, werd mich bei Gelegenheit mal drübermachen Gruß, Wogo
-
Breakout Indicator
Ja, aber wer mal in den Quellcode reinschaut wird sehn, dass das nix kompliziertes ist und da heute früh unser Zeitungsausträger scheinbar im Schnee versunken ist hab ich halt den Indikator programmiert...