Alle Inhalte von mtbf40
-
MetaTrader4 Internal Message
DANKE... aber siehe next Post...
-
MetaTrader4 Internal Message
nein das ist es nicht... es liegt wieder mal im Detail versteckt und zwar im Buffer SendMessageA(label, WM_GETTEXT, 10, labT); SendMessageA(hWnd, WM_GETTEXT, BufferSize, Var); ...der war einfach zu gross gewählt - die erste Länge ist 5 die zweite 4 - macht 9 und meine Size war 10 - d.h. die ersten Daten sind wahrscheinlich nach hinten geschoben wurden weil ja Platz im Buffer ist habe jetzt vor WM_GETTEXT das gesetzt len = SendMessageA(label, WM_GETTEXTLENGTH, 0, 0); SendMessageA(label, WM_GETTEXT, len+1, labT); jetzt geht es...
-
MetaTrader4 Internal Message
... heute habe ich mal ein mql4 Rätsel für die Profis... init { ... get_val_from_EO_wnd(childWND); } double get_val_from_EO_wnd(int hWnd) { string cName = "012345678901234567890123456789"; int dialog, edit, label; string eo[1]; dialog = GetWindow(hWnd, GW_CHILD); GetClassNameA(dialog, cName, 30); string edVal = " "; string labT = " "; if (cName == "#32770") { edit = GetDlgItem(dialog, CID_EDIT); SendMessageA(edit, WM_GETTEXT, 10, edVal); eo[0] = edVal; log("############"); log("edVal_0="+edVal); // edVal = ""; //log("edVal_1="+edVal); //log("edValue_1="+eo[0]); log("-----------"); dialog = GetWindow(hWnd, GW_CHILD); GetClassNameA(dialog, cName, 30); label = GetDlgItem(dialog, CID_LABEL); SendMessageA(label, WM_GETTEXT, 10, labT); eo[1] = labT; } log("edVal="+edVal); log("labT="+labT); log("eo[0]="+eo[0]); log("eo[1]="+eo[1]); return; } Ergebnis der Ausgabe: DebugView [3112] ############ [3112] edVal_0=0.10 [3112] ----------- [3112] edVal=Lot [3112] labT=Lot [3112] eo[0]=Lot [3112] eo[1]=Lot Lass ich das mit dem Array weg stehen die korrekten Werte in den Variablen <edVal> und <labT> Wie bekomme ich nun die Wert <0.10> in eo[0] und den Wert <Lot> in eo[1] kann mir einer erklären was da abgeht????? Der Dialog ist egal - Haupsache ein Label und eine Edit-Box
-
Free Pascal
zum debuggen benutze ich <OutputDebugString> - ist ganz praktisch ...einen TradeManager - mit dem ich meine Trades überwachen und vor allem auswerten kann. Der erste Schritt ist das initialisieren, d.h. wenn ich Trades eröffnen will zeigt er mir verschieden Werte an - siehe Anhang Was ich am Ende will ist ein Tool zum auswerten aller Trades von verschiedenen Accounts (Brokern) ... und vielleicht noch ein paar Dinge mehr
-
Free Pascal
Hallo, hat schon mal jemand einen Erfolg erziehlt und mit <GetDlgItemText> einen Wert aus einer Edit Box bekommen? procedure winDlgTest.DoRun; var Msg: String; Buffer1: Array[0..20] of Char; Buffer2: Array[0..255] of Char; wnd, txt,Text: integer; begin { 1838012 - WinHandle (Window Class #32770) 1127 - ID von Edit Box } wnd := GetDlgItem(1838012,1127); -> erhalte Wert txt := GetDlgItemText(wnd, 1127, Buffer1, 256); {-> kein Wert} txt := GetDlgItemText(1838012, 1127, Buffer1, 256); {-> kein Wert} Text := GetWindowText(wnd,Buffer2, 256); Msg := Buffer2[0]; Terminate; end;
-
Free Pascal
naja, das kommt davon, wenn man Software übernimmt, diese dann anpasst und bei dem Rest nicht genau hinschaut oder durchblickt - RAiNWORM hat nämlich einen Parameter bei dem die Länge der Daten bestimmt wird... und meine Daten waren einfach länger und so wurde der Rest glatt "abgeschnitten"
-
AgenaTrader - erster Eindruck
das finde ich einen entscheidenden Punkt für die Auswahl einer Software, wenn man "sehr" nah an die Entwickler herankommt. Absolut spitze finde ich, wenn dann die Verbesserungsvorschläge bzw. Änderungswünsche "zeitnah" eingearbeitet werden - natürlich vorausgesetzt diese machen Sinn!! Dieser Punkt ärgert mich z.B. bei ProRealtime sehr - die entwickeln lieber 3D-Candle als einige sinnvolle Verbesserungsvorschläge umzusetzten - wie z.B. das markieren von Fibos um diese zu verändern/verschieben. Das Problem bei manchen Softwareherstellern ist, wenn die zu erfolgreich werden kommt die Arroganz im Galopp...
-
Free Pascal
erst einmal danke für die Antworten. der Aufwand ist mir im Moment zu hoch - es funktioniert ja eigentlich, nur zu einem falschen Zeitpunkt!! Was ich möchte, ist einfach mal die DLL debuggen um zu schauen wo die Daten "verschluckt" werden - offensichtlich klappt das nicht mit einer DLL die von MetaTrader aufgerufen wird??!! Die Daten werden komplett von MT gesendet - der letzte Teil geht aber beim ersten senden verloren und danach sind die Daten vollständig. Irgend wie habe ich den Anschein das die DLL nicht wartet bis alles gesendet wurde und schon mal den ersten Teil weiterreicht - das muss ein Puffer-Problem sein.
-
Free Pascal
Hallo, habe bei meinem Projekt jetzt festgestellt das Daten "verloren" gehen. Das ganze realisiere ich über die Indy-Komponenten - TCP-Sockets Das ganze stellt sich folgendermaßen dar: Metarader (EA) sendet "permanent" Daten an eine <--------> DLL (TCP-Server) <--------> DLL gibt die Daten an das Hauptprogramm-<HP> (TCP-Cient) beim HP kommen aber am Anfang nicht alle Daten an, sondern erst nach "kurzer" Zeit - da das HP diese Daten schon verarbeitet, kommt ein Fehler. Jetzt würde ich gern in der DLL ein Debugging einrichten, weiß aber nicht wie - ich habe die Unit IdLogDebug eingebunden die aber nichts ausgibt. Hat jemand ein Beispiel wie man diese Unit richtig einbindet? - oder was gibt es noch für Möglichkeiten eine DLL zu debuggen?? Die Basis dafür ist MTEC von RAiNWORM
-
Einstieg zu MT4 Programmierung
Frage 1: ich schreibe die Werte in eine StringVariable - deren Anzahl an Zeichen ja auf 255 begrenzt ist Frage 2: was schlöägt er denn vor ?
-
Einstieg zu MT4 Programmierung
..weil ich 25 Werte ermittel die von mehreren Pairs kommen können - ich beschränke das aber auf 512 Bytes
-
Einstieg zu MT4 Programmierung
strReceiveBuffer[0] = "1111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000 1111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000 1111111111222222222233333333334444444444555555555566666"; //255 Bytes ErrorMeldung: '1111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000 1111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000 1111111111222222222233333333334444444444555555555566666' - too long string (255 characters maximum allowed) das senden soll an eine DLL gehen ich verwende jetzt <StringConcatenate> - der einzelne String ist zwar auf 255 Bytes beschränkt, aber beim "verbinden" geht mehr Wenn ich mir jetzt einen passenden String "bauen" will kann ich dies doch folgender Maßen machen: Bytes = LängeString/8?? string1 = '1'; string2 = '1'; for (i=0; i<Bytes; i++) { string = string+'1' if (i == 255) { string2 = string2+'1'; } } full = StringConcatenate(string1,string2);
-
Einstieg zu MT4 Programmierung
das habe ich zwar irgendwie mitbekommenm, aber erst jetzt ist es mir auch <bewusst> geworden!! http://1.1.1.4/bmi/www.tom-next.com/community//public/style_emoticons/default/chocala.gif ... also eine kleine Kehrtwende im Array und schon funktioniert es - also aus Array[20][x] mache Array[x][20] Danke... ein Problem gelöst geht es gleich mit dem nächsten weiter. wie sendet man denn einen String >256 Bytes aus Metatrader??
-
Einstieg zu MT4 Programmierung
... so habe weiter gebastelt und ein 2 dimensionales Array aufgebaut - jedoch mit fester Länge. Wie kann man das dynamisch machen??? habe jetzt folgendes: array[20][3]: will aber: array[20][x] dieses Array wird einer Funktion übergeben - als Referenz - diese füllt es das Array mit fester Länge kann ich ausgeben - ABER es schreibt mir 60 Zeilen!! (20*3) statt 20
-
Der i-Phone-Jäger Samsung Galaxy S3
... und wie sieht es mit der Navigation aus??????? komme gerade aus Frankreich - wo mir ein FranzMann mein Navi (TomTom) geklaut hat ... und wollte dann mit meinem Galaxy i9000 navigieren - da hätte ich als Kühlerfigur auf der Motorhaube sitzen müssen, denn im Auto ging nixs - naja ja, wenn man nur Autobahn fährt kommt man auch so nach Hause, aber man muss sich mächtig konzentrieren!! Jetzt suche ich ein Smartphone was als oberste Prio IM Auto navigieren kann...
-
Einstieg zu MT4 Programmierung
danke erst einmal - ich werde mal "weiter basteln"
-
Einstieg zu MT4 Programmierung
meine Frage steht in Zusammenhang mit folgenden Thread WindowsID und EasyOrder Ich kann nicht - oder weis nicht - wie ich die Werte der einzelnen Linien aus den Charts ermitteln kann. deshalb gehe ich über Globale Variablen Meine Frage habe ich hier reingesetzt, weil es eine allgemeine zu GV und Arrays ist.
-
Einstieg zu MT4 Programmierung
die Pairs hole ich mir über StringSubstr(GVname,6,7)
-
Einstieg zu MT4 Programmierung
jedes Pair hat 3 GV: mit F3 aufgerufen, kann es so ausshen: Digits -> Wert EO_OP_GBPUSD -> Wert (GV 1.1.) EO_OP_EURUSD -> Wert (GV 2.1.) EO_SL_GBPUSD -> Wert (GV 1.2.) EO_SL_EURUSD -> Wert (GV 2.2.) EO_TP_GBPUSD -> Wert (GV 1.3.) EO_TP_EURUSD -> Wert (GV 2.3.) PipValue -> Wert ich mache eine for-Schleife über GlobalVariablesTotal() dann if (StringFind(GVname,"EO_",0) >= 0 && GVvalue > 0) es werden nur GV ausgewertet die >0 sind - also wertig ... und dann soll das Array aufgebaut werden nach den Symbolen, jeweils mit OP/SL/TP
-
Einstieg zu MT4 Programmierung
hab da mal 'ne Frage an die Experten: kann man(n) bei mql4 ein Array in folgender Art aufbauen: EURUSD OP -> Wert SL -> Wert TP -> Wert USDCAD OP -> Wert SL -> Wert TP -> Wert GBPUSD OP -> Wert SL -> Wert TP -> Wert Ausgelesen werden Globale Variablen Bsp.: EO_OP_GBPUSD EO_SL_GBPUSD EO_TP_GBPUSD ... können n+1 Pairs sein
-
MQL4/5 Programmiertool
Auf der Suche nach "dynamischen Arrays" bin ich auf folgende Seite gestoßen... Habe sie mir jetzt nicht genauer angeschaut - könnte aber für den einen oder anderen interessant sein - vor allem für unseren "ProgProfi" Vola http://fxdreema.com/
-
MetaTrader4 Internal Message
guckst du hier ... C:\Program Files (x86)\MetaTrader\experts\include\WinUser32.mqh
-
MetaTrader4 Internal Message
leider hast du recht es geht um die Erweiterung von der winUser32.mqh Library
-
MetaTrader4 Internal Message
Hat jemand eine Liste von den <MetaTrader4_Internal_Message>. Ich habe nur eine "russiche" gefunden - müsste man halt übersetzten. Man könnte doch eine eigene - TN-winUser32.mqh - aufbauen - was meint ihr?? oder
-
MT4: WindowsID oder wie identifiziert man das Indikatorfenster
...das mit den Globalen Variablen habe ich jetzt kappiert und es funktioniert... ABER - hat jemand ein Beispiel oder weiß wie man es anstellt aus einem EA ein Skript aufzurufen??