automatischer Handelsroboter wobei für Bid/Ask die Zeit eingestellt werden kann

 

Hi, ich bin "neu" hier (in jeder Hinsicht) und suche also erstmal jemanden der mir sozusagen den Weg zeigt,

damit ich mich dann langsam vorantasten kann.

Grundsätzlich geht es darum, dass ich im MT5 einen eigenständig handelnden Handelsroboter integrieren

möchte. Meine bisherigen Versuche scheiterten, da es anscheinend eine solche Funktion, wie im Betreff

genannt, nicht gibt - ich konnte zumindest nichts Adequates finden.

Kann mir also jemand sagen was eingegeben werden muss, damit dieser Roboter, zumindest mal für den

Anfang, einfach um z.B. 08:59 Uhr eine vordefinierte Order plaziert und diese dann um 16:59 Uhr einfach

wieder schliesst? Besten Dank im voraus!

 

Sorry, aber das Forum kann nicht jemandem das Programmieren beibringen.

Dafür gibt es zB.: https://www.mql5.com/de/articles/100
(Schrittweiser Leitfaden für Anfänger zum Schreiben eines Expert Advisors in MQL)

Aber es gibt die Suche (oben rechts die Lupe) gib da mal Zeitfilter ein ...

Es gibt viele(!) Artikel und eine umfangreiche CodeBase und hier sind alle Funktionen mit einer Kurzbeschreibung gelistet, hier kann man mit Ctrl+F nach Stichworten suchen - meist gibt es viele Besipeiel.

Außerdem kann man im Editor den Kursor auf einen MQ-Befehl stellen und F1 drücken, ein direkter Weg zur Dokumentation.

Und wenn es gar nicht geht, gibt es immer noch die Freelancer, aber dafür lies vorher:
EA-freelancer Pflichtenheft : https://www.mql5.com/de/articles/4368
Indi : https://www.mql5.com/de/articles/4304
How to Order a Trading Robot in MQL5 and MQL4 : https://www.mql5.com/de/articles/117


Übrigens Diskussionen/Empfehlungen ... über Broker, Marktprodukte, Signale sind hier strikt verboten, ebenso wie Werbung!

Artikel über MQL5
Artikel über MQL5
  • www.mql5.com
Artikel über das Programmieren in MQL5
 

Hallo Herr Schreiber, das ist mir schon klar - nur in meinen ersten wirren Suchen habe ich nichts gefunden was in diese Richtung ginge (so wie z.B. in Microsoft Excel - hier gibt es immer kleine Beispiele zu den Befehlen),

aber Sie haben mir ja nun ein paar Links gesendet und die kann ich jetzt mal durchgehen und sehen wie weit ich komme - Danke!

 
tshoshua #:

Hallo Herr Schreiber, das ist mir schon klar - nur in meinen ersten wirren Suchen habe ich nichts gefunden was in diese Richtung ginge (so wie z.B. in Microsoft Excel - hier gibt es immer kleine Beispiele zu den Befehlen),

aber Sie haben mir ja nun ein paar Links gesendet und die kann ich jetzt mal durchgehen und sehen wie weit ich komme - Danke!

Erste Informationen gibt es in der Dokumentation.


Zeit nehmen durchlesen.

https://www.mql5.com/de/docs

Das, was du suchst, ist kein einzelner Befehl, sondern ein fertiger EA der eine Order zu einer bestimmten Zeit ausführt.


Hilfestellung:

Gefunden unter den ersten 2 Ergebnissen mit der Googlesuche

https://www.google.com/search?client=firefox-b-d&q=mql5+order+at+time
#include<Trade\Trade.mqh>
CTrade trade;

double Ask,Bid;
input datetime Time=D'15:15:55';
input double LotSize=0.01;
input double TP=300;


void OnTick()

 {  double Balance=AccountInfoDouble(ACCOUNT_BALANCE);
    double Equity=AccountInfoDouble(ACCOUNT_EQUITY);
    double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);
    double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);
    
    // Convert the Time to Local PC Time
    datetime time=TimeLocal();
    
    // Creating a String for Time to Include Seconds
    string minutesAndSeconds=TimeToString(time,TIME_SECONDS);
    
    // If there are No Positions Open
    if(StringSubstr(minutesAndSeconds,0,8)==Time);
   
    // I want to Open Buy Stop
     { trade.BuyStop(LotSize,Ask+100*_Point,_Symbol,0,Ask+TP*_Point,ORDER_TIME_GTC,0,0);
       trade.SellStop(LotSize,Bid-100*_Point,_Symbol,0,Bid-TP*_Point,ORDER_TIME_GTC,0,0);
     }

   // If a One Position Opens
  if (Balance!=Equity) CancelOrder();
  
 }
   // Cancel All Pending Orders
   void CancelOrder()
   
  { for(int i=OrdersTotal()-1; i>=0; i--)
   { ulong OrderTicket= OrderGetTicket(i);
     trade.OrderDelete(OrderTicket);
   }
  }
Nachschlagewerk über die MQL5 - wie verwendet man die algorithmische/automatische Handelssprache für MetaTrader 5
Nachschlagewerk über die MQL5 - wie verwendet man die algorithmische/automatische Handelssprache für MetaTrader 5
  • www.mql5.com
Nachschlagewerk über die MQL5 - wie verwendet man die algorithmische/automatische Handelssprache für MetaTrader 5
 
Christian #:

Erste Informationen gibt es in der Dokumentation.


Zeit nehmen durchlesen.

https://www.mql5.com/de/docs

Das, was du suchst, ist kein einzelner Befehl, sondern ein fertiger EA der eine Order zu einer bestimmten Zeit ausführt.


Hilfestellung:

Gefunden unter den ersten 2 Ergebnissen mit der Googlesuche

Hallo Christian, danke für die Infos. Ich dachte dass ich eigentlich nur nach was ganz einfachem suche weil ich eigentlich auch nur was ganz einfaches möchte - aber ich sehe schon, das wird wohl nichts. Ich dachte es gibt irgend wie so kleine in sich abgeschlossene erklärende Programmteile, welche man dann passend für sich zusammenbauen könnte (so wie in Excel eine Formel in die andere schachteln), aber dem ist wohl nicht so. Da wird dann wohl doch so ein FreeLancer mir helfen müssen.
 
tshoshua #:
Hallo Christian, danke für die Infos. Ich dachte dass ich eigentlich nur nach was ganz einfachem suche weil ich eigentlich auch nur was ganz einfaches möchte - aber ich sehe schon, das wird wohl nichts. Ich dachte es gibt irgend wie so kleine in sich abgeschlossene erklärende Programmteile, welche man dann passend für sich zusammenbauen könnte (so wie in Excel eine Formel in die andere schachteln), aber dem ist wohl nicht so. Da wird dann wohl doch so ein FreeLancer mir helfen müssen.

Da musst du dich von verabschieden , Excel-Like gibt es nicht.


MQL5 ist eine echte Hochsprache.

 
Christian #:

MQL5 ist eine echte Hochsprache.

Ja, und es ist von C++ abgeleitet. Aber nicht wirklich, denn wie man liest beruht es eher auf C++ aus dem Jahr '98. Es ist auch nicht gerade einfach, mit C++ anzufangen, weil man erstmal gar keinen Bezug zu MQL hat.

Zum Beispiel gibt es in C++ ein Ereignis "main", das den Code ausführt. Bei MQL gibt es jedoch ungefähr zehn Ereignisse, die alle für unterschiedliche Sachen sind. (Schätz mal dass man die theoretisch auch alle mit main basteln könnte.. )

Was wichtig ist, ist wie Datentypen funktionieren, 
wie Strukturen aufgebaut werden, wie man einen Array als eine Reihe von Variablen betrachten kann und wie man ein Array mit einer Schleife durchgeht.
Was auch in fast jeder Sprache vorkommmt, sind Funktionen.

Vieles findet man in Tutorials, aber manche sind sehr mit Vorsicht zu genießen.
 

Ja, danke für die vielen Hinweise! Ich bin zwar Autodidakt, aber irgendwann ist auch hier mal Ende der Fahnenstange (altersbedingt) - wie bereits erwähnt, versuche ich mich schon an einer Art Pflichtenheft/Beschreibung was ich mir vorstelle.


Vielen Dank nochmal an Alle!

 
Tobias Johannes Zimmer #:
...
Zum Beispiel gibt es in C++ ein Ereignis "main", das den Code ausführt. Bei MQL gibt es jedoch ungefähr zehn Ereignisse, die alle für unterschiedliche Sachen sind. (Schätz mal dass man die theoretisch auch alle mit main basteln könnte.. )
...

In MQL gibt es 3 Programmtypen, die sich im Terminal unterschiedlich verhalten:

  1. Skript, noch am ehesten mit einem Programm mit main() vergleichbar, main wäre hier start(). Wird start() mit einem return verlassen, ist das Skript beendet, so wie main normalerweise.
  2. Indikatoren, hier wird bei jedem neuen Tick OnCalculate() aufgerufen, ein return beendet nicht das Programm, sondern sagt, 'fertig, jetzt will ich einen neuen Preis (Tick)'.
    In Indikatoren funktioniert Sleep() nicht und es werden Puffer mit (berechneten) Daten organisiert.
    Indikatoren können Handelsfunktionen nicht aufrufen.
  3. EAs mit OnTick(), auch hier bedeutet ein return nicht das Programmende, sondern 'einen neuen Tick bitte'.
    Keine Puffer (es sei denn man programmiert sie selbst), aber die Handelsfunktionen.

 
Carl Schreiber #:

In MQL gibt es 3 Programmtypen, die sich im Terminal unterschiedlich verhalten:

  1. Skript, noch am ehesten mit einem Programm mit main() vergleichbar, main wäre hier start(). Wird start() mit einem return verlassen, ist das Skript beendet, so wie main normalerweise.
  2. Indikatoren, hier wird bei jedem neuen Tick OnCalculate() aufgerufen, ein return beendet nicht das Programm, sondern sagt, 'fertig, jetzt will ich einen neuen Preis (Tick)'.
    In Indikatoren funktioniert Sleep() nicht und es werden Puffer mit (berechneten) Daten organisiert.
    Indikatoren können Handelsfunktionen nicht aufrufen.
  3. EAs mit OnTick(), auch hier bedeutet ein return nicht das Programmende, sondern 'einen neuen Tick bitte'.
    Keine Puffer (es sei denn man programmiert sie selbst), aber die Handelsfunktionen.

Ach stimmt. Das erinnert mich an die Phase als ich im MQL4 book Sachen nachschauen wollte. Für Anfänger waren dort die Grundlagen und Einzelheiten fast besser erklärt, allerdings mit veralteten Begriffen. Das mql4-Zeug ist jetzt auch zwanzig Jahre alt, oder?

Die ganz alten Indikatoren und EAs hatten noch das start() Ereignis, so wie Skripte. 
Und die Aussage, dass MQL eine Skriptsprache ist.


 
Tobias Johannes Zimmer #:
Ach stimmt. Das erinnert mich an die Phase als ich im MQL4 book Sachen nachschauen wollte. Für Anfänger waren dort die Grundlagen und Einzelheiten fast besser erklärt, allerdings mit veralteten Begriffen. Das mql4-Zeug ist jetzt auch zwanzig Jahre alt, oder?

Die ganz alten Indikatoren und EAs hatten noch das start() Ereignis, so wie Skripte. 
Und die Aussage, dass MQL eine Skriptsprache ist.


Eine Skriptsprache kommt ohne Compiler aus. So mein Verständnis.

Instantan werden Befehle ausgeführt.


Python,MatLab,Shell,CMD ......sind Skriptsprachen.

MQ ...hat das aufgeweicht...es sind trotzdem keine Skriptsprachen Mql4 und Mql5