Ausführliche Erklärung von iCustom - Seite 2

 
NewCoder47:


Vielen Dank für diese RaptorUK, aber es ist die eigentliche Kodierung, dass ich Schwierigkeiten mit habe. Ich bin sehr neu in MQL4, und haben nur getan, es ein paar Monate, und bin immer noch lernen - so brauche ich eine einfache Erklärung der Codierung und wie man es in den Indikator einrichten.

Haben Sie nicht gelesen, was ich geschrieben habe? " Es sind keine Änderungen an den Indikatoren erforderlich ... der EA greift einfach auf die Puffer zu, die er bei den benötigten Verschiebungswerten benötigt."
 
dabbler:
Nein, das kann man nicht. Ich habe es gerade ausprobiert. Es wird nicht kompiliert, wenn Sie einen der Parameter weglassen, indem Sie einfach eine leere Stelle zwischen den Kommas lassen.
Ich wusste, ich hätte die letzte Anweisung korrigieren müssen. Nehmen Sie die Kommas für die Parameter heraus.
 
ubzen:
Ich wusste, dass ich die letzte Anweisung hätte korrigieren müssen. Nehmen Sie die Kommas für die Parameter heraus.

Ich habe diesen Indikator gerade als TOR.mqh in meinem Indikator-Ordner kompiliert. Dann habe ich den folgenden Code in den Expertenordner geschrieben.

void start(){
    iCustom(Symbol(),0,"TOR",0,1);
}
Es funktionierte bei mir ohne die Übergabe von Parametern.
 
ubzen:

Ich habe diesen Indikator gerade als TOR.mqh in meinem Indikator-Ordner kompiliert. Dann habe ich den folgenden Code in den Expertenordner geschrieben.

Es kompiliert gut für mich ohne Übergabe von Parametern.
Aber funktioniert er tatsächlich?
 
dabbler:
Aber funktioniert das wirklich?
Ja. Die ganze Zeit. Ich spreche von Extern Values. Und ich nehme an, Sie sprechen von Puffern.
 

Vielen Dank für eure Hilfe, ich werde mir das morgen Abend mal ansehen und sehen, was ich herausfinden kann.

Danke

 

Hallo Leute. Ich scheine immer noch einige Schwierigkeiten zu haben.

Hier ist der Code, in den Indikator (Ich habe nicht alles in den Indikator geändert), ich zeige, was ich denke, ist der relevante Teil. Bitte beachten Sie, dass diese nicht folgen einander in den Indikator, es gibt viel mehr, dass ich gestrippt haben.

//---- indicator buffers
double     STDBuffer[];
double     stddevma[];


//---- macd counted in the 1-st buffer
  for(int i=limit-1; i>=0; i--){
     STDBuffer[i]=iStdDev(Pair1,0,StdDev.MA.Period, StdDev.MA.Shift, StdDev.MA.Method, StdDev.MA.Price, i);
     }
  for(i=limit-1; i>=0; i--){
     stddevma[i] = iMAOnArray(STDBuffer, 0, MA.Fast.Period, MA.Fast.Shift, MA.Fast.Method, i);
     } 

Nun, hier ist der Code in der EA

                double FastMA = iMA(NULL,0,FastMAPeriod,0,0,0,0);
                double SlowMA = iMA(NULL,0,SlowMAPeriod,0,0,0,0);
                double     STDBuffer = iCustom(Null,0,"SFX", , ,0,0);
                double     stddevma = iCustom(Null,0,"SFX", , ,1,0);
                

Was ich nicht verstehe, ist der Teil mit den Parametern. Welche Werte muss ich hier eingeben? Das ist der Teil, mit dem ich zu kämpfen habe. Ich möchte die Werte von STDBuffer und stddevma in einem Test weiter unten in der EA verwenden. Soll ich zum Beispiel Pair1 einbeziehen (das an anderer Stelle im Indikator als aktuelles Diagramm deklariert ist)? Da es bereits als Null am Anfang von iCustom deklariert ist.

Gibt es außerdem eine Möglichkeit, physisch zu sehen, welche Werte an den EA gesendet werden?

Jede Hilfe würde sehr geschätzt werden.

Vielen Dank

 
NewCoder47:

Hier ist der Code, in den Indikator (Ich habe nicht alles in den Indikator geändert), Ich zeige, was ich denke, ist der relevante Teil. Bitte beachten Sie, dass diese nicht folgen einander in den Indikator, es gibt viel mehr, dass ich gestrippt haben.

Hier ist nun der Code im EA

Was ich nicht verstehe, ist der Teil mit den Parametern. Welche Werte muss ich hier eingeben? Das ist der Teil, mit dem ich mich schwer tue. Ich möchte die Werte von STDBuffer und stddevma in einem Test weiter unten in der EA verwenden. Soll ich zum Beispiel Pair1 einbeziehen (das an anderer Stelle im Indikator als aktuelles Diagramm deklariert ist)? Da es bereits als Null am Anfang von iCustom deklariert ist.

Sie haben die relevanten Teile des Indikators nicht gezeigt. Sie müssen alle externen Anweisungen UND die Reihenfolge, in der sie auftreten, zeigen.

Sie müssen alle SetIndexBuffer-Anweisungen zeigen. Wenn Sie verstehen, warum Sie diese anzeigen müssen, werden Sie wahrscheinlich verstehen, was Sie tun müssen.

Oh, und Sie können keine Leerzeichen zwischen den Kommas in den iCustom-Anweisungen haben; es wird nicht kompiliert.

Versuchen Sie, die iCustom-Dokumentation erneut zu lesen, wobei zu berücksichtigen ist, dass sie ursprünglich auf Russisch verfasst wurde. Sie müssen sie sorgfältig studieren.

 
dabbler:

Sie haben die relevanten Teile des Indikators nicht gezeigt. Sie müssen alle externen Anweisungen UND die Reihenfolge, in der sie auftreten, zeigen.

Sie müssen alle SetIndexBuffer-Anweisungen zeigen. Wenn Sie verstehen, warum Sie diese anzeigen müssen, werden Sie wahrscheinlich verstehen, was Sie tun müssen.

Oh, und Sie können keine Leerzeichen zwischen den Kommas in den iCustom-Anweisungen haben; es wird nicht kompiliert.

Versuchen Sie, die iCustom-Dokumentation erneut zu lesen, wobei Sie berücksichtigen sollten, dass sie ursprünglich auf Russisch verfasst war. Sie müssen sie sorgfältig studieren.

Danke Dabbler. Ich habe den vollständigen EA und den Indikator beigefügt. Ich habe die Erklärungen zu iCustom gelesen und verstehe alles bis auf den Teil mit den Parametern, der sehr vage ist. Der EA ist sehr reduziert thou, wie ich bin nur die Prüfung an der mo.

Danke!

Mike.

Indikator:

//---- indicator settings
#property  indicator_separate_window
#property  indicator_buffers 2
#property  indicator_color1  Yellow
#property  indicator_color2  Red
#property  indicator_width1  1

//---- indicator parameters
extern string PairName = "";   // Leave blank for the pair of the chart, enter other pair name to compare correlated pairs

extern int StdDev.MA.Period=12;  // D1=20
extern int StdDev.MA.Shift=0;    //
extern int StdDev.MA.Method = 0; // 0=SMA 1=EMA 2=Smoothed 3=Linear Weighted
extern int StdDev.MA.Price = 0;  // 0 Close price, 1 Open price, 2 High price, 3 Low price, 4 Median price, (high+low)/2, 5 Typical price, (high+low+close)/3, 6 Weighted close price, (high+low+close+close)/4

extern int MA.Fast.Period = 3;
extern int MA.Fast.Method = 2;   //  0=SMA 1=EMA 2=Smoothed 3=Linear Weighted
extern int MA.Fast.Shift = 0;

extern bool CheckOncePerBar = true;

int i, limit, counted_bars;
static string Pair1;

datetime CurrentTimeStamp;

//---- indicator buffers
double     STDBuffer[];
double     stddevma[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
  
   IndicatorDigits(Digits+1);
     
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE); // 
   SetIndexStyle(1,DRAW_LINE);

      
//---- indicator buffers mapping
   SetIndexBuffer(0, STDBuffer);
   SetIndexBuffer(1, stddevma);

   
   if (PairName == "") Pair1 = Symbol();
   else Pair1 = PairName;

//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("SFX TOR: "+Pair1+"("+StdDev.MA.Period+")");
   SetIndexLabel(0,"StdDev");
   SetIndexLabel(1,"StdDev MA");

//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Moving Averages Convergence/Divergence                           |
//+------------------------------------------------------------------+
int start()
  {

   counted_bars=IndicatorCounted();
   
//---- last counted bar will be recounted
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   
//---- macd counted in the 1-st buffer
  for(int i=limit-1; i>=0; i--){
     STDBuffer[i]=iStdDev(Pair1,0,StdDev.MA.Period, StdDev.MA.Shift, StdDev.MA.Method, StdDev.MA.Price, i);
     }
  for(i=limit-1; i>=0; i--){
     stddevma[i] = iMAOnArray(STDBuffer, 0, MA.Fast.Period, MA.Fast.Shift, MA.Fast.Method, i);
     } 
    
//Execute on bar Open
    if( CheckOncePerBar == true ){
      if( CurrentTimeStamp == Time[0] )
         return( 0 );
   }
   
   CurrentTimeStamp = Time [0];
   
          
//---- done
   return(0);
  }

EA:

//+------------------------------------------------------------------+
//|                                                       Simple.mq4 |
//|                                                       Mike Clegg |
//|                                                                  |
//+------------------------------------------------------------------+

#property copyright "Mike Clegg"


// External variables
extern double LotSize = 1;

extern int MagicNumber = 123;

extern int FastMAPeriod = 12;
extern int SlowMAPeriod = 26;


// Global variables
int BuyTicket;
int SellTicket;


// Start function
int start()
        {
                // Moving averages
                double FastMA = iMA(NULL,0,FastMAPeriod,0,0,0,0);
                double SlowMA = iMA(NULL,0,SlowMAPeriod,0,0,0,0);
                double     STDBuffer = iCustom(NULL,0,"SFX",0,0);
      double     stddevma = iCustom(NULL,0,"SFX",1,0);
                
                // Buy order 
                if(FastMA > SlowMA && BuyTicket == 0 && stddevma > STDBuffer)
                        {PlaySound("alert.wav");
         Alert(Symbol(),"All Crossing",Period(),"All Crossing");
                        }
                                
                return(0);
        }

Bitte ignorieren Sie die Tatsache, dass der EA den Job eines Indikators macht, wie ich schon sagte, ich bin im Moment am Testen.

 
NewCoder47:

Danke Dabbler. Ich habe den vollständigen EA und Indikator angehängt. Ich habe die Erklärungen zu iCustom gelesen und verstehe alles bis auf den Teil mit den Parametern, der sehr vage ist. Der EA ist sehr reduziert thou, wie ich bin nur die Prüfung an der mo.

Danke!

Mike.

Indikator:

EA:

Bitte ignorieren Sie die Tatsache, dass der EA die Aufgabe eines Indikators übernimmt, wie gesagt, ich teste gerade.


Sie haben hier einige großartige Ratschläge erhalten und trotzdem kämpfen Sie....

Um zu wissen, wie iCustom mit Ihrem Indikator arbeitet, können Sie einen helpEA oder helpIndicator erstellen, um zu prüfen, was sich in den Puffern des Indikators befindet.

Auf diese Weise lernen Sie am meisten über die Kontrollbefehle in MT4. Lesen Sie hier https://www.mql5.com/en/forum/138379

Erstellen Sie so etwas und Sie werden lernen, wie Sie es..... in den EAs, die Sie erstellen wollen, verwenden können.

Grund der Beschwerde: