#property copyright "Napoleonmiao" #property link "1257578383@qq.com" #property version "1.00" #property strict #property indicator_separate_window #property indicator_buffers 6 #property indicator_maximum 100 #property indicator_minimum 0 double RSV[]; double K[]; double D[]; double PD[]; double X[]; double AX[]; int intRSV = 34; int intK = 9; int intD = 3; int intX = 3; int intAX = 20; int OnInit() { ObjectsDeleteAll(); IndicatorBuffers(6); SetIndexStyle(0, DRAW_LINE,STYLE_SOLID,2,Green); SetIndexBuffer(0,D); SetIndexStyle(1, DRAW_LINE,STYLE_SOLID,4,Red); SetIndexBuffer(1,PD); SetIndexStyle(2, DRAW_NONE); SetIndexBuffer(2,RSV); SetIndexStyle(3, DRAW_NONE); SetIndexBuffer(3,K); SetIndexStyle(4, DRAW_NONE); SetIndexBuffer(4,X); SetIndexStyle(5, DRAW_NONE); SetIndexBuffer(5,AX); IndicatorShortName("Live"); return(INIT_SUCCEEDED); } 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[]) { indicator(); return(rates_total); } void indicator() { int counted_bars=IndicatorCounted(); //---- int limit,i; if(counted_bars>0) limit = 50; else limit = Bars; for(i=limit-intRSV-1;i>=0;i--) { double rsvLowest = Low[iLowest(NULL,0,MODE_LOW,intRSV,i)]; double rsvHighest = High[iHighest(NULL,0,MODE_HIGH,intRSV-1,i)]; RSV[i] = (((Close[i]+Open[i])/2 - rsvLowest)/(rsvHighest - rsvLowest))*100; X[i] = iMA(NULL,0,intX,0,MODE_EMA,PRICE_CLOSE,i); AX[i] = iMA(NULL,0,intAX,0,MODE_EMA,PRICE_CLOSE,i); } for(i=limit-intRSV-1;i>=0;i--) { K[i]=iMAOnArray(RSV,0,intK,0,MODE_SMMA,i); } for(i=limit-intRSV-1;i>=0;i--) { D[i]=iMAOnArray(K,0,intD,0,MODE_SMMA,i); } for(i=limit-intRSV-2;i>=0;i--) { if(D[i]AX[i]) { ObjectDelete("Live"+(string)(int)Time[i]); Object_TrendLine("Live","Live"+(string)(int)Time[i],Time[i],15,Time[i],0,Green,5); } if(X[i]