//+------------------------------------------------------------------+ //|Анализатор для Speed_MA_V2 MA_speed_exceeding_OPEN_V0.2.mq4| //| идея Andru80| //| поддерживает технологию Blue_Dream| //| требует наличия индикатора Speed_MA_V2| //|Что нового: | //| V0.2 от 15.03.2010 добавлено: | //| - теперь можно изменять параметры индикатора Speed_MA_V2 через | //| настройки анализатора | //| исправлено: | //| - сигналы на бай выставляются только тогда, когда старший | //| мувинг движется вверх, для села наоборот. | //| V0.1 от 11.03.2010 исправлено: | //| - теперь анализатор по умолчанию устанавливается на текущий ТФ | //| - вместо текстового имени ГПТ достаточно поставить её номер | //| V0.0 от 11.03.2010 описание: | //| - если скорость превышает пороговое значение, выставляется | //| ордер в зависимости от знака скорости | //| - вместо текстового имени ГПТ достаточно поставить её номер | //| valenok2003@mail.ru | //| ICQ 365919666 | //| Пишу на заказ, цена договорная.| //| http://www.mebel-for-you.com | //+------------------------------------------------------------------+ #property copyright "valenok2003@mail.ru" #property link "http://www.mebel-for-you.com" #property indicator_separate_window #property indicator_minimum -1 #property indicator_maximum 1 #property indicator_buffers 3 // Количество буферов #property indicator_color1 Red #property indicator_color2 LimeGreen #property indicator_color3 Gray extern string Remark_0 = "--Период измерения--"; extern int Period_dimension = 2; // период измерения extern string Remark_1 = "--Величина изменения скорости--"; extern int Speed_alteration = 12; // величина изменения скорости за указанный период extern string text2 = "--номер сигнала для Blue_Dream--"; extern int Num_Signal = 1; extern string text = "-параметры для Speed_MA_V2-"; extern int Period_MA5 = 5; extern int Period_MA15 = 15; extern int Period_MA60 = 60; extern string MA_method = "LWMA"; extern string MA_price = "TYP"; extern int Period_Average = 5; extern int tf = 0; int N; string Name_Global_Var; color color_txt; //---- buffers double Signal_Open_Sell[], Signal_Open_Buy[], Nul_Line[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- name for indicator window string name_window="*MA_speed_exceeding_OPEN_V0.2* Blue_Dream Tech*"; IndicatorShortName(name_window); //---- indicators SetIndexStyle(0,DRAW_HISTOGRAM); SetIndexBuffer(0,Signal_Open_Sell); SetIndexStyle(1,DRAW_HISTOGRAM); SetIndexBuffer(1,Signal_Open_Buy); SetIndexStyle(2,DRAW_LINE); SetIndexBuffer(2,Nul_Line); switch(Num_Signal) { case 1 : Name_Global_Var = "Signal_OPEN_1"; break; case 2 : Name_Global_Var = "Signal_OPEN_2"; break; case 3 : Name_Global_Var = "Signal_OPEN_3"; break; case 4 : Name_Global_Var = "Signal_OPEN_4"; break; case 5 : Name_Global_Var = "Signal_OPEN_5"; break; default: ;Alert(" Номер сигнала должен находиться в диапазоне от 1 до 5"); } //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---Открытие по изменению суммарной скорости --------------------- double Speed_0, Speed_N, Speed_MA60; //скорость старшего мувинга; нас интересует "+" или "-"; //------------ рисуем линию нуля ------------------------------------ int Counted_bars=IndicatorCounted(); // Количество просчитанных баров int i=Bars-Counted_bars-1; // Индекс первого непосчитанного //i=2; while(i>=0) { Nul_Line[i]=0; Print(i); N = Period_dimension; //--- рисуем сигналы Speed_0 = iCustom(NULL,tf,"Speed_MA_V2",Period_MA5, Period_MA15, Period_MA60, MA_method, MA_price,Period_Average,tf,0,i); Speed_N = iCustom(NULL,tf,"Speed_MA_V2",Period_MA5, Period_MA15, Period_MA60, MA_method, MA_price,Period_Average,tf,0,i+N); Speed_MA60 = iCustom(NULL,tf,"Speed_MA_V2",Period_MA5, Period_MA15, Period_MA60, MA_method, MA_price,Period_Average,tf,4,i); //Если суммарная скорость за N бар уменьшается на Speed_alteration единиц сделка на селл if(Speed_N - Speed_0 > Speed_alteration && Speed_MA60 < 0) Signal_Open_Sell[i] = -0.7; //Если суммарная скорость за N бар увеличивается на Speed_alteration единиц сделка на бай if(Speed_0 - Speed_N > Speed_alteration && Speed_MA60 > 0) Signal_Open_Buy[i] = 0.7; i--; // Расчёт индекса следующего бара } //------------------------------------------------------------------- //------ Формируем сигнал для Blue_Dream ---------------------------- Speed_0 = iCustom(NULL,tf,"Speed_MA_V2",Period_MA5, Period_MA15, Period_MA60, MA_method, MA_price,Period_Average,tf,0,0); Speed_N = iCustom(NULL,tf,"Speed_MA_V2",Period_MA5, Period_MA15, Period_MA60, MA_method, MA_price,Period_Average,tf,0,0+N); Speed_MA60 = iCustom(NULL,tf,"Speed_MA_V2",Period_MA5, Period_MA15, Period_MA60, MA_method, MA_price,Period_Average,tf,4,0); //Если суммарная скорость за N бар уменьшается на Speed_alteration единиц сделка на селл if(Speed_N - Speed_0 > Speed_alteration && Speed_MA60 < 0) GlobalVariableSet(Name_Global_Var,-1); //Если суммарная скорость за N бар увеличивается на Speed_alteration единиц сделка на бай if(Speed_0 - Speed_N > Speed_alteration && Speed_MA60 > 0) GlobalVariableSet(Name_Global_Var,1); //------------------------------------------------------------------- //---- return(0); } //+------------------------------------------------------------------+