Lerdon
Destian Farbius

 
Уровень 4


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

Рейтинг 1354



РЕКОМЕНДУЮ



Советник по фибо на мультитаймфрейме(нужен поручитель).

Продумал тут одну стратегию. А то смотрю тут последнее время, одни советники со стрелочками, а дельного мало чего)

Советник рисует две сетки Фибоначчи одну по HIGH и LOW прошлого месяца.
Вторую по HIGH и LOW прошлой недели.
В случае если оказалось что между какими либо, двумя уровнями сеток расстояние меньше N указанного в настройках.
То выполняется сценарий «Отбой»
То есть идет анализ прошлой свечи на предмет условий:
HIGH свечи LOW свечи Close свечи и Open свечи.

Если LOW свечи НИЖЕ уровней или между ними, если Open и Close свечи перед уровнями(то есть свеча закрылась перед уровнями.)
То совершается ПОКУПКА.
Пример на покупку указан на скрине ниже:


На продажу так же только наоборот.
Если HIGH свечи ВЫШЕ уровней или между ними, если Open и Close свечи перед уровнями(то есть свеча закрылась перед уровнями.)
То совершается ПРОДАЖА.

Сделки совершаются только от уровней где между уровнями расстояние меньше N указанного.
Например между 61.8 недели и 38.2 месяца расстояние 4 пункта. Это означает что при подходите к ним цены и выполнения сценария выше, будут открываться сделки.

Дополнительные скрины поясняющие построение сетки:



Кстати обрати внимание на особенность построения сетки.

Интересно такое? Возьмешься? Стратегия по первоначальным тестам весьма не дурная. Кстати прошлый советник тоже весьма хорош, для своей простоты. Что доказывает, что использование Фибоначчи может быть весьма эффективно. Очень благодарен, Ваша идея на счет двух паттернов зашла. Планируется установка на счет. Кстати некоторые Ваши разработки по авторасчету риска, сохранил как шаблон.

Результаты теста советника Фибо4 по GBPUSD:



За 6 лет 2200% для простого позиционного советника на дневке неплохо, согласитесь?)
Кстати это при риске 17%.
  • 0
  • Просмотров: 959
  • 7 апреля 2019, 17:12
  • Lerdon
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
а прикольно *good* 
avatar

  12  igrun Сообщений: 540 - igrun

  • 7 апреля 2019, 17:37
+
0
Поручаюсь
avatar

  8  sibarit Сообщений: 7

  • 11 апреля 2019, 11:05
+
0
а я поддерживаю)
avatar

  3  maksimum Сообщений: 13

  • 11 апреля 2019, 17:27
+
0
на 12-е
avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 11 апреля 2019, 17:48
+
0
я сегодня начал делать. здесь работы много, если в выходные не доделаю значит к платному.
avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 12 апреля 2019, 21:25
+
0
вот я сделал набросок с расчетом уровней. теперь чтобы объяснить машине только проверку расстояния между уровнями нужно написать 36 условий. с этим не ко мне.

avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 12 апреля 2019, 21:54
+
0
Ладно скиньте получившийся индикатор. Хотя бы его потестирую.
avatar

  4  Lerdon Автор Сообщений: 97 - Destian Farbius

  • 12 апреля 2019, 22:00
+
0
а как происходит передача уровней между графиками, через файл возможно?
avatar

  12  igrun Сообщений: 540 - igrun

  • 12 апреля 2019, 22:01
+
0

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

//--- Inputs
extern double Lots       = 0.1;      // лот
extern double KLot       = 2;        // умножение лота
extern double MaxLot     = 5;        // максимальный лот
extern double Level1     = 0.236;    // уровень 1
extern double Level2     = 0.382;    // уровень 2
extern double Level3     = 0.5;      // уровень 3
extern double Level4     = 0.618;    // уровень 4
extern ENUM_TIMEFRAMES TF1 = PERIOD_W1;   // тф 1
extern ENUM_TIMEFRAMES TF2 = PERIOD_MN1;  // тф 2
extern int StopLoss      = 500;      // лось
extern int TakeProfit    = 280;      // язь
extern int TrailingStop  = 0;        // трал
extern int Slip          = 30;       // реквот
extern int Count         = 20;       // баров для расчета
extern int Magic         = 123;      // магик
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int r=0;
   color clr=Green;
   double sl=0,tp=0;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
      if(StopLoss>0) sl=NormalizeDouble(price+StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price-TakeProfit*Point,Digits);
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
      if(StopLoss>0) sl=NormalizeDouble(price-StopLoss*Point,Digits);
      if(TakeProfit>0) tp=NormalizeDouble(price+TakeProfit*Point,Digits);
     }

   r=OrderSend(NULL,type,Lot(),NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   int count=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==type || type==-1) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Lot()
  {
   double lot=Lots;
   for(int i=OrdersHistoryTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderProfit()>0) break;
            if(OrderProfit()<0)
              {
               lot=OrderLots()*KLot;
               break;
              }
           }
        }
     }
   if(lot>MaxLot)lot=Lots;
   return(lot);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutFibo(string name,datetime time1,double price1,datetime time2,double price2)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_FIBO,0,time1,price1,time2,price2);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим стиль линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,0);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
//--- успешное выполнение
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(Bid-OrderOpenPrice()>TrailingStop*Point)
                 {
                  if(OrderStopLoss()<Bid-TrailingStop*Point)
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if((OrderOpenPrice()-Ask)>TrailingStop*Point)
                 {
                  if((OrderStopLoss()>(Ask+TrailingStop*Point)) || (OrderStopLoss()==0))
                    {
                     mod=OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop*Point,OrderTakeProfit(),0,Yellow);
                     return;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double up1 = iHigh(NULL,PERIOD_W1,1);
   double dn1 = iLow(NULL,PERIOD_W1,1);
   double delta1=up1-dn1;

   double l01=dn1;
   double l1001=up1;
   double l2361=dn1+delta1*Level1;
   double l3821=dn1+delta1*Level2;
   double l5001=dn1+delta1*Level3;
   double l6181=dn1+delta1*Level4;

   PutFibo("Fibo1",Time[0],up1,Time[Count],dn1);

   double up2=iHigh(NULL,PERIOD_MN1,1);
   double dn2=iLow(NULL,PERIOD_MN1,1);
   double delta2=up2-dn2;

   double l02=dn2;
   double l1002=up2;
   double l2362=dn2+delta2*Level1;
   double l3822=dn2+delta2*Level2;
   double l5002=dn2+delta2*Level3;
   double l6182=dn2+delta2*Level4;

   PutFibo("Fibo2",Time[0],up2,Time[Count],dn2);

   if(TrailingStop>0) Trailing();

   if(CountOrders()<1)
     {
      if(Bid>l5001 && Low[1]<l5001 && Close[1]>l5001) PutOrder(0,Ask);
      if(Bid>l5001 && Low[1]<l6181 && Close[1]>l6181) PutOrder(0,Ask);

      if(Bid<l5001 && High[1]>l3821 && Close[1]<l3821) PutOrder(1,Bid);
      if(Bid<l5001 && High[1]>l2361 && Close[1]<l2361) PutOrder(1,Bid);
     }

   Comment("\n 0.0 ",l01,
           "\n 100.0 ",l1001,
           "\n 23.6 ",l2361,
           "\n 38.2 ",l3821,
           "\n 50.0 ",l5001,
           "\n 61.8 ",l6181);
  }
//+------------------------------------------------------------------+

avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 12 апреля 2019, 22:01
+
0
могу добавить кнопки купить продать. как увидите совпадение условий нажмете
avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 12 апреля 2019, 22:29
+
0
Давайте попробуем. Можно ли добавить отображение расстояния между уровнями?
avatar

  4  Lerdon Автор Сообщений: 97 - Destian Farbius

  • 12 апреля 2019, 22:30
+
0
какие именно расстояния?
avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 12 апреля 2019, 22:32
+
0
ну в пунктах отображение. Например между 61.8 и 38.2 другой сетки расстояние 15 пунктов. Реально ли такое визуально отобразить на графике?
avatar

  4  Lerdon Автор Сообщений: 97 - Destian Farbius

  • 12 апреля 2019, 22:33
+
0
можно отобразить, только таких расстояний 36 будет
avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 13 апреля 2019, 12:45
+
0
Хорошо
avatar

  4  Lerdon Автор Сообщений: 97 - Destian Farbius

  • 13 апреля 2019, 12:46
+
0
что хорошо? 36 это не ко мне
avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 13 апреля 2019, 13:40
+
0
могу сделать просчет 2-3 пары уровней плюс 1 паттерн входа
avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 13 апреля 2019, 15:12
+
0
Если возможно давайте попробуем
avatar

  4  Lerdon Автор Сообщений: 97 - Destian Farbius

  • 13 апреля 2019, 15:14
+
0
а если попробовать экспортировать эти уровни в эксель, там посчитать а результаты потом обратно в советник?
так можно сделать?
avatar

  12  igrun Сообщений: 540 - igrun

  • 13 апреля 2019, 15:22
+
0
в эксель ни к чему, достаточно в массив с перебором :) 
я пишу то что можно быстро сделать
avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 13 апреля 2019, 15:35
+
0
сделал на 3 пары уровней: 38,50,61 и вывод расстояния между ними плюс вход на пересечение их свечой: www.opentraders.ru/downloads/2286/

avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 14 апреля 2019, 12:22
+
0
Огромное спасибо, за Ваши труды!)
avatar

  4  Lerdon Автор Сообщений: 97 - Destian Farbius

  • 14 апреля 2019, 12:52
+
0
А параметр Дельта он измеряет максимальное расстояние между уровнями?
avatar

  4  Lerdon Автор Сообщений: 97 - Destian Farbius

  • 14 апреля 2019, 12:54
+
0
да между парами уровней 38 50 61 с 2-х ТФ
avatar

  28  AM2 Сообщений: 9018 - Андрей

  • 14 апреля 2019, 13:01

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