Jump to content
Tom Next - Daytrading Community

Einstieg zu MT4 Programmierung


infojoerg

Recommended Posts

Wie gesagt, ein zweidimensionales array geht. Aber nur mit integer als key. Dafür bräuchtest du halt eine fixe Zuordnung von Pair zu array index.

 

Assoziative Arrays bzw. Maps mit Strings als Key gibts in MT4 AFAIK nicht

danke erst einmal - ich werde mal "weiter basteln"

Link to comment
Share on other sites

  • 2 weeks later...

danke erst einmal - ich werde mal "weiter basteln"

 

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

Link to comment
Share on other sites

In MT kann man leider nur die 1. dimension eines Arrays resizen, der Rest ist ab Initialisierung fix.

 

Du kannst lediglich selbst über Zugriffsfunktionen mit einem "normalen" Array ein mehrdimensionales simulieren:

 

int valueAt(int row, int col) {
 return my_array[row*COLS_PER_ROW+col];
}

void initArray(int numRows) {
 ArrayResize(my_array,numRows*COLS_PER_ROW);
}

 

zu den 60 zeilen: wie sieht denn der Code dazu aus?

Link to comment
Share on other sites

In MT kann man leider nur die 1. dimension eines Arrays resizen, der Rest ist ab Initialisierung fix.

 

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

Link to comment
Share on other sites

 

 

Was meinst du mit "senden"?

per DLL Aufruf? - wusste nicht das es da ein Beschränkung auf 256 Bytes gibt.

 

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);

Link to comment
Share on other sites

Einer String-Variablen kann man mehr als 255 Bytes zuweisen:

 

string strtest = "";

string str1 = "11111111112222222222333333333344444444445555555555"; //50 Bytes

string str2 = "11111111112222222222333333333344444444445555555555"; //50 Bytes

string str3 = "11111111112222222222333333333344444444445555555555"; //50 Bytes

string str4 = "11111111112222222222333333333344444444445555555555"; //50 Bytes

string str5 = "11111111112222222222333333333344444444445555555555"; //50 Bytes

string str6 = "1234567890"; //10 Bytes

strtest = str1 + str2 + str3 + str4 + str5 + str6; //260 Bytes

 

Eine String-Konstante kann maximal 255 Bytes beinhalten.

Das ist eine String-Konstante mit genau 255 Bytes:

"1111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000

1111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000

1111111111222222222233333333334444444444555555555566666"; //255 Bytes

 

Zur Unterscheidung String-Variable bzw. String-Konstante:

Das ist die Zuweisung der Stringkonstanten "ABC" zur String-Variablen strABC:

string strABC = "ABC";

 

Bei der Zuweisung einer "überlangen" String-Konstante an eine String-Variable werden die überzähligen Bytes abgeschnitten.

string strtest = "1111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000

1111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000

111111111122222222223333333333444444444455555555556666612345"; //260 Bytes

 

Hier würde das Stringende "12345" abgeschnitten werden.

 

Eine Fehlermeldung (weder vom Compiler noch zur Laufzeit) erhalte ich dabei nicht.

  • Upvote 2
Link to comment
Share on other sites

d.h. du schreibst die Werte in den Sourcecode als Konstanten?

Frage 1: Wieso die Werte in eine Konstante?

Frage 2: ggf. Wieso nicht so wie KB vorschlägt?

 

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 ?

Link to comment
Share on other sites

Frage 1: ich schreibe die Werte in eine StringVariable - deren Anzahl an Zeichen ja auf 255 begrenzt ist

Nein, nur StringKonstanten sind auf 255 Zeichen begrenzt.

 

Bsp:

string strtest = "11111111112222222222333333333344444444445555555555666666666677777777778888888888999999999900000000001111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111122222222223333333333444444444455555555556666612345"; //260 Bytes
string strtest2 = "ABCDE1111111111222222222233333333334444444444555555555566666666667777777777888888888899999999990000000000111111111122222222223333333333444444444455555555556666666666777777777788888888889999999999000000000011111111112222222222333333333344444444";
string strtest3= strtest + strtest2;

hier wird strtest auf 255 abgeschnitten, aber strtest3 enthält die gesamte Länge.

 

Ich bekomme übrigens schon ein Warning beim compilieren, is aber recht nichtssagend weil es nur den zu langen String enthält.

 

Frage 2: was schlöägt er denn vor ?

Mein Fehler, hab auf die Schnelle die User verwechselt, es war der Wolf:

 

Einer String-Variablen kann man mehr als 255 Bytes zuweisen:


string strtest = "";
string str1 = "11111111112222222222333333333344444444445555555555"; //50 Bytes
string str2 = "11111111112222222222333333333344444444445555555555"; //50 Bytes
string str3 = "11111111112222222222333333333344444444445555555555"; //50 Bytes
string str4 = "11111111112222222222333333333344444444445555555555"; //50 Bytes
string str5 = "11111111112222222222333333333344444444445555555555"; //50 Bytes
string str6 = "1234567890"; //10 Bytes
strtest = str1 + str2 + str3 + str4 + str5 + str6; //260 Bytes

also einfach den überlangen String (wenn er schon über eine Konstante geschrieben werden soll) in mehrere Zuweisungen aufteilen. Erhöht auch sicher die Lesbarkeit enorm.

Link to comment
Share on other sites

  • 1 year later...

hier mal zwei kostenlose Tutorial auf deutsch die sich mit dem Einstieg zu MQL beschäftigen.

 

 

ic.arrow.right.png http://www.daxsignal.de/ea-tutorial-1/ea-tutorial-1.html" target="_blank">Tutorial 1 - Einführung Meta Editor, Aufbau/Struktur der MQL4-Datei, Variablen etc.

 

ic.arrow.right.png http://www.daxsignal.de/ea-tutorial-2/ea-tutorial-2.html" target="_blank">Turorial 2 - Erstellen eines einfachen EA auf Basis eines SMA

 

 

Viel Spaß!

 

  • Upvote 2
Link to comment
Share on other sites

  • 4 months later...

Hi,

 

wie man in vielen Foren, so auch in diesem sehen kann, ist die Nachfrage nach MQL Themen nach wie vor sehr hoch. Das Update von MetaTrader4 auf Build 6xx hat einiges dazu beigetragen, die Plattform wesentlich attraktiver zu machen, insbesondere aus Entwicklersicht. Nach wie vor ist MT4 für das eigentliche Trading eine der mit Abstand stabilsten Plattformen die es gibt.

 

Wir von ForexInnovation haben uns deshalb vor einer Weile entschlossen, einen Blog zu starten, indem wir mal ein wenig genauer auf die Themen MQL / C++ / C# (für dlls nutzen wir hauptsächlich C#) eingehen.

Visual-Basic für ein paar schnelle Auswertungen in Excel und auch R http://www.r-project.org/ wird ebenfalls mit dabei sein. Insbesondere R ist dabei ein sehr spannendes Thema, weil man damit sehr interessante Auswertungen aus dem Statistik-Bereich machen kann, die in MT4 einen gigantischen Aufwand verursachen würden. Aber dazu werden wir im Laufe der Zeit im Blog ein paar Beispiele und praktische Anwendungsfälle vorstellen (falls R noch nicht bekannt ist, dann gerne mal hier http://www.rstudio.com/ ein wenig nachlesen, eine wirklich unglaublich mächtige Programmiersprache, die bei der Entwicklung von Algos hervorragende Dinge tun kann ...)

 

Wir werden versuchen eine breite Palette an Themen rund um MetaTrader und die Entwicklung von Handelssystemen abzudecken. Für Vorschläge sind wir offen, gerne melden wenn wir uns mal mit einem Thema etwas intensiver befassen sollen.

 

Wer Lust hat kann ja mal vorbei schauen, diverse Tools und viel Quellcode zu verschiedensten Themen / Problemen ist schon vorhanden.

 

http://www.code4trading.com/

 

Thomas @ ForexInnovation

  • Upvote 2
Link to comment
Share on other sites

Dank Dir Thomas,

 

klingt spannend. Eventuell sieht man sich ja mal wieder auf einer der Messen oder ich besuche euch mal in Hamburg cool.gif.

 

klar gerne! auf der WOT sind wir dieses Jahr nicht, irgendwie hat uns das in den letzten Jahren nicht so "angetörnt". viele Gespräche mit dem Tiefgang eines Katamarans ... da ist uns die Zeit zu schade, da sind wir nicht so die Marketing-Freaks, das müssen wir uns nicht geben.

 

aber ein Besuch in unseren schönen Büros in Hamburg ist immer möglich. einfach kurz Bescheid sagen, vorbei kommen, Kaffee trinken (oder natürlich Tee) und ein wenig plauschen. vielleicht sogar mit Tiefgang shades.gif

 

im Blog ist im übrigen ein neuer Beitrag zum Thema "geschlossene Trades im Chart darstellen" ... danach wurden wir schon oft gefragt ... hat MetaTrader irgendwie vergessen und bis heute auch keine vernünftige Lösung nachgereicht ... ich hab das mal übernommen, zumindest einen Anfang würde ich mal sagen.

 

wen es interessiert: code4trading.com Tool zur Anzeige geschlossener Trades im Chart

 

LG

Thomas

  • Upvote 1
Link to comment
Share on other sites

  • 6 months later...
  • 8 months later...

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