Группа "Стол заказов MQL"

Рейтинг 2081



РЕКОМЕНДУЮ




Лучшее от ZEYTO



Исправить индикатор Комментариев 3
2016-09-03 18:54:09Рейтинг 0

Исправить советник. Комментариев 5
2016-11-28 12:29:47Рейтинг 0

Переделать индикатор.

Андрей можешь переделать индикатор для переноса кода в советник.HullMA.mq4 (1 Kb)
  • 0
  • Просмотров: 1913
  • 25 июля 2017, 14:28
  • ZEYTO
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Советник Step2 /добавление/
Следующая запись в группе  
Советник RL
25 июля 2017
25 июля 2017

Комментарии (10)

+
0
У меня индикатор не отображается на графике
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 25 июля 2017, 17:42
+
0
avatar

  12  ZEYTO Автор Сообщений: 41

  • 25 июля 2017, 18:01
+
0
Я вам охотно верю. У меня пустой график. Логику я расшифровывать не стану тем более там декомпил, а если вам известна логика формирования линии индикатора то могу попытаться перенести.
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 25 июля 2017, 18:18
+
0
Логика мне не известна но вот пример.

double AMA(int FastMA = 2,int SlowMA = 30,int Range = 9,int filter = 25,int NBars = 300,int Tf1 = 0,int Chift=1){
double fAMA[];
double mAMA[];
int cb, i;
double k1, k2, Noise, ER, SSC, AMA, sdAMA, dAMA;
//-----------------------------------------------------
ArrayResize(fAMA,NBars+1);
ArrayResize(mAMA,NBars+1);
ArrayInitialize(fAMA,0);
ArrayInitialize(mAMA,0);
ArrayIsSeries(fAMA);
ArrayIsSeries(mAMA);
k1 = 2.0 / (SlowMA + 1);
k2 = 2.0 / (FastMA + 1) — k1;
AMA = iClose(Symbol(),Tf1,NBars-Range);
mAMA[NBars-Range] = iClose(Symbol(),Tf1,NBars-Range+1);
//-----------------------------------------------------
for(cb = NBars; cb >= 0; cb--){
Noise = 0;
for(i=cb;i<=cb+Range-1;i++){Noise=Noise+MathAbs(iClose(Symbol(),Tf1,i)-iClose(Symbol(),Tf1,i+1));}
if(Noise!=0){ER = MathAbs(iClose(Symbol(),Tf1,cb) — iClose(Symbol(),Tf1,cb+Range)) / Noise;}else{ER = 0;}
SSC=(ER*k2 + k1);
AMA=AMA+NormalizeDouble(SSC*SSC*(iClose(Symbol(),Tf1,cb) — AMA), 4);
mAMA[cb] = AMA;
if(filter < 1){
fAMA[cb] = mAMA[cb];
if(cb==Chift)return(fAMA[cb]);
}else{
for(i=cb;i<=cb+SlowMA-1;i++){sdAMA = sdAMA + MathAbs(mAMA[i] — mAMA[i+1]);}
dAMA=mAMA[cb]-mAMA[cb+1];
if(dAMA>=0){
if(dAMA < NormalizeDouble(filter*sdAMA / (100*SlowMA), 4) &&
iHigh(Symbol(),Tf,cb) <= iHigh(Symbol(),Tf,iHighest(NULL, 0, MODE_HIGH, 4, cb)) + 10*gd_101){
fAMA[cb] = fAMA[cb+1];
if(cb==Chift)return(fAMA[cb]);
}else{
fAMA[cb] = mAMA[cb];
if(cb==Chift)return(fAMA[cb]);
}//if(dAMA < Normaliz
}else{
if(MathAbs(dAMA) < NormalizeDouble(filter*sdAMA / (100*SlowMA), 4) &&
iLow(Symbol(),Tf1,cb) > iLow(Symbol(),Tf1,iLowest(NULL, Tf1, MODE_LOW, 4, cb)) — 10*gd_101){
fAMA[cb] = fAMA[cb+1];
if(cb==Chift)return(fAMA[cb]);
}else{
fAMA[cb] = mAMA[cb];
if(cb==Chift)return(fAMA[cb]);
}
}
sdAMA=0.0;
}//for(i=cb;i<=cb+Range-1;i++)
}//for(cb = NBars; cb >= 0; cb--){
return(fAMA[Chift]);
}
//-------------------------------------
avatar

  12  ZEYTO Автор Сообщений: 41

  • 25 июля 2017, 21:18
+
0
А не проще ли подключить данный индикатор к советнику в качестве ресурса?!..
avatar

  18  Andrju81 Сообщений: 245 - Андрей

  • 26 июля 2017, 01:21
+
0
Андрей вот нормальный.

//+------------------------------------------------------------------+
//| HullMA.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright «Copyright © 2008, MetaQuotes Software Corp.»
#property link «www.metaquotes.net»

#property indicator_chart_window
//#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Yellow
//---- input parameters
extern int HMA_period=10;
extern int HMA_price=PRICE_MEDIAN;
extern int HMA_mode=MODE_LWMA;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
int draw_begin0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
//----
IndicatorBuffers(2);
if(!SetIndexBuffer(0,ExtMapBuffer1) && !SetIndexBuffer(1,ExtMapBuffer2))
Print(«cannot set indicator buffers!»);
// ArraySetAsSeries(ind_buffer1,true);
//---- drawing settings
SetIndexStyle(0,DRAW_LINE);
draw_begin0=HMA_period+MathFloor(MathSqrt(HMA_period));
SetIndexDrawBegin(0,draw_begin0);
IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
//---- name for DataWindow and indicator subwindow label
IndicatorShortName(«HMA(»+HMA_period+")");
SetIndexLabel(0,«Hull Moving Average»);
//---- initialization done
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted();
double d1;
double d2;
int limit;
//----
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
for(int i=0; i<limit; i++){
d1=iMA(NULL,0,HMA_period,0,HMA_mode,HMA_price,i);
d2=iMA(NULL,0,MathRound(HMA_period/2),0,HMA_mode,HMA_price,i);
ExtMapBuffer2[i]=(2*d2)-(d1);
}
for(i=0; i<limit; i++)
ExtMapBuffer1[i]=iMAOnArray(ExtMapBuffer2,0,MathSqrt(HMA_period),0,MODE_LWMA,i);
//----
return(0);
}
//+------------------------------------------------------------------+

avatar

  12  ZEYTO Автор Сообщений: 41

  • 26 июля 2017, 14:37
+
0
Сейчас хоть код читаемый. Посмотрю сегодня.
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 26 июля 2017, 17:22
+
0
Буду ждать.
avatar

  12  ZEYTO Автор Сообщений: 41

  • 26 июля 2017, 17:24
+
0
После правки индикатор стал отображаться:




//+------------------------------------------------------------------+
//| HullMA.mq4 |
//| Copyright © 2008, MetaQuotes Software Corp. |
//| www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, MetaQuotes Software Corp."
#property link "www.metaquotes.net"

#property indicator_chart_window
//#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Yellow
//---- input parameters
extern int HMA_period=10;
extern int HMA_price=PRICE_MEDIAN;
extern int HMA_mode=MODE_LWMA;
double ExtMapBuffer1[];
double ExtMapBuffer2[];
int draw_begin0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
//----
   IndicatorBuffers(2);
   Print("cannot set indicator buffers!");
// ArraySetAsSeries(ind_buffer1,true);
//---- drawing settings
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,ExtMapBuffer1);
   SetIndexBuffer(1,ExtMapBuffer2);
   draw_begin0=HMA_period+MathFloor(MathSqrt(HMA_period));
   SetIndexDrawBegin(0,draw_begin0);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+1);
//---- name for DataWindow and indicator subwindow label
   IndicatorShortName("HMA("+HMA_period+")");
   SetIndexLabel(0,"Hull Moving Average");
//---- initialization done
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
  {
//----
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   double d1;
   double d2;
   int limit;
//----
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++)
     {
      d1=iMA(NULL,0,HMA_period,0,HMA_mode,HMA_price,i);
      d2=iMA(NULL,0,MathRound(HMA_period/2),0,HMA_mode,HMA_price,i);
      ExtMapBuffer2[i]=(2*d2)-(d1);
     }
   for(i=0; i<limit; i++)
      ExtMapBuffer1[i]=iMAOnArray(ExtMapBuffer2,0,MathSqrt(HMA_period),0,MODE_LWMA,i);
//----
   return(0);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 26 июля 2017, 17:45
+
0
Вот код для переноса в советник:


//+------------------------------------------------------------------+
//|                                                        Sovet.mq4 |
//|                                              Copyright 2017, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

extern int HMA_period=10;
extern int HMA_price=PRICE_MEDIAN;
extern int HMA_mode=MODE_LWMA;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double ma1=iMA(NULL,0,HMA_period,0,HMA_mode,HMA_price,1);
   double ma2=iMA(NULL,0,(int)MathRound(HMA_period/2),0,HMA_mode,HMA_price,1);
   double ma3=(2*ma2)-(ma1);

   Comment("\n MA1: ",ma1,
           "\n MA2: ",ma2,
           "\n MA3: ",ma3);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 26 июля 2017, 17:57

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари