Jump to content
Tom Next - Daytrading Community

Recommended Posts

Posted

Einen habe ich noch

 

http://codebase.mql4.com/5040

 

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" badtaste_.gif 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.

Posted

Hallo,

 

habe bei meinem Projekt jetzt festgestellt das Daten "verloren" gehen.

...

...

...

Die Basis dafür ist MTEC von RAiNWORM

 

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"

Posted

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;

Posted

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"

Entschuldigung wink2.gif Bei Datenübergaben arbeite ich immer mit Begrenzungen, um Overflow-Attacken vorzubeugen.

Bei TCP/IP muss man auf Empfangsseite aufpassen, da die Daten beliebig packetiert werden können und somit in mehreren Schüben ankommen können. Dabei besteht auch ein Unterschied zwischen LAN und Internet, was die Packetgrößen anbelangt.

 

Zum Debuggen der DLL: da die von MT aufgerufen wird, hast du mit "normalen", praktikablen Mitteln keine Chance. Du müsstest dann zu Low-Level-Debuggern übergehen. Das macht dann aber keinen Spass und kostet unnötig Zeit.

 

Mich würde mal was ganz anderes interessieren: was baust du da eigentlich? biggrin.gif

Posted

Zum Debuggen der DLL: da die von MT aufgerufen wird, hast du mit "normalen", praktikablen Mitteln keine Chance. Du müsstest dann zu Low-Level-Debuggern übergehen. Das macht dann aber keinen Spass und kostet unnötig Zeit.

zum debuggen benutze ich <OutputDebugString> - ist ganz praktisch

 

 

Mich würde mal was ganz anderes interessieren: was baust du da eigentlich? biggrin.gif

...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

post-2251-0-53767800-1346517987_thumb.png

  • 1 month later...
Posted

Hallo an alle Datenbank-Profis,

 

ich hab da mal'ne Frage

 

Ich habe eine DB (Sqlite) mit verschiedenen Tabellen (siehe Anhang).

Jetzt möchte ich folgendes erreichen:

 

z.B. in der TM_HistoryOrders gibt es die Spalte <TradeTyp> - diese wird mittels <OrderType()> Metatrader gefüllt - diese Funktion gibt aber nur Zahlen aus (1-5)

Ich habe mir dann gedacht eine weitere Tabelle anzulegen - TM_OrderTypes - diese soll eine referenzierende Tabelle sein. Jetzt habe ich mit Primärschlüsseln und Fremdschlüsseln (Foreign Keys) herumexperimentiert und komme nicht weiter. Als Ergebnis dieser ganzen Aktion möchte ich, dass in der Spalte <Trade_Typ> buy od. sell od. sell Limit ... steht

Wie kann ich das in der DB realisieren??

MTEC.zip

Posted

Also wenn du in einer tabelle eine int-Spalte TradeTyp hast, wird in der Spalte nie buy oder sell stehen.

Du kannst aber beim auslesen der tabelle nicht die tabelle selbst sondern ein JOIN nehmen

 

ala "SELECT * FROM (TM_HistoryOrders JOIN TM_OrderTypes using (TM_HistoryOrders.TradeTyp ==TM_OrderTypes.typeId))"

 

damit kombinierst du die zwei tabellen derart, das zu TM_HistoryOrders Spalten von TM_OrderTypes (für die Ausgabe) hinzugefügt werden. Und zwar genau die Zeile von TM_OrderTypes in der der entsprechende Wert von TM_HistoryOrders.TradeTyp passt.

 

also zB

TM_HistoryOrders:

id | TradeTyp | ....

1 | 2 | orderinfo1...

2 | 1 | orderinfo2....

 

TM_OrderTypes:

typeid | name

1 | BUY

2 | SELL

3 | BUY_LIMIT

....

 

dann gibt das JOIN folgenden Output (sortierung "zufällig")

id | TradeTyp | .... | name

1 | 2 | orderinfo1... | SELL

2 | 1 | orderinfo2.... | BUY

 

damit das ganze auch recht schnell geht, sollte natürlich bei den OrderTypes die typeID der PrimaryKey oder zumindest ein Index sein.

Posted

Du kannst aber beim auslesen der tabelle nicht die tabelle selbst sondern ein JOIN nehmen

Das wäre die saubere Lösung. Alternativ könntest du mit dem CASE-Statement arbeiten:

 

 

The CASE expression

 

A CASE expression serves a role similar to IF-THEN-ELSE in other programming languages.

...

  • CASE x WHEN w1 THEN r1 WHEN w2 THEN r2 ELSE r3 END
  • CASE WHEN x=w1 THEN r1 WHEN x=w2 THEN r2 ELSE r3 EN

Quelle

 

ala "SELECT * FROM (TM_HistoryOrders JOIN TM_OrderTypes using (TM_HistoryOrders.TradeTyp ==TM_OrderTypes.typeId))"

Ist das Standard-SQL? Ansonsten müsste es meines Erachtens anstatt "using" "on" genommen werden und an Stelle von "==" "=".

  • Upvote 1
Posted

Ist das Standard-SQL? Ansonsten müsste es meines Erachtens anstatt "using" "on" genommen werden und an Stelle von "==" "=".

 

Nö, das war "as i remember" SQLite ;) hast Recht es is "ON", hab noch gewusst das eines für liste von spalten ist und eines für die Bedingung... Das "==" is halt schon so automatisch bei Vergleichen http://www.tom-next.de/community//public/style_emoticons/default/moveaway.gif

 

bzgl Case: wenn es nur genau eine Abfrage ist, gehts so, aber dann wärs fast besser es als "switch" in den Code zu packen, weil bei 6 Möglichkeiten wird das CASE ein bissl unübersichtlich

Posted
... danke erst einmal für die Tips - ich habe das jetzt direkt im Code eingearbeitet - werde bestimmt wieder auf euch zukommen , wenn es um Views oder Trigger geht... Wenn ich eine "vorzeigbare" Version habe, werde ich sie mal hier reinstellen...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...