Помощь в кодировании - страница 709

 
tfi_markets:
Привет про-кодеры,

Я хотел бы использовать индикатор NonLagMA_v7.7 в качестве триггера сигналов или фильтра торговых сигналов.
Индикатор дает сигналы либо 0, либо 1084.

Например:
// Сигнал вверх
// NonLag Up = 1084
// NonLag Dn = 0

// Сигнал Dn
// NonLag Up = 0
// NonLag Dn = 1084

Не мог бы кто-нибудь взглянуть на мой "псевдо" код? Я думаю, что он может работать,
но его можно оптимизировать в лучшую сторону. Заранее спасибо!

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


Можете ли вы выложить сам индикатор, чтобы его можно было проверить?
 

Здравствуйте, Младен,

пожалуйста, найдите индикатор, прикрепленный к этому сообщению.

Заранее спасибо!

Файлы:
 
tfi_markets:

Здравствуйте, Младен,

пожалуйста, найдите индикатор, прикрепленный к этому сообщению.

Заранее спасибо!

Лучше всего использовать для этого буфер "trend".

Что-то вроде этого :

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:

Лучше всего использовать для этого буфер "тренда".

Что-то вроде этого:

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

Привет, Младен,

большое спасибо за ваш совет!

Будет ли это также работать, если я вставлю больше параметров из других индикаторов, как этот?

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:

Здравствуйте, Младен,

Большое спасибо за ваш совет!

Будет ли это также работать, если я вставлю больше параматеров из других индикаторов?

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

Да, вы можете добавить столько условий, сколько захотите.

Но в случае с кодом, написанным таким образом, "первичное" условие - это если nonlag ma изменили тренд, а затем будут проверяться все остальные условия. Если это то, что вы хотели, то вы можете добавить в этот блок кода столько условий, сколько захотите.

 
mladen:

Да, вы можете добавить столько условий, сколько пожелаете.

Но в случае кода, написанного таким образом, "первичным" условием является то, изменил ли nonlag ma тренд, а затем проверяются все остальные условия. Если это то, что вы хотели, то вы можете добавить в этот блок кода столько условий, сколько захотите.

Круто, спасибо. Приятного вечера.
 

здравствуйте господин младен:

не могли бы вы представить или сделать индикатор для построения вертикальной линии MTF на любой гистограмме?

доброе отношение

 
bilbao:

здравствуйте господин младен:

не могли бы вы представить или сделать индикатор для построения вертикальной линии MTF на любой гистограмме?

доброе отношение

Вы имеете в виду простую вертикальную линию, нарисованную в определенное время?
 
mladen:
Вы имеете в виду простую вертикальную линию, нарисованную в определенное время?

ДА мне нужна простая вертикальная линия для рисования на любой гистограмме для определения свечи на гистограмме

подобный этому рисунок, но на отдельном графике или субграфике {можно перетащить его на гистограмму}, чтобы показать вертикальную линию

 
bilbao:

ДА мне нужна простая вертикальная линия для рисования на любой гистограмме для определения свечи на гистограмме

подобный этому рисунок, но на отдельном графике или субграфике {можно перетащить его на гистограмму}, чтобы показать вертикальную линию

Вот, пожалуйста. Просто перетащите ее на подокно, в котором вы хотите ее отобразить, и выберите таймфрейм.


Файлы: