Напишу советник бесплатно - страница 156

 
Valeriy Yastremskiy #:

По хорошему, если хотите в тестере смотреть, можно проверку убрать на время позже реального. Это в ОнИнит. И не помню, точно ли в 4ке в тестере запрос времени таймкаррент вернет время тестера. По моему он вернет текущее время, поэтому в тестере там просто выставляются ордера сразу и все. Так же запрос локального времени даст текущее локальное время. 

Это в 5ке в тестере полный эмулятор окружения.

Спасибо за пояснения

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

https://www.mql5.com/ru/code/10236

//+------------------------------------------------------------------+
//|                                                    i`lbeback.mq4 |
//|                                Copyright ? 2011, AM2 && Tiburond |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright ? 2011, AM2 && Tiburond"
#property link      "http://www.forexsystems.biz"

#define MAGIC  20110406

extern int StopLoss    = 1300;   //???????? ??????
extern int StartHour   = 21;     //??? ?????? ????????(???????????? ?????)
extern int Distance    = 250;    //?????????? ?? ???? ??? ????????? ??????
extern int Step        = 50;     //??? ????????? ???????
extern int Count       = 4;      //?????????? ??????????????? ???????
extern int Expiration  = 4;      //????? ????????? ??????
extern double Lots     = 1;      //???
extern bool MM         = true;   //?????????? ???????????????
extern double TSP      = 5;      //????
extern bool BU         = true;   //?????????? ?????? ??????? ? ????????? ? ??????? ???
extern int BUHour      = 2;      //??? ????? ??????? ??????? ??????? ? ?????????

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
//----
  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   int b=0,s=0,res;
   datetime expiration = TimeCurrent()+3600*Expiration;
   double BuyPrice=fND(Open[0]-Distance*Point);
   double SellPrice=fND(Open[0]+Distance*Point);  
   for (int i=OrdersTotal()-1;i>=0;i--)
     {
      if (OrderSelect(i, SELECT_BY_POS))
        {  
         if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC) continue;
         if (OrderType()==OP_BUYLIMIT) b++;
         if (OrderType()==OP_SELLLIMIT) s++;
        }  
     }
   if (Hour()>BUHour && Hour()<StartHour && AllProfit()>0) ClosePositions();
   if (Hour()>BUHour && DayOfWeek() == 5) ClosePositions();  
   if (Hour()==StartHour && b<1 && DayOfWeek() != 5)
   for(i=1;i<=Count;i++)
    {
     {              
      res=OrderSend(Symbol(),OP_BUYLIMIT,fLots(),fND(Ask-(Distance*Point+i*Step*Point)),3,fND(BuyPrice-StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Blue);      
      Sleep(3000);
      if(res<0)
         {
            Print("??????: ",GetLastError());
         } else {
            RefreshRates();
         }    
     }
    }
        
   if (Hour()==StartHour && s<1 && DayOfWeek() != 5)
   for(i=1;i<=Count;i++)
    {  
     {              
      res=OrderSend(Symbol(),OP_SELLLIMIT,fLots(),fND(Bid+(Distance*Point+i*Step*Point)),3,fND(SellPrice+StopLoss*Point),fND(Open[0]),"",MAGIC,expiration,Red );
      Sleep(3000);
      if(res<0)
         {
            Print("??????: ",GetLastError());
         } else {
            RefreshRates();
         }    
     }
    }    
//----  
   return(0);
  }
//+------------------------------------------------------------------+
double fND(double d, int n=-1)
  {  
   if (n<0) return(NormalizeDouble(d, Digits));
   return(NormalizeDouble(d, n));
  }
//+------------------------------------------------------------------+
double fLots()
  {
   double lot=Lots;
   double  lot_min =MarketInfo( Symbol(), MODE_MINLOT  );
   double  lot_max =MarketInfo( Symbol(), MODE_MAXLOT  );
   if (MM)
     {
      double  lot_step =MarketInfo( Symbol(), MODE_LOTSTEP );
      double  lotcost =MarketInfo( Symbol(), MODE_TICKVALUE );      
      double  dollarsPerPip=0.0;

      lot = AccountFreeMargin()*TSP/100.0;
      dollarsPerPip=lot/StopLoss;
      lot=fND(dollarsPerPip/lotcost, 2);      
      lot=fND(lot/lot_step, 0) * lot_step;
     }
   if (lot<lot_min) lot=lot_min;
   if (lot>lot_max) lot=lot_max;
   return(lot);
  }
//+------------------------------------------------------------------+
void ClosePositions()
  {
   if(BU)
   for (int i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() == Symbol())
       {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
          {
            if (OrderType() == OP_BUY) OrderClose(OrderTicket(), OrderLots(), Bid, 3, Blue);
            if (OrderType() == OP_SELL) OrderClose(OrderTicket(), OrderLots(), Ask, 3, Red);
          }
         Sleep(1000);
      }
    }
  }
//+------------------------------------------------------------------+
double AllProfit()
  {
   double Profit = 0;
   for (int i=OrdersTotal()-1;i>=0;i--)
    {
      OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
      if (OrderSymbol() != Symbol() || OrderMagicNumber() != MAGIC) continue;
      if (OrderSymbol() == Symbol() && OrderMagicNumber() == MAGIC)
         if (OrderType() == OP_BUY || OrderType() == OP_SELL) Profit += OrderProfit();
    }
   return (Profit);
  }
//+------------------------------------------------------------------+


Прошу помочь внести правки. Данный советник не закрывает открытые ордера в принудительном порядке. Хотелось бы, чтобы наряду с временем установления лимиток можно было бы устанавливать также время их принудительного закрытия. 
Для оптимизации нужны ТП и тралл. Тралл, чтобы все лимитки по-немногу, но собирали ночной шум.
Советник по стратегии "Возврат".
Советник по стратегии "Возврат".
  • www.mql5.com
Ночной скальпер. EURUSD H1.
 
Здравствуйте. Кто может помочь с советником для MT4. Нужен советник без наворотов для сопровождения выставленных вручную ордеров(с magic или без). Если ордер закрылся по стоп-лоссу, советник открывает новый ордер в ту же сторону с заданным лотом, SL и TP. Если ордер закрылся по тейк-профиту, советник открывает новый ордер в противоположную сторону  с заданным лотом, SL и TP. Может есть готовые варианты, не смог ничего найти. Заранее большое спасибо.
 
Anton Yakovlev:
если у вас есть хороая стратегия, и вы готовы ей поделиться,могу написать советника. приглашаю обсудить публично
Здрасти.нужен индикатор работающей на основе свечных движений (паттерна).Возможно ли его написать,почем и как проходить ваше требование.Спасибо
 
Здравствуйте! 
Можете написать советник пипсовщик под мт4
Стратегия :
Установка 2 разноправленных лимитных ордера buy limit/sell limit на X растоянии друг от друга с стопом, тейком, тралом. 
К примеру:
Если цена цепляет любую из лимиток и закрывает данный  ордер по стопу или тейку, противоположная  лимитка отменяется и устанавливается заново 2 разноправленных лимитки. 
параметры советника:
Лот
Стоп
Тейк
Трал
Расстояние между лимитками
Мэджик
Проскальзывание
 
Ivan Bielyi #:
Установка 2 разноправленных лимитных ордера buy limit/sell limit с ограничением по спреду на 

А как можно ограничить спред на лимитных?

 
Evgeny Belyaev #:

А как можно ограничить спред на лимитных?

Ну я имею ввиду что если спред к примеру выше 5п то отложки не выставлять, но если это сильно проблематично, можно этот параметр пропустить
 
Ivan Bielyi #:
Ну я имею ввиду что если спред к примеру выше 5п то отложки не выставлять, но если это сильно проблематично, можно этот параметр пропустить

Какой в этом смысл? Они исполняться не сейчас(это же лимитки). А когда придет время исполниться спрел будет совершенно другой.

 
Evgeny Belyaev #:

Какой в этом смысл? Они исполняться не сейчас(это же лимитки). А когда придет время исполниться спрел будет совершенно другой.

Тупанул, тогда точно без этого параметра))) 
 
Daniil Osipov #:
Что он берет за основу и насколько сложный алгоритм.

Определяет тренд по скользящей средней

TrendUp := MAvg[1]>TrendUp[1] ? max(Up,TrendUp[1]) : Up
Причина обращения: