kalmyk
Дмитрий

 
Уровень 10

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


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

Рейтинг 2087



РЕКОМЕНДУЮ



Помошник

Андрей, доброго дня.
Торгую руками, в половине случаев задействуется сетка отложенных ордеров.
Необходим советник, который выставлял тейк-профит и трейлинг стоп на открытый ордер, а при срабатывании лимитников выставлял тейк-профит и трейлил всю сеть. Все расчеты в % от депозита с возможность устанавливать шаг в 0.1%. Параметры совы:
TakeProfit — тейк-профит в %
SL — стоп лосс в %, при 0 отключен
TrailStart — при какой прибыли в % выставляется трейлинг стоп
TrailDistance — при какой дистанции от цены выйдет трейлинг стоп
TrailStep — шаг, с которым трейлинг стоп будет подтягиваться. в %
  • 0
  • Просмотров: 3352
  • 1 октября 2016, 08:30
  • kalmyk
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
Все расчеты в % от депозита с возможность устанавливать шаг в 0.1%.

Это как это? Формулы, примеры пожалуйста?
avatar

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

  • 1 октября 2016, 13:05
+
0
Извиняюсь, если написал недоходчиво.
Например входим в рынок одним ордером, сов выставляет tp, в соответствии с настройками % от депозита — при депо 1 000 и настройки tp = 5% получаем цель 50 баксов. Шаг настройки в 0,1% — это возможность настраивать параметры советника — например tp= 1.1. Далее, если срабатывают отложенные ордера, цель остаётся прежней 50 баксов, но пересчитывается уровень tp в терминале, с учётом увеличения количества ордеров. Далее рынок пошёл в нашу сторону прибыль составляет 2% от депо срабатывает Trailstart ( при его настройки 2), в нашем случае 20 баксов, при настроенной дистанции от цены TrailDistance 1 на расстоянии 1% от депозита (10 баксов) выставляется трал, при настройке TrailStep=1, трал будет подтягиваться к цене, через с шагом 10 баксов. Как то так.
Если с процентовкой заморочено, можно данный алгоритм реализовать в пунктах. В наличии много сеточных советников, но у меня своя система построения лимитных сеток.
За ранее благодарен:) 
avatar

  10  kalmyk Автор Сообщений: 29 - Дмитрий

  • 2 октября 2016, 06:18
+
0
Я как то пробовал сделать трал всех ордеров, у меня тогда не получилось, а тут еще с процентами. Не берусь.
avatar

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

  • 2 октября 2016, 08:56
+
0
Сделал трал всех ордеров: www.opentraders.ru/downloads/1343/




//+------------------------------------------------------------------+
//|                                                  TrailingAll.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

extern int TrailingStop   = 200;      // трал
extern int TrailingStart  = 300;      // старт трала
//+------------------------------------------------------------------+
//| 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=Green;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(NULL,type,0.1,NormalizeDouble(price,Digits),0,0,0,"",0,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double All()
  {
   double p=0,n=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()<2)
              {
               p+=OrderOpenPrice();
               n++;
              }
           }
        }
     }
   if(n>0)p/=n;
   return(p);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void TrailingAlls(int Start,int stop,double AvgPrice)
  {
   bool m;
   double  profit;
   double stoptrade;
   double stopcal;
   if(stop==0) return;
   
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderType()==OP_BUY)
           {
            profit=NormalizeDouble((Bid-AvgPrice)/Point,0);
            if(profit<Start)
               continue;
            stoptrade=OrderStopLoss();
            stopcal=Bid-(stop*Point);
            if(stoptrade==0 || (stoptrade!=0 && stopcal>stoptrade))
               m=OrderModify(OrderTicket(),AvgPrice,stopcal,OrderTakeProfit(),0,Red);
           }
           
         if(OrderType()==OP_SELL)
           {
            profit=NormalizeDouble((AvgPrice-Ask)/Point,0);
            if(profit<Start)
               continue;
            stoptrade=OrderStopLoss();
            stopcal=Ask+(stop*Point);
            if(stoptrade==0 || (stoptrade!=0 && stopcal<stoptrade))
               m=OrderModify(OrderTicket(),AvgPrice,stopcal,OrderTakeProfit(),0,Red);
           }
        }
      Sleep(1000);
     }
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(TrailingStop>0) TrailingAlls(TrailingStart,TrailingStop,All());

   if(OrdersTotal()<1 && IsTesting())
     {
      for(int i=1; i<=5;i++)
        {
           {
            PutOrder(2,Bid-200*Point*i);//buylimit      
           }
        }
     }

   Comment("\n All: ",All());
  }
//+------------------------------------------------------------------+


Редактирован: 2 октября 2016, 20:46
avatar

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

  • 2 октября 2016, 20:40

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