Ayuda a la codificación - página 709

 
tfi_markets:
Hola Pro-Coders,

Me gustaría utilizar el indicador NonLagMA_v7.7 como disparador de señales o filtro de señales comerciales.
El indicador proporciona señales ya sea 0 o 1084.

Por ejemplo:
// Señal de subida
// NonLag Up = 1084
// NonLag Dn = 0

// Señal Dn
// NonLag Up = 0
// NonLag Dn = 1084

¿Podría alguien echar un vistazo a mi "pseudo" código? Supongo que puede funcionar,
pero probablemente puede ser optimizado para mejor. Gracias de antemano.

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


¿Puedes publicar el propio indicador para que se pueda comprobar?
 

Hola Mladen,

por favor, encuentra el indicador adjunto a este mensaje.

Gracias de antemano.

Archivos adjuntos:
 
tfi_markets:

Hola Mladen,

por favor, encuentra el indicador adjunto a este mensaje.

¡Gracias de antemano!

Lo mejor es utilizar el búfer "tendencia" para que

Algo como esto :

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:

Lo mejor es usar el buffer de "tendencia" para eso

Algo así:

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;
}

Hola Mladen,

¡muchas gracias por tu consejo!

¿Funcionaría también si pongo más parámetros de otros indicadores como este?

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;
}

\N - Thomas

 
tfi_markets:

Hola Mladen,

muchas gracias por tu consejo.

¿Funcionaría también si pongo más parámetros de otros indicadores como este?

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

Sí, puedes añadir todas las condiciones que quieras.

Pero en el caso del código escrito así, la condición "primaria" es si los nonlag ma han cambiado la tendencia y luego se comprobarían el resto de las condiciones. Si eso es lo que querías, entonces puedes meter en ese bloque de código tantas condiciones como desees

 
mladen:

Sí, puedes añadir tantas condiciones como quieras.

Pero en el caso del código escrito de esa manera, la condición "primaria" es si el nonlag ma ha cambiado la tendencia y luego se comprobarían todas las demás condiciones. Si eso es lo que querías, entonces puedes meter en ese bloque de código tantas condiciones como desees

Genial, gracias. Que tengas una buena noche.
 

hola señor mladen

podría introducir o hacer un indicador para dibujar la línea vertical MTF en cualquier histograma

amable consideración

 
bilbao:

hola señor mladen

podría introducir o hacer un indicador para dibujar la línea vertical MTF en cualquier histograma

amable consideración

¿Te refieres a una simple línea vertical dibujada en determinados momentos?
 
mladen:
¿Te refieres a una simple línea vertical dibujada en determinados momentos?

SÍ necesito una línea vertical simple para dibujar en cualquier histograma para determinar la vela en el histograma

similar a esta imagen pero en un gráfico o subgráfico separado {puede arrastrarlo en el histograma} para mostrar la línea vertical

 
bilbao:

SÍ necesito una línea vertical simple para dibujar en cualquier histograma para determinar la vela en el histograma

similar a esta imagen pero en un gráfico o subgráfico separado {puede arrastrarlo en el histograma} para mostrar la línea vertical

Aquí tienes. Sólo tienes que arrastrar a la sub-ventana que desea que se muestre en y eligió el marco de tiempo


Archivos adjuntos: