Angle of T3 – Convertir mq4 a Prorealtime

Forums ProRealTime foro Español Soporte ProBuilder Angle of T3 – Convertir mq4 a Prorealtime

Viewing 2 posts - 1 through 2 (of 2 total)
  • #53461
    Fr7

    Hola Nicolás, a ver si puede pasar este indicador a Prorealtime. Gracias

    //+——————————————————————+//| Angle of average.mq4 |//| mladen |//+——————————————————————+ #property indicator_separate_window#property indicator_buffers 6#property indicator_color1 Green#property indicator_color2 Red#property indicator_color3 DimGray#property indicator_color4 Green#property indicator_color5 Red#property indicator_color6 Red#property indicator_width1 2#property indicator_width2 2#property indicator_width4 2#property indicator_width5 2#property indicator_width6 2 ////////// extern int T3_Period = 34;extern double T3_Hot = 0.7; extern int T3_Price = PRICE_CLOSE;extern bool T3_Original = false;extern double AngleLevel = 5;extern int AngleBars = 6; ////////// double Buffer1[];double Buffer2[];double Buffer3[];double Buffer4[];double Buffer4da[];double Buffer4db[];double t3[];double slope[]; //+——————————————————————+//| |//+——————————————————————+////////// int init(){ IndicatorBuffers(8); SetIndexBuffer(0,Buffer1); SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(1,Buffer2); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(2,Buffer3); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(3,Buffer4); SetIndexBuffer(4,Buffer4da); SetIndexBuffer(5,Buffer4db); SetIndexBuffer(6,t3); SetIndexBuffer(7,slope); IndicatorShortName(“Angle of T3 (“+T3_Period+”,”+DoubleToStr(AngleLevel,2)+”,”+AngleBars+”)”); IndicatorDigits(2); return(0);} //+——————————————————————+//| |//+——————————————————————+////////// #define Pi 3.141592653589793238462643 ////////// int start(){ int countedBars = IndicatorCounted(); int limit, i; if(countedBars<0) return(-1); if(countedBars>0) countedBars–; limit = Bars-countedBars; // // // // // if (slope[limit]==-1) CleanPoint(limit,Buffer4da,Buffer4db); for(i=limit; i>=0; i–) { t3[i] = iT3(iMA(NULL,0,1,0,MODE_SMA,T3_Price,i),T3_Period,T3_Hot,T3_Original,i); double range = iATR(NULL,0,AngleBars*20,i); double angle = 0.00; double change=t3[i]-t3[i+AngleBars]; if (range != 0) angle = MathArctan(change/(range*AngleBars))*180.0/Pi; // // // // // Buffer1[i] = EMPTY_VALUE; Buffer2[i] = EMPTY_VALUE; Buffer3[i] = angle; Buffer4[i] = angle; slope[i] = slope[i+1]; if (angle > AngleLevel) { Buffer1[i] = angle; Buffer3[i] = EMPTY_VALUE;} if (angle < -AngleLevel) { Buffer2[i] = angle; Buffer3[i] = EMPTY_VALUE;} if (Buffer4[i]>Buffer4[i+1]) slope[i] = 1; if (Buffer4[i]<Buffer4[i+1]) slope[i] = -1; if (slope[i] == -1) PlotPoint(i,Buffer4da,Buffer4db,Buffer4); } return(0);} //——————————————————————////——————————————————————////////// double workT3[][6];double workT3Coeffs[][6];#define _period 0#define _c1 1#define _c2 2#define _c3 3#define _c4 4#define _alpha 5 ////////// double iT3(double price, double period, double hot, bool original, int i, int instanceNo=0){ if (ArrayRange(workT3,0) != Bars) ArrayResize(workT3,Bars); if (ArrayRange(workT3Coeffs,0) < (instanceNo+1)) ArrayResize(workT3Coeffs,instanceNo+1); if (workT3Coeffs[instanceNo][_period] != period) { workT3Coeffs[instanceNo][_period] = period; double a = hot; workT3Coeffs[instanceNo][_c1] = -a*a*a; workT3Coeffs[instanceNo][_c2] = 3*a*a+3*a*a*a; workT3Coeffs[instanceNo][_c3] = -6*a*a-3*a-3*a*a*a; workT3Coeffs[instanceNo][_c4] = 1+3*a+a*a*a+3*a*a; if (original) workT3Coeffs[instanceNo][_alpha] = 2.0/(1.0 + period); else workT3Coeffs[instanceNo][_alpha] = 2.0/(2.0 + (period-1.0)/2.0); } // // // // // int buffer = instanceNo*6; int r = Bars-i-1; if (r == 0) { workT3[r][0+buffer] = price; workT3[r][1+buffer] = price; workT3[r][2+buffer] = price; workT3[r][3+buffer] = price; workT3[r][4+buffer] = price; workT3[r][5+buffer] = price; } else { workT3[r][0+buffer] = workT3[r-1][0+buffer]+workT3Coeffs[instanceNo][_alpha]*(price -workT3[r-1][0+buffer]); workT3[r][1+buffer] = workT3[r-1][1+buffer]+workT3Coeffs[instanceNo][_alpha]*(workT3[r][0+buffer]-workT3[r-1][1+buffer]); workT3[r][2+buffer] = workT3[r-1][2+buffer]+workT3Coeffs[instanceNo][_alpha]*(workT3[r][1+buffer]-workT3[r-1][2+buffer]); workT3[r][3+buffer] = workT3[r-1][3+buffer]+workT3Coeffs[instanceNo][_alpha]*(workT3[r][2+buffer]-workT3[r-1][3+buffer]); workT3[r][4+buffer] = workT3[r-1][4+buffer]+workT3Coeffs[instanceNo][_alpha]*(workT3[r][3+buffer]-workT3[r-1][4+buffer]); workT3[r][5+buffer] = workT3[r-1][5+buffer]+workT3Coeffs[instanceNo][_alpha]*(workT3[r][4+buffer]-workT3[r-1][5+buffer]); } // // // // // return(workT3Coeffs[instanceNo][_c1]*workT3[r][5+buffer] + workT3Coeffs[instanceNo][_c2]*workT3[r][4+buffer] + workT3Coeffs[instanceNo][_c3]*workT3[r][3+buffer] + workT3Coeffs[instanceNo][_c4]*workT3[r][2+buffer]);} //——————————————————————-////——————————————————————-////////// void CleanPoint(int i,double& first[],double& second[]){ if ((second[i] != EMPTY_VALUE) && (second[i+1] != EMPTY_VALUE)) second[i+1] = EMPTY_VALUE; else if ((first[i] != EMPTY_VALUE) && (first[i+1] != EMPTY_VALUE) && (first[i+2] == EMPTY_VALUE)) first[i+1] = EMPTY_VALUE;} ////////// void PlotPoint(int i,double& first[],double& second[],double& from[]){ if (first[i+1] == EMPTY_VALUE) { if (first[i+2] == EMPTY_VALUE) { first[i] = from[i]; first[i+1] = from[i+1]; second[i] = EMPTY_VALUE; } else { second[i] = from[i]; second[i+1] = from[i+1]; first[i] = EMPTY_VALUE; } } else { first[i] = from[i]; second[i] = EMPTY_VALUE; }}

    #53679

    Agregue el nombre del indicador en el título del tema la próxima vez. Este indicador parece el mismo que este ya convertido:

    https://www.prorealcode.com/prorealtime-indicators/tma-slope/

Viewing 2 posts - 1 through 2 (of 2 total)

Create your free account now and post your request to benefit from the help of the community
Register or Login