Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 5 > Programmierung MQL5

Programmierung MQL5 Hier gehts rund ums Programmieren in MQL5.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4972
Beiträge: 43248
Benutzer: 7.216
Aktive Benutzer: 84
Links: 84
Wir begrüßen unseren neuesten Benutzer: bb1107
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor 2 Tagen
- bb1107
vor einer Woche
- rg-trader
vor 2 Wochen
- toshistyle
vor 2 Wochen
- Robin
vor 3 Wochen
- mMmaanu

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 102
Gesamt: 102
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Like Tree4Likes
  • 2 Post By traderdoc
  • 2 Post By traderdoc
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 05.11.13
Neues Mitglied
 
Registriert seit: Nov 2013
Ort: Wolfsburg
Beiträge: 2
Casch befindet sich auf einem aufstrebenden Ast
Standard Selbst EAs entwickeln - WIE?

Liebes Forum,

ich bin neu hier und freue mich, dass ich ein nettes und vor allem deutschsprachiges Metatrader- und Expert Advisor-Forum gefunden habe. Zu meiner Person: Ich habe noch nie Forex oder mit dem MT live getradet und interessiere mich vor allem für die EA-Programmierung von eigenen Handelsstrategien.

Das ist auch eine gute Überleitung zu meiner Frage. Wie fange ich am besten an eigene EAs zu programmieren? Was muss ich lesen? Was muss ich können? Wie steige ich am besten in das ganze Thema ein?

Eine konkrete Handelsstrategie habe ich noch nicht im Auge / Kopf. Ich würde mir beispielsweise gerne kreuzende MAs anschauen und den einen oder anderen Indikator als zusätzlichen Filter anschauen und das durch einen Backtest laufen lassen.

Das Moneymanagement möchte ich so gestalten, dass die Positionsgröße abhängig vom Kontostand aufbaut wird.

Gruß
Casch
  #2 (permalink)  
Alt 05.11.13
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 224
pako befindet sich auf einem aufstrebenden Ast
Standard

Was muss ich lesen? Was muss ich können?


Code:
//+------------------------------------------------------------------+
//|                                                           MA.mq5 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
#property version   "1.00"
//--- input parameters
input int      StopLoss=100;
input int      TakeProfit=100;
input int      MA_Period=57;
input int      MA_Period1=3;
input int      EA_Magic=35;
input double   Lot=1.0;
//--- 
int ma1Handle;   
int maHandle;    
double ma1Val[]; 
double maVal[];  
double p_close;  
int STP,TKP;     
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   ma1Handle=iMA(_Symbol,_Period,MA_Period1,0,MODE_LWMA,PRICE_CLOSE);
   maHandle=iMA(_Symbol,_Period,MA_Period,0,MODE_EMA,PRICE_CLOSE);
   if(ma1Handle<0 || maHandle<0)
     {
      Alert("ERROR: ",GetLastError(),"!!");
      return(-1);
     }
   STP = StopLoss;
   TKP = TakeProfit;
   if(_Digits==5 || _Digits==3)
     {
      STP = STP*10;
      TKP = TKP*10;
     }
   return(0);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   IndicatorRelease(ma1Handle);
   IndicatorRelease(maHandle);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(Bars(_Symbol,_Period)<60) 
     {
      Alert("ERROR");
      return;
     }
   static datetime Old_Time;
   datetime New_Time[1];
   bool IsNewBar=false;
   int copied=CopyTime(_Symbol,_Period,0,1,New_Time);
   if(copied>0)
     {
      if(Old_Time!=New_Time[0]) 
        {
         IsNewBar=true;   
         if(MQL5InfoInteger(MQL5_DEBUGGING)) Print("new bar",New_Time[0],"alt bar",Old_Time);
         Old_Time=New_Time[0];  
        }
     }
   else
     {
      Alert("ERROR =",GetLastError());
      ResetLastError();
      return;
     }
   if(IsNewBar==false)
     {
      return;
     }
   int Mybars=Bars(_Symbol,_Period);
   if(Mybars<60) 
     {
      Alert("ERROR");
      return;
     }
   MqlTick latest_price;      
   MqlTradeRequest mrequest;   
   MqlTradeResult mresult;     
   MqlRates mrate[];          
   ZeroMemory(mrequest);
   ArraySetAsSeries(mrate,true);
   ArraySetAsSeries(ma1Val,true);
   ArraySetAsSeries(maVal,true);
   if(!SymbolInfoTick(_Symbol,latest_price))
     {
      Alert("ERROR:",GetLastError(),"!!");
      return;
     }
   if(CopyRates(_Symbol,_Period,0,3,mrate)<0)
     {
      Alert("ERROR:",GetLastError(),"!!");
      return;
     }
   if(CopyBuffer(ma1Handle,0,0,3,ma1Val)<0)
     {
      Alert("ERROR:",GetLastError(),"!!");
      return;
     }
   if(CopyBuffer(maHandle,0,0,3,maVal)<0)
     {
      Alert("ERROR:",GetLastError());
      return;
     }
   bool Buy_opened=false;  
   bool Sell_opened=false; 
   if(PositionSelect(_Symbol)==true)
     {
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         Buy_opened=true; 
        }
      else if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         Sell_opened=true; 
        }
     }
   p_close=mrate[1].close; 
   bool Buy_Condition_1=(maVal[0]>maVal[1]) && (maVal[1]>maVal[2]); 
   bool Buy_Condition_2=(ma1Val[0]>ma1Val[1]) &&(ma1Val[1]>ma1Val[2]);
   bool Buy_Condition_3=(p_close>maVal[1]);  
   bool Buy_Condition_4 =(maVal[0]>ma1Val[0]);
   if(Buy_Condition_1 && Buy_Condition_2)
     {
      if(Buy_Condition_3 && Buy_Condition_4)
        {
         if(Buy_opened)
           {
            return; 
           }
         mrequest.action = TRADE_ACTION_DEAL;                                 
         mrequest.price = NormalizeDouble(latest_price.ask,_Digits);           
         mrequest.sl = NormalizeDouble(latest_price.ask - STP*_Point,_Digits); 
         mrequest.tp = NormalizeDouble(latest_price.ask + TKP*_Point,_Digits); 
         mrequest.symbol = _Symbol;                                            
         mrequest.volume = Lot;                                               
         mrequest.magic = EA_Magic;                                           
         mrequest.type = ORDER_TYPE_BUY;                                      
         mrequest.type_filling = ORDER_FILLING_FOK;                           
         mrequest.deviation=100;                                              
         OrderSend(mrequest,mresult);
         if(mresult.retcode==10009 || mresult.retcode==10008) 
           {
            Alert(" #:",mresult.order,"!!");
           }
         else
           {
            Alert("ERROR:",GetLastError());
            return;
           }
        }
     }
   bool Sell_Condition_1 = (maVal[0]<maVal[1]) && (maVal[1]<maVal[2]); 
   bool Sell_Condition_2 = (p_close <maVal[1]);                        
   bool Sell_Condition_3=(ma1Val[0]<ma1Val[1]) && (ma1Val[1]<ma1Val[2]);  
   bool Sell_Condition_4=(maVal[0]<ma1Val[0]);             
   if(Sell_Condition_1 && Sell_Condition_2)
     {
      if(Sell_Condition_3 && Sell_Condition_4)
        {
         if(Sell_opened)
           {
            return;  
           }
         mrequest.action = TRADE_ACTION_DEAL;                              
         mrequest.price = NormalizeDouble(latest_price.bid,_Digits);          
         mrequest.sl = NormalizeDouble(latest_price.bid + STP*_Point,_Digits);
         mrequest.tp = NormalizeDouble(latest_price.bid - TKP*_Point,_Digits); 
         mrequest.symbol = _Symbol;                                          
         mrequest.volume = Lot;                                              
         mrequest.magic = EA_Magic;                                          
         mrequest.type= ORDER_TYPE_SELL;                                      
         mrequest.type_filling = ORDER_FILLING_FOK;                           
         mrequest.deviation=100;                                             
         OrderSend(mrequest,mresult);
         if(mresult.retcode==10009 || mresult.retcode==10008) //Request is completed or order placed
           {
            Alert(" #:",mresult.order,"!!");
           }
         else
           {
            Alert("ERROR:",GetLastError());
            return;
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+

Geändert von pako (05.11.13 um 16:33 Uhr)
  #3 (permalink)  
Alt 05.11.13
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Was soll er denn damit anfangen?

Als erstes wäre die Frage zu klären, ob er überhaupt eine Programmiersprache beherrscht, vorzugsweise C.
Wenn gute Kenntnisse in C bereits vorliegen, ist wenigsten die Basis da.
Desweiteren steht die Frage, inwiefern er bereits im Forex tätig war und das wenigstens mit Demokonten, denn ohne umfangreiches Marktwissen und das Wissen um die Begrifflichkeiten, wird es kein gutes Programm werden. Das wäre dann so, als würde ich mit meinen sehr guten C-Kenntnissen ein Betriebwirtschaftsprogramm erstellen müssen, obwohl ich das gar nicht gerlernt oder studiert habe.
Nein, ohne Fachwissen im Forex wird das nichts richtiges.

Also, C (oder andere Sprache) + Fachwissen und dann die Spezifitäten von MQL4!! lernen, die es leider nur in englisch gibt.
Und dann während des Lesens und Lernens gleichzeitig kleine Codebeispiele von EAs, Indikatoren und Scripten sich anschauen, die Befehle und Funktionen analysieren, nachschlagen und selber anwenden, z.B. durch Spielen in den Codebeispielen mittels Veränderung von Parametern usw.

Also, schrittweises Herangehen und nicht gleich den Porsche fahren wollen!

traderdoc
Ca$hDigger and lolly like this.

Geändert von traderdoc (05.11.13 um 18:13 Uhr)
  #4 (permalink)  
Alt 11.10.15
Benutzerbild von Aktien Andy
Premium Mitglied
 
Registriert seit: Oct 2014
Beiträge: 436
Aktien Andy befindet sich auf einem aufstrebenden Ast
Standard

Moin

Mir wurde das Buch von Andrew R. Young (Expert Advisor Programming for MT4) empfohlen; er hat auch eins für MT5 geschrieben. Leider kann ich Dir noch nicht sagen, ob das Buch gut ist, da ich es gerade erst bestellt habe.

Auch ich will mich mit der Programmierung befassen, da ich einige Grundideen austesten möchte.

Das Thema backtesting ist ein Thema für sich, da könnte man schon allein ein Buch drüber schreiben Mit backtesting befasse ich mich schon länger.

Für kreuzende EAs gibt es einige fertige EAs, mit denen Du erst einmal anfangen kannst. Warum diese von den Autoren frei zur Verfügung gestellt werden liegt auf der Hand (man kann damit keine dauerhaften Gewinne erzielen).

Wenn Du nur zwei oder drei einfache Ideen testen möchtest, dann musst Du überlegen, ob es da nicht einfacher ist, dir das programmieren zu lassen.

Grüße aus dem hohen Norden sendet

Andreas
__________________
Is there anybody out there?
  #5 (permalink)  
Alt 12.10.15
Benutzerbild von kbtrade
Neues Mitglied
 
Registriert seit: Oct 2015
Ort: Münsterland
Beiträge: 17
kbtrade befindet sich auf einem aufstrebenden Ast
Standard

Zum erwähnten Buch gibt es diesen Link zu Amazon. Vielleicht helfen dir die Kundenmeinungen darunter weiter. Die Syntax soll wohl nicht mehr dem neuesten Stand der Sciptsprache entsprechen.
http://www.amazon.de/Expert-Advisor-.../dp/0982645902
__________________
An der Börse gibt‘s nur Schmerzensgeld – erst kommen die Schmerzen, dann das Geld! (André Kostolany)
  #6 (permalink)  
Alt 12.10.15
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 2.732
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von kbtrade Beitrag anzeigen
Zum erwähnten Buch gibt es diesen Link zu Amazon. Vielleicht helfen dir die Kundenmeinungen darunter weiter. Die Syntax soll wohl nicht mehr dem neuesten Stand der Sciptsprache entsprechen.
http://www.amazon.de/Expert-Advisor-.../dp/0982645902
Die besten Lehrer für diese Materie sind immer noch die engl. Version der MQL4-Doku und die über 4000 Seiten dicke deutsche Version der MQL5-Doku,
sowie die unendlichen Programme die bereits geschrieben worden und unter
MQL4: automated forex trading, strategy tester and custom indicators with MetaTrader und www.mql5.com einsehbar sind, weil der Quellcode zur Verfügung steht.
Dort kann man sich unerschöpflich bedienen und sich Techniken abgucken, die in keinem Buch stehen.

Und ansonsten heißt es nur: üben, üben und nochmal üben. Den selbstgeschrieben Code ändern, das Ergebnis der Änderung beobachten, richtig interpretieren und wiederum ändern, bis man der Meinung ist, mit diesem Detail richtig umgehen zu können. Ich persönlich finde das Schwierigste an dieser Sprache, die Umsetzung von Zeitproblemen. Denn es existieren Funktionen, die entweder auf der Brokerzeit oder auf der PC-Zeit basieren. Aber auch die Berücksichtigung der Wochenschlußzeiten und die Umsetzung von Zeitranges, die v.a. über Nacht laufen etc., bedürfen in kommenden Updates des MQL einer drastischen Überarbeitung und Vereinfachung.

traderdoc

traderdoc
Crashbulle and marquez like this.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
Thema geschlossen

Lesezeichen

Stichworte
ea, ea entwickeln, ea programmieren, expert advisor, expert advisor entwickeln, expert advisor programmieren, programmieren, programmierung

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 04:03 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------