FOTON
Иван

 
Уровень 11

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


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

Рейтинг 2146



РЕКОМЕНДУЮ



индикатор %прибыли

Уважаемые программисты!
Просьба написать индикатор по ТЗ.
На график наносим индикатор и появляются 3-и линии,
синяя — это +по%,
зелёная — это линия начала расчёта,
красная — это -по%,
Линии мы можем передвигать и в момент передвижения, над линиями изменяется величина в % от зелёной линии.
Этим мы визуально сможем наблюдать, что и на каких ценовых уровнях будет достигнут тот или иной % изменения цены относительно
зелёной линии.
Показатель над синей и красной линиями изменяется если будет перемещение самих этих линий(синей и красной), и, соответственно если
не трогая синию и красную линии, а передвинуть только зелёную, то показатель над син и красн так же поменяется в соответствии с
расчётом относительно зелёной.
А вот показатель в % изменения по факту и в момент, отображается над зелёной линией и с каждым пипсом изменения цены, этот
показатель будет меняться визуально показывая трейдеру сколько в момент проходит цена относительно зелёной линии в % эквиваленте
(т.е.показатель над зелёной линии показывает % изменения цены относительно, между ценой на которой выставлена зелёная линия и
фактической ценой в моменте).
Если цена выше зелёной линии, то показатель над зелёной линией будет показывать как (+..%), а если цена ниже зелёной линии, то
показатель над зелёной линией показывает как (-..%).
Производимый расчёт ведётся от зелёной линии, т.е. зелёная линия как бы «виртуально» место расположения ордера.

Скрин с желаемым отображает саму идею.
  • 0
  • Просмотров: 2711
  • 25 октября 2018, 16:49
  • FOTON
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
в следующем месяце напомните
Редактирован: 25 октября 2018, 21:52
avatar

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

  • 25 октября 2018, 20:22
+
0
млин...(  оч жаль… прикольная тема была бы… етот индюк очень был бы полезен при торговле акциями в мт4… ну и некого ряда ТС при построении стратегий.
Подобный индюк где то в сети видел но давно. Ни как не находится, вот и заказываю вам.
Редактирован: 26 октября 2018, 00:08
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 26 октября 2018, 00:03
+
0
окей… обязательно напомню… спс
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 26 октября 2018, 00:05
+
0
Ну как, уже напоминали в этом месяце?
avatar

  12  sledopyt Сообщений: 151

  • 16 ноября 2018, 10:39
+
+1
у меня в этом месяце уже есть выполненный заказ… вот и думается что Андрей не возмётся за второй… над ждать следующего месяца… ну иль кто поручится или кто оформит этот заказ на себя… хз...;) 
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 16 ноября 2018, 22:03
+
+1
я могу выступить поручителем ;) , но хочу версию под mt5 в придачу *stesnitelno* 
avatar

  16  cerber04 Сообщений: 409

  • 16 ноября 2018, 23:46
+
0
на 30-е для МТ4 :) 
avatar

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

  • 17 ноября 2018, 01:35
+
0
*good*  крутяк *bravo*  спс
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 17 ноября 2018, 09:25
+
0
хотца такую игрушку..;) zakaz.opentraders.ru/46532.html
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 17 ноября 2018, 09:51
+
0
zakaz.opentraders.ru/46532.html
часто применяю такую фишку, в просто-народе как разгон депо… НО не шарю в написании совы… вот и торгуемсь руками, а муторно…
мож кто напишет се чудо;) 
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 17 ноября 2018, 09:54
+
0
avatar

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

  • 22 ноября 2018, 21:09
+
0
:) Уважаемый Андрей! благодарю за труд… НО, не совсем то что хотца*hi* 
Вот скрин пример по акции Аэрофлот и его изменения цены в % эквиваленте дневного.

Такой же расчёт в % и хотца но расчёт относительно зелёной линии…
т.е. к примеру вот скрин

к примеру выставляем зелёную линию на цену 1.1300, а синяя линия мы перемещаем вверх и визуально наблюдаем на каких цен уровнях ЦЕНА изменится в % эквиваленте относительно зелёной линии (к примеру: цена 1.1300 + 1% изменится на повышение, то = получим цену 1.1413.
Получается, что с отметки цены в 1.1300 и до 1.1413 цена пройдёт путь изменения в 1%.
К примеру мы сможем визуально выполнить расчёт %-го изменения цены как от начала дня, так и на любом отрезке графика, при этом как в положительную так и отрицательную сторону изменения цены.
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 24 ноября 2018, 00:48
+
0
;)  пара евра-доллар… % изменения цены

оч муторно сидеть с каркулятором и высчитывать % на определённом участке цены.
Вот и хотца заказать такой индюк что б визуально показывал % изменения цены относительно выставленной зелёной линии.
Зелёная линии это как бы виртуально располагаемый ордер.
Данный индюк больше будет востребован по торг акциями.
— С Уважением к вам, спасибо.
— Есль есть возможность то вот хотца именно такой индюк.
Сори есль что не так.*hi* 
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 24 ноября 2018, 01:01
+
0
процент считаю по формуле:

изменение цены в пунктах * лот / баланс * 100

   double tppro=tpp*lot/AccountBalance()*100; 
   double slpro=slp*lot/AccountBalance()*100;


пожалуйста предлагайте любую другую формулу, поменять недолго.
avatar

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

  • 24 ноября 2018, 17:24
+
0
( … причём тут лот и баланс.???*???*  не понимаю.
Индикатор должен показывать % изменения цены относительно зелёной линии. Индюк не завязан на лот, пункты и баланс депозита.
Мне важен показатель изменения цены в % на определённом участке, а именно от зелёной линии до синей(как положительное изменение) и как отрицательное значение в % от зелёной линии до красной.
т.е. к примеру, если цена по факту 1.1300 то мы выставляем на эту цену зелёную линию, а синею линию мы передвигаем выше текущего значения цены и соответственно над синей линией индюк показывает изменения цены в % от зелёной линии.
К примеру передвинули синею линию выше на 1.1413, индюк показывает как 1% изменения, т.е. от зелёной с ценой 1.1300 до синей линии с ценой 1.1413, что соответствует: цена 1.1300 + 1% = 1.1413.
Вероятно я не правильно сформулировал тз с его названием, а надо было бы тз назвать как «индикатор % изменения цены», а не прибыли.
( 
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 24 ноября 2018, 22:55
+
0
считаем: бид 1.1336 язь 1.1436
1.1436-1.1336=0.0100
0.01/1.1336=0.0088
0.0088*100=0.88%




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

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   Comment("");
   PutHLine("bid",Bid,Green);
   PutHLine("tp",Bid+1000*_Point,Blue);
   PutHLine("sl",Bid-1000*_Point,Red);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Горизонтальная линия                                             |
//+------------------------------------------------------------------+
void PutHLine(string name,double p,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,2);
  }
//+------------------------------------------------------------------+
//| Put Text Function                                                |
//+------------------------------------------------------------------+
void Text(string name,string text,double price,datetime time,color clr)
  {
   ObjectDelete(0,name);
//--- create a "Text" object 
   ObjectCreate(0,name,OBJ_TEXT,0,time,price);
//--- set the text
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- set the font of the text
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- set the font size
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,14);
//--- set the method binding
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,0);
//--- set the color
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+
//| 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 bid=ObjectGetDouble(0,"bid",OBJPROP_PRICE);
   double tp=ObjectGetDouble(0,"tp",OBJPROP_PRICE);
   double sl=ObjectGetDouble(0,"sl",OBJPROP_PRICE);

   double tpp=MathAbs(tp-bid)/bid*100;
   double slp=MathAbs(sl-bid)/bid*100;

   Text("slt",(string)NormalizeDouble(slp,2)+"%",sl,Time[5],Red);
   Text("tpt",(string)NormalizeDouble(tpp,2)+"%",tp,Time[5],Blue);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+



avatar

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

  • 25 ноября 2018, 13:58
+
0
крутяк… работает*lalala* 
— Спасибки!!!*hi* 
Редактирован: 26 ноября 2018, 11:20
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 25 ноября 2018, 14:21
+
+1
А так, думаю, получше будет!?..
//+------------------------------------------------------------------+
//|                                                      ProCent.mq4 |
//|                                              Copyright 2018, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

extern int    font_size = 11;            // Размер шрифта
extern int    width     = 2;             // Толщина линий

color clbid=Gold;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   Comment("");
   PutHLine("bid",Bid,Green);
   PutHLine("tp",Bid+100*_Point,Blue);
   PutHLine("sl",Bid-100*_Point,Red);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Indicator deinitialization function                              |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   remove_objects("tp");
   remove_objects("bid");
   remove_objects("sl");
   if(!IsTesting()) Comment("");
  }
//+------------------------------------------------------------------+
//| Горизонтальная линия                                             |
//+------------------------------------------------------------------+
void PutHLine(string name,double p,color clr)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,width);
  }
//+------------------------------------------------------------------+
//| Put Text Function                                                |
//+------------------------------------------------------------------+
void Text(string name,string text,double price,datetime time, ENUM_ANCHOR_POINT anchor=ANCHOR_LEFT_LOWER,color clr=clrGold)
  {
   ObjectDelete(0,name);
//--- create a "Text" object 
   ObjectCreate(0,name,OBJ_TEXT,0,time,price);
//--- set the text
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- set the font of the text
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- set the font size
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,font_size);
//--- set the method binding
   ObjectSetInteger(0,name,OBJPROP_ANCHOR,anchor);
//--- set the color
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
  }
//+------------------------------------------------------------------+
//| 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 bid=ObjectGetDouble(0,"bid",OBJPROP_PRICE);
   double tp=ObjectGetDouble(0,"tp",OBJPROP_PRICE);
   double sl=ObjectGetDouble(0,"sl",OBJPROP_PRICE);
   double cbid=Bid;
   double bidp=0;

   double tpp=MathAbs(tp-bid)/bid*100;
   double slp=MathAbs(sl-bid)/bid*(-100);
   if(cbid>bid) bidp=MathAbs(cbid-bid)/bid*100;
   if(cbid<bid) bidp=MathAbs(bid-cbid)/bid*(-100);
   if(cbid>bid) clbid=Green;
   if(cbid<bid) clbid=Red;
   
   int day=1;
   if(Period()==PERIOD_H4) day=2;
   if(Period()==PERIOD_D1) day=6;

   Text("slt",(string)NormalizeDouble(slp,2)+"%",sl,Time[0]+60*60*12*day,ANCHOR_LEFT_UPPER,Red);
   Text("tpt",(string)NormalizeDouble(tpp,2)+"%",tp,Time[0]+60*60*12*day,ANCHOR_LEFT_LOWER,Blue);
   Text("bidt",(string)NormalizeDouble(bidp,2)+"%",bid,Time[0]+60*60*12*day,ANCHOR_LEFT_LOWER,clbid);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
//----------------------------------------------
void remove_objects(string PreName)
{
   string Obj_Name,Head;
   for(int k=ObjectsTotal()-1; k>=0; k--) 
   {
      Obj_Name=ObjectName(k);
      Head=StringSubstr(Obj_Name,0,StringLen(PreName));
      if (Head==PreName)ObjectDelete(Obj_Name);
   }
}
avatar

  18  Andrju81 Сообщений: 245 - Андрей

  • 26 ноября 2018, 01:22
+
0
*good*  идеально точно как и хотел!!! Спасибки огромное!
avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 26 ноября 2018, 11:19
+
0
классная игрушка! Спасибки всем!*bravo* 

avatar

  11  FOTON Автор Сообщений: 683 - Иван

  • 26 ноября 2018, 12:56

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