Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 59

 
Bitte helfen Sie mir, diesen Code zu vervollständigen.

Ich muss ein Limit für die Anzahl der offenen Aufträge setzen.
Dateien:
mjj.txt  21 kb
 
Vadim Podoprigora:
Bitte helfen Sie mir, diesen Code zu vervollständigen.

Ich muss ein Limit für die Anzahl der offenen Aufträge setzen.

und wie sollte der Code funktionieren und nach was sollte die Beschränkung erfolgen?

----------------------------------------------------------------------

Übrigens, wer kann erklären, warum bei jedem Datenwert

Ausdruck if ((AccountInfoDouble(ACCOUNT_EQUITY)*1.1>=AccountInfoDouble(ACCOUNT_BALANCE)) || (AccountInfoDouble(ACCOUNT_EQUITY)*0.9>=AccountInfoDouble(ACCOUNT_BALANCE))

gibt wahre

Zweck ist es, große Schwankungen abzuschwächen

eine letzte Sache.

Suche nach Material zur Herstellung von Knöpfen

Ich muss alle diese Codes in einem Panel zusammenführen
 
trader781:

und wie sollte der Code funktionieren und nach was sollte die Beschränkung erfolgen?

----------------------------------------------------------------------

Übrigens, wer kann erklären, warum bei jedem Datenwert

Ausdruck if ((AccountInfoDouble(ACCOUNT_EQUITY)*1.1>=AccountInfoDouble(ACCOUNT_BALANCE)) || (AccountInfoDouble(ACCOUNT_EQUITY)*0.9>=AccountInfoDouble(ACCOUNT_BALANCE))

gibt wahre

Zweck ist es, große Schwankungen abzuschwächen

eine letzte Sache.

Suche nach Material zur Herstellung von Knöpfen

alle diese Codes in einem Panel zusammenführen müssen
Der Artikelbereich ist voll von solchen Materialien. Die einfachsten Beispiele finden Sie in der Hilfe zu den einzelnen Arten von grafischen Objektenhttps://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_button.
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BUTTON
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BUTTON
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_BUTTON - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
trader781:

und wie sollte der Code funktionieren und nach was sollte die Beschränkung erfolgen?

----------------------------------------------------------------------

Übrigens, wer kann erklären, warum bei jedem Datenwert

Ausdruck if ((AccountInfoDouble(ACCOUNT_EQUITY)*1.1>=AccountInfoDouble(ACCOUNT_BALANCE)) || (AccountInfoDouble(ACCOUNT_EQUITY)*0.9>=AccountInfoDouble(ACCOUNT_BALANCE))

gibt wahre

Zweck ist es, große Schwankungen zu beseitigen

eine letzte Sache.

Suche nach Material zur Herstellung von Knöpfen

müssen wir alle diese Codes in einem Panel kombinieren
Begrenzen Sie die Anzahl der gleichzeitig offenen Aufträge.
 
Vadim Podoprigora:
Begrenzen Sie die Anzahl der gleichzeitig offenen Aufträge.
Halten Sie
Dateien:
55677.mq4  42 kb
 
Hallo, mir wurde die Aufgabe gestellt , einen EA zu schreiben, der wie folgt handelt:
Bestimmen Sie das Kursminimum und -maximum für den vom Benutzer angegebenen Zeitraum (zum Beispiel von 00-00 bis 02-00). Kaufen: der Kurs ist unter das Minimum der Kerze gefallen, verkaufen: der Kurs ist über das Maximum gestiegen. Bei einer offenen Position werden keine neuen Transaktionen eröffnet. Wir schließen die Position zu einem bestimmten Zeitpunkt (ebenfalls vom Benutzer festgelegt, sagen wir um 22-00 Uhr) oder um SL\TP (vom Benutzer festgelegt).


Die Frage ist, wie man dieses Minimum und Maximum in der Zeitperiode tatsächlich definiert. Und der EA kann den Handel nicht vor dem Ende des vom Benutzer angegebenen Zeitraums (in dem das Minimum und das Maximum gesucht werden) beginnen. Und wie die Anzahl der Bestellungen zu verfolgen (so dass sie nicht mehr als eine)?

Wer weiß, wo zu graben und wo für sie zu suchen, danke im Voraus. Wenn jemand mit dem Code helfen kann, wäre das großartig.
 
Anarchist:
Hallo, mir wurde die Aufgabe gestellt , einen EA zu schreiben, der wie folgt handelt:
Bestimmen Sie das Kursminimum und -maximum für den vom Benutzer angegebenen Zeitraum (zum Beispiel von 00-00 bis 02-00). Kaufen: der Kurs ist unter das Minimum der Kerze gefallen, verkaufen: der Kurs ist über das Maximum gestiegen. Bei einer offenen Position werden keine neuen Transaktionen eröffnet. Wir schließen die Position zu einem bestimmten Zeitpunkt (ebenfalls vom Benutzer festgelegt, sagen wir um 22-00 Uhr) oder um SL\TP (vom Benutzer festgelegt).


Die Frage ist, wie man dieses Minimum und Maximum in der Zeitperiode tatsächlich definiert. Und der EA kann den Handel nicht vor dem Ende des vom Benutzer angegebenen Zeitraums (in dem das Minimum und das Maximum gesucht werden) beginnen. Und wie die Anzahl der Bestellungen zu verfolgen (so dass sie nicht mehr als eine)?

Wer weiß, wo zu graben und wo für sie zu suchen, danke im Voraus. Wenn jemand mit dem Code helfen kann, wäre das großartig.
Ist dies eine Semesterarbeit?
 
Alexey Viktorov:
Ist dies eine Semesterarbeit?
Es handelt sich um eine einfache Laborarbeit, hier werden alle diese (benutzerdefinierten) Variablen als Variablen im Code am Anfang des Programms angegeben + bedenken Sie, dass der Benutzer nicht dumm ist.
 
Anarchist :
Hallo zusammen, ich hatte die Aufgabe , einen Expert Advisor zu schreiben , der wie folgt handelt:
Wir ermitteln die Mindest- und Höchstpreise für den vom Benutzer angegebenen Zeitraum (z. B. von 00-00 bis 02-00). Kaufen: Bei der Kerze ging der Preis über das Tief hinaus, Verkaufen: Der Preis ging über das Hoch hinaus. Mit einer offenen Position eröffnen wir keine neuen Geschäfte. Wir schließen die Position zur angegebenen Zeit (ebenfalls vom Benutzer angegeben, sagen wir um 22-00) oder per SL \ TP (vom Benutzer angegeben).


Die Frage ist, wie kann man dieses Minimum und Maximum für einen bestimmten Zeitraum tatsächlich bestimmen? Darüber hinaus kann der Berater den Handel nicht vor Ablauf der vom Benutzer angegebenen Zeit beginnen (wobei das Minimum und Maximum gesucht werden). Und wie kann man die Anzahl der Bestellungen verfolgen (damit es nicht mehr als eine gibt)?

Wer sagt Ihnen, wo Sie graben und wo Sie suchen müssen, danke im Voraus. Wenn jemand mit dem Code helfen kann, wäre das großartig.

Schnell skizziert bleiben, ohne besondere Kontrollen, das reicht für den Tester.

//+------------------------------------------------------------------+
//|                                                       test07.mq4 |
//|                                                   Sergey Gritsay |
//|                         https://www.mql5.com/ru/users/sergey1294 |
//+------------------------------------------------------------------+
#property copyright "Sergey Gritsay"
#property link        "https://www.mql5.com/ru/users/sergey1294"
#property version    "1.00"
#property strict

input string analysis_time_start= "10:00" ;
input string analysis_time_end= "12:00" ;
input string time_out= "16:00" ;
input string time_out_close= "23:00" ;

input int     shift_open= 0 ;
input int     MagicNumber= 20110315 ;       // Номер копии
input double Lot= 0.01 ;           // Объем лота
input int     StopLoss     = 300 ;             // Стоп Лосс (Пипс)
input int     TakeProfit   = 500 ;             // Тейк Профит (Пипс)
input int     Slippage     = 10 ;             // Проскальзование (Пипс)
input string CommentOrder= "test" ;     // Комментарий к ордеру

double    up_price= 0.0 ;
double down_price= 0.0 ;
double hist_high[];
double hist_low[];
double hist_close[];
MqlDateTime times;
MqlRates rates[];
datetime d1;
datetime d2;
datetime d3;
datetime d4;
bool flag_open= false ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit ()
  {
//---
   VLineCreate( 0 , "Line_start" );
   VLineCreate( 0 , "Line_end" );
   VLineCreate( 0 , "Line_time_out" );
   VLineCreate( 0 , "Line_time_out_close" );
   HLineCreate( 0 , "Line_max" );
   HLineCreate( 0 , "Line_min" );
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit ( const int reason)
  {
//---
   VLineDelete( 0 , "Line_start" );
   VLineDelete( 0 , "Line_end" );
   VLineDelete( 0 , "Line_time_out" );
   VLineDelete( 0 , "Line_time_out_close" );
   HLineDelete( 0 , "Line_max" );
   HLineDelete( 0 , "Line_min" );
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick ()
  {
//---
   datetime date= TimeCurrent (times);
   int ty=times.year;
   int tm=times.mon;
   int td=times.day;
   d1= StringToTime (( string )ty+ "." +( string )tm+ "." +( string )td+ " " +analysis_time_start);
   d2= StringToTime (( string )ty+ "." +( string )tm+ "." +( string )td+ " " +analysis_time_end);
   d3= StringToTime (( string )ty+ "." +( string )tm+ "." +( string )td+ " " +time_out);
   d4= StringToTime (( string )ty+ "." +( string )tm+ "." +( string )td+ " " +time_out_close);

   if (!flag_open && date>d1 && date<d2)flag_open= true ;
   if (date>=d3 && d2<d3)flag_open= false ;

   if (date>d2)
     {
       if ( CopyLow ( _Symbol , 0 ,d1,d2,hist_low)< 0 ) return ;
       if ( CopyHigh ( _Symbol , 0 ,d1,d2,hist_high)< 0 ) return ;
      up_price= NormalizeDouble (hist_high[ ArrayMaximum (hist_high)], _Digits );
      down_price= NormalizeDouble (hist_low[ ArrayMinimum (hist_low)], _Digits );
     }

   VLineMove( 0 , "Line_start" ,d1);
   VLineMove( 0 , "Line_end" ,d2);
   VLineMove( 0 , "Line_time_out" ,d3);
   VLineMove( 0 , "Line_time_out_close" ,d4);
   HLineMove( 0 , "Line_max" ,up_price);
   HLineMove( 0 , "Line_min" ,down_price);

   Comment (
           "\n date = " ,date,
           "\n d1 = " , TimeToString (d1),
           "\n d2 = " , TimeToString (d2),
           "\n d3 = " , TimeToString (d3),
           "\n d4 = " , TimeToString (d4)
           );

   if (flag_open)
     {
       if (TotalOrder()== 0 )
        {
         if ( CopyRates ( _Symbol , PERIOD_CURRENT , 0 ,shift_open+ 2 ,rates)==shift_open+ 2 )
           {
             if (date>d2 && date<d3 && d2<d3 && rates[shift_open].time>d2)
              {
               if (rates[shift_open].close>=up_price && rates[shift_open+ 1 ].close<=up_price)
                 {
                  OrderOpen( OP_BUY );
                 }

               if (rates[shift_open].close<=down_price && rates[shift_open+ 1 ].close>=down_price)
                 {
                  OrderOpen( OP_SELL );
                 }
              }
           }
        }
     }

   if (date>=d4 && d2<d4)
     {
       OrderClose ();
     }

   ModifySL(StopLoss);
   ModifyTP(TakeProfit);
  }
//+------------------------------------------------------------------+
int TotalOrder()
  {
   int value= 0 ;
   int total= OrdersTotal ();
   for ( int i=total- 1 ; i>= 0 ; i--)
     {
       if (! OrderSelect (i, SELECT_BY_POS )) continue ;
       if ( OrderSymbol ()!= Symbol ()) continue ;
       if ( OrderMagicNumber ()!=MagicNumber) continue ;
       if ( OrderType ()> 1 ) continue ;
      value++;
     }
   return (value);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OrderOpen( int type)
  {
   double price_open= 0.0 ;
   if (type== WRONG_VALUE ) return ;
   if (! IsTradeAllowed ()) return ;

   if (type== OP_BUY )price_open = NormalizeDouble ( Ask , _Digits );
   if (type== OP_SELL )price_open = NormalizeDouble ( Bid , _Digits );

   int ticket= OrderSend ( _Symbol ,type,Lot,price_open,Slippage, 0 , 0 ,CommentOrder,MagicNumber);
   if (ticket< 0 ) Print ( "Ошибка открытия ордера № - " , GetLastError ());
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OrderClose ()
  {
   double price_close= 0.0 ;
   if (! IsTradeAllowed ()) return ;
   int total= OrdersTotal ();
   for ( int i=total- 1 ; i>= 0 ; i--)
     {
       if (! OrderSelect (i, SELECT_BY_POS )) continue ;
       if ( OrderMagicNumber ()!=MagicNumber) continue ;
       if ( OrderSymbol ()!= _Symbol ) continue ;
       if ( OrderType ()!= OP_BUY  &&  OrderType ()!= OP_SELL ) continue ;
       if ( OrderType ()== OP_BUY )price_close= NormalizeDouble ( Bid , _Digits );
       if ( OrderType ()== OP_SELL )price_close= NormalizeDouble ( Ask , _Digits );
       bool res= OrderClose ( OrderTicket (), OrderLots (),price_close,Slippage);
       if (!res) Print ( "Ошибка закрытия ордера № - " , GetLastError ());
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ModifySL( double sl)
  {
   if (sl<= 0 ) return ;
   double price_sl= 0.0 ;
   int total= OrdersTotal ();
   for ( int i=total- 1 ; i>= 0 ; i--)
     {
       if (! OrderSelect (i, SELECT_BY_POS )) continue ;
       if ( OrderMagicNumber ()!=MagicNumber) continue ;
       if ( OrderSymbol ()!= _Symbol ) continue ;
       if ( OrderType ()> 1 ) continue ;
       if ( OrderStopLoss ()== 0 )
        {
         if ( OrderType ()== OP_BUY )price_sl= NormalizeDouble ( OrderOpenPrice ()-sl* _Point , _Digits );
         if ( OrderType ()== OP_SELL )price_sl= NormalizeDouble ( OrderOpenPrice ()+sl* _Point , _Digits );
         if (price_sl<= 0 ) continue ;
         bool res= OrderModify ( OrderTicket (), OrderOpenPrice (),price_sl, OrderTakeProfit (), 0 );
         if (!res) Print ( "Ошибка модификации стоп лосса ордера № - " , GetLastError ());
        }
     }
  }
//+------------------------------------------------------------------+
void ModifyTP( double tp)
  {
   if (tp<= 0 ) return ;
   double price_tp= 0.0 ;
   int total= OrdersTotal ();
   for ( int i=total- 1 ; i>= 0 ; i--)
     {
       if (! OrderSelect (i, SELECT_BY_POS )) continue ;
       if ( OrderMagicNumber ()!=MagicNumber) continue ;
       if ( OrderSymbol ()!= _Symbol ) continue ;
       if ( OrderType ()> 1 ) continue ;
       if ( OrderTakeProfit ()== 0 )
        {
         if ( OrderType ()== OP_BUY )price_tp= NormalizeDouble ( OrderOpenPrice ()+tp* _Point , _Digits );
         if ( OrderType ()== OP_SELL )price_tp= NormalizeDouble ( OrderOpenPrice ()-tp* _Point , _Digits );
         if (price_tp<= 0 ) continue ;
         bool res= OrderModify ( OrderTicket (), OrderOpenPrice (), OrderStopLoss (),price_tp, 0 );
         if (!res) Print ( "Ошибка модификации тейк профита ордера № - " , GetLastError ());
        }
     }
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Создает вертикальную линию                                       |
//+------------------------------------------------------------------+
bool VLineCreate( const long             chart_ID= 0 ,         // ID графика
                 const string           name= "VLine" ,       // имя линии
                 const int              sub_window= 0 ,       // номер подокна
                 datetime               time= 0 ,             // время линии
                 const color            clr= clrRed ,         // цвет линии
                 const ENUM_LINE_STYLE style= STYLE_SOLID , // стиль линии
                 const int              width= 1 ,           // толщина линии
                 const bool             back= false ,         // на заднем плане
                 const bool             selection= true ,     // выделить для перемещений
                 const bool             ray= true ,           // продолжение линии вниз
                 const bool             hidden= true ,       // скрыт в списке объектов
                 const long             z_order= 0 )         // приоритет на нажатие мышью
  {
//--- если время линии не задано, то проводим ее через последний бар
   if (!time)
      time= TimeCurrent ();
//--- сбросим значение ошибки
   ResetLastError ();
//--- создадим вертикальную линию
   if (! ObjectCreate (chart_ID,name, OBJ_VLINE ,sub_window,time, 0 ))
     {
       Print ( __FUNCTION__ ,
             ": не удалось создать вертикальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- установим цвет линии
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль отображения линии
   ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим толщину линии
   ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
//--- включим (true) или отключим (false) режим перемещения линии мышью
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- включим (true) или отключим (false) режим отображения линии в подокнах графика
   ObjectSetInteger (chart_ID,name, OBJPROP_RAY ,ray);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
//--- успешное выполнение
   return ( true );
  }
//+------------------------------------------------------------------+
//| Перемещение вертикальной линии                                   |
//+------------------------------------------------------------------+
bool VLineMove( const long    chart_ID= 0 ,   // ID графика
               const string name= "VLine" , // имя линии
               datetime      time= 0 )       // время линии
  {
//--- если время линии не задано, то перемещаем ее на последний бар
   if (!time)
      time= TimeCurrent ();
//--- сбросим значение ошибки
   ResetLastError ();
//--- переместим вертикальную линию
   if (! ObjectMove (chart_ID,name, 0 ,time, 0 ))
     {
       Print ( __FUNCTION__ ,
             ": не удалось переместить вертикальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- успешное выполнение
   return ( true );
  }
//+------------------------------------------------------------------+
//| Удаляет вертикальную линию                                       |
//+------------------------------------------------------------------+
bool VLineDelete( const long    chart_ID= 0 ,   // ID графика
                 const string name= "VLine" ) // имя линии
  {
//--- сбросим значение ошибки
   ResetLastError ();
//--- удалим вертикальную линию
   if (! ObjectDelete (chart_ID,name))
     {
       Print ( __FUNCTION__ ,
             ": не удалось удалить вертикальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- успешное выполнение
   return ( true );
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Создает горизонтальную линию                                     |
//+------------------------------------------------------------------+
bool HLineCreate( const long             chart_ID= 0 ,         // ID графика
                 const string           name= "HLine" ,       // имя линии
                 const int              sub_window= 0 ,       // номер подокна
                 double                 price= 0 ,           // цена линии
                 const color            clr= clrRed ,         // цвет линии
                 const ENUM_LINE_STYLE style= STYLE_SOLID , // стиль линии
                 const int              width= 1 ,           // толщина линии
                 const bool             back= false ,         // на заднем плане
                 const bool             selection= true ,     // выделить для перемещений
                 const bool             hidden= true ,       // скрыт в списке объектов
                 const long             z_order= 0 )         // приоритет на нажатие мышью
  {
//--- если цена не задана, то установим ее на уровне текущей цены Bid
   if (!price)
      price= SymbolInfoDouble ( Symbol (), SYMBOL_BID );
//--- сбросим значение ошибки
   ResetLastError ();
//--- создадим горизонтальную линию
   if (! ObjectCreate (chart_ID,name, OBJ_HLINE ,sub_window, 0 ,price))
     {
       Print ( __FUNCTION__ ,
             ": не удалось создать горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- установим цвет линии
   ObjectSetInteger (chart_ID,name, OBJPROP_COLOR ,clr);
//--- установим стиль отображения линии
   ObjectSetInteger (chart_ID,name, OBJPROP_STYLE ,style);
//--- установим толщину линии
   ObjectSetInteger (chart_ID,name, OBJPROP_WIDTH ,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger (chart_ID,name, OBJPROP_BACK ,back);
//--- включим (true) или отключим (false) режим перемещения линии мышью
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTABLE ,selection);
   ObjectSetInteger (chart_ID,name, OBJPROP_SELECTED ,selection);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger (chart_ID,name, OBJPROP_HIDDEN ,hidden);
//--- установим приоритет на получение события нажатия мыши на графике
   ObjectSetInteger (chart_ID,name, OBJPROP_ZORDER ,z_order);
//--- успешное выполнение
   return ( true );
  }
//+------------------------------------------------------------------+
//| Перемещение горизонтальной линии                                 |
//+------------------------------------------------------------------+
bool HLineMove( const long    chart_ID= 0 ,   // ID графика
               const string name= "HLine" , // имя линии
               double        price= 0 )       // цена линии
  {
//--- если цена линии не задана, то перемещаем ее на уровень текущей цены Bid
   if (!price)
      price= SymbolInfoDouble ( Symbol (), SYMBOL_BID );
//--- сбросим значение ошибки
   ResetLastError ();
//--- переместим горизонтальную линию
   if (! ObjectMove (chart_ID,name, 0 , 0 ,price))
     {
       Print ( __FUNCTION__ ,
             ": не удалось переместить горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- успешное выполнение
   return ( true );
  }
//+------------------------------------------------------------------+
//| Удаляет горизонтальную линию                                     |
//+------------------------------------------------------------------+
bool HLineDelete( const long    chart_ID= 0 ,   // ID графика
                 const string name= "HLine" ) // имя линии
  {
//--- сбросим значение ошибки
   ResetLastError ();
//--- удалим горизонтальную линию
   if (! ObjectDelete (chart_ID,name))
     {
       Print ( __FUNCTION__ ,
             ": не удалось удалить горизонтальную линию! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- успешное выполнение
   return ( true );
  }

//+------------------------------------------------------------------+

...

Dateien:
test07.mq4  34 kb
 
Es gab einen Fehler im Block zum Schließen der Bestellung, der behoben wurde.
Grund der Beschwerde: