← К каталогу
Исходный код · ID 2760

VR --- STEALS-3

vr---steals-3-en.mq4
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

VR --- STEALS-3 — это советник для MetaTrader 4, предназначенный для управления открытыми ордерами посредством виртуальных (невидимых) уровней StopLoss, TakeProfit, Breakeven и Trailing Stop. Он работает как «невидимый советник», размещая на графике графические маркеры для отслеживания этих уровней без отображения традиционных стоп-лоссов и тейк-профитов непосредственно на ордерах. Советник предоставляет графический интерфейс с кнопками на графике для открытия различных типов ордеров (Buy, Sell, Buy Limit, Sell Limit, Buy Stop, Sell Stop), а также для управления существующими позициями: закрытие, удаление, установка SL/TP, безубытка, трейлинг-стоп и ограничения по времени. На графике отображаются информационные сообщения о результатах операций. Советник поддерживает как демо-, так и реальные счета, содержит обнаружение оптимизации и тестирования, а также использует настраиваемую задержку цикла для снижения нагрузки на процессор. Обработка рыночных событий осуществляется через OnTick, торговые операции выполняются через OrderSend.

Настройки программы

НастройкаОписание
StartLot Начальный лот — Начальный объём лота для открытия ордеров
TakeProfit Тейк-профит — Начальный уровень тейк-профита в пунктах
StopLoss Стоп-лосс — Начальный уровень стоп-лосса в пунктах
TralingStop Трейлинг-стоп — Начальный уровень трейлинг-стопа в пунктах
Breakeven Безубыток — Начальный уровень безубытка в пунктах
prefix Префикс объектов — Префикс имён графических объектов советника на графике
Magic Магический номер — Уникальный номер магического поля советника для идентификации управляемых ордеров
Slip Проскальзывание — Допустимое проскальзывание в пунктах при выполнении торговых операций
MilSec Задержка цикла — Циклическая задержка в миллисекундах между итерациями для снижения нагрузки на процессор
Получить полный код

Поиск по коду файла

#property description " Invisible Counselor , allows to put not visible"
#property description "StopLoss, TakeProfit, Breakeven, Traling stop, OrderClose, OrderDelete"
#property strict
/*
                  WARNING !
ADVISOR operate even when the terminal MT4 bild 610 or Up

Advisor is designed for installation of virtual StopLoss, TakeProfit, Breakeven, Traling stop, OrderClose, OrderDelete
This is the third version of the Advisor VR --- STEALS
The first version builds 509 or below 
The second version builds 509 or below 
Since writing the first version has been more than three years , this version incorporates many requests
Traders using earlier versions of the advisor.
Copyright Adviser Voldemar. Skype: Voldemar227

System requirements:
MT4 build above 610
*/

input double StartLot = 0.01;

input int TakeProfit = 500 ;

input int StopLoss = 500 ;

input int TralingStop = 300 ;

input int Breakeven = 300 ;

input string prefix = "vr";

input int Magic = 0 ;

input int Slip = 30 ;

input int MilSec = 100 ;

string info []; // Array for messages on the chart
int Coment = 10; // Number of messages on the chart
color cvit []; // Array of colors for messages on the chart
int ButX = 17 ; // X coordinate of the buttons Adviser
int BuyY = 15 ; // Y coordinate of the buttons Adviser
int x = 0, // ​​x coordinate of the buttons Adviser
y = 0 ; // Y coordinate of the buttons Adviser
double tp = 0, // ​​Variable to take profit
sl = 0, // ​​Variable for Stop Loss
tr = 0, // ​​Variable for Trailing Stop
br = 0 ; // Variable for breakeven
double wlot = 0 ; // Variable for your status

int OnInit ()
  {
      // код доступен только после оплаты
   }

void OnTick ()
  {
      // код доступен только после оплаты
   }

void worc ()
  {
   but (); // This function creates a button Hidden Charm orders and lots of choice
   for (int i = OrdersTotal () -1; i>= 0 ; i--) // looping through the orders
      if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) // Parse warrants parts
         if (OrderMagicNumber () == Magic || Magic == -1) // Check for Meydzhik room
            if (OrderSymbol () == _Symbol) // Check for character trades
              {
               x = y = 0 ; // Reset variables
               ChartTimePriceToXY (0,0, (OrderOpenTime ()), OrderOpenPrice (), x, y); // Find the coordinates in pixels from the opening price and the opening time of the order
               button (StringConcatenate ("Sl", OrderTicket ()), x- 100 , y, "Sl", "StopLoss", ButX, BuyY); // Create button stop loss
               button (StringConcatenate ("Tp", OrderTicket ()), x- 80 , y, "Tp", "TakeProfit", ButX, BuyY); // Create a button take profit
               button (StringConcatenate ("Br", OrderTicket ()), x- 60 , y, "Br", "Breakeven", ButX, BuyY); // Create button bezubytka
               button (StringConcatenate ("Tr", OrderTicket ()), x- 40 , y, "Tr", "Ttrailing Stop", ButX, BuyY); // Create button trailing stop
               button (StringConcatenate ("Ti", OrderTicket ()), x- 20 , y, "Ti", "Time Close", ButX, BuyY); // Create a button for the lifetime of the order
               button (StringConcatenate ("X", OrderTicket ()), x, y, "X", "Close Order", ButX, BuyY); // Create a button closure / removal orders
              }
   for (int i = ObjectsTotal () -1; i>= 0 ; i--) // looping through the objects
      if (ObjectType (ObjectName (i)) == OBJ_BUTTON) // If the object fell button
         if (but_stat (ObjectName (i)) == true) // If the button is pressed
            ObjectSetInteger ( 0 , ObjectName (i), OBJPROP_BGCOLOR, clrLightGreen); // Repaint the green
   else
      ObjectSetInteger ( 0 , ObjectName (i), OBJPROP_BGCOLOR, C'230, 230,230 '); // If the button is pressed the button will return the native color

   for (int i = OrdersTotal () -1; i>= 0 ; i--) // looping through the orders
      if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) // Parse warrants parts
         if (OrderMagicNumber () == Magic || Magic == -1) // Check for Meydzhik room
            if (OrderSymbol () == _Symbol) // Check for character trades
              {
               if (but_stat (StringConcatenate (prefix, "X", OrderTicket ())) == true) // If pressed X
                  closeorders (OrderTicket ()); // Close the order or remove
               if (OrderType () == 0 || OrderType () == 2 || OrderType () == 4) // Work with warrants to purchase
                 {
                  if (but_stat (StringConcatenate (prefix, "Tp", OrderTicket ())) == true) // If pressed take profit
                     obj_cre (StringConcatenate ("tp", OrderTicket ()), (Ask + tp), clrGreen); // Create a graphic label
                  else
                     obj_del (StringConcatenate ("tp", OrderTicket ())); // If the button is pressed delete object

                  if (but_stat (StringConcatenate (prefix, "Sl", OrderTicket ())) == true) // If the button is pressed the stop loss
                     obj_cre (StringConcatenate ("sl", OrderTicket ()), (Bid-sl), clrRed); // Create a graphic label
                  else
                     obj_del (StringConcatenate ("sl", OrderTicket ())); // If the button is pressed delete object
                 }
               if (OrderType () == 1 || OrderType () == 3 || OrderType () == 5) // We work with sell orders
                 {
                  if (but_stat (StringConcatenate (prefix, "Tp", OrderTicket ())) == true) // If pressed take profit
                     obj_cre (StringConcatenate ("tp", OrderTicket ()), (Bid-tp), clrGreen); // Create a graphic label
                  else
                     obj_del (StringConcatenate ("tp", OrderTicket ())); // If the button is pressed delete object

                  if (but_stat (StringConcatenate (prefix, "Sl", OrderTicket ())) == true) // If the button is pressed the stop loss
                     obj_cre (StringConcatenate ("sl", OrderTicket ()), (Ask + sl), clrRed); // Create a graphic label
                  else
                     obj_del (StringConcatenate ("sl", OrderTicket ())); // If the button is pressed delete object
                 }
               if (but_stat (StringConcatenate (prefix, "Br", OrderTicket ())) == true) // If pressed bezubytka
                 {
                  if (((Ask-br)> OrderOpenPrice ()) && OrderType () == 0) // If the order to buy and the price is above a predetermined level
                     obj_cre (StringConcatenate ("br", OrderTicket ()), (OrderOpenPrice ()), clrGreen); // Create a graphic label

                  if (((Bid + br) <OrderOpenPrice ()) && OrderType () == 1 ) // If an order to sell and the price is below a predetermined level
                     obj_cre (StringConcatenate ("br", OrderTicket ()), (OrderOpenPrice ()), clrGreen); // Create a graphic label
                 }
               else obj_del (StringConcatenate ("br", OrderTicket ())); // If the button is pressed delete object

               if (but_stat (StringConcatenate (prefix, "Tr", OrderTicket ())) == true) // If pressed trailing stop
                 {
                  if (((Ask-tr)> OrderOpenPrice ()) && OrderType () == 0) // If the order to buy and the price is above a predetermined level
                     obj_cre (StringConcatenate ("tr", OrderTicket ()), (OrderOpenPrice ()), clrGreen); // Create a graphic label

                  if (((Bid + tr) <OrderOpenPrice ()) && OrderType () == 1 ) // If an order to sell and the price is below a predetermined level
                     obj_cre (StringConcatenate ("tr", OrderTicket ()), (OrderOpenPrice ()), clrGreen); // Create a graphic label
                 }
               else obj_del (StringConcatenate ("tr", OrderTicket ())); // If the button is pressed delete object

               if (but_stat (StringConcatenate (prefix, "Ti", OrderTicket ())) == true) // If pressed lifetime warrant
                  obj_cre_v_line (StringConcatenate ("ti", OrderTicket ()), clrGreen); // Create a vertical line
               else
                  obj_del (StringConcatenate ("ti", OrderTicket ())); // If the button is pressed delete object
              }

   his_del_obj (); // Remove obktov when closing orders
   proverca_sl_tp_ti (); // Check for the conditions on stop loss, take profit of , time
   proverca_br_tr (); // Check for the conditions on bezubytka , Trailing Stop
  }

bool proverca_br_tr ()
  {
   for (int i = OrdersTotal () -1; i>= 0 ; i--) // looping through the orders
      if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) // Parse warrants parts
         if (OrderMagicNumber () == Magic || Magic == -1) // Check for Meydzhik room
            if (OrderSymbol () == _Symbol) // Check for character trades
              {
               if (OrderType () == 0) // If the order Bai
                 {
                  if (ObjectFind (StringConcatenate ("br", OrderTicket ())) == 0) // If the object is created and the conditions are met
                     if (Bid <= get_object (StringConcatenate ("br", OrderTicket ()))) // If the price returned beyond Object
                        if (OrderClose (OrderTicket (), OrderLots (), Bid, Slip, clrRed) == true) // Close the order at bezubytka
                           pr ("Order close Ok!!!"); // If successful, we will report on the chart
                  else
                     pr ("Order close Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message
                 }
               if (OrderType () == 1) // If the order Cell
                 {
                  if (ObjectFind (StringConcatenate ("br", OrderTicket ())) == 0) // If the object is created and the conditions are met
                     if (Ask>= get_object (StringConcatenate ("br", OrderTicket ()))) // If the price returned beyond Object
                        if (OrderClose (OrderTicket (), OrderLots (), Ask, Slip, clrRed) == true) // Close the order at bezubytka
                           pr ("Order close Ok!!!"); // If successful, we will report on the chart
                  else
                     pr ("Order close Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message
                 }

               if (OrderType () == 0) // If the order Bai
                 {
                  if (ObjectFind (StringConcatenate ("tr", OrderTicket ())) == 0) // If the object is created and the conditions are met
                    {
                     if ((Bid-tr)> get_object (StringConcatenate ("tr", OrderTicket ()))) // If the price rises
                        set_object (StringConcatenate ("tr", OrderTicket ()), (Ask-tr)); // Move obkt trailing stop
                     if (Bid <= get_object (StringConcatenate ("tr", OrderTicket ()))) // If the price returned beyond Object
                        if (OrderClose (OrderTicket (), OrderLots (), Bid, Slip, clrRed) == true) // Close the trailing stop order
                           pr ("Order close Ok!!!"); // If successful, we will report on the chart
                     else
                        pr ("Order close Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message
                    }
                 }
               if (OrderType () == 1) // If the order Cell
                 {
                  if (ObjectFind (StringConcatenate ("tr", OrderTicket ())) == 0) // If the object is created and the conditions are met
                    {
                     if ((Ask + tr) <get_object (StringConcatenate ("tr", OrderTicket ()))) // If the price falls
                        set_object (StringConcatenate ("tr", OrderTicket ()), (Bid + tr)); // Move obkt trailing stop
                     if (Ask>= get_object (StringConcatenate ("tr", OrderTicket ()))) // If the price returned beyond Object
                        if (OrderClose (OrderTicket (), OrderLots (), Ask, Slip, clrRed) == true) // Close the trailing stop order
                           pr ("Order close Ok!!!"); // If successful, we will report on the chart
                     else
                        pr ("Order close Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message
                    }
                 }
              }
   return false;
  }

bool set_object (string name, double pri)
  {
   return ObjectSetDouble ( 0 , name, OBJPROP_PRICE, pri); // Function moves the object by name, and the new price
  }

bool proverca_sl_tp_ti ()
  {
   for (int i = OrdersTotal () -1; i>= 0 ; i--) // Iterate orders
      if (OrderSelect (i, SELECT_BY_POS, MODE_TRADES)) // Parse warrant component parts
         if (OrderMagicNumber () == Magic || Magic == -1) // if our Magic
            if (OrderSymbol () == _Symbol) // if our character
              {
               if (OrderType () == 0) // If the order Bai
                 {
                  if (ObjectFind (StringConcatenate ("tp", OrderTicket ())) == 0) // If the object is created and the conditions are met
                     if (Bid> get_object (StringConcatenate ("tp", OrderTicket ()))) // If the price is above the object takeprofit
                        if (OrderClose (OrderTicket (), OrderLots (), Bid, Slip, clrRed) == true) // Close the order
                           pr ("Order close Ok!!!"); // If successful, we will report on the chart
                  else
                     pr ("Order close Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message

                  if (ObjectFind (StringConcatenate ("sl", OrderTicket ())) == 0) // If the object is created and the conditions are met
                     if (Bid <get_object (StringConcatenate ("sl", OrderTicket ()))) // If the price is below the stop loss Object
                        if (OrderClose (OrderTicket (), OrderLots (), Bid, Slip, clrRed) == true) // Close the order
                           pr ("Order close Ok!!!"); // If successful, we will report on the chart
                  else
                     pr ("Order close Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message

                  if (ObjectFind (StringConcatenate ("ti", OrderTicket ())) == 0) // If the object is created and the conditions are met
                     if ((int) TimeCurrent ()> (int) get_object_ti (StringConcatenate ("ti", OrderTicket ()))) // If the time is longer warrant Object Life
                        if (OrderClose (OrderTicket (), OrderLots (), Bid, Slip, clrRed) == true) // Close the order
                           pr ("Order close Ok!!!"); // If successful, we will report on the chart
                  else
                     pr ("Order close Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message
                 }
               if (OrderType () == 1)
                 {
                  if (ObjectFind (StringConcatenate ("tp", OrderTicket ())) == 0) // If the object is created and the conditions are met
                     if (Ask <get_object (StringConcatenate ("tp", OrderTicket ()))) // If the price is below the object takeprofit
                        if (OrderClose (OrderTicket (), OrderLots (), Ask, Slip, clrRed) == true) // Close the order
                           pr ("Order close Ok!!!"); // If successful, we will report on the chart
                  else
                     pr ("Order close Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message

                  if (ObjectFind (StringConcatenate ("sl", OrderTicket ())) == 0) // If the object is created and the conditions are met
                     if (Ask> get_object (StringConcatenate ("sl", OrderTicket ()))) // If the price is above the object stop loss
                        if (OrderClose (OrderTicket (), OrderLots (), Ask, Slip, clrRed) == true) // Close the order
                           pr ("Order close Ok!!!"); // If successful, we will report on the chart
                  else
                     pr ("Order close Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message

                  if (ObjectFind (StringConcatenate ("ti", OrderTicket ())) == 0) // If the object is created and the conditions are met
                     if ((int) TimeCurrent ()> (int) get_object_ti (StringConcatenate ("ti", OrderTicket ()))) // If the time is longer warrant Object Life
                        if (OrderClose (OrderTicket (), OrderLots (), Ask, Slip, clrRed) == true) // Close the order
                           pr ("Order close Ok!!!"); // If successful, we will report on the chart
                  else
                     pr ("Order close Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message
                 }
               if (OrderType ()> 1)
                  if (ObjectFind (StringConcatenate ("ti", OrderTicket ())) == 0) // If the object is created and the conditions are met
                     if ((int) TimeCurrent ()> (int) get_object_ti (StringConcatenate ("ti", OrderTicket ()))) // If the time is longer warrant Object Life
                        if (OrderDelete (OrderTicket (), clrRed) == true) // delete the order
                           pr ("Order delete Ok!!!"); // If successful, we will report on the chart
               else
                  pr ("Order delete Error!!!" + Error (GetLastError ()), clrRed); // If it fails, return an error message
              }
   return false;
  }

datetime get_object_ti (string name)
  {
   return (datetime) ObjectGetInteger ( 0 , name, OBJPROP_TIME);
  }

double get_object (string name)
  {
   return ObjectGetDouble ( 0 , name, OBJPROP_PRICE);
  }

void obj_cre_v_line(string txt,color col)
  {
   if(ObjectFind(0,txt)==-1)
     {
      ObjectCreate(0,txt,OBJ_VLINE,0,Time[0]+_Period*10*60,0);
      ObjectSetInteger(0,txt,OBJPROP_TIME,Time[0]+_Period*10*60);
      ObjectSetInteger(0,txt,OBJPROP_COLOR,col);
      ObjectSetInteger(0,txt,OBJPROP_WIDTH,2);
      ObjectSetString(0,txt,OBJPROP_TOOLTIP,txt);
      WindowRedraw();
     }
  }

void obj_cre (string txt, double pri, color col)
  {
   if (ObjectFind ( 0 , txt) == -1)
     {
      ObjectCreate ( 0 , txt, OBJ_ARROW_RIGHT_PRICE, 0 , Time [ 0 ], pri);
      ObjectSetInteger ( 0 , txt, OBJPROP_TIME, Time [ 0]);
      ObjectSetDouble ( 0 , txt, OBJPROP_PRICE, pri);
      ObjectSetInteger ( 0 , txt, OBJPROP_COLOR, col);
      ObjectSetInteger ( 0 , txt, OBJPROP_WIDTH, 3);
      ObjectSetString ( 0 , txt, OBJPROP_TOOLTIP, txt);
      WindowRedraw ();
     }
  }

void obj_del (string txt)
  {
   ObjectDelete ( 0 , txt);
  }

void his_del_obj ()
  {
   for (int i = OrdersHistoryTotal () -1; i>= 0 ; i--)
      if (OrderSelect (i, SELECT_BY_POS, MODE_HISTORY))
         if (OrderMagicNumber () == Magic || Magic == -1)
            if (OrderSymbol () == _Symbol)
              {
               ObjectDelete ( 0 , StringConcatenate (prefix, "Sl", OrderTicket ()));
               ObjectDelete ( 0 , StringConcatenate (prefix, "Tp", OrderTicket ()));
               ObjectDelete ( 0 , StringConcatenate (prefix, "Br", OrderTicket ()));
               ObjectDelete ( 0 , StringConcatenate (prefix, "Tr", OrderTicket ()));
               ObjectDelete ( 0 , StringConcatenate (prefix, "Ti", OrderTicket ()));
               ObjectDelete ( 0 , StringConcatenate (prefix, "X", OrderTicket ()));

               ObjectDelete ( 0 , StringConcatenate ("sl", OrderTicket ()));
               ObjectDelete ( 0 , StringConcatenate ("tp", OrderTicket ()));
               ObjectDelete ( 0 , StringConcatenate ("br", OrderTicket ()));
               ObjectDelete ( 0 , StringConcatenate ("tr", OrderTicket ()));
               ObjectDelete ( 0 , StringConcatenate ("ti", OrderTicket ()));

              }
  }

bool closeorders (int tik)
  {
   string sy = "";
   if (OrderSelect (tik, SELECT_BY_TICKET))
      if (OrderMagicNumber () == Magic || Magic == -1)
         if (OrderSymbol () == _Symbol)
            if (OrderTicket () == tik)
              {
               sy = OrderSymbol ();
               if (OrderType () ==

Показано первые 50% кода (символов: 27510)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
2 751₽ ≈ $33.62