HMA EA

 

Hallo Leute

Ich habe vor einen EA zu schreiben, bei diesem sollte HMA für für einen Einstieg sein

Und SMA/EMA Crossover Signal zu schließung der Position sein. 


So ein Grundgerüst habe ich mit einem einfachen mooving average habe ich schon geschrieben.

 Order entry bei schlusskurse über oder unter der moving average, sowie Stopp los und take Profit sind schon drin

Nun wollte ich es in order entry  erstmal durch eine HMA ersetzen. 


Kann mir da einer behilflich sein. ? 



einen Freelancer möchte ich nicht beauftragen, da ich den EA schon kennen möchte und den auch später ausarbeiten. 


als Ziel hatte ich mir vorgenommen, in diesem EA  MQL5 Site / ema_wma_v2.mq5 - Free download of the 'EMA_WMA v2' expert by 'barabashkakvn' for MetaTrader 5 in the MQL5 Code Base

einen OPENORDER einzubauen die von Hull indikator gefüttert wird.


Vielen Dank im Voraus

 
Eugen8519:

Hallo Leute

Ich habe vor einen EA zu schreiben, bei diesem sollte HMA für für einen Einstieg sein

Und SMA/EMA Crossover Signal zu schließung der Position sein. 


So ein Grundgerüst habe ich mit einem einfachen mooving average habe ich schon geschrieben.

 Order entry bei schlusskurse über oder unter der moving average, sowie Stopp los und take Profit sind schon drin

Nun wollte ich es in order entry  erstmal durch eine HMA ersetzen. 


Kann mir da einer behilflich sein. ? 



einen Freelancer möchte ich nicht beauftragen, da ich den EA schon kennen möchte und den auch später ausarbeiten. 


als Ziel hatte ich mir vorgenommen, in diesem EA  MQL5 Site / ema_wma_v2.mq5 - Free download of the 'EMA_WMA v2' expert by 'barabashkakvn' for MetaTrader 5 in the MQL5 Code Base

einen OPENORDER einzubauen die von Hull indikator gefüttert wird.


Vielen Dank im Voraus

Hmmm - würdest Du zu einem Frisör gehen und sagen, er möge Dich umsonst scheiden, da Du einen Kamm selber mit bringst?

Programmieren können ist ein Können, das in einem längeren Zeitraum erworben wird. Es ist schon ein bisschen frech zu fragen, macht es mir jemand, ich weiß ja nicht wie es geht?

 

Ich habe auch nicht gebeten, dass es mir einer ausarbeitet, sondern ich habe im Hilfe gebeten einige Zeilen zu ändern. 

Ich dachte in einem Forum (zumindest war es damals so) werden Fragen gestellt und wenn mal einer eine gute Laune und das Wisse hat wird er auf diese Frage sachlich Antworten. 

 
Eugen8519:

Ich habe auch nicht gebeten, dass es mir einer ausarbeitet, sondern ich habe im Hilfe gebeten einige Zeilen zu ändern. 

Ich dachte in einem Forum (zumindest war es damals so) werden Fragen gestellt und wenn mal einer eine gute Laune und das Wisse hat wird er auf diese Frage sachlich Antworten. 

Ja, nur hast du kein problem gepostet sonder einen wunsch. 

Du hast es ja noch nicht mal probiert

 

Nein Leute ichb bin hier kein schnorrer oder so, obwohl ich mich schon gerne an Kostenlosen Indikatoren und EAs bediene ;) lange Zeit habe ich mich mit Pine script auseinander gesetzt und einige Indikatoren und Strategien geschrieben, nun wollte ich einige systeme automatisieren, das geht meiner Meinung nach am besten mit MT5 und deswegen halt der Sprung zur mql5, 

 

also ich habe wie zuvor erwähnt bereits einen Order close wie ich den haben möchte, aber ich würde gerne einen HMA open einbauen

d.h. in diesem Fall müsste man die Parameter der  void OPENORDER(string ord)  ändern

ich würde diese Hull Indikator nehmen 

MQL5 Site / super_trend_hull.mq5 - Free download of the 'Super Trend Hull EA 2' expert by 'barabashkakvn' for MetaTrader 5 in the MQL5 Code Base

so müsste man in die Open order grob ausgedrückt Schlussskurs der Kerze z.B unter der Linie , -> short

und da komme ich nicht weiter


void CLOSEORDER(string ord)
  {
   for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY && ord=="Buy")
               m_trade.PositionClose(m_position.Ticket());  // Close Buy
            if(m_position.PositionType()==POSITION_TYPE_SELL && ord=="Sell")
               m_trade.PositionClose(m_position.Ticket()); // Close Sell
           }
  }
//--------------------------------------------------------------------
void OPENORDER(string ord)
  {
   if(ord=="Buy")
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());

   if(ord=="Sell")
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());
   return;








 
  1. Code bitte als Code formatieren mit dem Icon </> oder Alt+S formatieren.
  2. Ich verstehe nicht, was Du willst, denn
  3. der gepostete Code zeigt nur den Handelsauftrag und einen Print-Befehl, aber nicht wie und warum es zu dem Aufruf der Funktion kommt.
  4. Ich kann nur zitieren, was andere sagen: Lerne Programmieren (zB. hiermit: https://www.mql5.com/de/articles/496) oder beauftrage jemand.
Schnelleinstieg oder Kurzanleitung für Anfänger
Schnelleinstieg oder Kurzanleitung für Anfänger
  • www.mql5.com
Liebe Leser, in diesem Artikel möchte ich Ihnen vermitteln und zeigen, wie man sich möglichst schnell und einfach die Grundlagen der Erstellung automatischer Handelssysteme, wie die Arbeit mit Indikatoren u. a., erschließt. Der Beitrag richtet sich an Neueinsteiger, in ihm kommen weder komplizierte noch schwer zu verstehende Beispiele zur Anwendung.
 

Danke für die Antwort, ich werde mich dann erstmal reinlesen. 

Ich weiß, dass das Wissen nicht von heute auf morgen kommt, ich möchte es schon lernen. 

 
Eugen8519:

Danke für die Antwort, ich werde mich dann erstmal reinlesen. 

Ich weiß, dass das Wissen nicht von heute auf morgen kommt, ich möchte es schon lernen. 

Habe hier schon etwas gebastelt. 
Und zwar funktioniert es schon fast nach meinem Vorsettungen. 
Was jetzt noch fehlt, ist dass er bei Signaländerung in die entgegengesetzte Richtung nicht nur die vorhandene Position schließt, sondern auch eine neue eröffnet. 


/if(color_buffer[m_bar_current+1]>color_buffer[m_bar_current]) //Buy
   if(EMA0[m_bar_current]<WMA0[m_bar_current] && EMA0[m_bar_current+1]>WMA0[m_bar_current+1]) //Buy
     {
      if(!RefreshRates())
         return;
      TimeBar=time_0;
      CLOSEORDER("Sell");
     }
//if(color_buffer[m_bar_current+1]<color_buffer[m_bar_current]) //Sell
   if(EMA0[m_bar_current]>WMA0[m_bar_current] && EMA0[m_bar_current+1]<WMA0[m_bar_current+1]) //Sell
     {
      if(!RefreshRates())
         return;
      TimeBar=time_0;
      CLOSEORDER("Buy");
     }
//---
//if(EMA0[m_bar_current]<WMA0[m_bar_current] && EMA0[m_bar_current+1]>WMA0[m_bar_current+1]) //Buy
   if(color_buffer[m_bar_current+1]>color_buffer[m_bar_current]) //Buy
     {
      if(!RefreshRates())
         return;
      TimeBar=time_0;
      my_TP  = m_symbol.Ask() + ExtTakeProfit*Point();
      my_SL  = m_symbol.Ask() - ExtStopLoss*Point();
      my_lot = Lots;
      OPENORDER("Buy");
     }
//if(EMA0[m_bar_current]>WMA0[m_bar_current] && EMA0[m_bar_current+1]<WMA0[m_bar_current+1]) //Sell
   if(color_buffer[m_bar_current+1]<color_buffer[m_bar_current]) //Sell
     {
      if(!RefreshRates())
         return;
      TimeBar=time_0;
      my_TP = m_symbol.Bid() - ExtTakeProfit*Point();
      my_SL = m_symbol.Bid() + ExtStopLoss*Point();
      my_lot= Lots;
      OPENORDER("Sell");
     }
 
   return;
  }
//--------------------------------------------------------------------
void CLOSEORDER(string ord)
  {
   for(int i=PositionsTotal()-1; i>=0; i--)  // returns the number of open positions
      if(m_position.SelectByIndex(i))
         if(m_position.Symbol()==Symbol() && m_position.Magic()==m_magic)
           {
            if(m_position.PositionType()==POSITION_TYPE_BUY && ord=="Buy")
               m_trade.PositionClose(m_position.Ticket());  // Close Buy
            if(m_position.PositionType()==POSITION_TYPE_SELL && ord=="Sell")
               m_trade.PositionClose(m_position.Ticket()); // Close Sell
           }
  }
//--------------------------------------------------------------------
void OPENORDER(string ord)
  {
  if(ord=="Sell")
   if(all_positions==1)
  
      for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
         if(m_position.SelectByIndex(i))
           if(m_position.PositionType()==POSITION_TYPE_BUY)
            //if(m_position.PositionType()==POSITION_TYPE_SELL)
               return;                          // Если buy, то не открываемся
 
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   if(ord=="Sell")
   if(all_positions==1)
 
      for(int i=PositionsTotal()-1;i>=0;i--) // returns the number of open positions
         if(m_position.SelectByIndex(i))
            //if(m_position.PositionType()==POSITION_TYPE_BUY)
            if(m_position.PositionType()==POSITION_TYPE_SELL)
               return;                          // Если buy, то не открываемся
 

      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());
   return;
  }


Er müsste dann wahrscheinlich bei Signaländerung nach einem short trade, 2x kaufen um die offene Position damit zu schließen und neue eröffnen? 

 

Eugen8519:

...

Er müsste dann wahrscheinlich bei Signaländerung nach einem short trade, 2x kaufen um die offene Position damit zu schließen und neue eröffnen? 

Wieso?

In einer Schleife über alle offenen Positionen (PositionsTotal()) die 'falsche Richtung' schließen und dann ganz normale eine neue in die 'richtige Richtung' eröffnen.

 
Carl Schreiber:

Wieso?

In einer Schleife über alle offenen Positionen (PositionsTotal()) die 'falsche Richtung' schließen und dann ganz normale eine neue in die 'richtige Richtung' eröffnen.

Das Problem ist ja, dass er Positionen wie gewünscht bei EMA/WMA Crossover schließt  dies aber auch bei close über oder unter HMA macht, und da sollte er nicht nur schließen sondern auch eine neue eröffnen. 
Wie mache ich das mit der Schleife, kannst du mir helfen? Wie meinst du das mit "falsche Richtung"? 
Grund der Beschwerde: