Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Модификация индикатора FxF

Необходимо к индикатору (Мт-4) «Форекс фридом» прикрутить стрелки с алертом. Стрелки должны появляться в момент когда происходит разбалансировка индикатора на первом (нижнем) уровне и последующая сбалансировка.Сбалансировка это не тогда когда пропадает последний синий квадратик (по скрину) а когда появляются одновременно все 4 красных квадратика Пример :

После появления первого-нижнего квадратика синего цвета все остальные сигналом не являются, и никак обозначаться сигналом не должны. Следующим сигналом будет полная сбалансировка индикатора, т.е. появление одновременно 4 красных (синих) квадратиков.Примеры сигналов для «бай» и для «сел»:




<img
src=«http://www.opentraders.ru/uploads/images/7/0/f/4/23410/d2f79f8b82.png» width=«650»>


А это сам индикатор:qMTF_Forex_freedom_Bar.mq4 (8 Kb)

Настройка индикатора сводится к выбору значения периодов, соответствующее таймфреймам на которых работаеш.
От меньшего к большему. Вроде в первом скрине промахнулся с сигналом «бай», сорри…
  • +1
  • Просмотров: 7434
  • 12 января 2015, 14:32
  • Optik
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Подправить индикатор
Следующая запись в группе  
Создать советник по 2-м индюкаторам
12 января 2015
12 января 2015

Брокер для ваших роботов, 15 лет на рынке

Комментарии (12)

+
0
дибильные стрелочные индикаторы, это же утопия для школьников ИНДИКАТОР-СЛИВАТОР :D 
avatar

  2  10937 Сообщений: 11 - Забанен: спам

  • 12 января 2015, 19:36
+
0
Ну это кому как.....:P 
avatar

  2  Optik Автор Сообщений: 14

  • 12 января 2015, 19:50
+
0
В выходные постараюсь что нибудь сообразить
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 13 января 2015, 23:22
+
0
Пытаюсь вытащить значения индикатора. Для этого набросал простейший советник, но указанного в ТЗ сочетания добиться не удается…




//+------------------------------------------------------------------+
//|                                            MTFSupertrend Bar.mq4 |
//|                                              Copyright 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#define MAGICMA  20141020

//---- input parameters
extern int StopLoss     = 500; // лось
extern int TakeProfit   = 500; // язь
extern double Lot       = 0.1; // лот
extern int    Slip      = 100; // реквот
extern int Delta=50;
extern int Width=1;            
extern int Style=0; 

/*
STYLE_SOLID 	   0 	Сплошная линия
STYLE_DASH 	      1 	Штриховая линия
STYLE_DOT 	      2 	Пунктирная линия
STYLE_DASHDOT 	   3 	Штрих-пунктирная линия
STYLE_DASHDOTDOT 	4 	Штрих-пунктирная линия с двойными точками
*/

extern int SymbolCodeBuy=233;
extern int SymbolCodeSell=234;

extern color Color1=Blue;             
extern color Color2=Red;
//---- buffers
double Buffer1[];
double Buffer2[];
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
//---- indicators
   SetIndexStyle(0,DRAW_ARROW,Style,Width,Color1);
   SetIndexArrow(0,SymbolCodeBuy);
   SetIndexBuffer(0,Buffer1);
//----
   SetIndexStyle(1,DRAW_ARROW,Style,Width,Color2);
   SetIndexArrow(1,SymbolCodeSell);
   SetIndexBuffer(1,Buffer2);
//----    
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double MTFUP4=iCustom(Symbol(),0,"MTFSuperTrendBar",0,1);
   double MTFDN4=iCustom(Symbol(),0,"MTFSuperTrendBar",1,1);
   double MTFUP3=iCustom(Symbol(),0,"MTFSuperTrendBar",2,1);
   double MTFDN3=iCustom(Symbol(),0,"MTFSuperTrendBar",3,1);
   double MTFUP2=iCustom(Symbol(),0,"MTFSuperTrendBar",4,1);
   double MTFDN2=iCustom(Symbol(),0,"MTFSuperTrendBar",5,1);
   double MTFUP1=iCustom(Symbol(),0,"MTFSuperTrendBar",6,1);
   double MTFDN1=iCustom(Symbol(),0,"MTFSuperTrendBar",7,1);         

   if(MTFDN4==0 && MTFDN3==0 && MTFDN2==0 && MTFDN1==0 && OrdersTotal()<1)
    {
     int res=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
    }
       
   if(MTFUP4>0 && MTFUP3>0 && MTFUP2>0 && MTFUP1>0 && OrdersTotal()<1)
    {
     int res=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);
    }
    

    
   Comment(
           "\nMTFUP4 ",MTFUP4,
           "\nMTFDN4 ",MTFDN4,
           "\nMTFUP3 ",MTFUP3,
           "\nMTFDN3 ",MTFDN3,
           "\nMTFUP2 ",MTFUP2,
           "\nMTFDN2 ",MTFDN2,
           "\nMTFUP1 ",MTFUP1,
           "\nMTFDN1 ",MTFDN1                                            
           );    
   
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 16 января 2015, 09:19
+
0
Не спешите, это не горит и время терпит…
Главное что-бы получилось. Удачи !!!!!!!!!!!*za* 
avatar

  2  Optik Автор Сообщений: 14

  • 16 января 2015, 15:03
+
0
Как сумел вытащил значения из индикатора. Посмотрите что получилось. Советник ставит по условию стрелки и открывает соответствуюший ордер.



Файл в базе: www.opentraders.ru/downloads/562/

avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 17 января 2015, 14:08
+
0
Я извиняюсь, благодарю за работу конечно, но в заказе нет речи о создании советника. Индикатор предполагается использовать в ручной ТС в купе с другими индикаторами т.к. есть необходимость дополнительного анализа перед входом в рынок, и автоматическое выставление ордера недопустимо. Этой функции тут не должно быть по определению.Чё делать не знаю....*???* 
avatar

  2  Optik Автор Сообщений: 14

  • 17 января 2015, 18:39
+
0
Я сейчас закоментирую выставление ордера, добавлю алерт, как вы просили в самом начале. Бросаете советник на график, он будет рисовать стрелки и алертами сигналить. Устроит так?
avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 17 января 2015, 19:51
+
0
В принципе устроит, а куда его загружать? в «индикаторы» или в другую папку?
avatar

  2  Optik Автор Сообщений: 14

  • 17 января 2015, 20:36
+
0
Модифицировать предложенный вами индикатор не представлялось возможным, т.к. все 8 из возможных индикаторных буферов были использованы. Оставалось делать индикатор от индикатора или советник.

Загружать в папку Experts.

Вот код советника. Можете погонять его по истории, поменять параметры в строчках, чтобы добиться оптимального сигнала:

if(MTFDN4==0 && MTFDN3==0 && MTFDN2==0 && MTFDN1==0 && OrdersTotal()<1 && s<1)
   if(MTFUP4==0 && MTFUP3==0 && MTFUP2==2 && MTFUP1==1 && OrdersTotal()<1 && b<1)



//+------------------------------------------------------------------+
//|                                            MTFSupertrend Bar.mq4 |
//|                                              Copyright 2014, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2014, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#define MAGICMA  20141020

//---- input parameters
extern int StopLoss     = 500; // лось
extern int TakeProfit   = 500; // язь
extern double Lot       = 0.1; // лот
extern int    Slip      = 100; // реквот

int b,s;
//+------------------------------------------------------------------+
//| Создает стрелку                                                  |
//+------------------------------------------------------------------+
bool ArrowCreate(const long              chart_ID=0,           // ID графика
                 const string            name="Arrow",         // имя стрелки
                 const int               sub_window=0,         // номер подокна
                 datetime                time=0,               // время точки привязки
                 double                  price=0,              // цена точки привязки
                 const uchar             arrow_code=252,       // код стрелки
                 const ENUM_ARROW_ANCHOR anchor=ANCHOR_BOTTOM, // положение точки привязки
                 const color             clr=clrRed,           // цвет стрелки
                 const ENUM_LINE_STYLE   style=STYLE_SOLID,    // стиль окаймляющей линии
                 const int               width=3,              // размер стрелки
                 const bool              back=false,           // на заднем плане
                 const bool              selection=true,       // выделить для перемещений
                 const bool              hidden=true,          // скрыт в списке объектов
                 const long              z_order=0)            // приоритет на нажатие мышью
  {              
//--- создадим стрелку
   if(!ObjectCreate(chart_ID,name,OBJ_ARROW,sub_window,time,price))
     {
      Print(__FUNCTION__,
            ": не удалось создать стрелку! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим код стрелки
   ObjectSetInteger(chart_ID,name,OBJPROP_ARROWCODE,arrow_code);
//--- установим способ привязки
   ObjectSetInteger(chart_ID,name,OBJPROP_ANCHOR,anchor);
//--- установим цвет стрелки
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль окаймляющей линии
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим размер стрелки
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим перемещения стрелки мышью
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {

   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
  
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double MTFUP4=iCustom(Symbol(),0,"MTFSuperTrendBar",0,1);
   double MTFDN4=iCustom(Symbol(),0,"MTFSuperTrendBar",1,1);
   double MTFUP3=iCustom(Symbol(),0,"MTFSuperTrendBar",2,1);
   double MTFDN3=iCustom(Symbol(),0,"MTFSuperTrendBar",3,1);
   double MTFUP2=iCustom(Symbol(),0,"MTFSuperTrendBar",4,1);
   double MTFDN2=iCustom(Symbol(),0,"MTFSuperTrendBar",5,1);
   double MTFUP1=iCustom(Symbol(),0,"MTFSuperTrendBar",6,1);
   double MTFDN1=iCustom(Symbol(),0,"MTFSuperTrendBar",7,1);         

   if(MTFDN4==0 && MTFDN3==0 && MTFDN2==0 && MTFDN1==0 && OrdersTotal()<1 && s<1)
    {
     //int res=OrderSend(Symbol(),OP_SELL,Lot,Bid,Slip,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red);
     ArrowCreate(0,"SellArrow"+TimeToStr(TimeCurrent()),0,TimeCurrent(),Ask+50*Point,234,ANCHOR_BOTTOM,clrRed,STYLE_SOLID,3,false,true,true,0);
     Alert("Советник «Форекс фридом». Сигнал Sell.");s++;b=0;
    }
       
   if(MTFUP4==0 && MTFUP3==0 && MTFUP2==2 && MTFUP1==1 && OrdersTotal()<1 && b<1)
    {
     //int res=OrderSend(Symbol(),OP_BUY,Lot,Ask,Slip,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);
     ArrowCreate(0,"BuyArrow"+TimeToStr(TimeCurrent()),0,TimeCurrent(),Bid-50*Point,233,ANCHOR_TOP,clrBlue,STYLE_SOLID,3,false,true,true,0);
     Alert("Советник «Форекс фридом». Сигнал Buy.");b++;s=0;
    }
    

    
   Comment(
           "\nMTFUP4 ",MTFUP4,
           "\nMTFDN4 ",MTFDN4,
           "\nMTFUP3 ",MTFUP3,
           "\nMTFDN3 ",MTFDN3,
           "\nMTFUP2 ",MTFUP2,
           "\nMTFDN2 ",MTFDN2,
           "\nMTFUP1 ",MTFUP1,
           "\nMTFDN1 ",MTFDN1                                            
           );    
   
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16276 - Андрей

  • 17 января 2015, 21:10
+
0
Спасибо, с понедельника попробую.
avatar

  2  Optik Автор Сообщений: 14

  • 17 января 2015, 21:13
+
0
Попробовал поставить советник, сигналы не подает, стрелки в кучку сбиваются, косячит или он только со стандартными настройками индикатора работает?
avatar

  1  mnemonik Сообщений: 2

  • 7 июля 2015, 20:38

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий