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

Рейтинг 2086



РЕКОМЕНДУЮ



Советник по индикатору и фракталам

Здравствуйте Андрей, напишите пожалуйста сову по индикатору ниже.

Работа на м1, пятизнак, мультивалютный. MT4
Индикатор писали вы, поэтому вам будет легко доработать его.

Условие для открытия ордеров.

Открывать сделку по сигналу или по стрелке, что быстрее появляется.

Это чтобы отсеять ложные сигналы.

Не открыть сделку в том же направлении, если предыдущий ордер не вышел в безубыток или плюс при условие, что следующий сигнал ниже предыдущего ордера или на том же уровне т.е если открыт селл ордер то второй ниже не открывать, если бай ордер то второй выше не открывать.

Не открываем ордер по противоположному сигналу, если уже есть открытый ордер и столбики индикатора при сигнале в селл идут выше., а также если фрактал направлен вниз. А при сигнале в бай столбики индикатора идет ниже. а фрактал направлен вверх.

Открывать сделку увеличенным лотом + 0.01 в том же направление, если цена открытия следующего ордера в селл выше, а цена следушего ордера в бай ниже т.е при открытие ордера в селл следующий сигнал в селл выше, то нарашиваем позиции.

При увеличении лота советник часть ордера при достижение части 50%, а также доливался при следующем сигнале в тут же сторону, или если предыдущий ордер вышел в безубыток или плюс. Открывал следующий ордер при закрытия предыдущего, если цена выше закрытого ордера. Советник сопровождает сделку по тралу. Закрывал ордер по профиту в валюте депозита.

Настройки

Лот
Максимальный лот
Максимальное кол-во открываемых ордеров
Умножение лота вкл.выкл
Проскальзывание

Тейк профит для ордеров (задаётся в настройках) вкл.вкл
Трал,
Безубыток вкл/выкл
Уровень БУ 30п
Магик
Попрошу вас также подправить этот индикатор, а именно добавить отключение алерта в настройках, убрать метки горизонтального маштаба предыдушего сигнала приследующем в настройках пункт.
еще хотелось логику сигналов подкоректировать, иногда выдает левые сигналы, несколько подряд.



варианты отработки





DivOsMA.mq4 (5 Kb)
  • +1
  • Просмотров: 3111
  • 27 января 2016, 02:53
  • cerber04
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Покажите на скрине входы и выходы по индикатору?
avatar

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

  • 27 января 2016, 03:04
+
0
Добавил картинки
вот еще свежые только с рынка


вот евро хорошо идет вот только бай чуть не по логике, но не факт что не отработают
avatar

  16  cerber04 Автор Сообщений: 409

  • 27 января 2016, 03:51
+
0
avatar

  16  cerber04 Автор Сообщений: 409

  • 27 января 2016, 03:58
+
+1
За ТЗ целиком я не возьмусь. Могу сделать максимально упрощенную версию, затем добавить некоторые пункты. Сейчас есть входы, бу, трал.




//+------------------------------------------------------------------+
//|                                                          Div.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2016, AM2"
#property link      "http://www.forexsystems.biz"
#property description "simple expert advisor"

//--- Inputs
extern int    StopLoss     = 500;
extern int    TakeProfit   = 500;
extern int    BULevel      = 300;
extern int    TrailingStop = 300;
extern int    Slip         = 30;
extern int    Magic        = 123;
extern double Lots         = 0.1;

//--- indicator parameters
input int InpFastEMA       = 12;   // Fast EMA Period
input int InpSlowEMA       = 26;   // Slow EMA Period
input int InpSignalSMA     = 9;    // Signal SMA Period

datetime t=0;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutOrder(int type,double price)
  {
   int    r=0;
   color clr=clrNONE;
   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,Lots,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,0,clr);
   return;
//---
  }
//+------------------------------------------------------------------+
//| Check for open order conditions                                  |
//+------------------------------------------------------------------+
void OpenPos()
  {
   double div1=iCustom(Symbol(),0,"DivOsMA",InpFastEMA,InpSlowEMA,InpSignalSMA,0,1);
   double div2=iCustom(Symbol(),0,"DivOsMA",InpFastEMA,InpSlowEMA,InpSignalSMA,0,2);
   double div3=iCustom(Symbol(),0,"DivOsMA",InpFastEMA,InpSlowEMA,InpSignalSMA,0,3);

//--- sell conditions
   if(div1<div2 && div2>div3)
     {
      PutOrder(1,Bid);
     }
//--- buy conditions
   if(div1>div2 && div2<div3)
     {
      PutOrder(0,Ask);
     }
//---
  }
//+------------------------------------------------------------------+
int CountTrades()
  {
   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()==OP_BUY || OrderType()==OP_SELL)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
void Trailing()
  {
   bool mod;
   for(int i=0; i<OrdersTotal(); 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;
                       }
                    }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   for(int i=0; i<OrdersTotal(); i++)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() || OrderMagicNumber()==Magic)
           {
            if(OrderType()==OP_BUY)
              {
               if(OrderOpenPrice()<=(Bid-(BULevel+20)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+20*Point,OrderTakeProfit(),0,Green);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+20)*Point) && OrderOpenPrice()<OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-20*Point,OrderTakeProfit(),0,Green);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| OnTick function                                                  |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(t!=Time[0])
     {
      OpenPos();
      t=Time[0];
     }
   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();
//---
  }
//+------------------------------------------------------------------+


Редактирован: 27 января 2016, 07:58
avatar

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

  • 27 января 2016, 06:56

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