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

Рейтинг 2146



РЕКОМЕНДУЮ



Советник по Автоматическому открытию сделок в 2х направлениях. МТ5/МТ4 не важно.

Смотрим ситуацию, мани менеджмент и риск менеджмент в торговле я думаю, все знают. Опустим эту тему.
Торгуем 1%, чтобы было безопасно, возможно много раз усреднять сделку для выхода из минуса.
Мы входим в рынок на sell и buy.
Одна из сделок идет в прибыль, другая в просадку (убыточная).
Как только прибыльная цена достигает «пика», она разворачивается.
Что бы зафиксировать прибыль как можно больше, мы ставим ТрейдингСтоп (в МТ5 так называется). Когда тренд меняет свое направление в противоположную сторону, дабы не учитывать колебания 100-300 (возьмем 200п.)пунктов которые возможны, мы его ставим.
Получается следующее…

Цена идет к примеру вверх (цена растет), проходит 500 пунктов, делает спад на 100 пунктов, далее опять растет до 1000 пунктов прибыль. Меняет свое направление, падает на 300 пунктов. Сделка закрывается по ТрейдингСтоп в прибыльной зоне 800 пунктов.
При закрытии по ТрейдингСтоп сделка открывается заново в том же направлении, то есть buy.

И так далее. На данном этапе понятно?

Что делать с убыточной сделкой?
Как показывает практика, при «коррекции» цены и всех тенденций, она проходит в обратную сторону (даже при восходящем тренде) примерно 500 пунктов ВСЕГДА.
Именно по этому нам надо усреднять убыточную сделку ровно в 2 раза.
То есть, была сделка 0,1, стала 0,2, стала 0,4, 0,8, 1,6, 3,2, 6,4 и так далее.

В любом случае, сделка рано или поздно, закроется, т.к. цена продет коррекцию в 500 пунктов. Сделка закроется хотя бы в 0 или в прибыль.

Так как прибыльная сделка закрывается все время положительно, у нас растет уровень моржи и есть возможность усреднять.

Идея понятна?
Может кто такой советник сделать? Не важно МТ5 или МТ4
  • +1
  • Просмотров: 5563
  • 8 февраля 2015, 20:08
  • Lunum
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
Оху, что бы мы друг друга поняли, могли бы Вы пересказать идею (своими словами), что бы мы поняли друг друга окончательно. А то мне не ловко уже совсем Вас просить)
Редактирован: 9 февраля 2015, 00:02
avatar

  2  Lunum Автор Сообщений: 60

  • 9 февраля 2015, 00:01
+
+1
1. Нет такого понятия как
ТрейдингСтоп

Трейдинг — это английское слово — trading — торгующий

Не путайте, пожалуйста, никого этим названием.
Трейлинг стоп
От английского слова — trailingскользящий!

2.
В любом случае, сделка рано или поздно, закроется, т.к. цена продет коррекцию в 500 пунктов. Сделка закроется хотя бы в 0 или в прибыль.

Крайне неверное утверждение. Вот так и происходит слив депозита.
(Не удивлюсь, если вы не поверите)

3. Вы точно отказались от предыдущей идеи?
Мы только там пришли к общему знаменателю. И даже на выраженном нисходящем/восходящем движении на ней вы сможете заработать.

4.
Торгуем 1%

Как мы можем торговать 1% с этой идеей? Если мы будем постоянно усреднять? Для начала запрограммирую без проверки капитала и уровня маржи. Если советник вас устроит, то добавим эти функции.

Итак, по данной идее. Учитывая недопонимание в предыдущем топике, не могли бы вы проиллюстрировать данный топик на примерах?
Рыночная цена 1,13501, запускаем советник, указываем ему в пунктах buy stop и sell stop 200 пунктов от цены. Цена пошла вверх, сработал buy stop — купили 1,135701… и т.д.
Вас не затруднит так написать? Чтобы сразу для вас запрограммировать то, что нужно.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 9 февраля 2015, 00:31
+
0
Цена 1,13000
Открыли 2 позиции на buy и sell.
Цена пошла вверх, стала 1,14000
Одна сделка +1000 пунктов, вторая -1000.
Цена начала коррекцию, стала 1,13800. Сделка закрылась по ТрейЛИНГ ( <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; '>&nbsp; '>&nbsp;  ) Стопу в прибыльной зоне на 800 пунктах.
Сразу открылась сделка опять на покупку от цены 1,13800.
Цена пошла вниз, до отметки 1,12800.

Ордер который на покупку от цены 1,13800 произвел усреднение. Т.е. объем вырос в 2 раза.
Цена продолжила свое движение вниз, стала 1,11800.
Ордер на покупку еще раз усреднился и удвоился.

Цена развернулась, стала 1,12000 и ордер который был на продажу, так же зафиксировал прибыль по Стрейлинг Стопу на 800 пунктах.


Редактирован: 9 февраля 2015, 00:49
avatar

  2  Lunum Автор Сообщений: 60

  • 9 февраля 2015, 00:46
+
0
Как мы можем торговать 1% с этой идеей? Если мы будем постоянно усреднять?
1% стартовый лот. Что позволяет возможность усреднять.

Крайне неверное утверждение. Вот так и происходит слив депозита.

Зависит от суммы депозита.

Трейлинг стоп
От английского слова — trailing — скользящий!


Трейлинг :)  Запомнил)
avatar

  2  Lunum Автор Сообщений: 60

  • 9 февраля 2015, 00:50
+
0
ссылка на советник: opentraders.ru/downloads/588/
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 10 февраля 2015, 02:09
+
0
Такс, тестирую.
Можно что бы при закрытии по трейлингу, закрывать все открытые ордера по данному направлению?

Работает здорово. Т.е. реально трейлинг открывается, фиксирует прибыль.
Единственно что, видимо фактически удвоенная позиция, действительно тут лишняяю Слишком большая просадка идет.
Можно сделать просто открывать такую же сделку 0,1? В случае просадки.
Далее если 1 из ордеров по тралингу закрывается, то закрывать все.

Вроде правильно выразился и сам понял)
avatar

  2  Lunum Автор Сообщений: 60

  • 10 февраля 2015, 16:42
+
0
Работает советник. Супер.
Можно пока только поправить, что бы при закрытии по Трейлингу что бы все сделки по направлению были закрыты?
avatar

  2  Lunum Автор Сообщений: 60

  • 10 февраля 2015, 19:57
+
0
т.е. лот пока не меняем?
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 10 февраля 2015, 23:49
+
0
Да, сейчас делаем только что бы в случае закрытия сделки по трейлингу, остальные сделки тоже закрывались по данному направлению. Все остальное пока супер. Надо затестить будет на данному уровне. Работает как по часам. Скоро поставлю на выделенный сервер что ы 24/7 работал. Посмотреть как будет справляться в режиме реального времени.
avatar

  2  Lunum Автор Сообщений: 60

  • 11 февраля 2015, 01:00
+
0
спасибо, отпишусь завтра следующему тесту, если конечно поправите. Так же, если кто-то еще тестирует, возможно будут идеи?
По анализу, на данный момент, советник показывает убыток и проблему исключительно по сделкам которые он не закрывает в автоматическом порядке, если будет закрывать как планирую, прогресс будет на лицо.
avatar

  2  Lunum Автор Сообщений: 60

  • 11 февраля 2015, 01:02
+
0
Я знаю что будет, будет слив депозита *cry*  *haha* 
avatar

  14  beton2011 Сообщений: 895

  • 12 февраля 2015, 21:03
+
0
//+------------------------------------------------------------------+
//|                                               LunumExp_mq4_3.mq4 |
//|                                                              Oxy |
//|                                   http://oxy.opentraders.ru/bio/ |
//+------------------------------------------------------------------+
#property copyright "Oxy"
#property link      "http://oxy.opentraders.ru/bio/"
#property version   "1.00"
#property strict
//------- Внешние параметры советника -----------------------------------------+
extern double BeginLot            = 0.1;       // Первоначальный лот
extern int    Drawdown            = 100;       // Просадка в пунктах, 0 - без просадки
extern int    PlusPoints          = 100;       // Сколько должна пройти цена в плюс в пунктах, чтобы мы выставили SL в безубыток
extern int    StepSL_plus         = 20;        // Шаг трала

extern int    Slippage   = 30;         // Проскальзывание цены
extern int    MagicNumber= 567882;     // Идентификатор ордера
//------- Глобальные переменные советника -------------------------------------+
string Symb;
double pricePointBuy = -1;
double pricePointSell= -1;
int    lastLossTicket= -1;
double lotBuy =BeginLot;
double lotSell=BeginLot;

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
   if (!IsTradeAllowed()) { Print("Необходимо разрешить советнику торговать"); return(INIT_FAILED);}  
   if(PlusPoints-MarketInfo(Symbol(), MODE_STOPLEVEL)<=StepSL_plus) { Print("Неправильно выставлены значения безубытка"); return(INIT_FAILED);}  
   Symb = Symbol();
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason) {  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
    // если нет позиций buy - открываем их
    if(notOpenPos(0)){
      lotBuy = BeginLot;
      BuyPos();
    }
    // если нет позиций sell - открываем их
    if(notOpenPos(1)){
      lotSell= BeginLot;
      SellPos();
    }
    // в прибыли - трал
    if(Ask>=pricePointBuy +PlusPoints*Point && PlusPoints>0) {pricePointBuy  = pricePointBuy +StepSL_plus*Point;  changePos (0); }
    if(Bid<=pricePointSell-PlusPoints*Point && PlusPoints>0) {pricePointSell = pricePointSell-StepSL_plus*Point;  changePos (1); }
    // в убытках - удвоение
    if(Ask<=pricePointBuy -Drawdown*Point && Drawdown>0){ lotBuy = lotBuy*2;  BuyPos();  }
    if(Bid>=pricePointSell+Drawdown*Point && Drawdown>0){ lotSell= lotSell*2; SellPos(); }
    
    // Если закрылся трал - то закрываем подобные ордера
    if (isClosePosByLoss()) CloseOrders(OrderType());
  }
//+------------------------------------------------------------------+
bool notOpenPos (int typeOrder) {
  int i;
  for (i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symb && OrderMagicNumber()==MagicNumber) {
        if(OrderType()==typeOrder) {
          return(false);
        }
      }
    }
  }
  return (true);
}
//+------------------------------------------------------------------+
void changePos (int typeOrder) {
  int i, ot;
  double sl;
  for (i=0; i<OrdersTotal(); i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symb && OrderMagicNumber()==MagicNumber) {
        ot = OrderType();
        if(ot==0 && ot==typeOrder) {
          if(OrderStopLoss()==0) sl = OrderOpenPrice() + StepSL_plus*Point;
          else sl = OrderStopLoss() + StepSL_plus*Point;
          
          if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(sl,Digits), 0, 0)) Print ("Не удалось изменить ордер ", OrderTicket());
          lotBuy = BeginLot;
        }
        if(ot==1 && ot==typeOrder) {
          if(OrderStopLoss()==0) sl = OrderOpenPrice() - StepSL_plus*Point;
          else sl = OrderStopLoss() - StepSL_plus*Point;
          
          if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(sl,Digits), 0, 0)) Print ("Не удалось изменить ордер ", OrderTicket());
          lotSell= BeginLot;
        }
      }
    }
  }
}
//+------------------------------------------------------------------+
bool BuyPos() {
  double sl=0, tp=0;
  int ticket = OrderSend(Symb, OP_BUY, lotBuy, NormalizeDouble(Ask,Digits), Slippage, NormalizeDouble(sl,Digits), NormalizeDouble(tp,Digits), NULL, MagicNumber); 
  if (ticket == -1) return(false);
  if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) pricePointBuy  = OrderOpenPrice();
  return (true);
}
bool SellPos() {
  double sl=0, tp=0;
  int ticket = OrderSend(Symb, OP_SELL, lotSell, NormalizeDouble(Bid,Digits), Slippage, NormalizeDouble(sl,Digits), NormalizeDouble(tp,Digits), NULL, MagicNumber); 
  if (ticket == -1) return(false);
  if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES)) pricePointSell = OrderOpenPrice();
  return (true);
}
//+------------------------------------------------------------------+
bool isClosePosByLoss() {
  int i,  k=OrdersHistoryTotal();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderMagicNumber()==MagicNumber && OrderSymbol()==Symb){
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if(OrderTicket()==lastLossTicket) return(false);
          else if (OrderTicket()!=lastLossTicket) {
            //_______________________
            if(OrderType () == OP_BUY) {
              if(OrderClosePrice() <= OrderStopLoss() )
                {lastLossTicket = OrderTicket(); return(true);} // закрылись в Loss
            }
            if(OrderType() == OP_SELL) {
              if(OrderClosePrice() >= OrderStopLoss() && OrderStopLoss() != 0)
                {lastLossTicket = OrderTicket(); return(true);} // закрылись в Loss
            } 
            //_______________________
          }
        }
      }
    }
  }
  return(false);
}
//+------------------------------------------------------------------+
void CloseOrders(int ot) {
  int i, k=OrdersTotal();
  for (i=k-1; i>=0; i--) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==Symb && OrderMagicNumber()==MagicNumber && ot==OrderType()) {
        if (ot==0) {          
          if(!OrderClose(OrderTicket(), OrderLots(), Bid, Slippage)){
            Print("Не удалось закрыть позицию ", OrderTicket());
          }
        }
        if (ot==1) {          
          if(!OrderClose(OrderTicket(), OrderLots(), Ask, Slippage)){
            Print("Не удалось закрыть позицию ", OrderTicket());
          }
        }
      }
    }
  }
}
//+------------------------------------------------------------------+
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 11 февраля 2015, 02:57
+
0
это вставить в советника?)
avatar

  2  Lunum Автор Сообщений: 60

  • 11 февраля 2015, 08:13
+
0
да, полностью замените код советника на этот в MetaEditor и нажмите кнопку «компилировать»
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 11 февраля 2015, 11:53
+
0
Сделал, тестирую в тестере, все равно сделки все не закрывает, если хотя бы одна зафиксировалась с при былью по тралу.
Сейчас на демке попробую.
Редактирован: 11 февраля 2015, 15:04
avatar

  2  Lunum Автор Сообщений: 60

  • 11 февраля 2015, 14:36
+
0
Вы писали:
Да, сейчас делаем только что бы в случае закрытия сделки по трейлингу, остальные сделки тоже закрывались по данному направлению.

По данному направлению сделки все и закрываются. Противоположные не трогаются.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 11 февраля 2015, 16:28
+
0
Вообщем закрывает он не все, он закрывает определенный объем. Я так понимаю, он закрывает половина от каждой сделки.
Только в том случае, если сделка 0,1, он закрывает ее полностью.

Т.к. имея 3 сделки примеру:
0,1; 0,2; 0,4.

Остается 0,1 и 0,2.
Редактирован: 11 февраля 2015, 19:04
avatar

  2  Lunum Автор Сообщений: 60

  • 11 февраля 2015, 18:56
+
0
Ну как не все?
Вот же все закрывает:


Закрыт весь бай и потом открывает новый.



Принимаются прин-скрины графиков и скрины вкладки в тестере — результаты.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 11 февраля 2015, 20:30
+
0
Если что-то не работает или работает не так как вы хотите, вы пишите, прикрепляйте скрины, будем разбираться.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 12 февраля 2015, 15:43
+
0
Молодцы, вроде не плохо выходит (по ценам открытия, но не все тики!!!).
Спасибо Lunum за идею и Oxy за реализацию.
А в хранилище сырой вариант… ( 
<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; <img src='http://opentraders.ru/templates/skin/g6h/images/smilies/017.gif' alt=' ;) '>&nbsp; ))
Редактирован: 28 февраля 2015, 13:06
avatar

  10  session Сообщений: 165

  • 28 февраля 2015, 12:53
+
0
Лот бы надо все же менять. Или коэффициент.

А на пиках просто сказка :) 
Редактирован: 28 февраля 2015, 13:47
avatar

  10  session Сообщений: 165

  • 28 февраля 2015, 13:46
+
+1
Если вы хотите, чтобы под вас конкретно доработали этот советник, то пишите топик со всеми вашими пожеланиями, будем обсуждать, дорабатывать.
Кстати, пользователь beton2011 так и сделал.
Вот его топики, где мы дорабатывали этот советник под него (может вам подойдет тоже):
zakaz.opentraders.ru/22791.html
zakaz.opentraders.ru/23169.html
Во втором топике — последняя версия этого советника.
avatar

  27  Oxy Сообщений: 3430 - ..ιllιlι.lι.ιllι.ιlι..

  • 28 февраля 2015, 14:06
+
0
Спасибо.
avatar

  10  session Сообщений: 165

  • 28 февраля 2015, 16:53

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