0
в следующем топе
avatar

AM2

  • 25 ноября 2018, 21:43
0
тогда надо будет писать функцию которая будет пробегаться по графическим объектам и изменять координату по времени на каждом открытии бара
avatar

AM2

  • 25 ноября 2018, 21:41
0
узнайте у артема каким образом реализуется этот момент и тогда в следующем топе можно будет доделать
avatar

AM2

  • 25 ноября 2018, 21:32
0
удалите в списке объектов
avatar

AM2

  • 25 ноября 2018, 21:15
0
нужно все переписывать, делать установку уровня не по клику а каким то другим образом.
avatar

AM2

  • 25 ноября 2018, 21:06
0
смещение на указанное число баров вправо сделал:



www.opentraders.ru/downloads/2173/
avatar

AM2

  • 25 ноября 2018, 20:52
0
такой вариант я не представляю как сделать, а если сразу не видно решение, то это долго и значит не ко мне
avatar

AM2

  • 25 ноября 2018, 20:11
0
опишите целиком алгоритм
avatar

AM2

  • 25 ноября 2018, 19:17
0
по клику строит уровень и ставит метку: www.opentraders.ru/downloads/2173/

avatar

AM2

  • 25 ноября 2018, 16:20
0
если функция уникальная, это уже не небольшая модификация
avatar

AM2

  • 25 ноября 2018, 14:24
0
тз рассмотрю
avatar

AM2

  • 25 ноября 2018, 14:22
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

AM2

  • 25 ноября 2018, 13:58
0
у меня ни какой картинки нет

графика должна лежать в соответствующей папке терминала. кнопки с надписями реализуются подобным образом. одна картинка с текстом и зеленым квадратиком, другая с красным.
avatar

AM2

  • 25 ноября 2018, 13:36
0
с таким объемом работы не ко мне.
avatar

AM2

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

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

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


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

AM2

  • 24 ноября 2018, 17:24
0
умножение стопов и тейков разделил, ордера ставятся при настройках:


extern double Lots       = 0.1;      // лот
extern double KLot       = 2;        // умножение лота
extern double KStop      = 2;        // умножение лося
extern double KTake      = 2;        // умножение язя
extern double MaxLot     = 5;        // максимальный лот
extern int StopLoss      = 60;       // лось
extern int TakeProfit    = 80;       // язь
extern int Slip          = 5;        // реквот
extern int Delta         = 30;       // расстояние от цены
extern int Magic         = 123;      // магик


avatar

AM2

  • 23 ноября 2018, 21:00
0
открыл обычным лотом:

avatar

AM2

  • 22 ноября 2018, 21:25
0
открыл вручную 2 позы, поставил советник. ждемс :) 

avatar

AM2

  • 22 ноября 2018, 21:23
0
Открывает херову гору(на весь деп) ордеров на каком-то сигнале(рандомно)

больше одной позы не откроет. см. код:


   if(CountTrades()<1)
     {
      if(Close[1]>Open[1] && Close[2]>Open[2] && Close[3]>Open[3] && Close[4]<Open[4] && Ask>ma) PutOrder(0,Ask);
      if(Close[1]<Open[1] && Close[2]<Open[2] && Close[3]<Open[3] && Close[4]>Open[4] && Bid<ma) PutOrder(1,Bid);
     }
avatar

AM2

  • 22 ноября 2018, 21:13
Начать торговлю с Альпари