//+------------------------------------------------------------------+ //| FastFrAMA.mq5 | //| Copyright 2013, Roman Pritulyak | //| c1664@mail.ru | //+------------------------------------------------------------------+ #property copyright "Copyright 2013, Roman Pritulyak" #property link "c1664@mail.ru" #property version "1.00" #property description "FasrFrAMA" #property indicator_chart_window #property indicator_buffers 1 #property indicator_plots 1 #property indicator_type1 DRAW_LINE #property indicator_color1 Blue #property indicator_style1 STYLE_SOLID #property indicator_width1 3 #property indicator_label1 "FasrFrAMA" #include //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ enum ENUM_JPRICE { PRICE_CLOSE_=1, //CLOSE PRICE_OPEN_=2, //OPEN PRICE_HIGH_=3, //HIGH PRICE_LOW_=4, //LOW PRICE_MEDIAN_=5, //MEDIAN PRICE_TYPICAL_=6, //TYPICAL PRICE_WEIGHTED_=7, //WEIGHTED PRICE_SIMPL_=8, //SIMPLE PRICE_QUARTER_=9, //QUARTER PRICE_TRENDFOLLOW0_=10, //TRENDFOLLOW PRICE_TRENDFOLLOW1_=11 //HALFTRENDFOLLOW }; input int Inp_period= 7; //Period input int Inp_shift= 0; //Shift input ENUM_JPRICE Inp_price= PRICE_OPEN_; //Applied price double b_FrAMA[]; bool first; int limit1; CFRAMA *FRAMA; //+------------------------------------------------------------------+ //| FastFrAMA initialization function | //+------------------------------------------------------------------+ int OnInit() { //Checking of input parameters if(Inp_period<2 || Inp_shift<0) { Print("Error: invalid inputs"); return(INIT_FAILED); } //Setting indicator buffers SetIndexBuffer(0,b_FrAMA,INDICATOR_DATA); //Additional indicator settings first=true; limit1=2*Inp_period+1; PlotIndexSetInteger(0,PLOT_SHIFT,Inp_shift); PlotIndexSetInteger(0,PLOT_DRAW_BEGIN,limit1); PlotIndexSetString(0,PLOT_LABEL,"FastFrAMA"); PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE); IndicatorSetInteger(INDICATOR_DIGITS,_Digits); return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| FastFrAMA iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[] ) { int i,from; double price; //Creating class objects if(first) { FRAMA=new CFRAMA; first=false; } //Calculating the point of the beginning of calculations from=prev_calculated-1; if(from