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

Рейтинг 2086



РЕКОМЕНДУЮ



Сделать скрипт под мт5

Андрей, а будет время, сделать тоже самое, только под мт5
Скрипт сохранения шаблона
zakaz.opentraders.ru/87297.html
  • 0
  • Просмотров: 1680
  • 22 июля 2022, 10:40
  • Syte
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
FB-line (полуавтомат)
Следующая запись в группе  
Советник на отложенных ордерах МТ5
22 июля 2022
23 июля 2022

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

+
0
Андрей, а ты не делал индикатор, который показывает два уровня, при достижении которых группой ордеров Sell или Buy достигается порог нулевого профита. Так же индикатор показывает суммарный уровень безубытка.

В общем три линии.
buy (1 линия безубытка всех ордеров)
sell (2 линия безубытка всех ордеров)
совокупный безубыток всех ордеров, третья линия.
Индикатор под мт5.

PS
Не могу найти, где то видел.
Под мт4 такой нашел, а под пятый уже не знаю где искать.

Если у кого то есть поделитесь.
avatar

  14  Syte Автор Сообщений: 399

  • 22 июля 2022, 12:18
+
0
Андрей, а будет время, сделать тоже самое, только под мт5


функции одинаковые. посмотрите, если что то не работает подправлю
avatar

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

  • 22 июля 2022, 17:32
+
0
При компиляции, ошибку выдает.

Разобрался. :) ;) )) Ошибки теперь нету.

//+------------------------------------------------------------------+
//|                                                       temles.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
input string FileName = "temp";
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   if(!ChartSaveTemplate(0,FileName))
   Print(__FUNCTION__," Couldnot Save template : " + "Error = " + string(GetLastError()));
  }
//+------------------------------------------------------------------+


А по поводу индикатора, будет время сделать?
Редактирован: 22 июля 2022, 18:24
avatar

  14  Syte Автор Сообщений: 399

  • 22 июля 2022, 18:19
+
0
безубыток по одному направлению я посчитаю, а общий формулу нужно или пример. где то была здесь такая функция
avatar

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

  • 22 июля 2022, 19:16
+
0
сделал раздельный бу: www.opentraders.ru/downloads/3364/



с вас формула или пример общего
avatar

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

  • 22 июля 2022, 20:55
+
0
Отлично.
Я думаю общий «знаменатель», можно вывести таким образом.

Считаем сколько ордеров, в какую сторону!?!
Скажем у нас 5 ордеров вверх, а вниз 4 ордера.
Значит ищем, где будет без убыток для всех ордеров если пойдем вверх.
Если равное количество ордеров, то ни чего не считаем. (нужен перевес ордеров хотя бы на один в любую сторону. Туда и считаем, где сможем закрыть в нуле.)

Скажем взяли в sell по цене 100, 1 ордер.
А в buy взяли 2 ордера по той же цене 100. Значит, пойдем вверх, минус от sell будет увеличиваться, а от двух баев, будет уменьшаться.

По какой цене, будет ноль убыток, если пойдем вверх?!?!?!
avatar

  14  Syte Автор Сообщений: 399

  • 22 июля 2022, 21:21
+
0
Сравниваем количество ордеров buy и sell.
Если равное количество, ни чего не делаем.
Если перевес в какую либо сторону, считаем, где точка, которая будет являться нулевой.
avatar

  14  Syte Автор Сообщений: 399

  • 22 июля 2022, 21:29
+
0
нужна точная формула
avatar

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

  • 22 июля 2022, 21:31
+
0
ну тут я не особо силен. Нужно подумать. Ладно, пока так оставим, главное уже есть.
avatar

  14  Syte Автор Сообщений: 399

  • 23 июля 2022, 09:43
+
0
Что то нашел, не посмотришь?



//=============================================================================================//
//расчеты уровней:
//---------------------------------------------------------------------------------------------// 
 double dZM, UrZM, dZF, UrZF, dDZ, dPZM, UrPZM, dSO, UrSO, UrZPb, UrZPs, UrOZP, bd$, sd$, fd$, UrCT, UrOZPZ, UrCTZ, idCT, UrZPbVlt, UrZPsVlt, UrZPfVlt,
        idZP, UrRL, UrZPbTP, UrZPsTP, UrZPfTP, UrZPbdS, UrZPsdS, UrZPfdS,dUrRL, UrAut, UrTP_frz, UrSL_frz, idZM, dUrZP;

 if(dlots != 0)
 { 
  dZM = freemargin / (tickvalue * dlots);       //расстояние от цены до уровня нулевой маржи
  dZF = equity / (tickvalue * dlots);           //расстояние от цены до полного слива
  dDZ = dZF - dZM;                              //размер "мертвой" зоны
  dPZM = dZF - dDZ * PZM / 100;                 //расстояние от цены до указанного % от уровня полного слива - сигнального уровня
  dSO = dZF - dDZ * stop_out / 100;             //расстояние от цены до уровня принудительного закрытия ордеров
  
  if (dlots > 0) UrSO = Bid - dSO * Point;      //значение уровня принудительного закрытия ордеров - StopOut
  if (dlots < 0) UrSO = Ask - dSO * Point;      //значение уровня принудительного закрытия ордеров - StopOut
  if (dlots > 0) UrZM = Bid - dZM * Point;      //значение уровня нулевой маржи
  if (dlots < 0) UrZM = Ask - dZM * Point;      //значение уровня нулевой маржи
  if (dlots > 0) UrZF = Bid - dZF * Point;      //значение уровня полного слива
  if (dlots < 0) UrZF = Ask - dZF * Point;      //значение уровня полного слива
  if (dlots > 0) UrPZM = Bid - dPZM * Point;    //значение % сигнального уровня
  if (dlots < 0) UrPZM = Ask - dPZM * Point;    //значение % сигнального уровня
  
  if (dlots > 0) dUrRL = (dlots * lot_cena - freemargin) / (tickvalue * dlots);              //расстояние до уровня Равного Лока
  if (dlots < 0) dUrRL = (dlots * lot_cena + freemargin) / (tickvalue * dlots);              //расстояние до уровня Равного Лока
  if (dlots > 0) UrRL = Bid + dUrRL * Point;    //уровень равного лока
  if (dlots < 0) UrRL = Ask - dUrRL * Point;    //уровень равного лока
  if (dlots > 0) UrAut = UrRL + dSig * Point;   //значение автоматического сигнального уровня для установки равного лока
  if (dlots < 0) UrAut = UrRL - dSig * Point;   //значение автоматического сигнального уровня для установки равного лока

  if (BuyLots > 0 && SellLots > 0 && dlots > 0) UrOZP = Bid - ((BuyProfit + SellProfit) / (tickvalue * (dlots)) * Point);   //уровень общего безубытка для открытых ордеров
  if (BuyLots > 0 && SellLots > 0 && dlots < 0) UrOZP = Ask - ((BuyProfit + SellProfit) / (tickvalue * (dlots)) * Point);   //уровень общего безубытка для открытых ордеров
 }
 
 if (BuyLots > 0)    bd$ = d$/(BuyLots * tickvalue);
 if (SellLots > 0)   sd$ = d$/(SellLots * tickvalue);
 if (dLots != 0)     fd$ = d$/(dLots * tickvalue);

 UrTP_frz = Ask + freeze * Point;      //уровень зоны заморозки - для выставления отложеников и TP
 UrSL_frz = Bid - freeze * Point;      //уровень зоны заморозки - для выставления отложеников и SL
 
 if (BuyLots > 0)    UrZPb = Bid - (BuyProfit / (tickvalue * BuyLots) * Point);     //уровень безубытка для BUY ордеров
 if (SellLots > 0)   UrZPs = Ask + (SellProfit / (tickvalue * SellLots) * Point);   //уровень безубытка для SELL ордеров
 
 if (BuyLots > 0)    UrZPbTP = UrZPb + bTP * Point;            //уровень безубытка + TP для BUY ордеров
 if (SellLots > 0)   UrZPsTP = UrZPs - sTP * Point;            //уровень безубытка + TP для SELL ордеров
 
 if (BuyLots > 0)    UrZPbVlt = UrZPb + vlt * Point;            //уровень безубытка + волатильность для BUY ордеров
 if (SellLots > 0)   UrZPsVlt = UrZPs - vlt * Point;            //уровень безубытка + волатильность для SELL ордеров

 if (BuyLots > 0)    UrZPbdS = UrZPb + bd$ * Point;            //уровень безубытка + $ для BUY ордеров
 if (SellLots > 0)   UrZPsdS = UrZPs - sd$ * Point;            //уровень безубытка + $ для SELL ордеров
 
 if (BuyLots > SellLots)   UrZPfTP = UrOZP + fTP * Point;      //уровень общего безубытка + TP для всех ордеров
 if (SellLots > BuyLots)   UrZPfTP = UrOZP - fTP * Point;      //уровень общего безубытка + TP для всех ордеров
 
 if (BuyLots > SellLots)   UrZPfVlt = UrOZP + vlt * Point;      //уровень общего безубытка + волатильность
 if (SellLots > BuyLots)   UrZPfVlt = UrOZP - vlt * Point;      //уровень общего безубытка + волатильность
 
 if (dLots != 0)   UrZPfdS = UrOZP + fd$ * Point;              //уровень общего безубытка + $ для всех ордеров
 
 idZM = -dZM;                          //расстояния от текущей цены до уровня нулевой маржи (со знаком "-" - ниже текущей цены)
 
 if (UrZPb > 0 && UrZPs > 0)   dUrZP = (UrZPb - UrZPs)/Point;  //расстояние между безубытками Buy и Sell 

 if (dlots != 0) UrCT = UrZPs + BuyLots * Point * dUrZP/(BuyLots + SellLots);  //уровень "центра тяжести"
 
 if (BuyLots == 0 && SellLots > 0) { UrCTZ = UrZPs; UrOZPZ = UrZPs; }
 if (BuyLots > 0 && SellLots == 0) { UrCTZ = UrZPb; UrOZPZ = UrZPb; }
 if (BuyLots > 0 && SellLots > 0)  { UrCTZ = UrCT;  UrOZPZ= UrOZP;  }
 
 if (dlots > 0) idZP = (UrOZPZ - Bid) * (znakov);              //расстояние от текущей цены до уровня общего безубытка для открытых ордеров (со знаком "-" - ниже текущей цены)
 if (dlots < 0) idZP = (UrOZPZ - Ask) * (znakov);              //расстояние от текущей цены до уровня общего безубытка для открытых ордеров (со знаком "-" - ниже текущей цены)
 
 if (dlots > 0) idCT = (UrCTZ - Bid) * (znakov);               //расстояние от текущей цены до уровня общего безубытка для открытых ордеров (со знаком "-" - ниже текущей цены)
 if (dlots < 0) idCT = (UrCTZ - Ask) * (znakov);               //расстояние от текущей цены до уровня общего безубытка для открытых ордеров (со знаком "-" - ниже текущей цены)

//---------------------------------------------------------------------------------------------//
avatar

  14  Syte Автор Сообщений: 399

  • 26 июля 2022, 11:59
+
0

//=============================================================================================//
//рисование уровней:
//---------------------------------------------------------------------------------------------// 
  double PribylTPs, PribylTPb, PribylTPf, C_YYY, Pribylvolf, Pribylvolb, Pribylvols; 
  int PPF, PPB, PPS;
             
  PribylTPf = MathAbs(fTP * dlots * tickvalue);   //Расчет прибыли за общим безубытком + TP
  PribylTPb = MathAbs(bTP * BuyLots * tickvalue);  //Расчет прибыли Buy + TP
  PribylTPs = MathAbs(sTP * SellLots * tickvalue);  //Расчет прибыли Sell + TP
  Pribylvolf = MathAbs(vlt * dlots * tickvalue);
  Pribylvolb = MathAbs(vlt * BuyLots * tickvalue);
  Pribylvols = MathAbs(vlt * SellLots * tickvalue);
  
  PPF = (UrZPfdS-UrOZP)/Point;
  PPB = (UrZPbdS-UrZPb)/Point;
  PPS = (UrZPs-UrZPsdS)/Point;
 
 if(dlots != 0) 
 {
  if (_uUr_ZF == true) driveline ("_Уровень Полного СЛИВА", UrZF, Color_ZF, Style_ZF, Width_ZF); 
  if (_uUr_SO == true) driveline ("_Уровень Принудительного Закрытия Ордеров ДЦ / StopOut = " + AccountStopoutLevel() + " %", UrSO, Color_SO, Style_SO, Width_SO);
  if (_uUr_ZM == true) driveline ("_Уровень Нулевой Маржи", UrZM, Color_ZM, Style_ZM, Width_ZM);
  if (_uUr_Si == true && _otRavnogoLoca == false) driveline ("Сигнальный Уровень Лока = " + PZM + " %", UrPZM, Color_Si, Style_Si, Width_Si);
  if (_uUr_Si == true && _otRavnogoLoca == true)  driveline ("Сигнальный Уровень Лока + " + dSig + " пп", UrAut, Color_Si, Style_Si, Width_Si);
  if (_uUr_RL == true) driveline ("_Уровень Равного Лока", UrRL, Color_RL, Style_RL, Width_RL);
 
  if (_UrZPpTP == true && BuyLots > 0 && SellLots > 0) driveline ("_Уровень Общего Безубытка + (TP = " + fTP + " пп) = " + DoubleToStr(PribylTPf,2) + " $", UrZPfTP, Color_OZP, Style_ZPdP, Width_ZPdP);
  if (_UrZPpdS == true && BuyLots > 0 && SellLots > 0) driveline ("_Уровень Общего Безубытка + " + d$ + " $ (" + PPF + " пп)", UrZPfdS, Color_OZP, Style_ZPdP, Width_ZPdP);
  if (_UrZPVlt == true && BuyLots > 0 && SellLots > 0) driveline ("_Уровень Общего Безубытка + волатильность = " + DoubleToStr(Pribylvolf,2) + " $", UrZPfVlt, Color_OZP, Style_ZPdP, Width_ZPdP);
  if (_uUrOZP == true && BuyLots > 0 && SellLots > 0) driveline ("_Уровень Общего Безубытка", UrOZP, Color_OZP, Style_OZP, Width_OZP);
 }
 
 if (_uUrZP == true) driveline ("_Уровень Безубытка BUY", UrZPb, Color_ZP, Style_ZP, Width_ZP);
 if (_uUrZP == true) driveline ("_Уровень Безубытка SELL", UrZPs, Color_ZP, Style_ZP, Width_ZP);

 if (_UrZPpTP == true) driveline ("_Уровень Безубытка BUY + (TP = " + bTP + " пп) = " + DoubleToStr(PribylTPb,2) + " $", UrZPbTP, Color_ZPdP, Style_ZPdP, Width_ZPdP);
 if (_UrZPpTP == true) driveline ("_Уровень Безубытка SELL + (TP = " + sTP + " пп) = " + DoubleToStr(PribylTPs,2) + " $", UrZPsTP, Color_ZPdP, Style_ZPdP, Width_ZPdP);

 if (_UrZPpdS == true) driveline ("_Уровень Безубытка BUY + " + d$ + " $ (" + PPB + " пп)", UrZPbdS, Color_ZPdP, Style_ZPdP, Width_ZPdP);
 if (_UrZPpdS == true) driveline ("_Уровень Безубытка SELL + " + d$ + " $ (" + PPS + " пп)", UrZPsdS, Color_ZPdP, Style_ZPdP, Width_ZPdP);
 
 if (_UrZPVlt == true) driveline ("_Уровень Безубытка BUY + волатильность = " + DoubleToStr(Pribylvolb,2) + " $", UrZPbVlt, Color_ZPdP, Style_ZPdP, Width_ZPdP); 
 if (_UrZPVlt == true) driveline ("_Уровень Безубытка SELL + волатильность = " + DoubleToStr(Pribylvols,2) + " $", UrZPsVlt, Color_ZPdP, Style_ZPdP, Width_ZPdP);
 
 if (_uUr_Fr == true  && freeze > 0) driveline ("Не ниже для BuyStop,SellLimit,StopLoss,TakeProfit", UrTP_frz, Color_Fr, Style_Fr, Width_Fr);
 if (_uUr_Fr == true  && freeze > 0) driveline ("Не выше для BuyLimit,SellStop,StopLoss,TakeProfit", UrSL_frz, Color_Fr, Style_Fr, Width_Fr);

 if (_UrCT == true && BuyLots > 0 && SellLots > 0) driveline ("_Уровень Центра Тяжести Объемов", UrCT, Color_UrCT, Style_UrCT, Width_UrCT);
//---------------------------------------------------------------------------------------------//
avatar

  14  Syte Автор Сообщений: 399

  • 26 июля 2022, 12:01

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