Здравствуйте. Прошу доработать индикатор. Использую его на 5-ти знаке на М1. Индикатор считает тики по каждой свече.
С приходом новой свечки показания обнуляются. Показания индикатора сверху вниз:
колличество тиков вверх (a)
колличество тиков вниз (b)
сумма тиков вверх и вниз (a+b)
разность тиков вверх и вниз (a-b)
разность суммы и разности (a+b)-(a-b)
Просьба добавить шестой строкой деление разности тиков вверх и вниз на разность суммы и разности т.е. (a-b)/((a+b)-(a-b))
т.е. сверху вниз разделить показания четвёртой строчки на показания пятой. Код прилагаю:
//+------------------------------------------------------------------+
//| shetchik_tick.mq4 |
//| Copyright © 2012, FOX.RM |
//| fox.rm@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, FOX.RM"
#property link "http://www.niochem.net"
#property indicator_chart_window
bool New_Bar=false;
double old_price;
double count_plus=0,count_minus=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
Dell();
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start() {
Dell();
double price;
string name_11;
int i=0;
int limit;
double delta;
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
if(limit>0) limit=0;
for(i=limit; i>=0; i--)
{
if(old_price==0) old_price=Close[i];
price = Close[i];
delta = price - old_price;
//-- считаем "верхние" тики
if(delta>=0) {
count_plus++;
}
//-- считаем "нижние" тики
if(delta<0) {
count_minus++;
}
//----
old_price=price;
double a=(count_minus+count_plus);
double b=(count_plus-count_minus);
double d=(a-MathAbs(b));
//-- вешаем счетчик на график
name_11 = "shetchik_tick";
SetText1(name_11+"sell",DoubleToStr(count_minus,1),Blue,12);
SetText2(name_11+"bay",DoubleToStr(count_plus,1),Red,12);
SetText3(name_11+"col_bar",DoubleToStr(a,1),Green,12);
SetText4(name_11+"dif_bar",DoubleToStr(b,1),Yellow,12);
SetText5(name_11+"diff_bar",DoubleToStr(d,1),Brown,12);
}
if( NewBar()) {count_plus=0;count_minus=0;}
return(0);
}
//----
void Dell (string name_n = "shetchik_tick")
{
string vName;
for(int i=ObjectsTotal()-1; i>=0;i--)
{
vName = ObjectName(i);
if (StringFind(vName,name_n) !=-1) ObjectDelete(vName);
}
}
void SetText2(string name,string text, color c, int size) //-- функция для определения свойств метки и ее координат
{
ObjectCreate(name,OBJ_LABEL,0,0,0,0,0);
ObjectSet(name, OBJPROP_XDISTANCE, 1100);
ObjectSet(name, OBJPROP_YDISTANCE, 35);
ObjectSetText(name,text,15,"Arial Black",c);
}
void SetText1(string name,string text, color c, int size)
{
ObjectCreate(name,OBJ_LABEL,0,0,0,0,0);
ObjectSet(name, OBJPROP_XDISTANCE, 1100);
ObjectSet(name, OBJPROP_YDISTANCE, 60);
ObjectSetText(name,text,15,"Arial Black",c);
}
void SetText3(string name,string text, color c, int size)
{
ObjectCreate(name,OBJ_LABEL,0,0,0,0,0);
ObjectSet(name, OBJPROP_XDISTANCE, 1100);
ObjectSet(name, OBJPROP_YDISTANCE, 85);
ObjectSetText(name,text,15,"Arial Black",c);
}
void SetText4(string name,string text, color c, int size)
{
ObjectCreate(name,OBJ_LABEL,0,0,0,0,0);
ObjectSet(name, OBJPROP_XDISTANCE, 1100);
ObjectSet(name, OBJPROP_YDISTANCE, 110);
ObjectSetText(name,text,15,"Arial Black",c);
}
void SetText5(string name,string text, color c, int size)
{
ObjectCreate(name,OBJ_LABEL,0,0,0,0,0);
ObjectSet(name, OBJPROP_XDISTANCE, 1100);
ObjectSet(name, OBJPROP_YDISTANCE, 135);
ObjectSetText(name,text,15,"Arial Black",c);
}
void SetText6(string name,string text, color c, int size)
{
ObjectCreate(name,OBJ_LABEL,0,0,0,0,0);
ObjectSet(name, OBJPROP_XDISTANCE, 1100);
ObjectSet(name, OBJPROP_YDISTANCE, 160);
ObjectSetText(name,text,15,"Arial Black",c);
}
//----
void Fun_New_Bar() // Ф-ия обнаружения ..
{ // .. нового бара
static datetime New_Time=0; // Время текущего бара
New_Bar=false; // Нового бара нет
if(New_Time!=Time[0]) // Сравниваем время
{
New_Time=Time[0]; // Теперь время такое
New_Bar=true; // Поймался новый бар
}
}
//+------------------------------------------------------------------+
bool NewBar()
{
static datetime lastbar = 0;
datetime curbar = Time[0];
if(lastbar!=curbar)
{
lastbar=curbar;
return (true);
}
else
{
return(false);
}
}
Комментарии (2)
35 AM2 Сообщений: 16426 - Андрей
9 vikas Автор Сообщений: 113 - Алексей
Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий