Pip, Tick EA Einstiegspunkt finden - Seite 2

 

Du verstehst das falsch.

Du kaufst immer zum (höheren) Ask, den Briefkurs, und verkaufst immer zum (niedrigeren) Bid, dem Geldkurs: https://de.wikipedia.org/wiki/Spread_(Wirtschaft)#Geld-Brief-Spanne.

Und das heißt: In dem Moment, in dem Du etwas zum Briefkurs kaufst wird diese neue Position im selben Moment zum Geldkurs, also den niedrigeren im Konto bewertet - damit kannst Du dieses erste Minus nie verhindern.

Gewinn gibt es dann, wenn der (niedrige) Geldkurs über den Einstiegs Briefkurs steigt, erst dann kannst Du mit u.U. mit Gewinn aussteigen.

PS: Wie heißt es so schön in der BWL: "There is no such thing as a free lunch!" M. Friedmann

 

Lieber Carl Du hat mich immer noch nicht verstanden. 

Noch ein Versuch: Der Spread ist 0.5 Pip um beim eröffnen der Order sofort in die Gewinnzone zu gelangen muss der EA ab 0.6 Pip Einschalten.

Kommt ein Ping von Min. 0.5 Pip herein

Einschalten wenn der Ping höher ist als 0.5 Pip

Einschalten ab 0.6 Pip

Wie schreibt man denn "ab" im MT5?

Mein Ziel ist Täglich 20 Pip Plus zu machen was ich auch schaffe, dafür aber Stundenlang am PC sitze.

Das MQL5 ist ja sooo umfangreich und ich bin schwer von Begriff wohl das Alter aber Aufgeben ist für mich keine Option.

Tschüss

 
Swensonjan18:

Lieber Carl Du hat mich immer noch nicht verstanden. 

Noch ein Versuch: Der Spread ist 0.5 Pip um beim eröffnen der Order sofort in die Gewinnzone zu gelangen muss der EA ab 0.6 Pip Einschalten.

Kommt ein Ping von Min. 0.5 Pip herein

Einschalten wenn der Ping höher ist als 0.5 Pip

Einschalten ab 0.6 Pip

Wie schreibt man denn "ab" im MT5?

Mein Ziel ist Täglich 20 Pip Plus zu machen was ich auch schaffe, dafür aber Stundenlang am PC sitze.

Das MQL5 ist ja sooo umfangreich und ich bin schwer von Begriff wohl das Alter aber Aufgeben ist für mich keine Option.

Tschüss

Was meinst Du mit 'einschalten'???

Ein Ping ist die Frage nach der Qualität der Verbindung zum Broker Server: Paketverlust, Latenz, ...

Mach doch mal ein Bild, von dem, was Du Dir vorstellst, wie Du zeitlich wann was (Öffnen, Schließen) handeln willst.

 

Auf der linken Seite im MT5 kannst Du dir den Tick anzeigen.

Wenn ein wichtiger Wirtschaftsbericht herauskommt "Spinnt" der Tick extrem rauf und runter.

In dieser kurzen Phase möchte ich zusätzlich Geld verdienen.

Idee des EA:

Einschalten ab "double" 0.1 Pip

Lot ab "double" 0.01

Ausschalten mit dem Millisecond Timer

Jedes Währungspaar

Vermutlich wird das ein Schuss in den Ofen aber nur zum zusehen wäre das schon Geil, Testen im Demokonto.

Habe wieder mal ein Blackout es geht einfach nichts rein ich Lese und lese aber jeden Tag das selbe ich weiss nicht mehr was ich Gestern gelernt habe.

 
Swensonjan18:

Auf der linken Seite im MT5 kannst Du dir den Tick anzeigen.

Wenn ein wichtiger Wirtschaftsbericht herauskommt "Spinnt" der Tick extrem rauf und runter.

In dieser kurzen Phase möchte ich zusätzlich Geld verdienen.

Idee des EA:

Einschalten ab "double" 0.1 Pip

Lot ab "double" 0.01

Ausschalten mit dem Millisecond Timer

Jedes Währungspaar

Vermutlich wird das ein Schuss in den Ofen aber nur zum zusehen wäre das schon Geil, Testen im Demokonto.

Habe wieder mal ein Blackout es geht einfach nichts rein ich Lese und lese aber jeden Tag das selbe ich weiss nicht mehr was ich Gestern gelernt habe.

Das funktioniert nicht. Es wäre nur ein weiterer Newstrader, aber die Broker stellen zB. in solchen kritischen Zeiten keine Kurse. Erst dann wieder, wenn die Action vorbei ist.

 

Aus dem Kurs, warum läuft der nicht?

//--- input parameters

input double   Lots=0.1;         // lot size for trading


//+------------------------------------------------------------------+

//| Expert Initialisierungsfunktion                                  |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- Erstellen eines Timers mit der Zeitspanne von 1000 Millisekunden

   EventSetMillisecondTimer(500);

 

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Deinitialisierungsfunktion des Experten                          |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//--- Löschen des Timers nach dem Ende der Arbeit

   EventKillTimer();

 

  }

//+------------------------------------------------------------------+

//| Tick-Funktion des Experten                                       |

//+------------------------------------------------------------------+


   #include<Trade\Trade.mqh>

   

   // Erstelle eine Instanz von CTrade

   CTrade trade;   

   

void OnTick()

  {

    // Berechne den Ask Preis

double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);    

   

    // Berechne den Bid Preis

double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

// Erstelle ein Array fuer Preisdaten

MqlRates PriceInfo[];

   // Fuelle Array mit Preisdaten

   int PriceData =CopyRates(_Symbol,_Period,0,0,PriceInfo); 

   

      // Erstelle Variable fuer Signal

      string signal="";

      

      // Erstelle Array fuer SMA

      double myMovingAverageArray[];  

      

      // Definition der SMA Eigenschaften

      int movingAverageDefinition = iMA (_Symbol,_Period,0,0,MODE_SMA,PRICE_CLOSE);

      

  // Definierter EA,ein Buffer,aktuelle Kerze,3 Kerzen,im Array speichern

      CopyBuffer(movingAverageDefinition,0,0,0,myMovingAverageArray);    


   // Wenn Preis ueber dem SMA

   if (PriceInfo[1].close > myMovingAverageArray[1])

   

   // und vorher unter dem SMA

   if (PriceInfo[2].close < myMovingAverageArray[2])    

   {

      signal="Kaufen";

   }       

   

   // Wenn Preis unter dem SMA 

   if (PriceInfo[1].close < myMovingAverageArray[1])

   

   // und vorher ueber dem SMA

   if (PriceInfo[2].close > myMovingAverageArray[2])   

   {

      signal="Verkaufen";

   }

   

   // Verkaufen 1 Microlot

   if (signal =="Verkaufen" && PositionsTotal()<1)

       trade.Sell(Lots,NULL,Bid,0,(Bid-150 * _Point),NULL);   

   

      // Kaufen 1 Microlot  

      if (signal =="Kaufen" && PositionsTotal()<1)

      trade.Buy(Lots,NULL,Ask,0,(Ask+150 * _Point),NULL);    

        


   


}

 
Swensonjan18:

Aus dem Kurs, warum läuft der nicht?

//--- input parameters

input double   Lots=0.1;         // lot size for trading


//+------------------------------------------------------------------+

//| Expert Initialisierungsfunktion                                  |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- Erstellen eines Timers mit der Zeitspanne von 1000 Millisekunden

   EventSetMillisecondTimer(500);

 

//---

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Deinitialisierungsfunktion des Experten                          |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

//--- Löschen des Timers nach dem Ende der Arbeit

   EventKillTimer();

 

  }

//+------------------------------------------------------------------+

//| Tick-Funktion des Experten                                       |

//+------------------------------------------------------------------+


   #include<Trade\Trade.mqh>

   

   // Erstelle eine Instanz von CTrade

   CTrade trade;   

   

void OnTick()

  {

    // Berechne den Ask Preis

double Ask=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_ASK),_Digits);    

   

    // Berechne den Bid Preis

double Bid=NormalizeDouble(SymbolInfoDouble(_Symbol,SYMBOL_BID),_Digits);

// Erstelle ein Array fuer Preisdaten

MqlRates PriceInfo[];

   // Fuelle Array mit Preisdaten

   int PriceData =CopyRates(_Symbol,_Period,0,0,PriceInfo); 

   

      // Erstelle Variable fuer Signal

      string signal="";

      

      // Erstelle Array fuer SMA

      double myMovingAverageArray[];  

      

      // Definition der SMA Eigenschaften

      int movingAverageDefinition = iMA (_Symbol,_Period,0,0,MODE_SMA,PRICE_CLOSE);

      

  // Definierter EA,ein Buffer,aktuelle Kerze,3 Kerzen,im Array speichern

      CopyBuffer(movingAverageDefinition,0,0,0,myMovingAverageArray);    


   // Wenn Preis ueber dem SMA

   if (PriceInfo[1].close > myMovingAverageArray[1])

   

   // und vorher unter dem SMA

   if (PriceInfo[2].close < myMovingAverageArray[2])    

   {

      signal="Kaufen";

   }       

   

   // Wenn Preis unter dem SMA 

   if (PriceInfo[1].close < myMovingAverageArray[1])

   

   // und vorher ueber dem SMA

   if (PriceInfo[2].close > myMovingAverageArray[2])   

   {

      signal="Verkaufen";

   }

   

   // Verkaufen 1 Microlot

   if (signal =="Verkaufen" && PositionsTotal()<1)

       trade.Sell(Lots,NULL,Bid,0,(Bid-150 * _Point),NULL);   

   

      // Kaufen 1 Microlot  

      if (signal =="Kaufen" && PositionsTotal()<1)

      trade.Buy(Lots,NULL,Ask,0,(Ask+150 * _Point),NULL);    

        


   


}

für code posten bitte den code Button verwenden.

aus welchen Kurs? das war sicherlich nix von mal, da ist ja sogst wie alles falsch

 

Es ist alles Sch....e, ich muss nun einfach zuerst das mql5 Lernen.

Danke für eure Mühe, Tschüss

 
Swensonjan18:

Es ist alles Sch....e, ich muss nun einfach zuerst das mql5 Lernen.

Danke für eure Mühe, Tschüss

Richtige Erkenntnis, aber nicht genug.

Du musst auch dem Markt kennen, denn der agiert nicht wie man (Du) sich das vorstellt: "Der Markt hat immer recht" und die Instrumente, also zB. was können die Indikatoren und was nicht.

 
amando:

aus welchen Kurs? da ist ja sogut wie alles falsch

Ach komm jetzt hör aber auf. Ihr könnt von Glück sagen dass die Noobs vom Raimund hier her kommen. Ihr könntet mehr Produkte und Dienstleistungen verkaufen wenn die Nutzer nicht immer gleich vergrault würden. Die merken dann nämlich wie viel Arbeit dahinter steckt und dass man Euch vertrauen kann. Aber so sind wir halt wieder mal die fiesen Programmierer.

Das ist natürlich ein typischer Raimund-Übungscode wie er es zeigt in seinen Videos, nicht mehr, nicht weniger. Wenn Ihr das in einem Kurs gemacht habt, seit Ihr noch nicht besonders weit. Das gibt es kostenlos auf einer sehr bekannten Videoplattform.

Er initialisiert und deklariert Alles in der OnTick() und das ist "falsch" weil das was Du nur einmal anwendest, zu Beginn wenn Du den EA auf den Chart wirfst, in die OnInit() rein muss: Series=true und sma handle. Ist sonst schlechter Stil (auch wenn es funktioniert), verlangsamt aber den PC wegen der vielen unnötigen Aufrufe.

In die OnTick kommen alle Variablen die ständig geupdated werden müssen (bei jedem Tick, jeder Preisänderung) also Preise und was Du willst. Ebenso die SMA-Berechnung(Copybuffer) und die Kaufbedingungen und Positionseröffnung. Die müssen bei jedem Tick reagieren können. (Du wirst aber später merken, dass es des öfteren sinnvoll ist, wenn er nicht bei jedem Tick eine neue Position aufmacht)

Außerdem würde ich persönlich die Variablen, die Du in verschiedenen Teilen des Codes verwendest, wie Preise außerhalb der Funktionen(global) deklarieren. Diese kannst Du dann in jeder anderen Funktion benutzen( und bevor jetzt jemand kommt und sagt "warum machste das nicht mit ner gescheiten Übergabe?"... das ist ein Thema für einen anderen Tag)

Das ist nur ein Beispiel EA, der ein Signal gibt und daraufhin kauft oder verkauft. Von dem darfst Du nicht erwarten, dass er zuverlässig rentabel ist. Da hast Du weniger Mühe wenn Du Dein Geld verschenkst.

Hier ist ein Artikel wie man Indikatoren in EAs verwendet getindicatorbuffer

MQL5 for Newbies: Guide to Using Technical Indicators in Expert Advisors
MQL5 for Newbies: Guide to Using Technical Indicators in Expert Advisors
  • www.mql5.com
In order to obtain values of a built-in or custom indicator in an Expert Advisor, first its handle should be created using the corresponding function. Examples in the article show how to use this or that technical indicator while creating your own programs. The article describes indicators that are built n the MQL5 language. It is intended for those who don't have much experience in the development of trading strategies and offers simple and clear ways of working with indicators using the offered library of functions.
Grund der Beschwerde: