DAVINCHI Опубликовано 24 августа, 2008 Жалоба Поделиться Опубликовано 24 августа, 2008 Доброго времени суток. Не могу ничего найти по созданию индикаторов в метастоке, может, подскажете какую веточку... Ссылка на комментарий Поделиться на другие сайты Поделиться
Sasha83 Опубликовано 20 ноября, 2008 Жалоба Поделиться Опубликовано 20 ноября, 2008 Доброго времени суток!!!Умные люди помогите! Оч. нужен индюк показувающий угол наклона (в градусах) МА к горизонтали.Или подскажите с кодом плиз Ссылка на комментарий Поделиться на другие сайты Поделиться
oskar1 Опубликовано 22 ноября, 2008 Жалоба Поделиться Опубликовано 22 ноября, 2008 Здравствуйте программеры, есть индюк основанный на тиках он сделан по моей стратегии скальпера, нужна отфильтровка сигналов. Вот условие которое нужно добавить в код. Индикатор тиковый. Можно ли добавить дополнительное условие для сигнала алерта??? А то индюк подает сигналы, большая часть не правильная, я бы хотел отфильтровать их, вот таким условием. Условие такое - это повторяющийся одинаковый уровень цены допустим 150,00 три раза был такой уровень в промежутке последних 10 секунд. И тоже вывести во внешние переменные, для этого условия. Y= 3; // сколько раз был уровень одинаковый в промежутке t 2t 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); } //+------------------------------------------------------------------+ Ссылка на комментарий Поделиться на другие сайты Поделиться
gladius Опубликовано 10 декабря, 2008 Жалоба Поделиться Опубликовано 10 декабря, 2008 (изменено) Здравствуйте! Скажите, пожалуйста, как установить готовый индикатор Pivot Points в МТ-4? Изменено 10 декабря, 2008 пользователем gladius Ссылка на комментарий Поделиться на другие сайты Поделиться
evdokimov Опубликовано 23 января, 2009 Жалоба Поделиться Опубликовано 23 января, 2009 Я удивлён, что никто не задал вопроса! Никто не учится здесь и сейчас? Если есть те, кто хочет научиться, то пусть скажут мне одну не очень приятную особенность написанного нами индикатора....Жду ещё 1 день.Liv спасибо за ветку, очень полезная. Немогбы ты выложить готовый индюк сидуса, а то у меня не дет, хочу сравнить и найти свои ошибки. Ссылка на комментарий Поделиться на другие сайты Поделиться
andresme Опубликовано 23 января, 2009 Жалоба Поделиться Опубликовано 23 января, 2009 Здравствуйте! Скажите, пожалуйста, как установить готовый индикатор Pivot Points в МТ-4? скопировать в папку experts/indicators, открыть через MetaEditor,скомпилировать,перезагрузить терминал Ссылка на комментарий Поделиться на другие сайты Поделиться
Сергей Михеев Опубликовано 4 февраля, 2009 Жалоба Поделиться Опубликовано 4 февраля, 2009 Просьба к умельцам. Помогите изменить скиптр (так что бы он не рисовал линий, а только значение волн)//+------------------------------------------------------------------+//| 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]); }//+------------------------------------------------------------------+ Ссылка на комментарий Поделиться на другие сайты Поделиться
PTVZ Опубликовано 1 апреля, 2009 Жалоба Поделиться Опубликовано 1 апреля, 2009 Добрый день! Подскажите пожалуйста, есть ли у кого-нибудь пример кода окрашивания бара в определенный цвет? Заранее благодарен! Ссылка на комментарий Поделиться на другие сайты Поделиться
Efim Опубликовано 13 июля, 2009 Жалоба Поделиться Опубликовано 13 июля, 2009 Здравствуйте! Есть одна идея, но для её реализации нужна помощь, тех кто умеет создавать индикаторы\советники…есть предположения, что количество тиков в волнах\подволнах являются действительным показателем ВУ(волнового уровня) не ТФ, т к за один и тот же промежуток времени может быть разное количество тиков, и чем их больше, тем выше ВУ…. Если существует закономерность в количестве тиков и ВУ волн\подволн (ету закономерность ещё нужно выявить и доказать) то в синтезе с другими елементами ето будит отличный помощник, возможно ето зависимость пропорциональна или ещё какая-либо…но если она есть, ето может помочь избежать убытков…на примере – вы открываетесь в расчёте на то, что закончился весь цикл АВС и собираетесь взять как минимум В от етого цикла, но вы берёте(если берёте) в(С), волна С оказалась а(С),,, или та же а(С) в С, предполагаемая, на самом деле А в А(С), о которой вы узнаете уже после в(С) и начале с(С)…бывают случаи когда движения действительно очень запутано…понимание етой закономерности и знание елементов окончания любого цикла давало бы понять, волна какого уровня пойдёт дальше…ето продвинуло бы нас ещё на шаг ближе, а там возможно к чему то большему………точка отсчёта для индикатора могла бы быть вертикальная линия времени и горизонтальная цены, ставя их на нужный мин\макс индикатор начинает подсчёт тиков, для начала достаточно етого, наблюдая и записывая показания…лучше было бы, если бы он мог запоминать (сколько тиков от такой точки до такой – знаю что в МТ4 нет истории тиков, запоминание тех что поступили в реальном времени) В принципе всё, интересно услышать ваши мнения, на сколько реально ето осуществить и т.д…можно в личку Ссылка на комментарий Поделиться на другие сайты Поделиться
jr-72 Опубликовано 31 августа, 2009 Жалоба Поделиться Опубликовано 31 августа, 2009 Здраствуйте знатоки.Мне захотелось сделать индюк, который является совокупностью стандартного индюка высяший на МТ4: Это: 1 >>>> Bulls и 2 >>>> BearsНу чтобы два инд. ложились друг на друга и показывался как один. Смотрите рисунок: http://s46.radikal.ru/i112/0908/41/dda88202ec35.gif Я тут нахимичил его пример, назвал 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 parametersextern int BullsPeriod=21;extern int BearsPeriod=21; //---- buffersdouble 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=iBullsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i)-iBearsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i); ExtMapBuffer2=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; prev=ExtMapBuffer1[i+1]; { ExtMapBuffer2=current; ExtMapBuffer1=0.0; } { ExtMapBuffer1=current; ExtMapBuffer2=0.0; } }//---- done return(0); } //+---------------------------------------------------------------------+ Ссылка на комментарий Поделиться на другие сайты Поделиться
MAMOHT Опубликовано 1 сентября, 2009 Жалоба Поделиться Опубликовано 1 сентября, 2009 ExtMapBuffer2[i]=iBearsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i)-iBearsPower(NULL,0,MODE_VOLUME,PRICE_CLOSE,i); вот тут всегда ноль будет :) Ссылка на комментарий Поделиться на другие сайты Поделиться
idolzhenko Опубликовано 1 сентября, 2009 Жалоба Поделиться Опубликовано 1 сентября, 2009 Здраствуйте знатоки.Мне захотелось сделать индюк, который является совокупностью стандартного индюка высяший на МТ4: Это: 1 >>>> Bulls и 2 >>>> BearsНу чтобы два инд. ложились друг на друга и показывался как один. Посмотрите, может этот подойдет? Ссылка на комментарий Поделиться на другие сайты Поделиться
jr-72 Опубликовано 1 сентября, 2009 Жалоба Поделиться Опубликовано 1 сентября, 2009 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? Спасибо. Ссылка на комментарий Поделиться на другие сайты Поделиться
Mortiferus Опубликовано 2 сентября, 2009 Жалоба Поделиться Опубликовано 2 сентября, 2009 Подскажите, плиз, такую вещь. На график добавлено несколько пользовательских индикаторов, каждый в своем окне. Хочется в этих окнах нарисовать линии, в каждом со своими параметрами. Как получить параметры индикатора в определенном окне, чтоб в зависимости от этого нарисовать линии? Ссылка на комментарий Поделиться на другие сайты Поделиться
Shu Опубликовано 4 сентября, 2009 Жалоба Поделиться Опубликовано 4 сентября, 2009 Подскажите, плиз, такую вещь. На график добавлено несколько пользовательских индикаторов, каждый в своем окне. Хочется в этих окнах нарисовать линии, в каждом со своими параметрами. Как получить параметры индикатора в определенном окне, чтоб в зависимости от этого нарисовать линии? Я мог бы сказать - "никак" и был бы совершенно прав. Однако, такая возможность существует! Смотрите в каталоге: C:\...Trader 4\profiles\ Например, у меня есть такой профайл (текущий) Dax-ftse-1. Ему соответсвует каталог C:\...Trader 4\profiles\Dax-ftse-1 В этом каталоге есть такие файлики: chart01.chrchart02.chrchart03.chrchart04.chrchart05.chrchart06.chrorder.wnd Вот и всё! Анализируйте ЭТО и получите ваше всё! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения