//+------------------------------------------------------------------+ //| SineWMA.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://mql5.com" #property version "1.00" #property description "Sine Weighted Moving Average" #property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 1 //--- plot SineWMA #property indicator_label1 "SineWMA" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRoyalBlue #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- input parameters input uint InpPeriod = 20; // Period input ENUM_APPLIED_PRICE InpAppliedPrice = PRICE_CLOSE; // Applied price //--- indicator buffers double BufferSineWMA[]; double BufferMA[]; //--- global variables double SinCoeff[]; double coeff_sum; int period_ma; int handle_ma; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- set global variables period_ma=int(InpPeriod<1 ? 1 : InpPeriod); ArrayResize(SinCoeff,period_ma); coeff_sum=0; for(int i=0;i1) { limit=rates_total-period_ma-1; ArrayInitialize(BufferSineWMA,EMPTY_VALUE); ArrayInitialize(BufferMA,0); } //--- Подготовка данных int count=(limit>1 ? rates_total : 1),copied=0; copied=CopyBuffer(handle_ma,0,0,count,BufferMA); if(copied!=count) return 0; //--- Расчёт индикатора for(int i=limit; i>=0 && !IsStopped(); i--) { double sum=0; for(int j=0; j