Hilfe bei der Codierung - Seite 709

 
tfi_markets:
Hallo Pro-Coders,

ich möchte den NonLagMA_v7.7 Indikator als Signaltrigger oder Handelssignalfilter verwenden.
Der Indikator liefert Signale entweder 0 oder 1084.

Zum Beispiel:
// Up Signal
// NonLag Up = 1084
// NonLag Dn = 0

// Dn Signal
// NonLag Up = 0
// NonLag Dn = 1084

Könnte sich bitte jemand meinen "Pseudo"-Code ansehen? Ich denke, er könnte funktionieren,
aber er kann wahrscheinlich noch optimiert werden. Vielen Dank im Voraus!

extern string  NLMA_inputs      = "+--- NonLagMA Settings ---+";
extern int     Price            = 0;  //Apply to Price(0-Close;1-Open;2-High;3-Low;4-Median price;5-Typical price;6-Weighted Close)
extern int     MALength         = 9;  // Period of NonLagMA
extern int     Displace         = 0;  //DispLace or Shift
extern double  PctFilter        = 0;  //Dynamic filter in decimal
extern int     Color            = 1;  //Switch of Color mode (1-color)  
extern int     ColorBarBack     = 1;  //Bar back for color mode
extern double  Deviation        = 0;  //Up/down deviation        
extern int     AlertMode        = 1;  //Sound Alert switch (0-off,1-on)
extern int     WarningMode      = 0;  //Sound Warning switch(0-off,1-on)
extern int     WarningTicks     = 0;
extern bool    SendAlertEmail   = false;

extern double  BarShift                 = 1;

double nLagMA;
nLagMA=iCustom(Symbol(),0,"NonLagMA_v7.7", Price, Length, Displace, PctFilter, Color, ColorBarBack, Deviation, AlertMode, WarningMode, WarningTicks, SendAlertEmail);
  
double nLagMA1;
nLagMA1=iCustom(Symbol(),0,"NonLagMA_v7.7", Price, Length, Displace, PctFilter, Color, ColorBarBack, Deviation, AlertMode, WarningMode, WarningTicks, SendAlertEmail, BarShift);


// Signal Cross
   if (nLagMA == 0 && nLagMA1 > 1000) Order=SIGNAL_BUY;
   if (nLagMA1 == 0 && nLagMA > 1000) Order=SIGNAL_SELL;    

// Signal Filter
   if (nLagMA1 > 1000) Filter_BUY = True;    // Maybe used as SellExit Signal
   if (nLagMA == 0)    Filter_SELL = True;   // Maybe used as BuyExit Signal


Können Sie den Indikator selbst posten, damit er überprüft werden kann?
 

Hallo Mladen,

bitte finden Sie den Indikator im Anhang zu diesem Beitrag.

Vielen Dank im Voraus!

Dateien:
 
tfi_markets:

Hallo Mladen,

bitte finden Sie den Indikator im Anhang zu diesem Beitrag.

Vielen Dank im Voraus!

Am besten verwendest Du dafür den "Trend"-Puffer

Etwa so:

double trendNow   = iCustom(NULL,0,"NonLagMA_v7.7", Price, Length, Displace, PctFilter, Color, ColorBarBack, Deviation, AlertMode, WarningMode, WarningTicks, SendAlertEmail, 3, BarShift);
double trendPrev  = iCustom(NULL,0,"NonLagMA_v7.7", Price, Length, Displace, PctFilter, Color, ColorBarBack, Deviation, AlertMode, WarningMode, WarningTicks, SendAlertEmail, 3, BarShift+1);  
if (trendNow!=trendPrev)
{
   if (trendNow>0)
         Order=SIGNAL_BUY;
   else  Order=SIGNAL_SELL;
}
 
mladen:

Am besten verwenden Sie dafür den "Trend"-Puffer

Etwa so:

double trendNow   = iCustom(NULL,0,"NonLagMA_v7.7", Price, Length, Displace, PctFilter, Color, ColorBarBack, Deviation, AlertMode, WarningMode, WarningTicks, SendAlertEmail, 3, BarShift);
double trendPrev  = iCustom(NULL,0,"NonLagMA_v7.7", Price, Length, Displace, PctFilter, Color, ColorBarBack, Deviation, AlertMode, WarningMode, WarningTicks, SendAlertEmail, 3, BarShift+1);  
if (trendNow!=trendPrev)
{
   if (trendNow>0)
         Order=SIGNAL_BUY;
   else  Order=SIGNAL_SELL;
}

Hallo Mladen,

vielen Dank für deinen Ratschlag!

Würde es auch funktionieren, wenn ich weitere Parameter von anderen Indikatoren so einfüge?

if (trendNow!=trendPrev)
{
  if(totalOrdersLong<MaxLongTrades  && trendNow>0 && (NLD1>NLD2) && RSIfilter>55) Order=SIGNAL_BUY;
  if(totalOrdersShort<MaxShortTrades && trendPrev>0 && (NLD1<NLD2) && RSIfilter<45) Order=SIGNAL_SELL;
}

\Thomas

 
tfi_markets:

Hallo Mladen,

vielen Dank für deinen Ratschlag!

Würde es auch funktionieren, wenn ich weitere Parameter von anderen Indikatoren so einfüge?

if (trendNow!=trendPrev)
{
  if(totalOrdersLong<MaxLongTrades  && trendNow>0 && (NLD1>NLD2) && RSIfilter>55) Order=SIGNAL_BUY;
  if(totalOrdersShort<MaxShortTrades && trendPrev>0 && (NLD1<NLD2) && RSIfilter<45) Order=SIGNAL_SELL;
}

\Thomas

Ja, Sie können so viele Bedingungen hinzufügen, wie Sie möchten.

Aber im Falle des so geschriebenen Codes ist die "primäre" Bedingung, ob die Non-Lag-Ma den Trend geändert haben, und dann würden alle anderen Bedingungen überprüft werden. Wenn Sie das wollen, können Sie in diesen Codeblock so viele Bedingungen einfügen, wie Sie wollen.

 
mladen:

Ja, Sie können so viele Bedingungen hinzufügen, wie Sie möchten.

Aber im Falle des so geschriebenen Codes ist die "primäre" Bedingung, ob Non-Lag-Ma den Trend geändert haben, und dann würden alle anderen Bedingungen überprüft. Wenn Sie das wollen, können Sie in diesen Codeblock so viele Bedingungen einfügen, wie Sie wollen.

Cool, danke. Einen schönen Abend noch.
 

hallo Herr mladen:

Könnten Sie einen Indikator einführen oder erstellen, um eine vertikale MTF-Linie auf einem beliebigen Histogramm zu zeichnen?

Mit freundlichen Grüßen

 
bilbao:

hallo Herr mladen:

Könnten Sie einen Indikator einführen oder erstellen, um eine vertikale MTF-Linie auf einem beliebigen Histogramm zu zeichnen?

Mit freundlichen Grüßen

Sie meinen eine einfache vertikale Linie, die zu einem bestimmten Zeitpunkt gezeichnet wird?
 
mladen:
Sie meinen eine einfache vertikale Linie, die zu bestimmten Zeitpunkten gezeichnet wird?

JA, ich benötige eine einfache vertikale Linie, die ich auf ein beliebiges Histogramm zeichnen kann, um eine Kerze auf dem Histogramm zu bestimmen

ähnlich diesem Bild, aber auf einem separaten Chart oder Subchart {kann es auf das Histogramm ziehen}, um eine vertikale Linie anzuzeigen

 
bilbao:

JA, ich benötige eine einfache vertikale Linie, die ich in ein beliebiges Histogramm einzeichnen kann, um die Kerze im Histogramm zu bestimmen

ähnlich diesem Bild, aber auf einem separaten Chart oder Subchart {kann es auf das Histogramm ziehen}, um eine vertikale Linie anzuzeigen

So geht's. Ziehen Sie sie einfach auf das Unterfenster, in dem sie angezeigt werden soll, und wählen Sie den Zeitrahmen


Dateien: