Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 544

 
Vitalii Ananev:
Sie müssen den Pegel in den Indikatoreinstellungen selbst manuell einstellen. Standardmäßig gibt es keine Stufe 50. Ich habe es auf dem Bild oben gezeigt.

Das habe ich getan, aber es ist nicht reflektiert. Ich habe es wohl wieder falsch verstanden.

extern double RSI          = 10;
extern double RSI_uroven_1 = 70;
extern double RSI_uroven_2 = 30;
extern double RSI_uroven_3 = 50;
extern double Lots         = 0.01;
extern int    Slip         = 30;
extern int    Magic        = 125;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int kolpos=0;
   double rsi=0,uroven70=70,uroven30=30,uroven50=50;
   rsi=iRSI(Symbol(),0,10,PRICE_CLOSE,1);
   for(int pos=0; pos<OrdersTotal(); pos++) 
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;
     }
   if(kolpos==0)
     {
      if (rsi>uroven70) 
         OrderSend(Symbol(),OP_BUY,Lots,Ask,30,0,0,"",Magic,0,clrGreen);
      if (rsi<uroven30) 
         OrderSend(Symbol(),OP_SELL,Lots,Bid,30,0,0,"",Magic,0,clrRed);
     }
 }
 
Vitalii Ananev:

Der RSI ist ein Oszillator, er zeigt keinen Trend an.

Einen weiteren Trendindikator hinzufügen, z. B. MA

Ich verstehe, was du sagst, aber ohne ein Muwing bin ich verwirrt.

Die Hauptsache ist für mich, dass der Algorithmus logisch und technisch korrekt ist.

Ich eröffne einfach: unter 30 - Verkaufen, über 70 - Kaufen.

 
edutak:

Ich verstehe, was Sie sagen, aber ich bin immer noch ohne Muving - ich bin verwirrt.

Das Wichtigste für mich ist, einen logisch und technisch korrekten Algorithmus zu erstellen.

Ich eröffne einfach: unter 30 - Verkaufen, über 70 - Kaufen.

Dann machen Sie es besser, wenn der rsi 50 von unten nach oben kreuzt - Kaufen, von oben nach unten - Verkaufen.

void OnTick()
  {
   int kolpos=0;
   double rsi=0,uroven70=70,uroven30=30,uroven50=50;
   rsi=iRSI(Symbol(),0,10,PRICE_CLOSE,1);
   rsi2=iRSI(Symbol(),0,10,PRICE_CLOSE,2);
   for(int pos=0; pos<OrdersTotal(); pos++) 
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;
     }
   if(kolpos==0)
     {
      if (rsi>=uroven50 && rsi2<uroven50) 
         OrderSend(Symbol(),OP_BUY,Lots,Ask,30,0,0,"",Magic,0,clrGreen);
      if (rsi<=uroven50 && rsi2>uroven50) 
         OrderSend(Symbol(),OP_SELL,Lots,Bid,30,0,0,"",Magic,0,clrRed);
     }
 }
 

Das habe ich getan. Oder?

extern double RSI          = 10;
extern double RSI_uroven_1 = 70;
extern double RSI_uroven_2 = 30;
extern double RSI_uroven_3 = 50;
extern double Lots         = 0.01;
extern int    Slip         = 30;
extern int    Magic        = 125;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   int kolpos=0;
   double rsi=0,uroven70=RSI_uroven_1,uroven30=RSI_uroven_2,uroven50=RSI_uroven_3;
   rsi=iRSI(Symbol(),0,10,PRICE_CLOSE,1);
   for(int pos=0; pos<OrdersTotal(); pos++) 
     {
      OrderSelect(pos,SELECT_BY_POS,MODE_TRADES);
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
         kolpos++;
     }
   if(kolpos==0)
     {
      if (rsi>RSI_uroven_1) 
         OrderSend(Symbol(),OP_BUY,Lots,Ask,30,0,0,"",Magic,0,clrGreen);
      if (rsi<RSI_uroven_2) 
         OrderSend(Symbol(),OP_SELL,Lots,Bid,30,0,0,"",Magic,0,clrRed);
     }
 }
 
Vitalii Ananev:

Dann machen Sie es besser, wenn der rsi kreuzt 50 von unten nach oben kaufen, von oben nach unten verkaufen.

Nein, ich habe eine andere Idee.
 
edutak:

Das habe ich getan. Oder?

Keine logischen Fehler.

...

uroven70=RSI_uroven_1,uroven30=RSI_uroven_2,uroven50=RSI_uroven_3;

Dieser Eintrag wäre dann überflüssig.

 
Vitalii Ananev:

Keine logischen Fehler.

...

Dieser Eintrag wäre dann überflüssig.

Danke, dann werde ich es neu machen und weitermachen.
 
edutak:
Danke, dann werde ich es neu machen und weitermachen.
Bitte sehr. Viel Glück dabei.
 
Moment, wie kommt man dann zu den externen Einstellungen?
 
edutak:
Moment, wie kann man das dann in den externen Einstellungen einstellen?

Was soll in die externen Einstellungen eingegeben werden?

Wenn Sie sich auf die Einstellungen der Ebenen beziehen, die vom Benutzer optimiert und geändert werden können, haben Sie diese bereits eingerichtet.

extern double RSI_uroven_1 = 70;
extern double RSI_uroven_2 = 30;
extern double RSI_uroven_3 = 50;
Grund der Beschwerde: