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

 
User_mt5:


Im Allgemeinen gibt es ein Konzept, das als "Gradient" bezeichnet wird. Er ist ein Indikator, der die "Steilheit" (eines Diagramms) beschreibt. Für diesen Wirtschaftszweig kann dieser Indikator in Form von Punkt/Zeit ausgedrückt werden. Es handelt sich im Wesentlichen um eine Rate. Dieser Indikator ist nicht von der Skala abhängig, da er nicht mit dem Diagramm verbunden ist. Verwenden Sie einen Farbverlauf und keinen Winkel.


Wie berechnet man dieses Gefälle?

Können Sie Ihre Idee irgendwie näher erläutern? Bitte beachten Sie, in welchem Forumsthread ich meine Frage gestellt habe.

 
igorbel:

Wie berechnet man dieses Gefälle?

Können Sie Ihre Idee irgendwie näher erläutern? Beachten Sie, in welchem Forumsthread ich meine Frage gestellt habe.

Ich habe keine Ahnung.

Ich spreche von einfacher Mathematik. Die Steigung ist die Geschwindigkeit. Geschwindigkeit selbst ist, wenn die Zeit im Nenner steht. Im allgemeinen Sprachgebrauch ist es die Geschwindigkeit eines Autos, ausgedrückt in km/h. Aber die Geschwindigkeit im Allgemeinen kann unterschiedlich sein. So wird beispielsweise die Geschwindigkeit beim Schreiben von Softwarecode in der Anzahl der Zeilen pro Tag gemessen. Im Falle eines Kursdiagramms wird die Geschwindigkeit in der Anzahl der Punkte pro Minute gemessen. Konventionell können wir davon ausgehen, dass, wenn die Steigung (Neigung, Anstiegsrate) an einem bestimmten Teil des Diagramms mehr als z. B. 100 Punkte/Minute beträgt, dieser Teil als Trend betrachtet werden kann, und wenn sie geringer ist, dann handelt es sich um eine Fläche.

 

Hallo 2017.07.07_15:55 GMT+3. Das verstehe ich nicht. Es sieht so aus, als sollte es ein Signal geben, aber im Strategietester gibt es keines. Inwiefern unterscheidet sich Ihr gelobter MT5-Tester vom MT4-Tester? Ich habe es fast so geschrieben wie im Standard Moving Average.mq5 . Aber es ist mir gelungen, den Expert Advisor auf meinem Demokonto zu testen. Er eröffnete einen Handel, musste ihn aber selbst wieder schließen. Ich habe den Verschluss repariert. Aber ich habe etwas anderes geschrieben und der EA hat wieder aufgehört, Trades zu öffnen. Null Fehler und Null Warnungen sind kein Indikator für den Arbeitszustand des Expert Advisors. Ich bin hier hängengeblieben. Woran erkenne ich, dass der Expert Advisor nicht funktioniert? Ich muss Karputow wieder belästigen. Hätte ich die gesamte Liste der Verbote erhalten, hätte ich es selbst getan. Ich stelle die Dateien zur Verfügung, allerdings nicht alle. 16:06 GMT+3.

 

Bitte um Hilfe!

Um den Wert des Indikators in MQL4 zu erhalten, genügt die folgende Funktion

double CMAf(int index)
  {
   return NormalizeDouble(iMA(Symbol(),0,period_CMA,0,0,0,index),Digits);
  }
Wie bekomme ich ein Analogon für MQL5?
 
-Aleks-:

Bitte um Hilfe!

Um den Namen eines Indikators in MQL4 zu erhalten, genügt eine einfache Funktion

Wie bekomme ich ein Analogon für MQL5?

Haben Sie sich dieiMA-Hilfe angesehen?

Schritt Eins: Deklarieren Sie in der "Kopfzeile" eine Variable zum Speichern des iMA-Indikator-Handles:

Schritt zwei: Erstellen eines Indikator-Handles in OnInit().

//+------------------------------------------------------------------+
//|                                                       iMAGet.mq5 |
//|                              Copyright © 2017, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//--- input parameters
input int                  ma_period=10;                 // period of ma 
input int                  ma_shift=0;                   // shift 
input ENUM_MA_METHOD       ma_method=MODE_SMA;           // type of smoothing 
input ENUM_APPLIED_PRICE   applied_price=PRICE_CLOSE;    // type of price 
input ENUM_TIMEFRAMES      period=PERIOD_CURRENT;        // timeframe 
//---
int                        handle_iMA;                   // variable for storing the handle of the iMA indicator 
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- create handle of the indicator iMA
   handle_iMA=iMA(Symbol(),period,ma_period,ma_shift,ma_method,applied_price);
//--- if the handle is not created 
   if(handle_iMA==INVALID_HANDLE)
     {
      //--- tell about the failure and output the error code 
      PrintFormat("Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d",
                  Symbol(),
                  EnumToString(Period()),
                  GetLastError());
      //--- the indicator is stopped early 
      return(INIT_FAILED);
     }
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double ma_0=iMAGet(0);
   double ma_1=iMAGet(1);

   Comment("MA #0: ",DoubleToString(ma_0,Digits()+1),"\n",
           "MA #1: ",DoubleToString(ma_1,Digits()+1));
  }
//+------------------------------------------------------------------+
//| Get value of buffers for the iMA                                 |
//+------------------------------------------------------------------+
double iMAGet(const int index)
  {
   double MA[1];
//--- reset error code 
   ResetLastError();
//--- fill a part of the iMABuffer array with values from the indicator buffer that has 0 index 
   if(CopyBuffer(handle_iMA,0,index,1,MA)<0)
     {
      //--- if the copying fails, tell the error code 
      PrintFormat("Failed to copy data from the iMA indicator, error code %d",GetLastError());
      //--- quit with zero result - it means that the indicator is considered as not calculated 
      return(0.0);
     }
   return(MA[0]);
  }
//+------------------------------------------------------------------+


Und das Ergebnis (das Fadenkreuz auf dem Screenshot ist auf Takt 1 eingestellt):

iMAGet

Dateien:
iMAGet.mq5  7 kb
 
Vladimir Karputov:

Haben Sie dieiMA-Hilfe gesehen?

Schritt eins: Deklarieren Sie eine Variable in der "Kopfzeile", um das Handle des iMA-Indikators zu speichern:

Schritt zwei: Erstellen eines Indikator-Handles in OnInit().

Und das Ergebnis (das Fadenkreuz auf dem Screenshot ist auf Takt 1 eingestellt):

Vielen Dank für die Antwort.

In MQL4 wird alles in einer Funktion deklariert - es gibt also eine Reihe von Funktionen, die abhängig von den EA-Einstellungen aktiviert werden. Wenn ich mich nicht irre, wird in Ihrem Fall der Speicher für Dutzende von verschiedenen Indikatoren zugewiesen, die der TS zu verwenden erlaubt, was nicht rational ist, oder der Speicher wird nicht zugewiesen?

 

Ist es möglich , eine Klassenfunktion aufzurufen, ohne ein bestimmtes Objekt dieser Klasse zu besitzen? Es würde also in etwa so aussehen:

class test
  {
public:
                     test(void);
                    ~test(void);
  public: void PrintInfo (){Print ("Class test");}
  };
//---
void OnStart()
  {
      test.PrintInfo() ;
  }

Oder ist es notwendig, ein Objekt zu erstellen? Auch wenn sich diese Funktion auf die Definition der Klasse selbst bezieht und nicht auf eine Instanz der Klasse.

 

Wenn die Funktion keinen Zugriff auf Klassenvariablen benötigt, machen Sie sie statisch.

class test
{
public:
   test();
   ~test();

   static void PrintInfo()
   {
      Print( "Class test" );
   }
};

void OnStart()
{
   test::PrintInfo();
}
 
Koldun Zloy:

Wenn die Funktion keinen Zugriff auf Klassenvariablen benötigt, machen Sie sie statisch.

Danke, das ist genau das, was wir brauchen.
 

Fehler erhalten - was ist los? In MQL4 funktioniert es...


   double arrFibo[17]=
     {
      0,
      0.236,
      0.382,
      0.5,
      0.618,
      0.764,
      1,
      1.236,
      1.382,
      1.5,
      1.618,
      2.0,
      2.236,
      2.382,
      2.5,
      2.618,
      2.764,
      3        //Всего уровней 17 + 0
     };
'{' - zu viele Initialisierungen TZ_Sky_and_Ground_V_04.mq5 2484 6