cardon

 
Уровень 10

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


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

Рейтинг 2155



РЕКОМЕНДУЮ




Лучшее от 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
  • Просмотров: 2580
  • 21 апреля 2016, 12:28
  • cardon
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

0
avatar

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

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

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

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

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



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

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

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


avatar

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

  • 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 Сообщений: 16530 - Андрей

  • 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 Сообщений: 16530 - Андрей

  • 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 Сообщений: 16530 - Андрей

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

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

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

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