cardon

 
Уровень 10

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


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

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от cardon



дороботка сова Комментариев 68
2016-11-24 13:25:33Рейтинг 0

советник на 1 МА Комментариев 13
2016-07-29 13:57:46Рейтинг 0

просто индюк Комментариев 22
2016-09-17 11:18:53Рейтинг 0

доработка сова Комментариев 2
2017-01-09 19:57:28Рейтинг 0

сова просто сова Комментариев 19
2016-10-06 16:43:18Рейтинг 0

индикатор диапозона в % от депо

всем привет 0/
у меня уже был заказ в этом месяце, но вдруг появится окно в написание индикатора, который рисует линию
диапазона для стоп лосса от депо, с настройками выставления этого диапазона.

например мы выставили в настройках 2% от депо, при открытии ордера в селл, индикатор нам рисует линию выше
ордера диапазон который будет = 2% от депо, а мы уже там решаем, где поставить стоп.

для чего это нужно? нужно для тех кто торгует с фиксированной просадкой, чтоб не выходить за нее, например у нас задача
просадка 5% в день, мы торгуем примерно около 3-5 сделок в день, делим на наши 5%, получаем диапазон на 1 сделку 1%
который нарисует индикатор. Так мы не выйдем за задуманную просадку.

1.настройка в % от депо линии
2.цвет линии/формат (выбор пунктирная или нет)
3.индикатор должен уметь считать диапазон меньше 1%
выставляемая линия не должна быть, как уровень, просто кусочек(пример на скрине)
5.по возможности писать над линией диапазон в %, допустим линия и над ней 2%

ну и сам скрин, обвел кружком то что надо:



если есть идеи у кого добавляйте или критикуйте мои)
  • 0
  • Просмотров: 2522
  • 21 апреля 2016, 12:28
  • cardon
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
avatar

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

  • 21 апреля 2016, 19:57
+
0
ага все верно считает, только это советник и он сам открывает позиции, а надо чтоб считал открытые ордера в ручную.
и если открыто 2 или более, это влияло на диапазон — становился меньше.
не надо не каких стопов и тейков в нем) я так понимаю это набросок на каком то там куске кода от чего то))
лучше чтоб это был индикатор.
avatar

  10  cardon Автор Сообщений: 376

  • 21 апреля 2016, 21:09
+
0
Это не когда то от чего то, а было написано специально под ваш заказ, чтобы можно было торговать и тестировать. Если нужно для нескольких ордеров, то это не ко мне.

Открыл вручную, позу и запустил советник со следующими настройками:



Мне этот заказ не оплачивается, поэтому как есть, просто мне было интересно сделать что то подобное.
avatar

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

  • 22 апреля 2016, 09:22
+
+1
Сделал советник для всех ордеров и индикатор:
www.opentraders.ru/downloads/1155/
www.opentraders.ru/downloads/1154/


avatar

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

  • 22 апреля 2016, 10:12
+
0
индикатор для 1 одера считает и выставляет все верно, если открыть второй то он неверно уже показывает. слишком далеко двигается примерно на 75%

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

и еще сделайте, чтоб при отмене ордера эти линии удалялись, а то остаются на графике

это индикатор.

или отпишите чтоб я на следующий месяц отписал.

ниже скрины, как открывает 2 ордера.


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

  10  cardon Автор Сообщений: 376

  • 22 апреля 2016, 11:08
+
0
Стопы считает, а с удалением линий нужно подольше репу чесать :) 


//+------------------------------------------------------------------+
//|                                                         Risk.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
#property indicator_chart_window

extern double Risk      = 1;        // риск %
extern color  LineColor = Red;      // цвет линии
extern int    LineStyle = 0;        // стиль линии
extern int    Magic     = 0;        // магик
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   ObjectsDeleteAll();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,double pr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,Time[10],pr,Time[0],pr);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,LineColor);
//--- установим стиль отображения линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,LineStyle);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutText(string name,string text,double price)
  {
   ObjectDelete(0,name);
//--- создадим объект "Текст"  
   ObjectCreate(0,name,OBJ_TEXT,0,Time[5],price);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,LineColor);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void DeleteObject()
  {
   int ticket=0;
   string name="";

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            name=ObjectName(i);
            if(name!="Stop"+(string)OrderTicket()) ObjectDelete(0,name);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   double stop=0;
   if(OrdersLot()>0) stop=AccountBalance()*Risk/(OrdersLot()*100);

   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0)
              {
               PutTrendLine("Stop"+(string)OrderTicket(),OrderOpenPrice()-stop*Point);
               PutText("Risk"+(string)OrderTicket(),(string)Risk+"%",OrderOpenPrice()-stop*Point);
              }

            if(OrderType()==1)
              {
               PutTrendLine("Stop"+(string)OrderTicket(),OrderOpenPrice()+stop*Point);
               PutText("Risk"+(string)OrderTicket(),(string)Risk+"%",OrderOpenPrice()+stop*Point);
              }
           }
        }
     }
     
   //DeleteObject();
   
   Comment("\n Lots: ",OrdersLot(),
           "\n Stop: ",stop,
           "\n Trades: ",CountTrades());
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

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

  • 22 апреля 2016, 11:46
+
0
супер, теперь бы удалять линии и все на первый взгляд готово.
avatar

  10  cardon Автор Сообщений: 376

  • 22 апреля 2016, 12:26
+
0
Сейчас попробовал с двумя ордерами, удаляет линии.


//+------------------------------------------------------------------+
//|                                                         Risk.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
#property indicator_chart_window

extern double Risk      = 1;        // риск %
extern color  LineColor = Red;      // цвет линии
extern int    LineStyle = 0;        // стиль линии
extern int    Magic     = 0;        // магик
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   Comment("");
   ObjectsDeleteAll();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutTrendLine(string name,double pr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_TREND,0,Time[10],pr,Time[0],pr);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,LineColor);
//--- установим стиль отображения линии
   ObjectSetInteger(0,name,OBJPROP_STYLE,LineStyle);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
//--- включим (true) или отключим (false) режим продолжения отображения линии вправо
   ObjectSetInteger(0,name,OBJPROP_RAY_RIGHT,false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutText(string name,string text,double price)
  {
   ObjectDelete(0,name);
//--- создадим объект "Текст"  
   ObjectCreate(0,name,OBJ_TEXT,0,Time[5],price);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,12);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,LineColor);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
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);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   double stop=0;
   if(OrdersLot()>0) stop=AccountBalance()*Risk/(OrdersLot()*100);
   
   ObjectsDeleteAll();
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0)
              {
               PutTrendLine("Stop"+(string)OrderTicket(),OrderOpenPrice()-stop*Point);
               PutText("Risk"+(string)OrderTicket(),(string)Risk+"%",OrderOpenPrice()-stop*Point);
              }

            if(OrderType()==1)
              {
               PutTrendLine("Stop"+(string)OrderTicket(),OrderOpenPrice()+stop*Point);
               PutText("Risk"+(string)OrderTicket(),(string)Risk+"%",OrderOpenPrice()+stop*Point);
              }
           }
        }
     }

   Comment("\n Lots: ",OrdersLot(),
           "\n Stop: ",stop,
           "\n Trades: ",OrdersTotal());
           
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

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

  • 22 апреля 2016, 22:52
+
0
буду ждать рынка в понедельник, чтоб попробовать, а то он мне все имитаторы вырубает.:) 
avatar

  10  cardon Автор Сообщений: 376

  • 23 апреля 2016, 08:56
+
0
проверил — удаляет не только свои линии, но и все на графике: трендовые линии, сетку, любой рисунок, все что можно на график положить (  надо чтоб он свою только удалял. если не выходит, то мб, как советник его сделать? чтоб магик линии был? все тоже самое только советник. хотелось бы индикатор
А если нельзя то пусть будет вариант, где линии остаются.

Редактирован: 25 апреля 2016, 08:34
avatar

  10  cardon Автор Сообщений: 376

  • 25 апреля 2016, 08:34
+
0
удаляет не только свои линии, но и все на графике: трендовые линии, сетку, любой рисунок, все что можно на график положить


Особенность кода :) 
ObjectsDeleteAll();
avatar

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

  • 25 апреля 2016, 09:15
+
0
Этот код убирает только за собой: www.opentraders.ru/downloads/1155/
avatar

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

  • 25 апреля 2016, 09:32

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