/* Indicador de tiempo real basado en el concepto de la absorción de Pips No grafica ca datos históricos */ #property copyright "Copyright © 2012, carlessan." #property indicator_chart_window extern bool Mostrar_Barra_Absorcion= true; // representa el valor de la absorción en forma de barra extern bool Desglosar_resultado= false; // Desglosa el valor de la absorción observando el valor de pips de compra y pips de venta (es recomendable reducir la fuente de texto al máximo) extern int Distancia_Low1= 10; // Distancia a partir del Low de la barra donde se mostrará el dato de la absorción extern int Distancia_Low2= 15; // Distancia a partir del Low de la barra donde se mostrará el número de pips entre open y close extern int Simbolo_Barra= 2; // Símbolo_Barra=1: "guión" (para TF altos) , símbolo=2: "cuadrado" (para TF bajos) extern double Offset_Simbolo= 0.4; // Distancia entre los simbolos de la barra, se debe variar si se cambia de simbolo hasta darle el aspecto deseado. // Simbolo:1 recomendado Offset_Simbolo: 1, Simbolo:2 recomendado Offset_Simbolo 0.4 extern int Fuente= 7; // Tamaño de la fuente de texto extern bool Mostrar_Comentario= true; // Muestra el comentario de la parte superior izquierda del gráfico string Str0="Absorción_v1\n-----------------------------\n"; string Str1=""; string Str2=""; string Str3=""; string Str4=""; int m; int init() { GlobalVariableSet("Buy",0); GlobalVariableSet("Sell",0); GlobalVariableSet("Poc",Open[0]); // Precio en el Punto de control GlobalVariableSet("Barras",Bars); return(0); } int deinit() { ObjectsDeleteAll(0, OBJ_TEXT); return(0); } int start() { int shift; int pips2points; double pips2dbl; if(Bars > GlobalVariableGet("Barras")) { GlobalVariableSet("Barras",Bars); GlobalVariableSet("Sell",0); GlobalVariableSet("Buy",0); } if (Digits == 5 || Digits == 3) { pips2dbl = Point*10; pips2points = 10; m=10000; } else { pips2dbl = Point; pips2points = 1; } //Capturamos valores para las variables globales if(Close[0]> GlobalVariableGet("Poc") ) { if(Close[0] - GlobalVariableGet("Poc") >= 1*pips2dbl) { //GlobalVariableSet("Buy",GlobalVariableGet("Buy")+1); GlobalVariableSet("Buy",GlobalVariableGet("Buy")+(Close[0] - GlobalVariableGet("Poc"))); GlobalVariableSet("Poc", Close[0]); } } else { if(Close[0] < GlobalVariableGet("Poc") ) { if(GlobalVariableGet("Poc") - Close[0] >= 1*pips2dbl) { //GlobalVariableSet("Sell",GlobalVariableGet("Sell")+1); GlobalVariableSet("Sell",GlobalVariableGet("Sell")+(GlobalVariableGet("Poc") - Close[0])); GlobalVariableSet("Poc", Close[0]); } } } Str1="Pips_Sell: "+DoubleToStr(GlobalVariableGet("Sell")*m,1)+"\n"; Str2="Pips_Buy: "+DoubleToStr(GlobalVariableGet("Buy")*m,1)+"\n"; Str3="Bid: "+DoubleToStr(Close[0],Digits)+"\n"; Str4="P.Control: "+DoubleToStr(GlobalVariableGet("Poc"),Digits)+"\n"; if(shift == 0) { if (shift == 0) { // Graficamos el valor de la absorción neto o desglosado if(ObjectFind(GetName("Pips",shift)) == -1) { ObjectCreate(GetName("Pips",shift), OBJ_TEXT, 0, Time[shift], Low[shift] - Distancia_Low1*Point*10); if(Desglosar_resultado) { ObjectSetText(GetName("Pips",shift), DoubleToStr(GlobalVariableGet("Buy")*m,1)+"/"+DoubleToStr(GlobalVariableGet("Sell")*m,1), Fuente, "Verdana", White); } else { if(GlobalVariableGet("Buy")*m <=GlobalVariableGet("Sell")*m) { ObjectSetText(GetName("Pips",shift), DoubleToStr(MathAbs(GlobalVariableGet("Buy")*m),1), Fuente, "Verdana", White); if(Mostrar_Barra_Absorcion)Grafica_Barra(shift,MathAbs(GlobalVariableGet("Buy")*m)); } else { ObjectSetText(GetName("Pips",shift), DoubleToStr(MathAbs(GlobalVariableGet("Sell")*m),1), Fuente, "Verdana", White); if(Mostrar_Barra_Absorcion)Grafica_Barra(shift,MathAbs(GlobalVariableGet("Sell")*m)); } } } else { ObjectMove(GetName("Pips",shift), 0, Time[shift], Low[shift] - Distancia_Low1*Point*10); if(Desglosar_resultado) { ObjectSetText(GetName("Pips",shift), DoubleToStr(GlobalVariableGet("Buy")*m,1)+"/"+DoubleToStr(GlobalVariableGet("Sell")*m,1) , Fuente, "Verdana", White); } else { if(GlobalVariableGet("Buy")*m <=GlobalVariableGet("Sell")*m) { ObjectSetText(GetName("Pips",shift), DoubleToStr(MathAbs(GlobalVariableGet("Buy")*m),1), Fuente, "Verdana", White); if(Mostrar_Barra_Absorcion)Grafica_Barra(shift,MathAbs(GlobalVariableGet("Buy")*m)); } else { ObjectSetText(GetName("Pips",shift), DoubleToStr(MathAbs(GlobalVariableGet("Sell")*m),1), Fuente, "Verdana", White); if(Mostrar_Barra_Absorcion)Grafica_Barra(shift,MathAbs(GlobalVariableGet("Sell")*m)); } } } // Graficamos el numero de pips entre Open y close if(ObjectFind(GetName("Rango",shift)) == -1) { ObjectCreate(GetName("Rango",shift), OBJ_TEXT, 0, Time[shift], Low[shift] - Distancia_Low2*Point*10); ObjectSetText(GetName("Rango",shift), DoubleToStr((Close[0]-Open[0])*m,1), Fuente, "Verdana", Aqua); } else { ObjectMove(GetName("Rango",shift), 0, Time[shift], Low[shift] - Distancia_Low2*Point*10); ObjectSetText(GetName("Rango",shift), DoubleToStr((Close[0]-Open[0])*m,1) , Fuente, "Verdana", Aqua); } } } if(Mostrar_Comentario)Comment(Str0+Str1+Str2+Str3+Str4); return(0); } //+------------------------------------------------------------------+ string GetName(string Nom,int shift) { return(Nom+DoubleToStr(Time[shift],0)); } string GetName2(string Nom,int shift, int obj) { return(Nom+DoubleToStr(Time[shift]+obj,0)); } void Grafica_Barra(int shift, double abs) { double offset=0; double obj=MathRound(abs); int obj_total=ObjectsTotal(); string nombre; string Naux; for(int i=0;i