dima1980

 
Уровень 10

  Торгую в компаниях:


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

Рейтинг 2153



РЕКОМЕНДУЮ



Советник Moving average

Здравствуйте.Напишите пожалуйста советник на машке, такой как я хочу я нигде не нашел.
Советник должен делать все четко по правилам.
Цена при пересечении скользящей, на определенное количество пунктов(задавалось вручную) открывалась сделка, (снизу вверх«buy», сверху вниз«sell»).
После прохождения ценой заданного количества пунктов, ставился«stop loss», на заданное количество пунктов от ордера.
Закрытие ордера при противоположном касании скользящей линии, даже если не успел сделать безубыток.
Очень важна четкая цикличность этих правил. Скользящая средняя одна.
  • 0
  • Просмотров: 3102
  • 28 ноября 2018, 23:09
  • dima1980
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
на 6-е
avatar

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

  • 29 ноября 2018, 17:25
+
0
Хорошо.
avatar

  10  dima1980 Автор Сообщений: 64

  • 29 ноября 2018, 18:08
+
0
1. цена пересекла МА на указанное количество пунктов, открыли позу.
2. опустилась или поднялась по отношению к МА, закрыли.



www.opentraders.ru/downloads/2178/

avatar

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

  • 29 ноября 2018, 21:38
+
0
avatar

  10  dima1980 Автор Сообщений: 64

  • 30 ноября 2018, 09:55
+
0
почему советник не открывает многие сделки? от этого многое зависит. Можно это исправить?
avatar

  10  dima1980 Автор Сообщений: 64

  • 30 ноября 2018, 09:58
+
0
почему советник не открывает многие сделки?

покажите входы на скринах
avatar

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

  • 30 ноября 2018, 19:46
+
0
Не пойму, ведь на скрине выше была сделка бай, закрылась правильно. А вот село не открыл, какие скрины нужны?
avatar

  10  dima1980 Автор Сообщений: 64

  • 30 ноября 2018, 20:12
+
0
какие скрины нужны

входы выходы с пояснениями. здесь вход здесь выход, подробно, чтобы даже школьник понял.
avatar

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

  • 30 ноября 2018, 20:48
+
0
avatar

  10  dima1980 Автор Сообщений: 64

  • 1 декабря 2018, 10:45
+
0
Цена ушла над скользящей МА на 10 пипсов открывается бай.
Цена вернулась к скользящей МА и коснулась линией БИД скользящую МА, бай закрывается.
Цена поднялась над скользящей МА на 10 пипсов открывается бай, цена пошла выше на 20 пипсов, делается безубыток, на скрине советник почему-то не сделал.
Если сделка закрылась по безубытку но не коснулась скользящей МА и пошла в том-же направлении, то на уровне 10 пипсов (или другое значение дельты) открывается снова ордер. Например цена прошла ниже средней МА на значение указанное в дельте, открывается селл, цена пошла дальше, поставился безубыток, и цена вернулась к безубытку задев его, ордер закрылся, но не коснувшись скользящей МА пошла в опять в селл, то на уровне указанном в дельте открывается снова селл.
Бай зеркально.
Редактирован: 1 декабря 2018, 12:01
avatar

  10  dima1980 Автор Сообщений: 64

  • 1 декабря 2018, 11:01
+
0
Селл зеркально.
avatar

  10  dima1980 Автор Сообщений: 64

  • 1 декабря 2018, 11:05
комментарий был удален 2018-12-01 11:09:25 dima1980

+
0

Не имеет значение, одной свечкой или несколькими свечками цена отошла вверх или вниз от скользящей МА, открывается сделка.
Редактирован: 1 декабря 2018, 11:16
avatar

  10  dima1980 Автор Сообщений: 64

  • 1 декабря 2018, 11:10
+
0

Почему-то тоже не открыл.
avatar

  10  dima1980 Автор Сообщений: 64

  • 1 декабря 2018, 11:19
+
0
Что делает значение «Реквот»?
avatar

  10  dima1980 Автор Сообщений: 64

  • 1 декабря 2018, 11:25
+
0
смотрите такой вариант:




//+------------------------------------------------------------------+
//|                                                      MADelta.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, 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 int StopLoss      = 2000;     // лось
extern int TakeProfit    = 3000;     // язь
extern int BULevel       = 0;        // уровень БУ
extern int BUPoint       = 30;       // пункты БУ
extern int TrailingStop  = 0;        // трал
extern int Slip          = 30;       // реквот
extern int Shift         = 1;        // на каком баре сигнал индикатора
extern int MAPer         = 36;       // период МА
extern int Delta         = 300;      // дельта
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 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()<2) 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 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;
                    }
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void BU()
  {
   bool m;
   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(OrderOpenPrice()<=(Bid-(BULevel+BUPoint)*Point) && OrderOpenPrice()>OrderStopLoss())
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }

            if(OrderType()==OP_SELL)
              {
               if(OrderOpenPrice()>=(Ask+(BULevel+BUPoint)*Point) && (OrderOpenPrice()<OrderStopLoss() || OrderStopLoss()==0))
                 {
                  m=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-BUPoint*Point,OrderTakeProfit(),0,Yellow);
                  return;
                 }
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll(int ot=-1)
  {
   bool cl;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(BULevel>0) BU();
   if(TrailingStop>0) Trailing();
   double ma=iMA(NULL,0,MAPer,0,0,0,0);

   if(CountTrades()<1)
     {
      if(Ask-ma>Delta*_Point) PutOrder(0,Ask);
      if(ma-Bid>Delta*_Point) PutOrder(1,Bid);
     }
   else
     {
      if(Bid<ma) CloseAll(0);
      if(Ask>ma) CloseAll(1);
     }
  }
//+------------------------------------------------------------------+

avatar

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

  • 1 декабря 2018, 15:48
+
0
Я не совсем уверен что у меня получится. Что мне с этим делать?
avatar

  10  dima1980 Автор Сообщений: 64

  • 1 декабря 2018, 17:17
+
0
обновил в базе: www.opentraders.ru/downloads/2178/
avatar

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

  • 1 декабря 2018, 20:03
+
0
Спасибо.
avatar

  10  dima1980 Автор Сообщений: 64

  • 1 декабря 2018, 20:47

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