Ausführliche Erklärung von iCustom - Seite 4

 
honest_knave: Ich wusste nicht, dass es Kamelkiste heißt. Danke!
Sieht so aus, als hätte der Moderator meinen vorherigen Beitrag gelöscht, weil er einen WikiPedia-Link enthielt, also suchen Sie einfach auf WikiPedia (oder Google) nach einigen historischen Informationen und Details über "Camel Case".
 
Fernando Carreiro:
Es sieht so aus, als ob der Moderator meinen vorherigen Beitrag gelöscht hat, weil er einen WikiPedia-Link enthielt, also suchen Sie einfach in WikiPedia (oder Google) nach der Geschichte und Details über den "Camel Case".
Ihr Beitrag wurde entfernt, da er doppelt war. Der gleiche Link ist bereits gepostet.
 
In Fortsetzung von #23 und gekapselt in einer Funktion #26 zeige ich jetzt eine Struktur, die sowohl auf MT4 als auch auf MT5 funktioniert. (Für Post-Build 600 habe ich die ungültigen Punkte(#29) in Variablennamen geändert und ints in Standardaufzählungen umgewandelt).
Nicht kompiliert, nicht getestet.
struct SFX{                            // SFX indicator at #1
   #define  SFX_NAME_PATH   "SFX"       // Indicator filename without extension,
                                       // including blanks if any.
   enum SFXbuffer{SFX_STD, SFX_STDMA};
   string                  PairName;
   ENUM_TIMEFRAMES         tf;
   int                     StdDev_MA_Period;
   int                     StdDev_MA_Shift;
   ENUM_MA_METHOD          StdDev_MA_Method;
   ENUM_APPLIED_PRICE      StdDev_MA_Price;
   int                     MA_Fast_Period;
   ENUM_MA_METHOD          MA_Fast_Method;
   int                     MA_Fast_Shift;
   #define  CheckOncePerBar true;
   void SFX()      : PairName(_Symbol),            tf(PERIOD_CURRENT),
                     StdDev_MA_Period(12),         StdDev_MA_Shift(0),
                     StdDev_MA_Method(MODE_SMA),   StdDev_MA_Price(PRICE_CLOSE),
                     MA_Fast_Period(3),            MA_Fast_Method(MODE_SMMA),
#ifndef __MQL5__
                     MA_Fast_Shift(0){}
   double get(SFXbuffer buf, int iBar = 0){
      return iCustom(PairName, tf, SFX_NAME_PATH,
                     StdDev_MA_Period,             StdDev_MA_Shift,
                     StdDev_MA_Method,             StdDev_MA_Price,
                     MA_Fast_Period,               MA_Fast_Method,
                     MA_Fast_Shift,                CheckOncePerBar,
                     buf, iBar);
   }  // get
#else // MQL5
                     MA_Fast_Shift(0),             Handle(INVALID_HANDLE){}
   void ~SFX(){   if(Handle != INVALID_HANDLE) IndicatorRelease(Handle);   }
   double get(SFXbuffer buf, int iBar = 0){
      if(Handle == INVALID_HANDLE){
         Handle = iCustom(PairName, tf, SFX_NAME_PATH,
                     StdDev_MA_Period,             StdDev_MA_Shift,
                     StdDev_MA_Method,             StdDev_MA_Price,
                     MA_Fast_Period,               MA_Fast_Method,
                     MA_Fast_Shift,                CheckOncePerBar);
         if(Handle == INVALID_HANDLE){
            PrintFormat("%s: iCustom(%s) Failed: %i",
                        __FUNCTION__, SFX_NAME_PATH, _LastError);
            return 0;
         }
      }
      double  value[1]; CopyBuffer(Handle, buf, iBar, 1, value);
      return  value[0];
   }  // get
 Private:
   int                  Handle;     // MT5 only
#endif   // __MQL5__
}; // SFX
///////////////////////////////////////////////////////////////////////////////
SFX   SFXindicator;
// SFXindicator.StdDev_MA_Period = ...;   // modification of default parameters.
:
double     STDBuffer = SFXindicator.get(SFX_STD,   0);   // example calls
double     stddevma  = SFXindicator.get(SFX_STDMA, 0);
Nicht kompiliert, nicht getestet.
 

Hallo, ich habe eine schnelle (und schmerzlos, hoffe ich) Frage über iCustom: sagen wir, dass ich 3 Indikatoren namens Ind_A, Ind_B und Ind_C, und ich habe ein Expert Advisor namens EA.

Der EA ruft alle 3 Indikatoren mit icustom auf, übergibt ihre Argumente und erhält die Ergebnisse durch Indizierung ihrer Reaktionspuffer.

Ich hänge meine 3 Indikatoren an den EURUSD-Chart an und lasse meinen EA laufen; konzentrieren wir uns auf den Indikator Ind_A, der als Indikator läuft, aber gleichzeitig vom EA ausgeführt wird: ist die Instanz die gleiche oder haben wir zwei Instanzen von Ind_A laufen? (d.h. eine Instanz läuft alleine und die andere Instanz läuft innerhalb des EA).

In diesem Fall hat jede Instanz ihren eigenen Puffer, oder wird der Puffer von allen Instanzen des Indikators gemeinsam genutzt?

Vielen Dank!

 

Entschuldigung, dass ich diesen Thread wieder aufwecke. Aber ich dachte, meine Frage gehört zu diesem Thema.

Ich versuche, auf 2 Puffer von einem benutzerdefinierten Indikator Trend-Target zuzugreifen, der Indikator hat einen Eingang = 60, und zwei Puffer Band UP und Band LO

mit

double Value1 = iCustom(Symbol(),0,"TrendTarget.ex4",60,0,1,0);



double Value2 = iCustom(Symbol(),0,"TrendTarget.ex4",60,0,0,1);double Value1 = iCustom(Symbol(),0,"TrendTarget.ex4",60,0,1,0);



Comment("iCustom returned v1= "+Value1+ " and value2= ",Value2);

Ist die Art und Weise, wie ich die Parameter für diese iCustom korrekt eingestellt? weil ich nicht zu bekommen scheinen die Band Up und Band LO Werte nicht genau auf die Puffer in Daten beobachten Panel pls überprüfen Sie das beigefügte Bild. Nur die 2 oder 3 ersten Dezimalstellen oder 3e richtig, aber für ein FX-Kurs alle 4 Ziffern müssen korrekt sein, ist es richtig?

Ich hoffe, die Programmierer und erfahrene Benutzer auf MQL5 kann mir helfen, schnell dieses Problem zu korrigieren? Vielen Dank im Voraus

-----------------------------------------------------------------------------------------------------
Apropos was ist Ihr Indikator hat 5 Eingänge und 4 Puffer,

double Value1 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,1,0,0,0);

double Value2 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,0,2,0,0);

double Value3 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,0,0,3,0);

double Value4 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,0,0,0,4);


Wie dies oben?

 
ntk2017: Entschuldigung, dass ich diesen Thread wieder aufwecke. Aber

Bitte bearbeiten Sie Ihren (ursprünglichen) Beitrag und verwenden Sie die CODE-Taste (Alt-S)! (Für große Mengen von Code, fügen Sie es an.)
Allgemeine Regeln und bewährte Praktiken des Forums. -Allgemein - MQL5 Programmierforum
Nachrichten-Editor

 
ntk2017: Apropos, was ist Ihr Indikator hat 5 Eingänge und 4 Puffer,
double Value1 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,1,0,0,0);
double Value2 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,0,2,0,0);
double Value3 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,0,0,3,0);
double Value4 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,0,0,0,4);

Wie das hier oben?

Auf keinen Fall.

iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,BufferIndex,BarIndex);
 
William Roeder:

Auf keinen Fall.

Ich sollte wie folgt vorgehen:
double value1 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,1,0,0,0,0); //with BarIndex=0, when only check on close or 1= when check on every tick;
 double value2 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,0,1,0,0,0);
double value3 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,0,0,1,0,0);
double value4 = iCustom(Symbol(),0,"indicator",a1,a2,a3,a4,a5,0,0,0,1,0);

Danke für die Korrektur, ich habe gerade ein Beispiel "Kombinierte Nutzung von Programmen"(https://book.mql4.com/samples/shared) in mql5 gefunden, ich denke, das Beispiel in codig ist das, was ich brauche. Ich werde diesen Teil studieren, wenn ich Fragen zu meiner Programmierung habe, hoffe ich, dass Sie mir helfen werden, damit es stabiler und gewinnbringender läuft.

Combined Use of Programs - Simple Programs in MQL4 - MQL4 Tutorial
Combined Use of Programs - Simple Programs in MQL4 - MQL4 Tutorial
  • book.mql4.com
It was said earlier that according to MQL4 rules trade functions cannot be used in custom indicators, that is why for automated trading Expert Advisors or scripts should be used. However, the resource-saving technology used for calculations in indicators (see Creation of Custom Indicators) is widely used when creating trading programs. In most...
 
William Roeder:

Auf keinen Fall.

Ich habe den Code auf diese Weise jetzt ich cn sehen die Puffer 1, 2 der TrendTarget (Aber immer noch nicht alle 4 Ziffern richtig!!!), ich setze die BarsIndex Wert auf jedem Stick auf 1, weil ich das TrendTarget neu zu überprüfen mag

   double shortSma, longSma, ShortSL, ShortTP, LongSL, LongTP,Band_UP,Band_LO;

   double Value1,Value2 ;





   Value1 = iCustom(Symbol(),0,"TrendTarget.ex4",60,1,1);

   Value2 = iCustom(Symbol(),0,"TrendTarget.ex4",60,2,1);

   Band_UP = Value1;

   Band_LO = Value2;

   Comment(" !!!!!!! ICUSTOM returned Value1= "+Value1+ " and value2= ",Value2+"\n");

Aber ich habe immer noch ein Problem. Ich verwende TrendTarget wie ein Filter
if(tik <= 5 && Ask>Band_UP) ///////////////ONLY can open SELL////////////////
        {
         ////////////////////// TP1 SL1 ///////////////////////////////////
         openOrder(Symbol(), OP_SELLSTOP,LotSize,sellPrice,sellPrice+SL1*point(), sellPrice-TP1*point(),"_Sell_1",MagicNumber,exp,Crimson);
        }

      if(tik <= 5 && Bid<Band_LO)   ///////////////ONLY can open BUY////////////////

        {
         ////////////////////// TP1 SL1 ///////////////////////////////
         openOrder(Symbol(), OP_BUYSTOP,LotSize,buyPrice,buyPrice-SL1*point(), buyPrice+TP1*point(),"_Buy_1",MagicNumber,exp,Navy);
        }
aber nach der Ausführung füge ich den TrendTarget-Indikator hinzu und sehe, dass der EA immer noch viele Trades zwischen den Kanälen öffnet!!!!!

Im Bild füge ich das TrendTarget hinzu, nachdem es gestartet wurde. Wenn ich eine Testvorlage mit TrendTarget(Parameter TF=60) erstelle, wird der Kanal nur für die ersten X Bars angezeigt, danach kann ich nur noch die Preiskurve sehen, warum?
Wie kann ich den Trend Target Indikator einfach hinzufügen, um visuell zu überprüfen, wo Orders geöffnet werden?

Ich möchte im Code den Wert_UP in der Vergangenheit verwenden, similare die Verwendung von close: vor gestern Close[2], gestern Close[1], curren close Close[0]? Ist das möglich?
Dateien:
 
Problem, das ich immer noch mit dem scap Test EA sind folgende:

1. Problem:
Ich kann die Puffer 1, 2 der TrendTarget (aber immer noch nicht alle 4 Ziffern richtig!!!), ist es wichtig? für EURUSD Zitat 1.0907 Ich dachte, wenn der Preis Wert sollte mit TrendTarget oberen Kanal oder unteren Kanal verglichen werden, diese Werte der TrendTarget sollte genau richtig mindestens 4 Dezimalstellen.
Ich setze den BarsIndex Wert auf jedem Stick auf 1, weil ich das TrendTarget gerne nachprüfen möchte

2. Problem:
Aber ich habe immer noch ein Problem. Ich verwende TrendTarget wie einen Filter.

aber nachdem es gelaufen ist, hänge ich den TrendTarget-Indikator an und dann sehe ich, dass der EA immer noch viele Trades zwischen den Kanälen geöffnet hat!!!!!

3. Problem:
In dem beigefügten Bild muss ich das TrendTarget nach dem Start hinzufügen. Wenn ich eine Testvorlage mit TrendTarget (Parameter TF=60) erstelle, wird der TrendTarget-Kanal nur für die ersten X Balken angezeigt, vielleicht 100, dann kann ich nur die Preiskurve sehen, warum ist das so?

4. Problem:
Wie kann ich den TrendTarget-Indikator einfach hinzufügen, um zur Laufzeit visuell zu überprüfen, wo Orders eröffnet werden?

5. Problem:
Ich möchte im Code den Wert_UP in der Vergangenheit verwenden, ähnlich der Verwendung von Close: vorgestern Close[2], gestern Close[1], aktueller Close Close[0]? Ist das möglich? Weil es könnte eine länger als ein paar Bars Breakout, in diesem Fall möchte ich die Strategie zu ändern, um Breakout-Handel, statt, nur eine Theorie, die ich immer noch nicht wissen, wie man es in der Codierung

6. Problem:
Wenn Bedingung berührt wird, zum Beispiel möchte ich nur 1 Auftrag zu öffnen, hier, weil der Preis bleibt viele Bar über oberen Kanal so Bedingung ist richtig immer, es offen, bis mein Konto läuft! Wie kann ich nur einen Auftrag senden und dann warten, bis sich die Bedingung ändert?

7. Problem:
Weiß jemand, was das Trendtarget ist, es scheint mir eine Trendlinie oder MA(x) des Preises mit +/- 1xATR(14) zu jeder Seite hinzugefügt, ist das richtig. Hat jemand den Code dafür?