Kleinerbroker
*_skilled
-
Benutzer seit
-
Letzter Besuch
Alle Inhalte von Kleinerbroker
-
Viele, viele Fragen...
RM/MM : 4 Gedanken Ein Gedanke : - der einzelne Trade muss so geringe Marktgewalt haben, dass der Totalverlust mich ein wenig ärgert aber auf keinen Fall mir Schaden darf . - lieber verschiedene Märkte mit vielen kleinen Trades als einen Markt mit Monstergewalt - lieber mit der Masse schwimmend trade , d.h. : 1.) Mit dem Trend und 2.) nur Long Und dann : Traden und Psychologie sind sehr SEHR nahe beisammen . Gier und Verlustangst , manchmal auch Sturheit (Kopf durch die Wand) sind drei der Hai´e die ich am meisten fürchte . Daher auch mein Trick, der kleinen Marktgewalt, denn dann ist meine Selbstbeherrschung nicht sooo sehr gefordert . Oder so : Traden ist ein Beruf .... eine Profession . Wer in den Markt hineinhüpft "Hänschen im Blaubeerwald" fliegt raus .... nachdem sie oder er das Portemonnai abgegeben hat (an der Garderobe, weiter kommt man dann nicht) . Gehe zur Türe, gucke durch den Spalt und ducke Dich schnell . Dann gucke ein zweites Mal , ein bischen länger . Der KB wünscht sich für sich : RM/MM ist : einen Trade zu beginnen, nachdem man sich vorher den kommenden Preisverlauf überlegt und dann festgelegt hat . Zeichne den erwarteten Kursverlauf mit Zahlen auf ein Blatt , Preis und Zeiten . Dann starte den Trade . Wenn der Preis nicht Deiner Vorhersage innerhalb der von Dir vorgegebenen Zeit folgt, dann RAUS . Das nenne ich einen Zeit-SL => ich prognostiziere bewußt den Kursverlauf . Habe ich mich geirrt , dann muss ich den Trade beenden . Oder ich bleibe im Markt, dann aber bitte darf ich (KB) in diesem speziellen Fall nicht mehr vom Traden sprechen sondern dann Zocke ich eben mal . Für mich ist das OK, aber dann muss ich es BEWUßT machen . KB PS.: Eben gesehen, dass ich im falschen Thread unterwegs bin . Ggfs bitte löschen, ich poste doppelt .
-
Was bedeutet EoD?
Wir unterscheiden unter anderem zwischen dem Skalpen, dem Intraday , dem EoD-Handel und der Investition . Der Skalper sucht ein paar PIP´s Profit und kann durchaus nur wenige Minuten im Markt sein . Er wird im Tickchart oder 1 Minuten Chart agieren... auch mal im 2 oder 3 Minuten . Der Intraday-Trader nutzt gerne das 5 & 15 Min-Chart , orientiert sich an den Tagespivot (HighestHigh & LowestLow) und den Trends der letzten Tage und wird auch mal ein paar Stunden im Markt sein . Beide meiden die News des Tages und die Pausen der Börse , sind kurz vor EoB (End of Business ) sehr vorsichtig . 12:00-13:00 , 18:00-19:00 , 17:30 und 22:00 Der EoD-Trader tradet über mehrere Tage hinweg , und analysiert & beauftragt seine Märkte mit am (Feierabend) Abend . Persönlich agiere ich viel im 4 Std Chart, beachte das Tages- und ein wenig auch das Wochenchart . Alle drei sind mehr technische als fundamentale Trader . Sie orientieren sich an den technischen Aspekten eines Chart, wissend, dass der Handel ausserhalb von News oft von Computern kontrolliert wird . Diese folgen aber ausschließlich mathematischen Modellen . Der fundamentale Trader investiert seine Gelder in ein Unternehmen , einen Rohstoff , selten mal in einen Aktienindex (dann Long , logo). Er erwartet die Wertsteigerung eines Unternehmens . Der unternehmerische Erfolg (z Bsp Dividende) läßt den Kurs steigen . Dieser Trader agiert langfristig, Monate , Jahre . Alles nur mein Verständnis . Hoffe es hilft, drum schreibe ich es KB
-
Viele, viele Fragen...
Na .... da sich ja hier ja scheinbar fast alle tummeln , gomm isch auch ma kurz dazu : Herzlich Willkommen und viel Erfolg . :-) Kleiner Input : für RM/MM haben mir die Ansätze der Turtletrader am meisten geholfen (Buch, Amazon) . Gruß und alles Gute KB PS.: Toller Einsatz der Smiley´s hier
-
Alarm wenn Serververbindung abbricht
Hallo , aber es wäre auch gut, wenn man die Nachricht "OFF" bekommen würde, wenn man nicht am PC sitzt (Server) . Dann könnte man sich (WWW OK, mal vorausgesetzt) ja vielleicht eine Nachricht schicken lassen . Habe dazu folgenden Link gefunden : http://codebase.mql4.com/6659 . Wenn man nun diesen EA mit "IsConnected()" verbindet, dann sollte es doch eine Möglichkeit geben ? KB
-
Mein erster eigener Robot
Henrik, vielen Dank. Und der Clip ist ja nun wirklich lustig und sicher sehenswert .... insbesondere dann , wenn man (so wie ich eben ) sich dann auch noch irgendwie an die erste eigene und unfreiwillige Endlosschleife erinnert . KB
-
Neu hier und schon Credits?
Nun weiss ich ja nicht, wofür diese Credits gut sind , vielmehr freue ich mich immer sehr, dass mir bei jeder Frage so freundlich und schnell geholfen wurde . Aber warum habe ich (nur noch) 2 Credits ? Habe ich etwas gekauft und weiss es noch nicht ? Kleinerbroker
-
Mein erster eigener Robot
Scheinbar stehe auch ich vollständig auf der Leitung . den Clip finde ich gut aber EA sehe ich sowenig wie so manch anderer hier . Hilft mir jemand , BÜDDE ? KB
-
Freie Ordnerwahl für den Datenexport
@conglom-o : vielleicht sucht er , so wie ich , eine Lösung dafür, sich selber automatisch und kostenlos Historieen für spätere Backtests zu schaffen . KB
-
Der CFD FAQ Thread
1.) Wie seht Ihr denn den psychischen Aspekt beim CFD Handel ? 2.) Was ist ein GER30 oder ein SPX500 ? Na ? Und warum heissen die nicht DAX oder SnP500 ? Welcher Broker garantiert Spread, welcher nicht ? Was bedeutet "Börsennah" und was ist denn "nah" ? Fragen, die ich mir alle mal stellen mußte . Und ich denke, jeder Trader muss diese einmal bewußt gestellt haben, sonst ..... KB
-
These: Der Verlust des Kunden ist der Gewinn des Brokers
Hallo, herzlich Willkommen, viel Erfolg . CFD´s zu handeln bedeutet symbolisch Aktien oder Commodities (Rohstoffe) zu handeln . Und zwar deren wahren Wert ! 100 CFD RWE bei CMCMarkets kaufen, dass kostet Dich fast nichts . 100 Aktien kosten Dich hingegen 5000 EUR (etwas weniger im Moment :-) ) . Wenn der Kurs um 1 EUR fällt, verlierst Du 100 EUR . Bei einem CFD-Kontostand von 1000 EUR sind das 10% Verlust , völlig inakzeptabel für den Trader ( "OK" hingegen für den Zocker ... vielleicht) . Hast Du die 5000 EUR hingegen in Aktien gesteckt ...dann hast Du noch 4.900 EUR ... gebunden in Aktien .... und wartest gemütlich ab oder verkaufst mit 2% Verlust . CFD-Handel verleitet MICH dazu , mehr Marktgewalt zu bewegen als mit eigenem Cash gedeckt ist . DAS IST GEFAEHRLICH .... denn man muss sich immer bewußt sein, dass man fremden Cash nutzt . Die Wahl meines Avatar ..... KB PS1.: Dein Gewinn ist Verlust des Brokers und NICHT der Börse . PS2.: Dein Verlust ist der Gewinn des Brokers und NICHT der Börse . PS3.: Kürzlich wurden die Ergebnisse von Flatex.de (CFD Handel) veröffentlicht .
-
Multi Strategy EAs
Wenn wir dieses Konzept nun weiter überlegen ... und anstatt von 2 EA´s mal von 5 ausgehen wollen (das ist doch realistisch), dann vielleicht auch nach ein weiteres mal an die Metafer der Luftfahrt denken, dann .... => könnte man doch auch an einen RM/MM - EA denken, der nur das RM/MM übernimmt ? Dieser würde einen File kontinuierlich aktualisieren , unter anderem ganz "oben" eintragen, ob einer der anderen EA´s traden darf oder nicht (weil ein anderer EA gerade handelt, weil ein Handelverbot für alle EA gilt oder aus anderen Gründen ) . oder soll ich einfach ActiveTrades anrufen und sagen "gebt mir noch nen paar Konten!" Würden die sicher machen .... KB
-
Multi Strategy EAs
Nun komme ich dazwischen : der Titel des Thread paßt, der Inhalt des Thread geht aber eher in eine andere Richtung . Ich poste dennoch hier , da ich sonst nichts passenderes gefunden habe : Aus einem Brief an einen Freund , der mir seine Hilfe angeboten hat : Mein erster EA, der Gold-Hopper ist fast fertig und ich will auf demselben Konto weitere EA laufen lassen , andere Märkte aber auch Gold . Dabei habe ich mindestens 4 oder 5 sehr konkrete Ansätze im Kopf, jeder EA wird recht einfach sein . Aber ich weiss , dass die Zahl der einzelnen EA die Komplexität im Laufe der nächsten wenigen Monate deutlich steigen lassen wird . DAS will ich nun vorbereiten, bevor ich die einzelnen EA´s schreibe . Ähnlich der Visualisierung , die ich ebenfalls vorbereitend , mit Eurer freundlichen Hilfe geschrieben habe . Kennt jemand hier eine Plug&Play-Lösung die ich übernehmen könnte und dann meine weiteren EA gleich angepaßt an diese Lösung konzipieren und schreiben könnte ? KB PS.: Auf http://book.mql4.com/appendix/examples gibt es ja die "Include"-Files (ganz unten) und darunter auch einige Files für das Ordermanagment . Soll ich damit beginnen und dann noch den File-R/W einbauen ? Besonders gut gefallen mir diese nicht, drum poste ich auch hier nochmal bevor ich beginne .
-
Frohes Neues !
Auch ich möchte Euch allen hier alles Gute für 2011 wünschen . Und mein Dank nochmal für viel wirkliche Hilfe an "Tom-Next.de" . Kleinerbroker
-
Empfehlung für MT4 Stats
Hallo, ich nutze Myfxbook mit QT und nun AT insgesamt über ein Jahr und habe bislang keinerlei Probleme gehabt (ausser mit mir selber ...Userissues also ) . KB
-
Unterstützende Datenausgabe
So, alle Probleme soweit gelöst . Und ich hoffe, dass die Kommentare genug Erklärung liefern . Das Prg ist als EA gehalten und insofern "stand alone" zu betreiben . Aber viel eher wird der User es in seine eigenen Programme einbinden wollen, daher habe ich das meiste modular programmiert und bin auch mit der Variablenbenennung sehr großzügig verfahren (falls sich jemand über meine Prosa im SRC wundern sollte) . Es wird automatisch rechts im Preischart informieren . Das ist gut , insbesondere für Str-test . Findet das Prg aber ein leeres Fenster "PLOTT" , dann wird es dort ausgeben . Gerne werde ich Fragen beantworten und ggfs auch bischen anpassen wenn gewünscht . Bitte nicht durch die Abfrage "Tradinghour" beeindrucken lassen, sie ist absolut "sinnlos". KB sagt : Danke Euch //+-----------------------------------------------------------------------------------------------+ //| Visualisierung.mq4 | //| WS | //| The aim of the Prg is to easen the work of debugging . "Tradinghour enquiry" is example only !| //| Prg will display in three columns : Name, value & variance in upper right price chart or ... | //| ..... in seperate Indi-Win "PLOTT" if previously opened by user | //| Change in Line : "34 Value 1250 for your screen size"; "48 & 49 for size of rows and text" | //| Change in Line : "60..66 for realname of variable" ; "136...142 for codename of your vars" | //| ... such as " DowJones "in line60 and "CTR_Val_New[0]= DJ " | | //| kleinerbroker@yahoo.de | //+-----------------------------------------------------------------------------------------------+ #property copyright "WS" #property link "kleinerbroker@yahoo.de" // //+-----------------------------------------------------------------------------------------------+ //| Definition of the control-variables which are to be displayed , max allowed : 7 | //+-----------------------------------------------------------------------------------------------+ // extern int Tradinghour1 = 9; // Variable1 .... could be displayed in column1 extern int Tradinghour2 = 23; // Variable2 .... they all are fully //extern int // Variable3 .... optional for user to define //extern int // Variable4 .... whatever she/he intends to //extern int // Variable5 .... debugg/visualize //extern int // Variable6 .... //extern int // Variable7 // //+-----------------------------------------------------------------------------------------------+ //| Definition of the variables which design the output mask | //+-----------------------------------------------------------------------------------------------+ // //------------------ general parameters ----------------------------------------------------------+ color Color[4]; // Declare the color array string Text[7]; // Declare the string-array for column1 int sScreenXClmn[]= {1250,110,150}; // 3 Columns at 18´´Screen, 100 & 85 is relative string // CTR_Val_New[7], // [0]data of controlled variable array Column2 CTR_Val_Old[7]; // previous status of these variables,needed for variance report // in column3 //------------------ code definition--- ----------------------------------------------------------+ int sRaise = 236, // Arrow sDown = 238, // Arrow sNeutral = 232, // Arrow sTrue = 110, // Full Square sFalse = 111, // Empty Square //------------------ definition of mask size : coordinates, rows & columns -----------------------+ Win_PLOTT_old = 0, // Standard output to Price Chart for StratTest sScreenYHome = 000, // Home Y of Mask ,extreme upper of any screen sScreenYStep = 050, // width of all 7 rows sScreenTextHeight = 020; // Height of all text/symbols //+-----------------------------------------------------------------------------------------------+ //| expert initialization function | //+-----------------------------------------------------------------------------------------------+ // int init() { int Win_PLOTT_old=0; // no seperate Window Text[0]= "Hour ="; // Name of control variable , 7 digits max Text[1]= "no Data"; // Name of control variable , 7 digits max Text[2]= "no Data"; // Name of control variable , 7 digits max Text[3]= "Open ="; // Name of control variable , 7 digits max Text[4]= "Close ="; // Name of control variable , 7 digits max Text[5]= "Trade ="; // Name of control variable , 7 digits max Text[6]= "Stopp ="; // Name of control variable , 7 digits max Color[0]= Lime; // Object color for .. Color[1]= Yellow; // .. different situations Long/Neutral/Short.. Color[2]= Red; // .. of the Variables , output in column3 Color[3]= Lime; // Standardtext Create_Maske(0); // Creation of the first mask Main(); return; } //+-----------------------------------------------------------------------------------------------+ //| expert start function | //+-----------------------------------------------------------------------------------------------+ // int start() // Special function 'start' { Main(); // Call to the user-defined function return; // Exit start() } //+-----------------------------------------------------------------------------------------------+ //| expert deinitialization function | //+-----------------------------------------------------------------------------------------------+ // int deinit() { //-- need to delete objects should user remove indicator ObjectsDeleteAll(0,OBJ_LABEL); //-- delete timeframe text labels for(int x=0;x<3;x++) for (int y=0;y<7;y++) ObjectDelete("CTR_VAR"+x+y); Comment(""); WindowRedraw(); // Redrawing the image return(0); } //+-----------------------------------------------------------------------------------------------+ //| expert main function displaying EA-controlling values for debugging | //+-----------------------------------------------------------------------------------------------+ // int Main() { int // Integer variables y=0,Ind_Time=0, Win_PLOTT_new=0; // Scratch number of the subwindow if there was one string Display="Y"; ArrayCopy(CTR_Val_Old,CTR_Val_New); // Saves the preceding values to check trends //ArrayInitialize(CTR_Val_New,"0"); // Zeroize the array // example Tradingssystem condition if((Tradinghour1 < Hour()) && (Tradinghour2 > Hour())) { Comment("paßt gut , aktuelle Zeit = ",TimeToStr(TimeCurrent(),TIME_MINUTES)); Print("On time"); Ind_Time=1;Display="Y"; } else { Comment("zu spät , aktuelle Zeit = ",TimeToStr(TimeCurrent(),TIME_MINUTES)); Print("too late"); Ind_Time=0;Display="N"; } // Informationsfenster füllen Win_PLOTT_new=WindowFind("PLOTT"); // seperate Window "PLOTT" available ? if(Win_PLOTT_new==-1) Win_PLOTT_new=0; // If there is no sep.wind., then the main window if(Win_PLOTT_new!=Win_PLOTT_old) // Deleted or placed .. { // .. the Window "PLOTT" ObjectsDeleteAll(); // Deletion of all Objects obje Create_Maske(Win_PLOTT_new); // Create new mask Win_PLOTT_old=Win_PLOTT_new; // Remember this window } // // Allocation of data => ctrl variables CTR_Val_New[0]= TimeToStr(TimeCurrent(),TIME_MINUTES);// Name of control variable , 7 digits max CTR_Val_New[1]= "0" ; // Name of control variable , 7 digits max CTR_Val_New[2]= "0"; // Name of control variable , 7 digits max CTR_Val_New[3]= DoubleToStr(Open[0],4); // Name of control variable , 7 digits max CTR_Val_New[4]= DoubleToStr(Close[0],4); // Name of control variable , 7 digits max CTR_Val_New[5]= Display; // Name of control variable , 7 digits max CTR_Val_New[6]= Display; // Name of control variable , 7 digits max // for (y=0;y<7;y++) // fill values ObjectSetText("CTR_VAR"+"1"+y,CTR_Val_New[y],sScreenTextHeight,"Arial",Color[3]); // Comparison to previous ctrl variables for (int Y=0;Y<7;Y++) // fill 3rd column ctrl values with trend { if (CTR_Val_New[Y]>CTR_Val_Old[Y]) ObjectSetText("CTR_VAR"+"2"+Y,CharToStr(sRaise),sScreenTextHeight,"Wingdings",Color[0]); else if(CTR_Val_New[Y]<CTR_Val_Old[Y]) ObjectSetText("CTR_VAR"+"2"+Y,CharToStr(sDown),sScreenTextHeight,"Wingdings",Color[2]); else ObjectSetText("CTR_VAR"+"2"+Y,CharToStr(sNeutral),sScreenTextHeight,"Wingdings",Color[1]); } WindowRedraw(); // Redrawing the image return; // Exit the user-defined function "Main" } //------------------------------------------------------------------------------------------------+ //------------------------------------------------------------------------------------------------+ // //+-----------------------------------------------------------------------------------------------+ //| expert object creation : this defines mask and fills first column once for all | //+-----------------------------------------------------------------------------------------------+ // int Create_Maske(int Win) // User-defined function { int u,v,w; if (Win==0) // Output in pricechart (good for strattester use) { // u=sScreenYHome; // v=sScreenYStep; // w=sScreenXClmn[0]; // Reset X // ..creating all Object for(int x=0;x<3;x++) // output : column { // for (int y=0;y<7;y++) // output : all rows in the column { // u=u+v; // next row ObjectCreate("CTR_VAR"+x+y,OBJ_LABEL, Win, 0,0); // Creation of an object ObjectSet("CTR_VAR"+x+y, OBJPROP_CORNER, 0); // Anchoring to an angle ObjectSet("CTR_VAR"+x+y, OBJPROP_XDISTANCE,w); // Coordinate X ObjectSet("CTR_VAR"+x+y, OBJPROP_YDISTANCE,u); // Coordinate Y } // u=sScreenYHome; // Reset Height w=w+sScreenXClmn[x+1]; // count to the next column } // end output in pricechart } // else // { //Output in empty indicator window named "PLOTT" u=sScreenYHome; // v=125; // w=10;//w=sScreenXClmn[0]; // Reset X , ganz links // ..creating all Object for(x=0;x<3;x++) // output : rows { // for (y=0;y<7;y++) // output : all column in the row { // w=w+v; // next row ObjectCreate("CTR_VAR"+x+y,OBJ_LABEL, Win, 0,0); // Creation of an object ObjectSet("CTR_VAR"+x+y, OBJPROP_CORNER, 0); // Anchoring to an angle ObjectSet("CTR_VAR"+x+y, OBJPROP_XDISTANCE,w); // Coordinate X ObjectSet("CTR_VAR"+x+y, OBJPROP_YDISTANCE,u); // Coordinate Y } // u=u+sScreenYStep; // Reset Height w=10; // count to the next row } // } // for (y=0;y<7;y++) // fill first column once ObjectSetText("CTR_VAR"+"0"+y,Text[y],sScreenTextHeight,"Arial",Color[3]); return; // Exit the user-defined function } Damit , so glaube ich, kann man diesen Thread schliessen . Wenn die Admins es für richtig halten, so reicht es aus meiner Sicht wenn man den Post #1, #5 von Wogo und diesen zu einem macht und an den Anfang setzt .
-
Traders Links
Tolle Liste ! Vielen Dank, Vola . KB
-
Unterstützende Datenausgabe
Status Quo . 7 Variablen können dargestellt werden , Name, Wert und Trend . Das funktioniert auch im Strategietester , erfüllt also mein Hauptansinnen perfekt . Durch das variable Tempo kann ich glänzend beobachten , wie sich bestimmte Werte im Laufe der Zeit verhalten . Diese Variablen können im Normalbetrieb auch in einem separaten Indi-Fenster dargestellt werden . Hier muss ich noch die Formate anpassen . Da stecke ich aber nicht viel Zeit hinein, ist für mich eh unwichtig sondern mehr ein "Abfallprodukt". Letzte wirklich verbleibende Problem ist noch, dass das Prg erkennen muss, wenn ich das Konto gewechselt habe . Dann stoppt der EA und ich muss die ganz Station neu starten, bevor er wieder funktioniert . Aber das bekomme ich auch noch gelöst . Und dann habe ich Lösung 3 gemäß Post #5 von Wogo realisiert . Der SRC ist von mir absichtlich so gehalten, dass er möglichst modular ist und somit in alle möglichen EA´s implementiert werden kann . Wenn er steht, dann schicke ich diesen den Admin´s von TN zur Durchsicht . Wenn er für diese dann OK ist, dann poste ich diesen mit der Zusammenfassung die ich in #13 angekündigt habe . So haben dann alle etwas davon . KB
-
Unterstützende Datenausgabe
Guten Morgen, Ihr Trader Ihr , es ist wirklich beeindruckend für mich, wie Ihr Euch bemüht . Nochmal meinen Dank , Wogo , Vola, Wingman und Mythos (der Mythos der in den Tropen steckt :-) . Und dann Dank ich nicht mehr, sonst nervt das mehr als alles andere ). Mythos, Dein Beitrag erklärt mir, warum ich nur Teile dessen was ich erwartete im 2.Log gefunden habe Frage können wir später diskutieren : Im Moment wird dieser Thread ein Dialog (und das soll er ja auch) aber später ...würde es da Sinn machen, wenn ich das alles zu einem großen Post konzentriere und einem Admin gebe, der es dann als Post #1 am Anfang dieses Thread einfügt , quasi eine Zusammenfassung für den Einsteiger ? Leute ich habe seit Montag Urlaub , seit Samstag bin ich am proggen und ENDLICH nach Monaten komme ich wieder mit größeren Schritten vorwärts ! Bis später ! KB
-
Unterstützende Datenausgabe
Euch Beiden mein Dank . Welch &%$§§(%& Fehler meinerseits . Habe natürlich nun das 2.Log gefunden, verkneife mir die Frage, warum es 2 gibt und konzentriere mich darauf, dass ich nun einige Einträge finde, andere aber nicht , sicher aber einige mehr als das was ich vorher hatte . Also habe ich wieder etwas wo ich weiter arbeiten kann . :-) KB
-
Hallo
Hallo Ahold , ein herzliches Willkommen auch von mir . Die Profi´s haben Dir Deine Frage beantwortet . Viel Vergüngen hier bei uns . KB
-
Unterstützende Datenausgabe
Stimmt schon aber stimmt auch wieder nicht . Der PRINT() - Befehl führt beim Backtesten (Strategy Tester) wohl ausschließlich zur Ausgabe im Journal . Ich finde keine Log-Einträge im LOG des Tages . Folgender Code hatte keine Auswirkung auf den Log-File in : "C:\Program Files\MetaTrader - ActivTrades\logs\20101221" nach 21:00 . Aber ich habe um 21:09 eingeloggt und einen BT duchgeführt . { Long=true; Comment("Life um ",Hour()," : ",Minute()," // Signal = ",Long," // Spatz = ",t1," // Trade1 = ",t2," // Trade2 = ",t3); Print("Life um ",Hour()," : ",Minute()," // Signal = ",Long," // Spatz = ",t1," // Trade1 = ",t2," // Trade2 = ",t3); } } else { Comment("Life um ",Hour()," : ",Minute()," // Signal = ",Long," // Spatz = ",t1," // Trade1 = ",t2," // Trade2 = ",t3); Print("Life um ",Hour()," : ",Minute()," // Signal = ",Long," // Spatz = ",t1," // Trade1 = ",t2," // Trade2 = ",t3); return; } Im Bild sieht man, dass ich Einträge sowohl in der CommentZeile als auch im Journal erhalte, das LOG wird nicht geändert . Book.MQL4.com habe ich durchgeguckt wie auch das Forum und muss nun Euch wieder bemühen und hoffe auf Hilfe . Bei der Lektüre im MQL4 habe ich einen Hinweis auf .CSV-Files erhalten ..... ? Mal wieder vielen Dank im voraus ! Kleinerbroker
-
Unterstützende Datenausgabe
WOGO Dein Post ist auf den Punkt, was ich benötigt habe . Dafür habe vielen Dank vom Kleinenbroker Und läßt mich nur noch eine Rückfrage stellen : Der "Log-File" ..... ist wo ? (ich google´e aber auch gleich bei MQL4.com und werde fündig wie folgt :) Der Log-File muss vom Programmierer selber geschaffen werden und soll wohl unbedingt im Format .csv sein . Ein Beispiel dazu findet sich hier : http://forum.mql4.com/12491 Dort findet sich u.a. der folgende Code der Teil des EA´s sein muss : while(OrderTicket() != 0) { OrderSelect(HistoryCount,SELECT_BY_POS,MODE_TRADES); if(OrderMagicNumber() == ChartID && OrderSymbol() == Symbol()) OpenOrders++; if(OpenOrders > LastOpenCount && OrderTicket() != 0) { string PrintPeriod = PeriodToStr(Period()); string PrintOrder = OrderTypeToStr(OrderType()); FileSeek(Log,0,SEEK_END); WriteLog = FileWrite(Log,TimeToStr(OrderOpenTime()),Symbol(),PrintPeriod,OrderTicket(),PrintOrder,OrderLots(),OrderOpenPrice()); } if(WriteLog < 0) { Err = GetLastError(); Alert("Account Log: Error "+Err+" - "+ErrorDescription(Err)); return(0); } HistoryCount++; } An die Profi´s : Ist das so richtig oder gibt es bessere Beschreibungen und/oder Lösungen ? Kleinerbroker PS.: Ein hübscher Slogan, den Du Dir da ausgewählt hast . Hat er nicht auch von den beiden Kühen gereimt ? "Ich bin ..... , und Du bist ..... , komm lass uns sterben gehen, kumm ?" War doch so, oder ? EDIT um 21:28 : Der Logfile ist im Format ".log" im Ordner "C:\Program Files\MetaTrader - ActivTrades\LOG\" nach Datum sortiert abgelegt . Er dokumentiert alle Handlungen auf dem Terminal . KB
-
Unterstützende Datenausgabe
Bleiben wir doch bei dem Beispiel und versuchen einen Code zu erarbeiten : Das Ergebniss sollte vielleicht erst einmal wie folgt aussehen damit es nicht so schwierig und geschmackvoll wird wie das Beispiel oben . Also so wie angehangen . Da hat der KB manuell ein Indifenster ohne Inhalt eingefügt und genauso manuell mit der Option "T"(Text also) die 4 Wörter eingefügt . Dies an Posi´s im Fenster die in beliebig sein können (Geschmack) oder einen Sinn haben (wann ist es NICHT gut zu traden, wann ist es gut?) wie im Beispiel . Der SRC OHNE das Fenster lautet wie folgt : //+------------------------------------------------------------------+ //| Funktionstest.mq4 | //| XX | //| kleinerbroker@XXXXXXXX | //+------------------------------------------------------------------+ #property copyright "XX" #property link "kleinerbroker@XXXXXXX" extern int Tradinghour1 = 9; extern int Tradinghour2 = 12; //+------------------------------------------------------------------+ //| expert initialization function | //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| expert start function | //+------------------------------------------------------------------+ int start() { //---- if((Tradinghour1 < Hour()) && (Tradinghour2 > Hour())) { Comment("paßt gut"); Print("On time"); } else { Comment("zu Spät"); Print("too late"); } // //---- return(0); } //+------------------------------------------------------------------+ Hier müßte nun ein Befehl hinein, der erstmal das Fenster öffnet (#property indicator_separate_window // Separate indicator window), definiert und dann abhängig von den Variablen Hour, Tradinghour1 & 2 dann eben den Text hineinschreibt . Schreibt sich leicht, ich habe keine Ahnung wie ich das in einen EA oder sonst wie integriert bekomme . Bin ich überhaupt auf dem richtigen Weg ?? KB
-
Unterstützende Datenausgabe
Print() führt zu einer Ausgabe von Inhalten nach Wunsch mit jeder Candle , zumindest wenn es sich um den BT handelt . Siehe bitte das Bild . Auch die Aussage mit Comment() in der mir bekannten Forum führt zu kaum lesbaren Textausgaben , ebenfalls im Chart dargestellt . Mir schwebt im Idealfall eher etwas vor, wie ich es bei kreslik.com (TRO_Dashboard_SupResPct) gefunden habe . Siehe andere Bild KBTraum() . KB
-
Unterstützende Datenausgabe
Nachdem der Software-Programmierer seinen Sourcecode geschrieben hat und der Compiler freundliche "0 error(s), 0 warning(s)" zur Antwort gegeben hat , da kann es los gehen .........mit dem debuggen . Denn wie oft macht der SRC trotz fehlerfreiem Compilieren nicht das, was man eigentlich erwartet ? Dabei ist es recht egal , ob man MT4 oder AFL, Basic, Assembler oder F77 programmiert .... Meine SRC machen jedenfalls zu Beginn ihrer Entwicklung sehr häufig geheimnisvolle und unbeabsichtigete Dinge und hüllen sich ansonsten erstmal in nebulöses Schweigen . Der Entwickler braucht also nun Information über den Wert und die Veränderung seiner Variablen die über den Verlauf des Programmes entscheiden .... IF WHEN ELSE usw usw... und zwar ... ,und darauf kommt es an , WÄHREND das Programm/Backtest/Optimierer seine Arbeit verrichtet .... danach ist zu spät . Die Funktion Comment hilft etwas, ist aber im Standard spartanisch : klein, einfarbig , einzeilig . Das Journal ist enorm unübersichtlich , hin-und-zurück-Klicken und zusätzliches Scrollen erforderlich und zeitraubend, gerade wenn man sich mitten im Backtest befindet . Ausserdem räumlich weit vom Chart entfernt ..."im Chart" wäre die Lösung ...ich sehe Preis und Variable zusammen . MT4 erlaubt ja nun beim Backtesten, die Geschwindigkeit von 0 (Pause) bis zum CPU-Maximum zu variieren und da bietet es sich besonderes an , dass man wesentliche Größen in Klartext parallel zum Geschehen im Chart sehen kann/könnte . Bislang habe ich zwei Möglichkeiten gesehen, wie sich das gestalten läßt , leider aber habe ich nicht erlebt, wie alles zusammen auf meinem PC funktionierte : Der SRC-Code eines EA (nicht Indi!) , auf meinem PC compiliert und dann auch dort durch einen BT gelaufen . 1.) Mit Comment mehrzeilige Ausgaben in das Preischart hinein, meiner Meinung nach die zweitbeste Alternative . 2.) Mit der Function Inform aus dem MQl4 Buch : http://book.mql4.com/build/info . Diese Funktion soll über #include in das Programm "usualexpert.mq4" importiert (include) gezogen werden . Bei mir klappt das aber nicht, NULL . Konzept jedenfalls ist es hier, und das sehe ich als das Optimum an, dass man ein Indifenster zusätzlich öffnet (automatisch via EA wäre toll, scheint aber auch nicht zu gehen) und dann in diese Fenster Text via "ObjectCreate/-set" einspielen kann . Wie gesagt, ich bekomme davon garnichts ans Laufen obwohl ich einfach nur das Handbuch nachgemacht habe ..... und natürlich freundliche "0 error(s), 0 warning(s)" zur Antwort bekam . Dieser Thread beabsichtigt nun , dem kleinenBroker aus der Patsche zu helfen (selbstlos wie der so ist ) aber auch ganz allgemein aufzuzeigen, welche Mittel dem MT4-Programmierer zur Verfügung stehen um durch temporäre Ausgabe von Inhalten ihm sein Tätigkeit des Debuggens zu erleichtern . Also ... an die erfahrenen MT4-Programmierer... bitte helft uns . Wäre schon arg nett . Kleinerbroker