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

Рейтинг 2081



РЕКОМЕНДУЮ



Сова для МТ5 на основе осциллятора WO.

Приветствую, Андрей!
Есть просьба. Нужен советник на платформе МТ5. Работа для 5 (приоритет) и 4 значного брокера.

Принцип работы. За основу взят индикатор WeightOscillator (MT5). Фильтр сигналов МА.
Сигнал на покупку: первая смена столбика осциллятора WO (смена тренда). Фильтр: свеча бычья, цена выше МА. На вновь открывшейся свече покупаем по рынку.

Сигнал на продажу: первая смена столбика осциллятора WO. Фильтр: свеча медвежья, цена ниже МА. На вновь открывшейся свече продаем по рынку.

Жаль осциллятор WO не красит столбики как АО. Было бы нагляднее.

Опции в советнике:
1. Размер лота.
2. SL.
3. TP (если 0, то по противоположному сигналу осциллятора WO).
4. Проскальзывание (для покупки и закрытия ордеров).
5. Перевод в безубыток (если 0 то не нужно) — ну или как то по другому обыграть...true/false там.
6. Настройки WO.
7. Настройки МА.

Дабы не получилось, что я хулиганю… осциллятор можно скачать тут www.mql5.com/ru/code/17063
  • +2
  • Просмотров: 4073
  • 5 декабря 2016, 17:49
  • poker
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
+1
Как только доберусь до вашего заказа, сообщу, ждите.
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 5 декабря 2016, 17:54
+
0
*friends*  жду
avatar

  22  poker Автор Сообщений: 801

  • 5 декабря 2016, 17:57
+
0
Если заказ еще в силе начну делать.
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 7 декабря 2016, 19:59
+
0
Андрей, в силе… пока ручками торгую на демке…
avatar

  22  poker Автор Сообщений: 801

  • 8 декабря 2016, 09:20
+
0
А где библиотека от индикатора?
#include <SmoothAlgorithms.mqh> 
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 8 декабря 2016, 18:00
+
0
Странно… раньше были…
Есть тут www.mql5.com/ru/code/17091
Он такой же, просто еще и с Алертом…
avatar

  22  poker Автор Сообщений: 801

  • 8 декабря 2016, 18:05
+
+1
Вот первый блин. Есть входы по индикатору во и ма, закрытие по сигналу, бу: www.opentraders.ru/downloads/1416/



//+------------------------------------------------------------------+
//|                                                           WO.mq5 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.02"

#include <Trade\Trade.mqh>            // Подключаем торговый класс CTrade
#include <SmoothAlgorithms.mqh> 


//--- входные параметры эксперта
input int      TP        = 1111;      // Тейкпрофит
input int      SL        = 1111;      // Стоплосс
input int      BULevel   = 200;       // Уровень БУ
input int      BUPoint   = 20;        // Пункты БУ
input int      Slip      = 50;        // Проскальзывание
input double   Lot       = 1;         // Количество лотов для торговли 

//--- входные параметры индикатора MA
input int      MAPeriod=28;           // Период MA
//+-----------------------------------------------+
//|  ВХОДНЫЕ ПАРАМЕТРЫ ИНДИКАТОРА WO              |
//+-----------------------------------------------+
//---- Параметры RSI
input double RSIWeight=1.0;
input uint   RSIPeriod=14;
input ENUM_APPLIED_PRICE   RSIPrice=PRICE_CLOSE;
//---- Параметры MFI
input double MFIWeight=1.0;
input uint   MFIPeriod=14;
input ENUM_APPLIED_VOLUME MFIVolumeType=VOLUME_TICK;
//---- Параметры WPR
input double WPRWeight=1.0;
input uint   WPRPeriod=14;
//---- Параметры DeMarker
input double DeMarkerWeight=1.0;
input uint   DeMarkerPeriod=14;
//---- Включение сглаживания волны
input Smooth_Method bMA_Method=MODE_JJMA; //метод усреднения
input uint bLength=5; //глубина сглаживания                    
input int bPhase=100; //параметр сглаживания,
//---- для JJMA изменяющийся в пределах -100 ... +100, влияет на качество переходного процесса;
//---- Для VIDIA это период CMO, для AMA это период медленной скользящей
input uint HighLevel=70;         // уровень перезакупа
input uint LowLevel=30;          // уровень перепроданности

                                 //WOHandle=iCustom(NULL,0,"WeightOscillator",RSIWeight,RSIPeriod,RSIPrice,MFIWeight,MFIPeriod,WPRWeight,WPRPeriod,DeMarkerWeight,DeMarkerPeriod,bMA_Method,bLength,bPhase,HighLevel,LowLevel);

//--- глобальные переменные
int MAHandle;                         // Хэндл индикатора MA
int WOHandle;                         // Хэндл индикатора WO
double WO[3],MA[1];                   // Динамические массивы для хранения численных значений индикаторов

CTrade trade;                         // Используем торговый класс CTrade
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- Получаем хэндл индикаторов  Bollinger Bands 
   MAHandle=iMA(NULL,0,MAPeriod,0,0,0);
   WOHandle=iCustom(NULL,0,"WeightOscillator");
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- освобождаем хэндл индикатора
   IndicatorRelease(MAHandle);
   IndicatorRelease(WOHandle);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);
   double sl=0,tp=0;

   for(int i=PositionsTotal()-1;i>=0;i--)
     {
      if(PositionSelect(_Symbol))
        {
         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
           {
            if(PositionGetDouble(POSITION_PRICE_OPEN)<=Bid-(BULevel+BUPoint)*_Point)
              {
               if(PositionGetDouble(POSITION_PRICE_OPEN)>PositionGetDouble(POSITION_SL))
                 {
                  sl=PositionGetDouble(POSITION_PRICE_OPEN)+BUPoint*_Point;
                  tp=PositionGetDouble(POSITION_TP);
                  trade.PositionModify(_Symbol,sl,tp);
                 }
              }
           }

         if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
           {
            if(PositionGetDouble(POSITION_PRICE_OPEN)>=Ask+(BULevel+BUPoint)*_Point)
              {
               if(PositionGetDouble(POSITION_PRICE_OPEN)<PositionGetDouble(POSITION_SL) || PositionGetDouble(POSITION_SL)==0)
                 {
                  sl=PositionGetDouble(POSITION_PRICE_OPEN)-BUPoint*_Point;
                  tp=PositionGetDouble(POSITION_TP);
                  trade.PositionModify(_Symbol,sl,tp);
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- Копируем значения индикаторов
   CopyBuffer(WOHandle,0,0,3,WO);
   CopyBuffer(MAHandle,0,0,1,MA);

// Лучшее предложение на покупку
   double Ask=SymbolInfoDouble(_Symbol,SYMBOL_ASK);
// Лучшее предложение на продажу                           
   double Bid=SymbolInfoDouble(_Symbol,SYMBOL_BID);

//--- Стопы
   double stop=0,take=0;

//--- объявляем переменные типа boolean, они будут использоваться при проверке условий для покупки и продажи

   bool Buy=WO[2]>50 && WO[1]<50 && Ask>MA[0];
   bool Sell=WO[2]<50 && WO[1]>50 && Ask<MA[0];

   if(BULevel>0) BU();
//Нет позиции и сигнал на покупку
   if(PositionsTotal()<1 && Buy)
     {
      //--- Вычисляем стопы
      if(SL==0)stop=0; else stop=NormalizeDouble(Ask-SL*_Point,_Digits);
      if(TP==0)take=0; else take=NormalizeDouble(Ask+TP*_Point,_Digits);
      //--- Открываем ордер на покупку
      trade.PositionOpen(_Symbol,ORDER_TYPE_BUY,Lot,Ask,stop,take);
      //--- Ставим виртуальные стопы
     }

//Нет позиции и сигнал на продажу
   if(PositionsTotal()<1 && Sell)
     {
      //--- Вычисляем стопы
      if(SL==0)stop=0; else stop=NormalizeDouble(Bid+SL*_Point,_Digits);
      if(TP==0)take=0; else take=NormalizeDouble(Bid-TP*_Point,_Digits);
      //--- Открываем ордер на продажу
      trade.PositionOpen(_Symbol,ORDER_TYPE_SELL,Lot,Bid,stop,take);
     }

// Закрытие по сигналу
   if(PositionSelect(_Symbol))
     {
      // Открыта покупка
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)
        {
         // Закрываем позицию бай
         if(Sell)trade.PositionClose(_Symbol);
        }

      // Открыта продажа
      if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)
        {
         // Закрываем позицию селл
         if(Buy)trade.PositionClose(_Symbol);
        }
     }

   Comment("\n WO1: ",WO[1],"\n WO2: ",WO[2]);
  }
//+------------------------------------------------------------------+


Редактирован: 9 декабря 2016, 17:56
avatar

  34  AM2 Сообщений: 15869 - Андрей

  • 8 декабря 2016, 19:57
+
+1
Тёзка, спасибо огромное. Все пашет вроде как *good*  начинаю тестить…
Терпения тебе и удачи во всем… особенно с нами — изобретателями *drinks* 
На связи *hi* 
avatar

  22  poker Автор Сообщений: 801

  • 8 декабря 2016, 22:52

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