Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Expert-Advisors

Expert-Advisors Expert-Advisors für Metatrader 4.


Portalsuche


Werbung

Login
Benutzername:
Kennwort:


Statistik
Themen: 3822
Beiträge: 36906
Benutzer: 6.068
Aktive Benutzer: 492
Links: 80
Wir begrüßen unseren neuesten Benutzer: supadog
Mit 483 Benutzern waren die meisten Benutzer gleichzeitig online (21.04.16 um 17:12).
Neue Benutzer:
vor 14 Stunden
- supadog
vor einem Tag
- POCJonah7
vor einem Tag
- flowi88
vor einem Tag
- dealtycoon
vor einem Tag
- VicenteWuc

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

Empfehlungen

Werbung

Like Tree1Likes
Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #11 (permalink)  
Alt 12.03.16
Neues Mitglied
 
Registriert seit: Feb 2016
Beiträge: 10
Cjay befindet sich auf einem aufstrebenden Ast
Standard

Sry aber kannst du bitte erläutern was du mit bar 0 oder 1 genauer meinst? Bin wo gesagt nicht so in der Programmierung. Es soll der close wert der letzten candle genutzt werden.
  #12 (permalink)  
Alt 12.03.16
Elite Mitglied
 
Registriert seit: Apr 2011
Beiträge: 1.873
traderdoc befindet sich auf einem aufstrebenden Ast
Standard

Also Bar 1.
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis.
  #13 (permalink)  
Alt 12.03.16
Mitglied
 
Registriert seit: Sep 2012
Beiträge: 224
pako befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Cjay Beitrag anzeigen
Sry aber kannst du bitte erläutern was du mit bar 0 oder 1 genauer meinst? Bin wo gesagt nicht so in der Programmierung. Es soll der close wert der letzten candle genutzt werden.

letzte geschlossene Bar ist 1
Angehängte Grafiken
Dateityp: jpeg image.jpeg (178,5 KB, 10x aufgerufen)
  #14 (permalink)  
Alt 12.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 565
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Cjay Beitrag anzeigen
Weiterhin soll ein Martingal eingebaut werden bei dem die Pos. Größe verdoppelt wird, jedoch jede Order einen festen SL besitzt.
Es soll eine max. Anzahl an Trades geöffnet werden dürfen.
https://www.traders-only.com/martingale-strategie/

Warum eine max. Anzahl an Trades?
  #15 (permalink)  
Alt 12.03.16
Neues Mitglied
 
Registriert seit: Feb 2016
Beiträge: 10
Cjay befindet sich auf einem aufstrebenden Ast
Standard

Danke für den artikel. Ganz gut mal die geschichtliche Entwicklung zu kennen. Jedoch geht er eben nur auf die Betrachtung Eder Matringal ein. Ich möchte ja eben durch wahrscheinlichkeinen das momentan zu meinem Gunsten anpassen. Die maximale Anzahl am trades ergibt sich aus einer wahrscheinlichkeitsbetrachtung und dem Risiko was ich max. Eingehen möchte.
  #16 (permalink)  
Alt 12.03.16
Elite Mitglied
 
Registriert seit: Sep 2015
Beiträge: 565
MA-EA befindet sich auf einem aufstrebenden Ast
Standard

Lass mal den Quell-Code, bzw. die MQL sehn. Dann wird Dir bestimmt geholfen.
  #17 (permalink)  
Alt 12.03.16
Gesperrter Benutzer
 
Registriert seit: Jan 2016
Beiträge: 62
pischinger befindet sich auf einem aufstrebenden Ast
Standard

tja leider ist der link bzw. dessen inhalt von einem unwissenden journalisten geschrieben!
denn es gibt noch zig andere martingal (der richtige ausdruck) varianten!

hier nur mal die basis martingales! (verdoppelung: 1,2,4,8,...)
-open martingale
-open stretched martingale
-closed martingale
-closed stretched martingale
-hedged open martingale
-hedged open stretched martingale
-hedged closed martingale
-hedged closed stretched martingale

dann gibt es noch:
-1-3-2-4 martingale
-fibonacci martingale
-d'Alembert
-Labouchere
(auch alle wieder als open, closed, hedged)
und noch ein paar andere

somit ist der Artikel falsch recherchiert, unvollständig und zeigt wie so oft nicht korrekten journalismus auf! das einzige was stimmt, das der author schreibt das auf mathematik verzichtet wurde-klar wenn das wissen darum fehlt, aber das muss ein journalist (wenn es überhaupt einer ist!) auch nicht können, da er es nicht gelernt hat.

fazit: man sollte immer selbst seine hausaufgaben machen, nachforschungen betreiben und sich nicht blindlinks auf das geschreibe von unbekannten personen verlassen!
traderdoc likes this.
  #18 (permalink)  
Alt 13.03.16
Neues Mitglied
 
Registriert seit: Feb 2016
Beiträge: 10
Cjay befindet sich auf einem aufstrebenden Ast
Standard

Guten Abend.
Anbei der Quellcode, welcher mir bisher zur Verfügung gestellt wurde.

Wie gesagt, ich würde gern ein Martingal drüber gepackt haben. Am besten wäre wohl eine Abfrage wie "if i<10" dann hat man die Option diesen nach Wunsch anzupassen.
Code:
#define SIGNAL_NONE 0
#define SIGNAL_BUY   1
#define SIGNAL_SELL  2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4

extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 1.0;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 150;
extern bool UseTakeProfit = False;
extern int TakeProfit = 60;
extern bool UseTrailingStop = False;
extern int TrailingStop = 30;

int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init() {
   BarCount = Bars;

   if (EachTickMode) Current = 0; else Current = 1;

   return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit() {
   return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start() {
   int Order = SIGNAL_NONE;
   int Total, Ticket;
   double StopLossLevel, TakeProfitLevel;



   if (EachTickMode && Bars != BarCount) TickCheck = False;
   Total = OrdersTotal();
   Order = SIGNAL_NONE;

   //+------------------------------------------------------------------+
   //| Variable Begin                                                   |
   //+------------------------------------------------------------------+

double Buy1_1 = iBands(NULL, PERIOD_M5, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, Current + 0);
double Buy1_2 = iClose(NULL, PERIOD_M5, Current + 0);
double Buy2_1 = iRSI(NULL, PERIOD_M5, 10, PRICE_CLOSE, Current + 0);
double Buy2_2 = 23;

double Sell1_1 = iBands(NULL, PERIOD_M5, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, Current + 0);
double Sell1_2 = iClose(NULL, PERIOD_M5, Current + 0);
double Sell2_1 = iRSI(NULL, PERIOD_M5, 10, PRICE_CLOSE, Current + 0);
double Sell2_2 = 73;

double CloseBuy1_1 = iMA(NULL, PERIOD_M5, 60, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double CloseBuy1_2 = iHigh(NULL, PERIOD_M5, Current + 0);

double CloseSell1_1 = iMA(NULL, PERIOD_M5, 60, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double CloseSell1_2 = iLow(NULL, PERIOD_M5, Current + 0);

   
   //+------------------------------------------------------------------+
   //| Variable End                                                     |
   //+------------------------------------------------------------------+

   //Check position
   bool IsTrade = False;

   for (int i = 0; i < Total; i ++) {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if(OrderType() <= OP_SELL &&  OrderSymbol() == Symbol()) {
         IsTrade = True;
         if(OrderType() == OP_BUY) {
            //Close

            //+------------------------------------------------------------------+
            //| Signal Begin(Exit Buy)                                           |
            //+------------------------------------------------------------------+

            {SignalCloseBuy}

            //+------------------------------------------------------------------+
            //| Signal End(Exit Buy)                                             |
            //+------------------------------------------------------------------+

            if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
               OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
               if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
               if (!EachTickMode) BarCount = Bars;
               IsTrade = False;
               continue;
            }
            //Trailing stop
            if(UseTrailingStop && TrailingStop > 0) {                 
               if(Bid - OrderOpenPrice() > Point * TrailingStop) {
                  if(OrderStopLoss() < Bid - Point * TrailingStop) {
                     OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
                     if (!EachTickMode) BarCount = Bars;
                     continue;
                  }
               }
            }
         } else {
            //Close

            //+------------------------------------------------------------------+
            //| Signal Begin(Exit Sell)                                          |
            //+------------------------------------------------------------------+

            {SignalCloseSell}

            //+------------------------------------------------------------------+
            //| Signal End(Exit Sell)                                            |
            //+------------------------------------------------------------------+

            if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
               OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
               if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
               if (!EachTickMode) BarCount = Bars;
               IsTrade = False;
               continue;
            }
            //Trailing stop
            if(UseTrailingStop && TrailingStop > 0) {                 
               if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
                  if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
                     OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
                     if (!EachTickMode) BarCount = Bars;
                     continue;
                  }
               }
            }
         }
      }
   }

   //+------------------------------------------------------------------+
   //| Signal Begin(Entry)                                              |
   //+------------------------------------------------------------------+

   {SignalBuy}
   {SignalSell}

   //+------------------------------------------------------------------+
   //| Signal End                                                       |
   //+------------------------------------------------------------------+

   //Buy
   if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
      if(!IsTrade) {
         //Check free margin
         if (AccountFreeMargin() < (1000 * Lots)) {
            Print("We have no money. Free Margin = ", AccountFreeMargin());
            return(0);
         }

         if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
         if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

         Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
         if(Ticket > 0) {
            if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
				Print("BUY order opened : ", OrderOpenPrice());
                if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
			} else {
				Print("Error opening BUY order : ", GetLastError());
			}
         }
         if (EachTickMode) TickCheck = True;
         if (!EachTickMode) BarCount = Bars;
         return(0);
      }
   }

   //Sell
   if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
      if(!IsTrade) {
         //Check free margin
         if (AccountFreeMargin() < (1000 * Lots)) {
            Print("We have no money. Free Margin = ", AccountFreeMargin());
            return(0);
         }

         if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
         if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

         Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
         if(Ticket > 0) {
            if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
				Print("SELL order opened : ", OrderOpenPrice());
                if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
			} else {
				Print("Error opening SELL order : ", GetLastError());
			}
         }
         if (EachTickMode) TickCheck = True;
         if (!EachTickMode) BarCount = Bars;
         return(0);
      }
   }

   if (!EachTickMode) BarCount = Bars;

   return(0);
}
//+------------------------------------------------------------------+
  #19 (permalink)  
Alt 13.03.16
Gesperrter Benutzer
 
Registriert seit: Jan 2016
Beiträge: 62
pischinger befindet sich auf einem aufstrebenden Ast
Standard

-wie soll hier profit generiert werden?
usetake*=false
usestoploss=true, dem ea bleibt nur in den sl zu laufen
-da fehlen die basis arrays (hat jetzt nichtmal was mit martingale zu tun)
-da fehlen die maximal trades
-es fehlen die steps zwischen den orders wenn notwendig, ansonsten macht der ea in der sekunde millionen positionen auf,
auch weil ein maximum an erlaubten trades fehlt.
-martingale: welches? open, closed, hedged, basis oder exoten
-martingale auf m5? es gibt tausende grid eas, das brauchst nicht nochmal erfinden
-kein emergency exit

das minimum an basis arrays um das professional zu machen:
int OrderTicket[], OrderType[];
double OrderLots[], OrderOpenPrice[], OrderStopLoss[], OrderTakeProfit[], OrderProfit[], OrderSwap[], OrderCommission[];
datetime OrderOpenTime[], OrderExpiration[];
string OrderComment[];

fazit:
-da fehlt es hinten und vorne an basis framework auf das man aufbauen könnte,
mit deinem jetzigen "gerüst" ist das so nicht zu machen.
-auch muss im klar sein welches martingale du haben willst,
-nur ein profi coder programmiert die alle möglichkeiten ein.

ich empfehle dringenst! kontakt zu traderdoc aufzunehmen,
damit das hier in professionelle bahnen kommt,
ausser du hast vor geld zu verlieren oder sinnlos tausende stunden demo zu machen um fehler zu finden!
  #20 (permalink)  
Alt 14.03.16
Neues Mitglied
 
Registriert seit: Feb 2016
Beiträge: 10
Cjay befindet sich auf einem aufstrebenden Ast
Smile

@ phishinger. Danke das du dir das angeguckt hast. Zu deinen Kritikpunkten:

1) die maximale Anzahl an Trades gibt es bisher nicht, da ich mir das als Gesamtschleife über das Script gedacht hatte, welche mit dem Martingal verbudnen wäre. DH. es sollte nach Möglichkeit das Signal ausgelöst werden, ein Counter für den Trade zählen und solange Aktiv bleiben, bis ein Verkauf erfolgte. Dadurch könnte man ja dann gleich 2 Fliegen mit einer Klappe schlagen ( aus meiner Sicht) und zwar wäre die Ordernr. gleichzeitig dir vorgabe für die Ordergröße (2^Orderzahl). Wie gesagt ich kanns nur leider nicht reinproggen da mir dazu die Kenntnisse der Sprache fehlen.

2) Das mit dem ständigen kaufen dachte ich wäre durch die Vorgabe

double Buy1_1 = iBands(NULL, PERIOD_M5, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, Current + 0);
double Buy1_2 = iClose(NULL, PERIOD_M5, Current + 0);
double Buy2_1 = iRSI(NULL, PERIOD_M5, 10, PRICE_CLOSE, Current + 0);
double Buy2_2 = 23;

geklärt. Es kann ja nur gekauft werden, wenn der Close Wert der letzten Kerze die Bedingungen erfüllt. Dann wird gekauft und die schleife beginnt von vorne.
Aber du hast recht, man sollte einfach eine wait einbauen o.ä. damit durch den Eachtickmode nicht jeden Tick die letzte abgeschlossene Kerze wieder bewertet wird. Da war ein Denkfehler meinerseits da ich dachte er prüft in dem Zeitintervall nur die Kerzen. Vllt. sollte der Eachtickmode geändert werden?

3) Das mit dem open, Close, Hedge etc. Martingal hatte ich gehofft ergibt sich aus meinen Beschreibungen, es soll ja eine Verdoppelung der Order erstellt werden solange nicht die 1. Order geschlossen wurde und es soll nur bei einem erneuten Signal eine Order erfolgen, nicht nach einer bestimmten Zeit oder einem gewissen Punkteabstand. Ein SL erfolgt nach einer festen Anzahl an pips. ich weiß grad nicht ob das als Close Martingal oder Basic durchgeht, ansonsten ist es wohl der Exotik Variante zuzuordnen.

4) Emergency Exit hatte ich mir noch keine Gedanken gemacht, da ich einen festen SL habe und mir gerade keine Sinnvolle Situation einfällt, bei welcher ich diesen bräuchte. Ja dadurch ist dann der Maximalverlust garantiert, jedoch auch nicht mehr.

5) Das das Grundgerüst deiner Meinung nach keines ist, tut mir leid, ich hatte es als solches verstanden. Aber wie gesagt ich konnte mich da bisher nur auf meinen Freund verlassen. Deswegen habe ich ja die Anfrage hier reingestellt, genau um so was aufzuklären.
Thema geschlossen

Lesezeichen

Stichworte
fehleranalyse, hilfe, programmieren expert advisor


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 13:31 Uhr.



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