Zum Inhalt springen
View in the app

A better way to browse. Learn more.

#T/N/X/T

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

MQL Library mit Standardfunktionen

Geschrieben

Soda, ich start hier einfach mal das Projekt "StandardLib". Sobald ein Admin den Upload freischaltet gibts meine kleine Lib mit sage und schreibe 2 Funktionen im Downloadbereich einfach mal als Diskussionsgrundlage.

 

SVN halte ich für sinnvoll, aber ich denke, der Download-Bereich sollte es auch tun und mehr Leute verstehen es auch, zumal es auch nicht so hoch frequentiert ist (oder wie der Chef immer so schön sagt: "Hier bei tom-next ticken die Uhren langsamer"). Es wird wahrscheinlich darauf hinauslaufen, dass jeder so "sein Baby" hat und die anderen es lediglich testen und eventuell Bugs rückmelden.

 

Ich denke mit SVN wirds erst sinnvoll wenn wir wirklich mehrere Coder sind die daran arbeiten. Solange nur eine handvoll dran arbeitet könnts mit einem file klappen.

 

Vor allem dürfte das Hauptziel mal sein die notwendigen Funktionen zu finden.

Wie ich das bis jetzt sehe, haben wir hier viele "Betatester" die wissen was es können soll und ein paar coder, die das dann produzieren.

 

Also: Was soll in so eine Standardlib rein? Was codet ihr immer wieder und denkt euch jedesmal "das hab ich doch schon mal geschrieben"?

 

Kurz was schon drin ist:

TBOrderSend: Als Extension zu OrderSend. TBOrderSend kann man die "rohen" Werte geben und es gleich diese "sinnvoll" an die notwendige Genauigkeit an (also rundet Preise zum nächsten vollen Tick auf oder ab, gleicht die Lotsize an etc.) Passt auch Stops und TPs an falls sie zu nah am Entryprice liegen (anhand der Stoplevel vom MArketINfo). Zusätzlich noch eine Überprüfung der Expiration auf sinnhaftigkeit und schickt dann die Order los.

Kommt trotzdem ein Error versucht er es immer wieder mit kleinem Errorhandling: Requote und Wartezeit bei Serverbusy... Im Erfolgsfall retouniert sie das OrderTicket, sonst den negativen Fehlercode.

 

TBOrderModify macht im Prinzip das gleiche nur für OrderModify (und noch nicht wirklich kommentiert)

 

zur Namensgebung: ich hab sie TradeBox genannt und deswegen alle Funktionen daraus mit dem Präfix TB versehen.

 

Und ja, beim coden ist mein Englisch teils unter aller Sau ;)

  • Antworten 108
  • Aufrufe 1,8Tsd
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

Most Popular Posts

  • Freut mich wenn dir die Tradebox hilft.   für alle Funktionen wirds eine lange liste. Am Anfang der TradeBox is eine lange Liste mit allen vorhandenen Funktionen. Zum Code, deiner ist fast korrekt (es

  • Zum lösen des Problems bin ich offensichtlich zu spät, aber die Frage kann ich beantworten ;) Es gibt grundsätzlich den Unterschied zwischen include und import:   Bei include holt sich der Compiler zu

  • // Copyright (C) 2009 // Markus Kuegerl <kuegerl.markus@gmx.net> // // All rights reserved. // // Redistribution and use in source and binary forms, with or without // modification, are per

Veröffentlichte Bilder

Featured Replies

Geschrieben

hupsss :blink:

und ich warte jetzt schon seit Stunden auf die Freigabe der aktuellen Datei :schimpf:

 

 

OK jetzt aber :full:

Geschrieben
..und ich warte jetzt schon seit Stunden auf die Freigabe der aktuellen Datei :blink:

 

Aha, er ist ganz "scharf" auf diese Datei ... :schimpf:

Geschrieben
wie geht das denn jetzt wenn man was dazu schreiben möchte (also in dieser File) einfach mit dem selben Namen im Downloadbereich hochladen?
Geschrieben
Für diese nächtliche Hetzjagt habe ich aber jetzt mindestens ein EA Profi System frei :schimpf:

 

Profi Systeme: 1.400 - 2.800 Euro

Profi Systeme: 1.400 - 2.800 Euro

Profi Systeme: 1.400 - 2.800 Euro

Profi Systeme: 1.400 - 2.800 Euro

Profi Systeme: 1.400 - 2.800 Euro

Profi Systeme: 1.400 - 2.800 Euro

 

... du machst uns hier die Preise kaputt... :blink:

Geschrieben
wie geht das denn jetzt wenn man was dazu schreiben möchte (also in dieser File) einfach mit dem selben Namen im Downloadbereich hochladen?

 

Gute Frage Alex,

so exzessiv habe ich die Funktionen noch nicht getestet, sollte aber so funktionieren. Durch den neuen Upload, wird die vorherige Version ersetzt, kann aber dadurch, da sie zuvor gespeichert wurde, später wieder hergestellt werden.

 

Ich muss mal schauen, ob ich die Gruppenrechte für die Entwickler erweitern kann. Kann sein das es da noch mehr Features gibt.

Wegen SVN bin ich auch dran. Unser US Entwickler ist aber im Urlaub, Feedback kann noch dauern.

Geschrieben

ok habe da noch was gefunden

 

RefreshRates(); Funktioniert so nicht

die Variable müssen danach neu geladen werden. (BID,ASK...)

Geschrieben
  • Autor
ok habe da noch was gefunden

 

RefreshRates(); Funktioniert so nicht

die Variable müssen danach neu geladen werden. (BID,ASK...)

 

hmmm, stimmt bzw. müsste dann eigentlich die gesamte Preisangleichung wiederholt werden (da möglicherweise stoplevel verletzt etc.) oder? ich glaub wir sollten die Preisangleichungen in kleine Funktionen auslagern...

Geschrieben
  • Autor

:top:

Ich weiß Uhren und so, aber nochmal der Aufruf :top: an alle, die schon mal den MetaEditor geöffnet haben (also vom Blutigen anfänger bis zum Profi):

Welche Bereiche in einem EA wären schön zum automatisieren? bzw. welche Codeteile schreibt ihrer immer und immer wieder defakto gleich und wartet nur darauf, dass jemand eine allgemeine Funktion dazu schreibt?

 

Jeder der schon mal mehr als ein Handelssystem geschrieben hat, hatte den Gedanken "sowas hab ich doch schon mal gecodet". Und genau um solche Blöcke gehts hier! ;)

 

Oder ärgert sich gerade jemand mit einem funktionellen Abschnitt, der vielleicht öfters auftritt? Immer her damit!

 

Anders rum: Gibts Fragen zur Lib an sich? Wer weiß wie man eine Lib in MQL verwendet? (Da sich nie wer traut zugeben das er es nicht weiß ;)

Geschrieben
Ich weiß Uhren und so, aber nochmal der Aufruf :top:

 

Freut mich, dass Du an dem Thema dranbleibst :top: .

 

Ja, dass mit den Uhren... ;-) ist manchmal ganz gut, manchmal würde man sich etwas mehr "Drive" wünschen. Gerade bei gemeinsamen Projekten bzw. wenn jemand uneigennützig anderen seine Skills 4 free zur Verfügung stellt. Ich kann nur sagen, dass verdient Respekt. Dieses Kompliment gebe ich an der Stelle an alle weiter, die sich hier engagieren. Klasse Job den ihr da macht!

 

Manchmal dauert es etwas länger, bis eine Reaktion erfolgt. Das ist der Lauf der Dinge und eigentlich auch normal. Wichtig ist, dass andere insbesondere neue User spüren, dass sie in der Community gut aufgehoben sind und bei Bedarf Hilfe bekommen. Da der Zulauf von MT/ MQL Interessierten immer größer wird, könnte ich mir vorstellen, dass in ein paar Monaten die Sektion Metatrader/ -programmierung einer der beherrschenden Themenbereiche sein wird. Also nicht verzagen, "wenn es mal wieder länger dauert". Ich finde das Engagement sehr toll und hoffe, dass wir hierzu noch viele spannende Diskussionen erleben.

Geschrieben

ich würde gerne ein Funktion haben wollen

wo man den Wochtag eines Datums abrufen kann.(aber als Text z.b. "Montag")

 

z.b. der Eröffnung Preis einer Order aus der Historie. = Funktion sage mir welcher Wochtag das war.

Geschrieben
  • Autor
ich würde gerne ein Funktion haben wollen

wo man den Wochtag eines Datums abrufen kann.(aber als Text z.b. "Montag")

 

Signaturmäßig sowas:

string TBTimeDayOfWeekString(datetime date)

?

 

Die Strings wären dann sprachabhängig... kann man in MQL die aktuelle Systemsprache abfragen?

Bearbeitet von Mythos

Geschrieben

ja genausowas aber ohne das ich da ein Datum mit in der Funktion eingeben muss sondern nur ebend z.b. OrderOpenPrice() oder Time[230]

Die Strings wären dann sprachabhängig...

deutsch oder english

kann man in MQL die aktuelle Systemsprache abfragen?

wohl mit Hilfe der WinApi

Geschrieben
  • Autor
ja genausowas aber ohne das ich da ein Datum mit in der Funktion eingeben muss sondern nur ebend z.b. OrderOpenPrice() oder Time[230]

also für eine selectierte Order (Ist die Order eigentlich in der Lib auch selektiert?)? oder einfach den aktuellen Wert? Ohne Parameter seh ich sonst wenig möglichkeit.

Oder meinst du OrderOpenPrice() als Parameter übergeben? Das wär genau das was ich gemeint hab.

 

Mir schwebt gerade sowas vor:

string TBDayOfWeekString(datetime date)
{
 int day= DayOfWeek(date);
 switch(day)
 {
....
 }
}

Das könnte man dann mit "TBDayOfWeekString(OrderOpenPrice()) etc. aufrufen...

 

wohl mit Hilfe der WinApi

WinApi? sagt mir nix, aber nur englisch is in dem Bereich eh schon salonfähig ;)

Geschrieben
...Oder meinst du OrderOpenPrice() als Parameter übergeben?

 

das meinte ich ja müsste ja auch gehn al datetime?

Geschrieben
WinApi? sagt mir nix, aber nur englisch is in dem Bereich eh schon salonfähig ;)

 

ja aber eine herrausforderung

ich schau mal wie man die Sprache herrausbekommt... :OMG:

Geschrieben
ja aber eine herrausforderung

ich schau mal wie man die Sprache herrausbekommt... :OMG:

 

garnet so einfach aber sich schaffe das.

Bitte Warten...

 

:5+5:

Geschrieben

hier nochmal eine nützliche Funktion zum Thema gebastelt.

 

TodayOrdersOpen?()

Diese Funktion gibt TRUE(1) zurück wenn heute eine Order eröffnet wurde.

 

man kann Parameter angeben muss aber nicht.(wenn nix als Parameter angegeben wird, ist der TYP ORDER und MAGIC uninteressant für diese Funktion)

::type = BUY oder SELL oder PENDING

::magic = Magic Nummer wennn benutzt wird

::symbol = könnte man auch einbauen (so wird nur das Symbol(z.b. EURUSD) benutzt welches wo der Code ins Chartfenster geladen wurde) :OMG:

 

bool TodayOrdersOpen?(int type=-1, int magic=-1) {
 
  int cnt = OrdersHistoryTotal();
  for (int i=cnt-1; i>=0; i--) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) 
 
 if (OrderSymbol() != Symbol()) continue;
 if (OrderMagicNumber() != -1) if(OrderMagicNumber() != magic) continue;  
 if (OrderType() != -1) if(OrderType() != type) continue;
   
	 if (TimeDay(OrderOpenTime())==Day()
		  && TimeMonth(OrderOpenTime())==Month()
		  && TimeYear(OrderOpenTime())==Year()) return(True);
  }
  
cnt = OrdersTotal();
for (i=cnt-1; i>=0; i--) {
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continue;
 
 if (OrderSymbol() != Symbol()) continue;
 if (OrderMagicNumber() != -1) if(OrderMagicNumber() != magic) continue;  
 if (OrderType() != -1) if(OrderType() != type) continue;
   
	 if (TimeDay(OrderOpenTime())==Day()
		  && TimeMonth(OrderOpenTime())==Month()
		  && TimeYear(OrderOpenTime())==Year()) return(True);
  }

return(False);
}

 

habe nicht getestet

hoffe es hat sich kein Fehler eingeschlichen :5+5:

 

kann ja dann mit in die Datei eingebaut werden :5+5:

 

:full:

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

Account

Navigation

Suche

Suche

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.