Если Вы хотите заказать советник или индикатор, то публикуйте в эту группу тех. задание. Если Ваш заказ не очень сложный, то велика вероятность, что Вам его смогут сделать даже бесплатно
Программистам MQL: подпишитесь на группу, чтобы получать уведомления о заказах.
Я вам охотно верю. У меня пустой график. Логику я расшифровывать не стану тем более там декомпил, а если вам известна логика формирования линии индикатора то могу попытаться перенести.
Комментарии (10)
35 AM2 Сообщений: 16426 - Андрей
12 ZEYTO Автор Сообщений: 41
35 AM2 Сообщений: 16426 - Андрей
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]);
}
//-------------------------------------
12 ZEYTO Автор Сообщений: 41
18 Andrju81 Сообщений: 245 - Андрей
//+------------------------------------------------------------------+
//| 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);
}
//+------------------------------------------------------------------+
12 ZEYTO Автор Сообщений: 41
35 AM2 Сообщений: 16426 - Андрей
12 ZEYTO Автор Сообщений: 41
35 AM2 Сообщений: 16426 - Андрей
35 AM2 Сообщений: 16426 - Андрей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий