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

Рейтинг 2146



РЕКОМЕНДУЮ



Пршу сделать советник Т3_Locker на Т3

Итак, принцип работы эксперта Т3_Locker:
1. При открытии к примеру ордера Buy трейдером или другим советником, эксперт выставляет отложенный ордер SellStop равным объемом и делит на несколько частей.

===========================================
Надо сделать чтобы эксперт выставлял не один отложенный локовый ордер, а разбить его на несколько частей и выставлять на растоянии друг от друга.

— У советника должны быть параметры расстояние между ордерами, безубыток и лот, который будет выставляться при локировании.
— И самое гланое, чтобы можно было выбрать какие отложки ставить байстоп или селстоп, чтобы не было проблем после закрытия по безубытку.

То есть у нас получилось что висит в бай 10 лотов, которые выставили руками или поставил какой то советник.
— У нас расстояние между ордерами 20 пунктов
-уровень безубытка (15)
-пункты прибыли безубытка (3)
— лот (2).
— ставим параметр выставления ордеров (селстоп)

Советник делить 10 лотов на 2 лота и получается 5 отложек и выставляет через растояние 20 пунктов селстоп ордерами.
При прохождении и срабатывании отложек, будет выставляться безубыток, чтобы при развороте мы вышли в плюс.
Советник если видит что выставился ордер или руками или другим советником, то он пересчитывает лоты, ну соответственно лоты должны достигнуть 2 лотов, чтобы он мог выставить отложку и для баланса выставляет ещё отложку через растояние.
Смысл эксперта чтобы поддерживать постоянно баланс лотов и через отложки сгладить минус, если тренд будет идти не в нашу сторону…
  • +1
  • Просмотров: 3826
  • 6 апреля 2016, 06:03
  • cashyra
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
Один заказ норма! :D 
zakaz.opentraders.ru/25597.html
avatar

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

  • 6 апреля 2016, 07:39
+
0
Это на будущее, когда будет время, пока я не забыл что хотел.
avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 6 апреля 2016, 12:29
+
0
Хотел попросить тебя сделать советник, правда ещё месяц не закончился, но очень нужно. Ты сделал много хороших советников, но вот страховка для более спокойной работы не помешает. Я думаю этот советник многим поможит выйти из сложной ситуации когда закроются одни ордера по профиту, а другие будут висеть в минусе и если продолжится движение, то минус будет увеличиваться. Можно конечно переждать, но тренд может быть большим. Пожалуйста помоги, плизззз.
Редактирован: 20 апреля 2016, 11:44
avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 20 апреля 2016, 11:43
+
0
Что простое я еще могу сделать. Обратитесь к платному, если так срочно.
avatar

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

  • 20 апреля 2016, 19:38
+
0
спасибо я подожду, пока советник TrendWave2 делает хорошие результаты я очень доволен, наконец можно получить прибыль на форексе.
avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 20 апреля 2016, 19:52
+
0
Пока есть свободное время сделал набросок. Нужны скрины с пояснениями к ним и максимально упростить ТЗ.




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

//--- Inputs
extern double Lots      = 0.1;      // лот
extern double Loss      = 5000;     // убыток в рублях
extern double Profit    = 100;      // профит в рублях
extern int StopLoss     = 0;        // лось
extern int TakeProfit   = 50;       // язь
extern int Step         = 100;      // шаг ордеров
extern int Expiration   = 10;       // истечение ордера в часах
extern int BuySell      = 1;        // 1-Buy 2-Sell 0-Off
extern int StopLimit    = 0;        // 0-Stop 1-Limit
extern int Slip         = 3;        // реквот
extern int Count        = 5;        // количество отложек
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,lot=Lots;

   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);
     }

   if(type>1) lot=OrdersLot()/Count;

   r=OrderSend(NULL,type,lot,NormalizeDouble(price,Digits),Slip,sl,tp,"",Magic,TimeCurrent()+Expiration*3600,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountOrders(int type)
  {
   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) count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double pr=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==OP_BUY || OrderType()==OP_SELL)
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int Type()
  {
   int type=0;
   if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES))
     {
      if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
        {
         type=OrderType();
        }
     }
   return(type);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double OrdersLot()
  {
   double lot=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) lot+=OrderLots();
           }
        }
     }
   return(lot);
  }
//+------------------------------------------------------------------+
//| Закрытие позиции по типу ордера                                  |
//+------------------------------------------------------------------+
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(CountTrades()<1)
     {
      if(BuySell==1) PutOrder(0,Ask);
      if(BuySell==2) PutOrder(1,Bid);
     }

   if(CountTrades()<2)
     {
      if(Type()==0 && CountOrders(5)<1)
        {
         for(int i=1;i<=Count;i++)
           {
            PutOrder(5,Ask-Step*i*Point);
           }
        }

      if(Type()==1 && CountOrders(4)<1)
        {
         for(int i=1;i<=Count;i++)
           {
            PutOrder(4,Ask+Step*i*Point);
           }
        }
     }

   if(CountTrades()>1 && ((Profit>0 && AllProfit()>Profit)||(Loss>0 && AllProfit()<-Loss))) CloseAll(-1);

   Comment("\n Lots: ",OrdersLot(),
           "\n Type: ",Type(),
           "\n Profit: ",AllProfit());
  }
//+------------------------------------------------------------------+



Редактирован: 21 апреля 2016, 11:40
avatar

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

  • 21 апреля 2016, 09:19
+
0
Мысль такая, у меня работает советник TrendWave2 и при закрытии профита висят в обратном движении лоты, допустим 10. Советник локер висит на другом графике валюты которой у нас работает, но выключен, а когда мне нужно, я его включаю и он смотрит разницу в лотах на графике советника TrendWave2, и советник локер расчитывает какой лот я ему поставил, расстояние и начинает вычеслять и выставлять отложки. И если можно то добавите безубыток на всякий случий.

А я повесил на график валюты но он не работает.



Редактирован: 21 апреля 2016, 17:11
avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 21 апреля 2016, 14:07
+
0
У вас по нескольким парам открыты позы, нужен мультивалютный локер? Когда для одной пары и есть серия только бай или селл это еще куда ни шло, а за такое ТЗ я не возьмусь.
avatar

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

  • 21 апреля 2016, 18:43
+
0
Так я думал чтобы на какую пару локер кидаешь на той паре он и работает и всё по ней контролирует.
avatar

  15  cashyra Автор Сообщений: 392 - Юра

  • 21 апреля 2016, 18:57

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