Light Style© by Fisana

Перейти к содержимому


РАММ сервис NordFx: копируй сделки лучших трейдеров форекс


NordFX

Фотография

Создание индикаторов


  • Пожалуйста, авторизуйтесь, чтобы ответить
159 ответов в этой теме

#91 DAVINCHI

DAVINCHI

    живет тут

  • Пользователь
  • PipPipPipPipPip
  • 370 сообщений

Опубликовано 24 August 2008 - 08:00 PM

Доброго времени суток. Не могу ничего найти по созданию индикаторов в метастоке, может, подскажете какую веточку...

#92 Sasha83

Sasha83

    пробегал

  • Пользователи
  • Pip
  • 2 сообщений

Опубликовано 20 November 2008 - 01:59 PM

Доброго времени суток!!!
Умные люди помогите! Оч. нужен индюк показувающий угол наклона (в градусах) МА к горизонтали.
Или подскажите с кодом плиз

#93 oskar1

oskar1

    пробегал

  • Пользователи
  • Pip
  • 6 сообщений

Опубликовано 22 November 2008 - 08:59 AM

Здравствуйте программеры, есть индюк основанный на тиках он сделан по моей стратегии скальпера, нужна отфильтровка сигналов. Вот условие которое нужно добавить в код.

Индикатор тиковый.

Можно ли добавить дополнительное условие для сигнала алерта??? А то индюк подает сигналы, большая часть не правильная, я бы хотел отфильтровать их, вот таким условием.

Условие такое - это повторяющийся одинаковый уровень цены допустим 150,00 три раза был такой уровень в промежутке последних 10 секунд.

И тоже вывести во внешние переменные, для этого условия.

Y= 3; // сколько раз был уровень одинаковый в промежутке t 2
t 2=10; // промежуток времени для Y

Если это не возможно, все равно спасибо тому кто откликнется.

#property indicator_chart_window


extern int taim=120;//ceк запоминать данные
extern int S=30;//пп пройденное расстояние в промежутке t

double TiksBase[]; // Массив цен
int gTimeLeft;
// -- добовляем тик в базу

int fAddTiks(int TimeLeft)
{

for (int e=ArraySize(TiksBase)-1;e>TimeLeft;e--)
{
TiksBase[e]=TiksBase[e-1];
}
for (int s=0;s<TimeLeft;s++)
{
TiksBase[s]=Bid;
}

}
// -- получаем разницу за промежуток

int fdCost()
{
int MIN=ArrayMinimum(TiksBase);
int MAX=ArrayMaximum(TiksBase);

if (TiksBase[MIN]!=EMPTY_VALUE && TiksBase[MAX]!=EMPTY_VALUE )
{

if (MIN<MAX){return( ((TiksBase[MAX]-TiksBase[MIN])/Point)*(-1) );}
if (MIN>MAX){return( ((TiksBase[MAX]-TiksBase[MIN])/Point) );}
}
return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators

ArrayResize(TiksBase,taim);
ArrayInitialize(TiksBase,EMPTY_VALUE);
gTimeLeft=TimeLocal();
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{

// -- дбовляем тик в базу
fAddTiks((TimeLocal()-gTimeLeft));


gTimeLeft=TimeLocal();


if (MathAbs(fdCost())>S)
{
if (fdCost()>0){Alert("Sell импульс",MathAbs(fdCost()),"пипс от",TiksBase[ArrayMinimum(TiksBase)]," до ",Bid);}
if (fdCost()<0){Alert("Buy импульс",MathAbs(fdCost()),"пипс от",TiksBase[ArrayMaximum(TiksBase)]," до ",Ask);}
ArrayInitialize(TiksBase,EMPTY_VALUE);
}


//----
return(0);
}
//+------------------------------------------------------------------+


#94 gladius

gladius

    пробегал

  • Пользователи
  • Pip
  • 5 сообщений

Опубликовано 10 December 2008 - 11:54 AM

Здравствуйте! Скажите, пожалуйста, как установить готовый индикатор Pivot Points в МТ-4?

Сообщение изменено: gladius, 10 December 2008 - 12:01 PM.


#95 evdokimov

evdokimov

    записался

  • Пользователи ST test (off)
  • PipPip
  • 21 сообщений

Опубликовано 23 January 2009 - 11:26 AM

Я удивлён, что никто не задал вопроса! Никто не учится здесь и сейчас? Если есть те, кто хочет научиться, то пусть скажут мне одну не очень приятную особенность написанного нами индикатора....
Жду ещё 1 день.

Liv спасибо за ветку, очень полезная. Немогбы ты выложить готовый индюк сидуса, а то у меня не дет, хочу сравнить и найти свои ошибки.
Ни одна ситуация не повторяется, и каждая требует нового решения.
Виктор Франкл

#96 andresme

andresme

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 390 сообщений

Опубликовано 23 January 2009 - 11:37 AM

Здравствуйте! Скажите, пожалуйста, как установить готовый индикатор Pivot Points в МТ-4?



скопировать в папку experts/indicators, открыть через MetaEditor,скомпилировать,перезагрузить терминал

#97 Сергей Михеев

Сергей Михеев

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 741 сообщений

Опубликовано 04 February 2009 - 09:37 PM

Просьба к умельцам. Помогите изменить скиптр (так что бы он не рисовал линий, а только значение волн)//+------------------------------------------------------------------+
//| s_WaveMarker_CreateNew.mq4 |
//| * |
//| * |
//+------------------------------------------------------------------+
#property copyright "Integer"
#property link "for-good-letters@yandex.ru"
//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
int start()
{
color txtCol = Teal; // цвет надписей
color lnCol = Gray // цвет линий
//----
int zx;
switch(Period())
{
case 1: zx = 5; break;
case 5: zx = 10; break;
case 15: zx = 15; break;
case 30: zx = 20; break;
case 60: zx = 25; break;
case 240: zx = 30; break;
case 1440: zx = 35; break;
case 10080: zx = 150; break;
case 43200: zx = 250; break;
default: zx = 15;


}
int k;
int IndList[];
double TxtX[][9];
double TxtY[][9];
ArrayResize(IndList, 0);
ArrayResize(TxtX, 0);
ArrayResize(TxtY, 0);
while(!IsStopped())
{
bool Fnd = false;
for(int i = 0; i < ObjectsTotal(); i++)
{
if(StringFind(ObjectName(i), "WM(" + k + ")_", 0) == 0)
{
Fnd = true;
ArrayResize(IndList, ArraySize(IndList) + 1);
IndList[ArraySize(IndList)-1] = k;
ArrayResize(TxtX,ArraySize(TxtX) / 9 + 1);
TxtX[ArraySize(TxtX)/9-1][0] = ObjectGet("WM(" + k + ")_" +
"T_0", OBJPROP_TIME1);
TxtX[ArraySize(TxtX)/9-1][0] = ObjectGet("WM(" + k + ")_" +
"T_1", OBJPROP_TIME1);
TxtX[ArraySize(TxtX)/9-1][1] = ObjectGet("WM(" + k + ")_" +
"T_2", OBJPROP_TIME1);
TxtX[ArraySize(TxtX)/9-1][2] = ObjectGet("WM(" + k + ")_" +
"T_3", OBJPROP_TIME1);
TxtX[ArraySize(TxtX)/9-1][3] = ObjectGet("WM(" + k + ")_" +
"T_4", OBJPROP_TIME1);
TxtX[ArraySize(TxtX)/9-1][4] = ObjectGet("WM(" + k + ")_" +
"T_5", OBJPROP_TIME1);
TxtX[ArraySize(TxtX)/9-1][5] = ObjectGet("WM(" + k + ")_" +
"T_A", OBJPROP_TIME1);
TxtX[ArraySize(TxtX)/9-1][6] = ObjectGet("WM(" + k + ")_" +
"T_B", OBJPROP_TIME1);
TxtX[ArraySize(TxtX)/9-1][7] = ObjectGet("WM(" + k + ")_" +
"T_C", OBJPROP_TIME1);
ArrayResize(TxtY, ArraySize(TxtY) / 9 + 1);
TxtY[ArraySize(TxtY)/9-1][0] = ObjectGet("WM(" + k + ")_" +
"T_0", OBJPROP_PRICE1);
TxtY[ArraySize(TxtY)/9-1][0] = ObjectGet("WM(" + k + ")_" +
"T_1", OBJPROP_PRICE1);
TxtY[ArraySize(TxtY)/9-1][1] = ObjectGet("WM(" + k + ")_" +
"T_2", OBJPROP_PRICE1);
TxtY[ArraySize(TxtY)/9-1][2] = ObjectGet("WM(" + k + ")_" +
"T_3", OBJPROP_PRICE1);
TxtY[ArraySize(TxtY)/9-1][3] = ObjectGet("WM(" + k + ")_" +
"T_4", OBJPROP_PRICE1);
TxtY[ArraySize(TxtY)/9-1][4] = ObjectGet("WM(" + k + ")_" +
"T_5", OBJPROP_PRICE1);
TxtY[ArraySize(TxtY)/9-1][5] = ObjectGet("WM(" + k + ")_" +
"T_A", OBJPROP_PRICE1);
TxtY[ArraySize(TxtY)/9-1][6] = ObjectGet("WM(" + k + ")_" +
"T_B", OBJPROP_PRICE1);
TxtY[ArraySize(TxtY)/9-1][7] = ObjectGet("WM(" + k + ")_" +
"T_C", OBJPROP_PRICE1);
break;
}
}
if(!Fnd)
{
ArrayResize(IndList, ArraySize(IndList) + 1);
IndList[ArraySize(IndList) - 1] = k;
break;
}
k++;
}
int fb = FirstVisibleBar() - 5;
while(!IsStopped())
{
if(ObjectFind("WM(" + k + ")_" + "T_0") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_0", OBJ_TEXT, 0, MyTime(fb),
Close[fb] + zx*Point);
ObjectSetText("WM(" + k + ")_" + "T_0", "0", 8, "Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_1") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_1", OBJ_TEXT, 0, MyTime(fb - 5),
Close[fb] + zx*Point);
ObjectSetText("WM(" + k + ")_" + "T_1", "1", 8, "Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_2") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_2", OBJ_TEXT, 0, MyTime(fb - 10),
Close[fb]+zx*Point);
ObjectSetText("WM(" + k + ")_" + "T_2", "2", 8, "Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_3") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_3", OBJ_TEXT, 0, MyTime(fb - 15),
Close[fb] + zx*Point);
ObjectSetText("WM(" + k + ")_" + "T_3", "3", 8, "Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_4") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_4", OBJ_TEXT, 0, MyTime(fb - 20),
Close[fb] + zx*Point);
ObjectSetText("WM(" + k + ")_" + "T_4", "4", 8, "Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_5") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_5", OBJ_TEXT, 0, MyTime(fb - 25),
Close[fb] + zx*Point);
ObjectSetText("WM(" + k + ")_" + "T_5", "5", 8, "Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_A") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_A", OBJ_TEXT, 0, MyTime(fb - 30),
Close[fb] + zx*Point);
ObjectSetText("WM(" + k + ")_" + "T_A", "A", 8, "Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_B") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_B", OBJ_TEXT, 0, MyTime(fb - 35),
Close[fb] + zx*Point);
ObjectSetText("WM(" + k + ")_" + "T_B", "B", 8, "Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_C") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_C", OBJ_TEXT, 0, MyTime(fb - 40),
Close[fb] + zx*Point);
ObjectSetText("WM(" + k + ")_" + "T_C", "C", 8, "Arial", txtCol);
}
for(int j = 0; j < ArraySize(IndList); j++)
{
k = IndList[j];
if(j < ArraySize(IndList) - 1)
{
if(ObjectFind("WM(" + k + ")_" + "T_0") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_0", OBJ_TEXT,
0, TxtX[j][0], TxtY[j][0]);
ObjectSetText("WM(" + k + ")_" + "T_0", "0", 8,
"Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_1") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_1", OBJ_TEXT,
0, TxtX[j][1], TxtY[j][1]);
ObjectSetText("WM(" + k + ")_" + "T_1", "1", 8,
"Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_2") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_2", OBJ_TEXT,
0, TxtX[j][2], TxtY[j][2]);
ObjectSetText("WM(" + k + ")_" + "T_2", "2", 8,
"Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_3") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_3", OBJ_TEXT,
0, TxtX[j][3], TxtY[j][3]);
ObjectSetText("WM(" + k + ")_" + "T_3", "3", 8,
"Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_4") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_4", OBJ_TEXT,
0, TxtX[j][4], TxtY[j][4]);
ObjectSetText("WM(" + k + ")_" + "T_4", "4", 8,
"Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_5") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_5", OBJ_TEXT,
0, TxtX[j][5], TxtY[j][5]);
ObjectSetText("WM(" + k + ")_" + "T_5", "5", 8,
"Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_A") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_A", OBJ_TEXT,
0, TxtX[j][6], TxtY[j][6]);
ObjectSetText("WM(" + k + ")_" + "T_A", "A", 8,
"Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_B") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_B", OBJ_TEXT,
0, TxtX[j][7], TxtY[j][7]);
ObjectSetText("WM(" + k + ")_" + "T_B", "B", 8,
"Arial", txtCol);
}
if(ObjectFind("WM(" + k + ")_" + "T_C") != 0)
{
ObjectCreate("WM(" + k + ")_" + "T_C", OBJ_TEXT,
0, TxtX[j][8], TxtY[j][8]);
ObjectSetText("WM(" + k + ")_" + "T_C", "C", 8,
"Arial", txtCol);
}
TxtX[j][0]=ObjectGet("WM("+k+")_"+"T_0",OBJPROP_TIME1);
TxtX[j][1]=ObjectGet("WM("+k+")_"+"T_1",OBJPROP_TIME1);
TxtX[j][2]=ObjectGet("WM("+k+")_"+"T_2",OBJPROP_TIME1);
TxtX[j][3]=ObjectGet("WM("+k+")_"+"T_3",OBJPROP_TIME1);
TxtX[j][4]=ObjectGet("WM("+k+")_"+"T_4",OBJPROP_TIME1);
TxtX[j][5]=ObjectGet("WM("+k+")_"+"T_5",OBJPROP_TIME1);
TxtX[j][6]=ObjectGet("WM("+k+")_"+"T_A",OBJPROP_TIME1);
TxtX[j][7]=ObjectGet("WM("+k+")_"+"T_B",OBJPROP_TIME1);
TxtX[j][8]=ObjectGet("WM("+k+")_"+"T_C",OBJPROP_TIME1);
TxtY[j][0]=ObjectGet("WM("+k+")_"+"T_0",OBJPROP_PRICE1);
TxtY[j][1]=ObjectGet("WM("+k+")_"+"T_1",OBJPROP_PRICE1);
TxtY[j][2]=ObjectGet("WM("+k+")_"+"T_2",OBJPROP_PRICE1);
TxtY[j][3]=ObjectGet("WM("+k+")_"+"T_3",OBJPROP_PRICE1);
TxtY[j][4]=ObjectGet("WM("+k+")_"+"T_4",OBJPROP_PRICE1);
TxtY[j][5]=ObjectGet("WM("+k+")_"+"T_5",OBJPROP_PRICE1);
TxtY[j][6]=ObjectGet("WM("+k+")_"+"T_A",OBJPROP_PRICE1);
TxtY[j][7]=ObjectGet("WM("+k+")_"+"T_B",OBJPROP_PRICE1);
TxtY[j][8]=ObjectGet("WM("+k+")_"+"T_C",OBJPROP_PRICE1);
}
int l_1_x1 = ObjectGet("WM("+ k + ")_" + "T_0", OBJPROP_TIME1);
int l_1_x2 = ObjectGet("WM(" + k + ")_" + "T_1", OBJPROP_TIME1);
double l_1_y1 = ObjectGet("WM(" + k + ")_" + "T_0", OBJPROP_PRICE1) +
Point*zx;
double l_1_y2 = ObjectGet("WM(" + k + ")_" + "T_1",OBJPROP_PRICE1) +
Point*zx;
if(l_1_y1 < l_1_y2)
{
if(l_1_x1 <= Time[0])
l_1_y1 = Low[iBarShift(NULL, 0, l_1_x1, false)];
if(l_1_x2 <= Time[0])
l_1_y2 = High[iBarShift(NULL, 0, l_1_x2, false)];
}
if(l_1_y1 > l_1_y2)
{
if(l_1_x1 <= Time[0])
l_1_y1 = High[iBarShift(NULL, 0, l_1_x1, false)];
if(l_1_x2 <= Time[0])
l_1_y2 = Low[iBarShift(NULL, 0, l_1_x2, false)];
}
int l_2_x1 = ObjectGet("WM(" + k + ")_" + "T_1", OBJPROP_TIME1);
int l_2_x2 = ObjectGet("WM(" + k + ")_" + "T_2", OBJPROP_TIME1);
double l_2_y1 = ObjectGet("WM(" + k + ")_" + "T_1", OBJPROP_PRICE1) +
Point*zx;
double l_2_y2 = ObjectGet("WM(" + k + ")_" + "T_2", OBJPROP_PRICE1) +
Point*zx;
if(l_2_y1 < l_2_y2)
{
if(l_2_x1 <= Time[0])
l_2_y1 = Low[iBarShift(NULL, 0, l_2_x1, false)];
if(l_2_x2 <= Time[0])
l_2_y2 = High[iBarShift(NULL, 0, l_2_x2, false)];
}
if(l_2_y1 > l_2_y2)
{
if(l_2_x1 <= Time[0])
l_2_y1 = High[iBarShift(NULL, 0, l_2_x1, false)];
if(l_2_x2 <= Time[0])
l_2_y2 = Low[iBarShift(NULL, 0, l_2_x2, false)];
}
int l_3_x1 = ObjectGet("WM(" + k + ")_" + "T_2", OBJPROP_TIME1);
int l_3_x2 = ObjectGet("WM(" + k + ")_" + "T_3", OBJPROP_TIME1);
double l_3_y1 = ObjectGet("WM(" + k + ")_" + "T_2", OBJPROP_PRICE1) +
Point*zx;
double l_3_y2 = ObjectGet("WM(" + k + ")_" + "T_3", OBJPROP_PRICE1) +
Point*zx;
if(l_3_y1 < l_3_y2)
{
if(l_3_x1 <= Time[0])
l_3_y1 = Low[iBarShift(NULL, 0, l_3_x1, false)];
if(l_3_x2 <= Time[0])
l_3_y2 = High[iBarShift(NULL, 0,l_3_x2, false)];
}
if(l_3_y1>l_3_y2)
{
if(l_3_x1 <= Time[0])
l_3_y1 = High[iBarShift(NULL, 0, l_3_x1, false)];
if(l_3_x2 <= Time[0])
l_3_y2 = Low[iBarShift(NULL, 0, l_3_x2, false)];
}
int l_4_x1 = ObjectGet("WM(" + k + ")_"+"T_3",OBJPROP_TIME1);
int l_4_x2 = ObjectGet("WM(" + k + ")_"+"T_4",OBJPROP_TIME1);
double l_4_y1 = ObjectGet("WM(" + k + ")_" + "T_3", OBJPROP_PRICE1) +
Point*zx;
double l_4_y2 = ObjectGet("WM(" + k + ")_" + "T_4", OBJPROP_PRICE1) +
Point*zx;
if(l_4_y1 < l_4_y2)
{
if(l_4_x1 <= Time[0])
l_4_y1 = Low[iBarShift(NULL, 0, l_4_x1, false)];
if(l_4_x2 <= Time[0])
l_4_y2 = High[iBarShift(NULL, 0, l_4_x2, false)];
}
if(l_4_y1 > l_4_y2)
{
if(l_4_x1 <= Time[0])
l_4_y1 = High[iBarShift(NULL, 0, l_4_x1, false)];
if(l_4_x2 <= Time[0])
l_4_y2=Low[iBarShift(NULL, 0, l_4_x2, false)];
}
int l_5_x1 = ObjectGet("WM(" + k + ")_" + "T_4", OBJPROP_TIME1);
int l_5_x2 = ObjectGet("WM(" + k + ")_" + "T_5", OBJPROP_TIME1);
double l_5_y1 = ObjectGet("WM(" + k + ")_" + "T_4", OBJPROP_PRICE1) +
Point*zx;
double l_5_y2 = ObjectGet("WM(" + k + ")_" + "T_5", OBJPROP_PRICE1) +
Point*zx;
if(l_5_y1 < l_5_y2)
{
if(l_5_x1 <= Time[0])
l_5_y1 = Low[iBarShift(NULL, 0, l_5_x1, false)];
if(l_5_x2 <= Time[0])
l_5_y2 = High[iBarShift(NULL, 0, l_5_x2, false)];
}
if(l_5_y1 > l_5_y2)
{
if(l_5_x1 <= Time[0])
l_5_y1 = High[iBarShift(NULL, 0, l_5_x1, false)];
if(l_5_x2 <= Time[0])
l_5_y2 = Low[iBarShift(NULL, 0, l_5_x2, false)];
}
int l_6_x1 = ObjectGet("WM(" + k + ")_" + "T_5", OBJPROP_TIME1);
int l_6_x2 = ObjectGet("WM(" + k + ")_" + "T_A", OBJPROP_TIME1);
double l_6_y1=ObjectGet("WM(" + k + ")_" + "T_5", OBJPROP_PRICE1) +
Point*zx;
double l_6_y2=ObjectGet("WM(" + k + ")_" + "T_A", OBJPROP_PRICE1) +
Point*zx;
if(l_6_y1 < l_6_y2)
{
if(l_6_x1 <= Time[0])
l_6_y1 = Low[iBarShift(NULL, 0, l_6_x1, false)];
if(l_6_x2 <= Time[0])
l_6_y2 = High[iBarShift(NULL, 0, l_6_x2, false)];
}
if(l_6_y1 > l_6_y2)
{
if(l_6_x1 <= Time[0])
l_6_y1 = High[iBarShift(NULL, 0, l_6_x1, false)];
if(l_6_x2 <= Time[0])
l_6_y2 = Low[iBarShift(NULL, 0, l_6_x2, false)];
}
int l_7_x1 = ObjectGet("WM(" + k + ")_" + "T_A", OBJPROP_TIME1);
int l_7_x2 = ObjectGet("WM(" + k + ")_" + "T_B", OBJPROP_TIME1);
double l_7_y1 = ObjectGet("WM(" + k + ")_" + "T_A", OBJPROP_PRICE1) +
Point*zx;
double l_7_y2 = ObjectGet("WM(" + k + ")_" + "T_B", OBJPROP_PRICE1) +
Point*zx;
if(l_7_y1 < l_7_y2)
{
if(l_7_x1 <= Time[0])
l_7_y1 = Low[iBarShift(NULL, 0, l_7_x1, false)];
if(l_7_x2 <= Time[0])
l_7_y2 = High[iBarShift(NULL, 0, l_7_x2, false)];
}
if(l_7_y1 > l_7_y2)
{
if(l_7_x1 <= Time[0])
l_7_y1 = High[iBarShift(NULL, 0, l_7_x1, false)];
if(l_7_x2 <= Time[0])
l_7_y2 = Low[iBarShift(NULL, 0, l_7_x2, false)];
}
int l_8_x1 = ObjectGet("WM(" + k + ")_" + "T_B", OBJPROP_TIME1);
int l_8_x2 = ObjectGet("WM(" + k + ")_" + "T_C", OBJPROP_TIME1);
double l_8_y1 = ObjectGet("WM(" + k + ")_" + "T_B", OBJPROP_PRICE1) +
Point*zx;
double l_8_y2 = ObjectGet("WM(" + k + ")_" + "T_C", OBJPROP_PRICE1) +
Point*zx;
if(l_8_y1 < l_8_y2)
{
if(l_8_x1 <= Time[0])
l_8_y1 = Low[iBarShift(NULL, 0, l_8_x1, false)];
if(l_8_x2 <= Time[0])
l_8_y2 = High[iBarShift(NULL, 0, l_8_x2, false)];
}
if(l_8_y1 > l_8_y2)
{
if(l_8_x1 <= Time[0])
l_8_y1 = High[iBarShift(NULL, 0, l_8_x1, false)];
if(l_8_x2 <= Time[0])
l_8_y2 = Low[iBarShift(NULL, 0, l_8_x2, false)];
}
if(ObjectFind("WM(" + k + ")_" + "L_1") != 0)
{
ObjectCreate("WM(" + k + ")_" + "L_1", OBJ_TREND, 0,
l_1_x1, l_1_y1, l_1_x2, l_1_y2);
}
ObjectSet("WM(" + k + ")_" + "L_1", OBJPROP_TIME1, l_1_x1);
ObjectSet("WM(" + k + ")_" + "L_1", OBJPROP_PRICE1, l_1_y1);
ObjectSet("WM(" + k + ")_" + "L_1", OBJPROP_TIME2, l_1_x2);
ObjectSet("WM(" + k + ")_" + "L_1", OBJPROP_PRICE2, l_1_y2);
ObjectSet("WM(" + k + ")_" + "L_1", OBJPROP_COLOR, lnCol);
ObjectSet("WM(" + k + ")_" + "L_1", OBJPROP_RAY, false);
if(ObjectFind("WM(" + k + ")_" + "L_2") != 0)
{
ObjectCreate("WM(" + k + ")_" + "L_2", OBJ_TREND, 0,
l_2_x1, l_2_y1, l_2_x2, l_2_y2);
}
ObjectSet("WM(" + k + ")_" + "L_2", OBJPROP_TIME1, l_2_x1);
ObjectSet("WM(" + k + ")_" + "L_2", OBJPROP_TIME2, l_2_x2);
ObjectSet("WM(" + k + ")_" + "L_2", OBJPROP_PRICE1, l_2_y1);
ObjectSet("WM(" + k + ")_" + "L_2", OBJPROP_PRICE2, l_2_y2);
ObjectSet("WM(" + k + ")_" + "L_2", OBJPROP_COLOR, lnCol);
ObjectSet("WM(" + k + ")_" + "L_2", OBJPROP_RAY, false);
if(ObjectFind("WM(" + k + ")_" + "L_3") != 0)
{
ObjectCreate("WM(" + k + ")_" + "L_3", OBJ_TREND, 0,
l_3_x1, l_3_y1, l_3_x2, l_3_y2);
}
ObjectSet("WM(" + k + ")_" + "L_3", OBJPROP_TIME1, l_3_x1);
ObjectSet("WM(" + k + ")_" + "L_3", OBJPROP_TIME2, l_3_x2);
ObjectSet("WM(" + k + ")_" + "L_3", OBJPROP_PRICE1, l_3_y1);
ObjectSet("WM(" + k + ")_" + "L_3", OBJPROP_PRICE2, l_3_y2);
ObjectSet("WM(" + k + ")_" + "L_3", OBJPROP_COLOR, lnCol);
ObjectSet("WM(" +k + ")_" + "L_3", OBJPROP_RAY, false);
if(ObjectFind("WM(" + k + ")_" + "L_4") != 0)
{
ObjectCreate("WM(" + k + ")_" + "L_4", OBJ_TREND, 0,
l_4_x1, l_4_y1, l_4_x2, l_4_y2);
}
ObjectSet("WM(" + k + ")_" + "L_4", OBJPROP_TIME1, l_4_x1);
ObjectSet("WM(" + k + ")_" + "L_4", OBJPROP_TIME2, l_4_x2);
ObjectSet("WM(" + k + ")_" + "L_4", OBJPROP_PRICE1, l_4_y1);
ObjectSet("WM(" + k + ")_" + "L_4", OBJPROP_PRICE2, l_4_y2);
ObjectSet("WM(" + k + ")_" + "L_4", OBJPROP_COLOR, lnCol);
ObjectSet("WM(" + k + ")_" + "L_4", OBJPROP_RAY, false);
if(ObjectFind("WM(" + k + ")_" + "L_5") != 0)
{
ObjectCreate("WM(" + k + ")_" + "L_5", OBJ_TREND, 0,
l_5_x1, l_5_y1, l_5_x2, l_5_y2);
}
ObjectSet("WM(" + k + ")_" + "L_5", OBJPROP_TIME1, l_5_x1);
ObjectSet("WM(" + k + ")_" + "L_5", OBJPROP_TIME2, l_5_x2);
ObjectSet("WM(" + k + ")_" + "L_5", OBJPROP_PRICE1, l_5_y1);
ObjectSet("WM(" + k + ")_" + "L_5", OBJPROP_PRICE2, l_5_y2);
ObjectSet("WM(" + k + ")_" + "L_5", OBJPROP_COLOR, lnCol);
ObjectSet("WM(" + k + ")_" + "L_5", OBJPROP_RAY, false);
if(ObjectFind("WM(" + k + ")_" + "L_6") != 0)
{
ObjectCreate("WM(" + k + ")_" + "L_6", OBJ_TREND, 0,
l_6_x1, l_6_y1, l_6_x2, l_6_y2);
}
ObjectSet("WM(" + k + ")_" + "L_6", OBJPROP_TIME1, l_6_x1);
ObjectSet("WM(" + k + ")_" + "L_6", OBJPROP_TIME2, l_6_x2);
ObjectSet("WM(" + k + ")_" + "L_6", OBJPROP_PRICE1, l_6_y1);
ObjectSet("WM(" + k + ")_" + "L_6", OBJPROP_PRICE2, l_6_y2);
ObjectSet("WM(" + k + ")_" + "L_6", OBJPROP_COLOR, lnCol);
ObjectSet("WM(" + k + ")_" + "L_6", OBJPROP_RAY, false);
if(ObjectFind("WM(" + k + ")_" + "L_7") != 0)
{
ObjectCreate("WM(" + k + ")_" + "L_7", OBJ_TREND, 0,
l_7_x1, l_7_y1, l_7_x2, l_7_y2);
}
ObjectSet("WM(" + k + ")_" + "L_7", OBJPROP_TIME1, l_7_x1);
ObjectSet("WM(" + k + ")_" + "L_7", OBJPROP_TIME2, l_7_x2);
ObjectSet("WM(" + k + ")_" + "L_7", OBJPROP_PRICE1, l_7_y1);
ObjectSet("WM(" + k + ")_" + "L_7", OBJPROP_PRICE2, l_7_y2);
ObjectSet("WM(" + k + ")_" + "L_7", OBJPROP_COLOR, lnCol);
ObjectSet("WM(" + k + ")_" + "L_7", OBJPROP_RAY, false);
if(ObjectFind("WM(" + k + ")_" + "L_8") != 0)
{
ObjectCreate("WM(" + k + ")_" + "L_8", OBJ_TREND, 0,
l_8_x1, l_8_y1, l_8_x2, l_8_y2);
}
ObjectSet("WM(" + k + ")_" + "L_8", OBJPROP_TIME1, l_8_x1);
ObjectSet("WM(" + k + ")_" + "L_8", OBJPROP_TIME2, l_8_x2);
ObjectSet("WM(" + k + ")_" + "L_8", OBJPROP_PRICE1, l_8_y1);
ObjectSet("WM(" + k + ")_" + "L_8", OBJPROP_PRICE2, l_8_y2);
ObjectSet("WM(" + k + ")_" + "L_8", OBJPROP_COLOR, lnCol);
ObjectSet("WM(" + k + ")_" + "L_8", OBJPROP_RAY, false);
}
WindowRedraw();
Sleep(1);
}
//----
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
datetime MyTime(int bs)
{
if(bs < 0)
return(Time[0] + Period()*60*MathAbs(bs));
return(Time[bs]);
}
//+------------------------------------------------------------------+

#98 PTVZ

PTVZ

    пробегал

  • Пользователи
  • Pip
  • 6 сообщений

Опубликовано 01 April 2009 - 12:31 PM

Добрый день! Подскажите пожалуйста, есть ли у кого-нибудь пример кода окрашивания бара в определенный цвет? Заранее благодарен!

#99 Efim

Efim

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 251 сообщений

Опубликовано 13 July 2009 - 05:59 PM

Здравствуйте! Есть одна идея, но для её реализации нужна помощь, тех кто умеет создавать индикаторы\советники…есть предположения, что количество тиков в волнах\подволнах являются действительным показателем ВУ(волнового уровня) не ТФ, т к за один и тот же промежуток времени может быть разное количество тиков, и чем их больше, тем выше ВУ…. Если существует закономерность в количестве тиков и ВУ волн\подволн (ету закономерность ещё нужно выявить и доказать) то в синтезе с другими елементами ето будит отличный помощник, возможно ето зависимость пропорциональна или ещё какая-либо…но если она есть, ето может помочь избежать убытков…на примере – вы открываетесь в расчёте на то, что закончился весь цикл АВС и собираетесь взять как минимум В от етого цикла, но вы берёте(если берёте) в(С), волна С оказалась а(С),,, или та же а(С) в С, предполагаемая, на самом деле А в А(С), о которой вы узнаете уже после в(С) и начале с(С)…бывают случаи когда движения действительно очень запутано…понимание етой закономерности и знание елементов окончания любого цикла давало бы понять, волна какого уровня пойдёт дальше…ето продвинуло бы нас ещё на шаг ближе, а там возможно к чему то большему………точка отсчёта для индикатора могла бы быть вертикальная линия времени и горизонтальная цены, ставя их на нужный мин\макс индикатор начинает подсчёт тиков, для начала достаточно етого, наблюдая и записывая показания…лучше было бы, если бы он мог запоминать (сколько тиков от такой точки до такой – знаю что в МТ4 нет истории тиков, запоминание тех что поступили в реальном времени) В принципе всё, интересно услышать ваши мнения, на сколько реально ето осуществить и т.д…можно в личку

#100 jr-72

jr-72

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 3313 сообщений

Опубликовано 31 August 2009 - 11:18 PM

Здраствуйте знатоки.
Мне захотелось сделать индюк, который является совокупностью стандартного индюка высяший на МТ4:
Это: 1 >>>> Bulls и 2 >>>> Bears
Ну чтобы два инд. ложились друг на друга и показывался как один.

Смотрите рисунок:

Размещенное изображение

Я тут нахимичил его пример, назвал Bulls_Bears_001 (short name - BuBe), который стоит последним на графике. Но там показывается параметр только Bears, а Bulls не показывается.
И после того как закомчим с этим хочу на него пристроить RCI или Stochastic. Помогите плз. Может быть станет всем полезным?!

А вот его код.


#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 Lime
#property indicator_color2 Magenta

//---- input parameters
extern int BullsPeriod=21;
extern int BearsPeriod=21;

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_HISTOGRAM);
SetIndexBuffer(0,ExtMapBuffer1);
SetIndexStyle(1,DRAW_HISTOGRAM);
SetIndexBuffer(1,ExtMapBuffer2);

//---- drawing settings
SetIndexStyle (1,DRAW_HISTOGRAM);
SetIndexStyle (2,DRAW_HISTOGRAM);
IndicatorDigits(Digits+1);
SetIndexDrawBegin (1,21);
SetIndexDrawBegin (2,21);

//---- 2 indicator buffers maping
SetIndexBuffer (1,ExtMapBuffer1);
SetIndexBuffer (2,ExtMapBuffer2);

//---- name for DataWindow and indicator subwindow label
IndicatorShortName ("BuBe");
SetIndexLabel (1,NULL);
SetIndexLabel (2,NULL);

//---- initialization done
return(0);
}

//+------------------------------------------------------------------+
//| Bulls and Bears |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
double prev,current;

//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;

//---- macd
for(int i=0; i<limit; i++)
ExtMapBuffer1[i]=iBullsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i)-iBearsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i);
ExtMapBuffer2[i]=iBearsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i)-iBearsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i);

//---- dispatch values between 2 buffers
bool up=true;
for (i=limit-1; i>=0; i--)
{
current=ExtMapBuffer1[i];
prev=ExtMapBuffer1[i+1];

{
ExtMapBuffer2[i]=current;
ExtMapBuffer1[i]=0.0;
}

{
ExtMapBuffer1[i]=current;
ExtMapBuffer2[i]=0.0;
}
}
//---- done
return(0);
}

//+---------------------------------------------------------------------+
С уважением, Расул.

#101 MAMOHT

MAMOHT

    VIP - Market Tendencies Department

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 228 сообщений

Опубликовано 01 September 2009 - 05:15 AM

ExtMapBuffer2[i]=iBearsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i)-iBearsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i);

вот тут всегда ноль будет :)
Александр. ICQ: 250-84-85-80

#102 idolzhenko

idolzhenko

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 216 сообщений

Опубликовано 01 September 2009 - 05:34 AM

Здраствуйте знатоки.
Мне захотелось сделать индюк, который является совокупностью стандартного индюка высяший на МТ4:
Это: 1 >>>> Bulls и 2 >>>> Bears
Ну чтобы два инд. ложились друг на друга и показывался как один.


Посмотрите, может этот подойдет?




#103 jr-72

jr-72

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 3313 сообщений

Опубликовано 01 September 2009 - 04:40 PM

ExtMapBuffer2[i]=iBearsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i)-iBearsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i);

вот тут всегда ноль будет :)



Cпасибо. У меня так и написан - стоит ноль. Но когда ставлю на график Бирс показывает, а Булс нет. И еще не показывает минусовую значание и цифровую значению возле "BuBe". Еще раз спасибо.

Здраствуйте знатоки.
Мне захотелось сделать индюк, который является совокупностью стандартного индюка высяший на МТ4:
Это: 1 >>>> Bulls и 2 >>>> Bears
Ну чтобы два инд. ложились друг на друга и показывался как один.


Посмотрите, может этот подойдет?




Спасибо. Кажется хороший индикатор. А волны на нем это - Moving Average? Спасибо.
С уважением, Расул.

#104 Mortiferus

Mortiferus

    живет тут

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 366 сообщений

Опубликовано 02 September 2009 - 06:03 PM

Подскажите, плиз, такую вещь. На график добавлено несколько пользовательских индикаторов, каждый в своем окне. Хочется в этих окнах нарисовать линии, в каждом со своими параметрами. Как получить параметры индикатора в определенном окне, чтоб в зависимости от этого нарисовать линии?
С уважением!
Николай

#105 Shu

Shu

    Option Trader

  • Пользователи ST test (off)
  • PipPipPipPipPip
  • 1897 сообщений

Опубликовано 04 September 2009 - 04:55 AM

Подскажите, плиз, такую вещь. На график добавлено несколько пользовательских индикаторов, каждый в своем окне. Хочется в этих окнах нарисовать линии, в каждом со своими параметрами. Как получить параметры индикатора в определенном окне, чтоб в зависимости от этого нарисовать линии?


Я мог бы сказать - "никак" и был бы совершенно прав. :wink:

Однако, такая возможность существует! Смотрите в каталоге:

C:\...Trader 4\profiles\

Например, у меня есть такой профайл (текущий) Dax-ftse-1. Ему соответсвует каталог C:\...Trader 4\profiles\Dax-ftse-1

В этом каталоге есть такие файлики:

chart01.chr
chart02.chr
chart03.chr
chart04.chr
chart05.chr
chart06.chr
order.wnd

Вот и всё! Анализируйте ЭТО и получите ваше всё! :biggrin:




Посетителей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных пользователей

Рейтинг брокеров форекс: кто лидер, кто аутсайдер и почему?




Masterforex-V NordFX

Rambler's Top100

Принимаем Z-Payment