무료로 어드바이저를 작성해 드립니다 - 페이지 164

 
GhostMan # :

지표를 무료로 작성할 수 있습니까?

이게 갈까?

스크린샷 2022-02-20 103008

 //+------------------------------------------------------------------+
//|                                        iMACD Four TimeFrames.mq5 |
//+------------------------------------------------------------------+
//|                                                         Fx10.mq5 |
//|                                   Copyright © 2000-2007, palanka |
//|                                         http://www.metaquotes.ru |
//+------------------------------------------------------------------+
//---- авторство индикатора
#property copyright "Copyright © 2000-2007, palanka"
//---- ссылка на сайт автора
#property link        ""
//---- номер версии индикатора
#property version    "1.02"
//---- отрисовка индикатора в главном окне
#property indicator_chart_window
//---- для расчета и отрисовки индикатора использовано два буфера
#property indicator_buffers 2
//---- использовано всего два графических построения
#property indicator_plots    2
//+----------------------------------------------+
//|  Объявление констант                         |
//+----------------------------------------------+
#define RESET   0 // константа для возврата терминалу команды на пересчет индикатора
//+----------------------------------------------+
//|  Параметры отрисовки медвежьего индикатора   |
//+----------------------------------------------+
//---- отрисовка индикатора 1 в виде символа
#property indicator_type1    DRAW_ARROW
//---- в качестве цвета индикатора использован цвет Magenta
#property indicator_color1   Red
//---- толщина линии индикатора 1 равна 4
#property indicator_width1    4
//---- отображение метки индикатора
#property indicator_label1    "iMACD Four TimeFrames Sell"
//+----------------------------------------------+
//|  Параметры отрисовки бычьего индикатора      |
//+----------------------------------------------+
//---- отрисовка индикатора 2 в виде символа
#property indicator_type2    DRAW_ARROW
//---- в качестве цвета индикатора использован цвет Lime
#property indicator_color2   Blue
//---- толщина линии индикатора 2 равна 4
#property indicator_width2    4
//---- отображение метки индикатора
#property indicator_label2 "iMACD Four TimeFrames Buy"
//+----------------------------------------------+
//| Входные параметры индикатора                 |
//+----------------------------------------------+
input group             "Trading settings"
input ENUM_TIMEFRAMES       InpWorkingPeriod         = PERIOD_CURRENT ; // Working timeframe (#1 timeframe)
input ENUM_TIMEFRAMES       InpPeriod_2              = PERIOD_M15 ;     // #2 timeframe
input ENUM_TIMEFRAMES       InpPeriod_3              = PERIOD_M30 ;     // #3 timeframe
input ENUM_TIMEFRAMES       InpPeriod_4              = PERIOD_H1 ;       // #4 timeframe
input group             "MACD"
input int                   Inp_MACD_fast_ema_period = 12 ;             // MACD: period for Fast average calculation
input int                   Inp_MACD_slow_ema_period = 26 ;             // MACD: period for Slow average calculation
input int                   Inp_MACD_signal_period   = 9 ;               // MACD: period for their difference averaging
input ENUM_APPLIED_PRICE    Inp_MACD_applied_price   = PRICE_CLOSE ;     // MACD: type of price
//+----------------------------------------------+
//---- объявление динамических массивов, которые в дальнейшем
//---- будут использованы в качестве индикаторных буферов
double SellBuffer[];
double BuyBuffer[];
//---- объявление целочисленных переменных начала отсчета данных
int min_rates_total;
//---- объявление целочисленных переменных для хендлов индикаторов
int handle_iMACD;       // variable for storing the handle of the iMACD indicator
int handle_iMACD_2;     // variable for storing the handle of the iMACD indicator
int handle_iMACD_3;     // variable for storing the handle of the iMACD indicator
int handle_iMACD_4;     // variable for storing the handle of the iMACD indicator
int OldTrend;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit ()
  {
//---- инициализация глобальных переменных
   min_rates_total = int (Inp_MACD_slow_ema_period + 1 );
//---- получение хендла индикатора MACD
   handle_iMACD = iMACD ( NULL , InpWorkingPeriod, Inp_MACD_fast_ema_period, Inp_MACD_slow_ema_period,
                        Inp_MACD_signal_period, Inp_MACD_applied_price);
   if (handle_iMACD == INVALID_HANDLE )
       Print ( " Не удалось получить хендл индикатора iMACD" );
//---- получение хендла индикатора MACD
   handle_iMACD_2 = iMACD ( NULL , InpPeriod_2, Inp_MACD_fast_ema_period, Inp_MACD_slow_ema_period,
                          Inp_MACD_signal_period, Inp_MACD_applied_price);
   if (handle_iMACD_2 == INVALID_HANDLE )
       Print ( " Не удалось получить хендл индикатора iMACD" );
//---- получение хендла индикатора MACD
   handle_iMACD_3 = iMACD ( NULL , InpPeriod_3, Inp_MACD_fast_ema_period, Inp_MACD_slow_ema_period,
                          Inp_MACD_signal_period, Inp_MACD_applied_price);
   if (handle_iMACD_3 == INVALID_HANDLE )
       Print ( " Не удалось получить хендл индикатора iMACD" );
//---- получение хендла индикатора MACD
   handle_iMACD_4 = iMACD ( NULL , InpPeriod_4, Inp_MACD_fast_ema_period, Inp_MACD_slow_ema_period,
                          Inp_MACD_signal_period, Inp_MACD_applied_price);
   if (handle_iMACD_4 == INVALID_HANDLE )
       Print ( " Не удалось получить хендл индикатора iMACD" );
//---- превращение динамического массива SellBuffer[] в индикаторный буфер
   SetIndexBuffer ( 0 , SellBuffer, INDICATOR_DATA );
//---- осуществление сдвига начала отсчета отрисовки индикатора 1
   PlotIndexSetInteger ( 0 , PLOT_DRAW_BEGIN , min_rates_total);
//---- символ для индикатора
   PlotIndexSetInteger ( 0 , PLOT_ARROW , 234 );
//---- установка значений индикатора, которые не будут видимы на графике
   PlotIndexSetDouble ( 0 , PLOT_EMPTY_VALUE , 0 );
//---- индексация элементов в буфере, как в таймсерии
   ArraySetAsSeries (SellBuffer, true );
//---- превращение динамического массива BuyBuffer[] в индикаторный буфер
   SetIndexBuffer ( 1 , BuyBuffer, INDICATOR_DATA );
//---- осуществление сдвига начала отсчета отрисовки индикатора 2
   PlotIndexSetInteger ( 1 , PLOT_DRAW_BEGIN , min_rates_total);
//---- символ для индикатора
   PlotIndexSetInteger ( 1 , PLOT_ARROW , 233 );
//---- установка значений индикатора, которые не будут видимы на графике
   PlotIndexSetDouble ( 1 , PLOT_EMPTY_VALUE , 0 );
//---- индексация элементов в буфере, как в таймсерии
   ArraySetAsSeries (BuyBuffer, true );
//---- установка формата точности отображения индикатора
   IndicatorSetInteger ( INDICATOR_DIGITS , _Digits );
//---- имя для окон данных и метка для подокон
   string short_name = "iMACD Four TimeFrames" ;
   IndicatorSetString ( INDICATOR_SHORTNAME , short_name);
//----
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---- проверка количества баров на достаточность для расчета
   if ( BarsCalculated (handle_iMACD) < rates_total
      || BarsCalculated (handle_iMACD_2) < rates_total
      || BarsCalculated (handle_iMACD_3) < rates_total
      || BarsCalculated (handle_iMACD_4) < rates_total
      || rates_total < min_rates_total)
       return (RESET);
//---- объявления локальных переменных
   int to_copy, limit, bar;
   double main_1[], signal_1[], main_2[], signal_2[], main_3[], signal_3[], main_4[], signal_4[];
   bool MacdUp_1, MacdDn_1, MacdUp_2, MacdDn_2, MacdUp_3, MacdDn_3, MacdUp_4, MacdDn_4;
//---- расчеты необходимого количества копируемых данных и
//---- и стартового номера limit для цикла пересчета баров
   if (prev_calculated > rates_total || prev_calculated <= 0 ) // проверка на первый старт расчета индикатора
      limit = rates_total - min_rates_total; // стартовый номер для расчета всех баров
   else
      limit = rates_total - prev_calculated; // стартовый номер для расчета новых баров
   to_copy = limit + 1 ;
//---- копируем вновь появившиеся данные в массивы
   if ( CopyBuffer (handle_iMACD, MAIN_LINE , 0 , to_copy, main_1)       <= 0 )
       return (RESET);
   if ( CopyBuffer (handle_iMACD, SIGNAL_LINE , 0 , to_copy, signal_1)   <= 0 )
       return (RESET);
   if ( CopyBuffer (handle_iMACD_2, MAIN_LINE , 0 , to_copy, main_2)     <= 0 )
       return (RESET);
   if ( CopyBuffer (handle_iMACD_2, SIGNAL_LINE , 0 , to_copy, signal_2) <= 0 )
       return (RESET);
   if ( CopyBuffer (handle_iMACD_3, MAIN_LINE , 0 , to_copy, main_3)     <= 0 )
       return (RESET);
   if ( CopyBuffer (handle_iMACD_3, SIGNAL_LINE , 0 , to_copy, signal_3) <= 0 )
       return (RESET);
   if ( CopyBuffer (handle_iMACD_4, MAIN_LINE , 0 , to_copy, main_4)     <= 0 )
       return (RESET);
   if ( CopyBuffer (handle_iMACD_4, SIGNAL_LINE , 0 , to_copy, signal_4) <= 0 )
       return (RESET);
//---- индексация элементов в массивах, как в таймсериях
   ArraySetAsSeries (main_1, true );
   ArraySetAsSeries (signal_1, true );
   ArraySetAsSeries (main_2, true );
   ArraySetAsSeries (signal_2, true );
   ArraySetAsSeries (main_3, true );
   ArraySetAsSeries (signal_3, true );
   ArraySetAsSeries (main_4, true );
   ArraySetAsSeries (signal_4, true );
   ArraySetAsSeries (high, true );
   ArraySetAsSeries (low, true );
//---- основной цикл расчета индикатора
   for (bar = limit; bar >= 0 && ! IsStopped (); bar--)
     {
      BuyBuffer[bar]  = 0.0 ;
      SellBuffer[bar] = 0.0 ;
       //--- BUY Signal
      MacdUp_1 = main_1[bar] > signal_1[bar] && main_1[bar] > 0.0 && signal_1[bar] > 0.0 ;
      MacdUp_2 = main_2[bar] > signal_2[bar] && main_2[bar] > 0.0 && signal_2[bar] > 0.0 ;
      MacdUp_3 = main_3[bar] > signal_3[bar] && main_3[bar] > 0.0 && signal_3[bar] > 0.0 ;
      MacdUp_4 = main_4[bar] > signal_4[bar] && main_4[bar] > 0.0 && signal_4[bar] > 0.0 ;
       //--- SELL Signal
      MacdDn_1 = main_1[bar] < signal_1[bar] && main_1[bar] < 0.0 && signal_1[bar] < 0.0 ;
      MacdDn_2 = main_2[bar] < signal_2[bar] && main_2[bar] < 0.0 && signal_2[bar] < 0.0 ;
      MacdDn_3 = main_3[bar] < signal_3[bar] && main_3[bar] < 0.0 && signal_3[bar] < 0.0 ;
      MacdDn_4 = main_4[bar] < signal_4[bar] && main_4[bar] < 0.0 && signal_4[bar] < 0.0 ;
       //--- BUY Signal
       if (MacdUp_1 && MacdUp_2 && MacdUp_3 && MacdUp_4)
        {
         if (OldTrend < 0 )
            BuyBuffer[bar] = low[bar];
         if (bar != 0 )
            OldTrend = + 1 ;
        }
       //--- SELL Signal
       if (MacdDn_1 && MacdDn_2 && MacdDn_3 && MacdDn_4)
        {
         if (OldTrend > 0 )
            SellBuffer[bar] = high[bar];
         if (bar != 0 )
            OldTrend = - 1 ;
        }
     }
//----
   return (rates_total);
  }
//+------------------------------------------------------------------+
파일:
 

누가 MT4용 칠면조를 쓸 수 있습니까?

직무.

주어진 (터키에서 설정) 시간 동안 직사각형을 그립니다 . 상한 및 하한은 지정된 시간 간격 (터키에서 설정) 의 최대 및 최소에 의해 결정됩니다.

예시.

이 경우 시간 간격은 2022.02.01 2:00 - 2022.02.01 14:00입니다(가장 가까운 최소 또는 최대 지점에서 간격 시작까지).


 
GhostMan # :

누가 MT4용 칠면조를 쓸 수 있습니까?

직무.

주어진 (터키에서 설정) 시간 동안 직사각형을 그립니다 . 상한 및 하한은 지정된 시간 간격 (터키에서 설정) 의 최대 및 최소에 의해 결정됩니다.

예시.

이 경우 시간 간격은 2022.02.01 2:00 - 2022.02.01 14:00입니다(가장 가까운 최소 또는 최대 지점에서 간격 시작까지).


여기에서 가져온 예제 스크립트가 있습니다. https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_rectangle

 //+------------------------------------------------------------------+
//|                                                OBJ_RECTANGLE.mq4 |
//|                        Copyright 2022, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Software Corp."
#property link        " https://www.mql5.com "
#property version    "1.00"
//--- описание
#property description "Скрипт строит прямоугольник на графике."
#property description "Координаты точек привязки задаются в"
#property description "процентах от размеров окна графика."

#property strict
//--- покажем окно входных параметров при запуске скрипта
#property script_show_inputs
//--- входные параметры скрипта
input string           InpName= "Rectangle" ; // Имя прямоугольника
input int              InpDate1= 40 ;         // Дата 1-ой точки в %
input int              InpPrice1= 40 ;         // Цена 1-ой точки в %
input int              InpDate2= 60 ;         // Дата 2-ой точки в %
input int              InpPrice2= 60 ;         // Цена 2-ой точки в %
input color            InpColor= clrRed ;     // Цвет прямоугольника
input ENUM_LINE_STYLE InpStyle= STYLE_DASH ; // Стиль линий прямоугольника
input int              InpWidth= 2 ;           // Толщина линий прямоугольника
input bool             InpFill= true ;         // Заливка прямоугольника цветом
input bool             InpBack= false ;       // Прямоугольника на заднем плане
input bool             InpSelection= true ;   // Выделить для перемещений
input bool             InpHidden= true ;       // Скрыт в списке объектов
input long             InpZOrder= 0 ;         // Приоритет на нажатие мышью
//+------------------------------------------------------------------+
//| Cоздает прямоугольник по заданным координатам                    |
//+------------------------------------------------------------------+
bool RectangleCreate( const long             chart_ID= 0 ,         // ID графика
                     const string           name= "Rectangle" ,   // имя прямоугольника
                     const int              sub_window= 0 ,       // номер подокна
                     datetime               time1= 0 ,           // время первой точки
                     double                 price1= 0 ,           // цена первой точки
                     datetime               time2= 0 ,           // время второй точки
                     double                 price2= 0 ,           // цена второй точки
                     const color            clr= clrRed ,         // цвет прямоугольника
                     const ENUM_LINE_STYLE style= STYLE_SOLID , // стиль линий прямоугольника
                     const int              width= 1 ,           // толщина линий прямоугольника
                     const bool             fill= false ,         // заливка прямоугольника цветом
                     const bool             back= false ,         // на заднем плане
                     const bool             selection= true ,     // выделить для перемещений
                     const bool             hidden= true ,       // скрыт в списке объектов
                     const long             z_order= 0 )         // приоритет на нажатие мышью
  {
//--- установим координаты точек привязки, если они не заданы
   ChangeRectangleEmptyPoints(time1,price1,time2,price2);
//--- сбросим значение ошибки
   ResetLastError ();
//--- создадим прямоугольник по заданным координатам
   if (! ObjectCreate (chart_ID,name, OBJ_RECTANGLE ,sub_window,time1,price1,time2,price2))
     {
       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);
//--- включим (true) или отключим (false) режим заливки прямоугольника
   ObjectSetInteger (chart_ID,name, OBJPROP_FILL ,fill);
//--- отобразим на переднем (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 RectanglePointChange( const long    chart_ID= 0 ,       // ID графика
                           const string name= "Rectangle" , // имя прямоугольника
                           const int     point_index= 0 ,     // номер точки привязки
                           datetime      time= 0 ,           // координата времени точки привязки
                           double        price= 0 )           // координата цены точки привязки
  {
//--- если координаты точки не заданы, то перемещаем ее на текущий бар с ценой Bid
   if (!time)
      time= TimeCurrent ();
   if (!price)
      price= SymbolInfoDouble ( Symbol (), SYMBOL_BID );
//--- сбросим значение ошибки
   ResetLastError ();
//--- переместим точку привязки
   if (! ObjectMove (chart_ID,name,point_index,time,price))
     {
       Print ( __FUNCTION__ ,
             ": не удалось переместить точку привязки! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- успешное выполнение
   return ( true );
  }
//+------------------------------------------------------------------+
//| Удаляет прямоугольник                                            |
//+------------------------------------------------------------------+
bool RectangleDelete( const long    chart_ID= 0 ,       // ID графика
                     const string name= "Rectangle" ) // имя прямоугольника
  {
//--- сбросим значение ошибки
   ResetLastError ();
//--- удалим прямоугольник
   if (! ObjectDelete (chart_ID,name))
     {
       Print ( __FUNCTION__ ,
             ": не удалось удалить прямоугольник! Код ошибки = " , GetLastError ());
       return ( false );
     }
//--- успешное выполнение
   return ( true );
  }
//+------------------------------------------------------------------+
//| Проверяет значения точек привязки прямоугольника и для пустых    |
//| значений устанавливает значения по умолчанию                     |
//+------------------------------------------------------------------+
void ChangeRectangleEmptyPoints( datetime &time1, double &price1,
                                 datetime &time2, double &price2)
  {
//--- если время первой точки не задано, то она будет на текущем баре
   if (!time1)
      time1= TimeCurrent ();
//--- если цена первой точки не задана, то она будет иметь значение Bid
   if (!price1)
      price1= SymbolInfoDouble ( Symbol (), SYMBOL_BID );
//--- если время второй точки не задано, то она лежит на 9 баров левее второй
   if (!time2)
     {
       //--- массив для приема времени открытия 10 последних баров
       datetime temp[ 10 ];
       CopyTime ( Symbol (), Period (),time1, 10 ,temp);
       //--- установим вторую точку на 9 баров левее первой
      time2=temp[ 0 ];
     }
//--- если цена второй точки не задана, сдвинем ее на 300 пунктов ниже первой
   if (!price2)
      price2=price1- 300 * SymbolInfoDouble ( Symbol (), SYMBOL_POINT );
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
//--- проверим входные параметры на корректность
   if (InpDate1< 0 || InpDate1> 100 || InpPrice1< 0 || InpPrice1> 100 ||
      InpDate2< 0 || InpDate2> 100 || InpPrice2< 0 || InpPrice2> 100 )
     {
       Print ( "Ошибка! Некорректные значения входных параметров!" );
       return ;
     }
//--- количество видимых баров в окне графика
   int bars=( int ) ChartGetInteger ( 0 , CHART_VISIBLE_BARS );
//--- размер массива price
   int accuracy= 1000 ;
//--- массивы для хранения значений дат и цен, которые будут использованы
//--- для установки и изменения координат точек привязки прямоугольника
   datetime date[];
   double    price[];
//--- выделение памяти
   ArrayResize (date,bars);
   ArrayResize (price,accuracy);
//--- заполним массив дат
   ResetLastError ();
   if ( CopyTime ( Symbol (), Period (), 0 ,bars,date)==- 1 )
     {
       Print ( "Не удалось скопировать значения времени! Код ошибки = " , GetLastError ());
       return ;
     }
//--- заполним массив цен
//--- найдем максимальное и минимальное значение графика
   double max_price= ChartGetDouble ( 0 , CHART_PRICE_MAX );
   double min_price= ChartGetDouble ( 0 , CHART_PRICE_MIN );
//--- определим шаг изменения цены и заполним массив
   double step=(max_price-min_price)/accuracy;
   for ( int i= 0 ; i<accuracy; i++)
      price[i]=min_price+i*step;
//--- определим точки для рисования прямоугольника
   int d1=InpDate1*(bars- 1 )/ 100 ;
   int d2=InpDate2*(bars- 1 )/ 100 ;
   int p1=InpPrice1*(accuracy- 1 )/ 100 ;
   int p2=InpPrice2*(accuracy- 1 )/ 100 ;
//--- создадим прямоугольник
   if (!RectangleCreate( 0 ,InpName, 0 ,date[d1],price[p1],date[d2],price[p2],InpColor,
                       InpStyle,InpWidth,InpFill,InpBack,InpSelection,InpHidden,InpZOrder))
     {
       return ;
     }
//--- перерисуем график и подождем 1 секунду
   ChartRedraw ();
   Sleep ( 1000 );
//--- теперь будем перемещать точки привязки прямоугольника
//--- счетчик цикла
   int h_steps=bars/ 2 ;
//--- перемещаем точки привязки
   for ( int i= 0 ; i<h_steps; i++)
     {
       //--- возьмем следующие значения
       if (d1<bars- 1 )
         d1+= 1 ;
       if (d2> 1 )
         d2-= 1 ;
       //--- сдвигаем точки
       if (!RectanglePointChange( 0 ,InpName, 0 ,date[d1],price[p1]))
         return ;
       if (!RectanglePointChange( 0 ,InpName, 1 ,date[d2],price[p2]))
         return ;
       //--- проверим факт принудительного завершения скрипта
       if ( IsStopped ())
         return ;
       //--- перерисуем график
       ChartRedraw ();
       // задержка в 0.05 секунды
       Sleep ( 50 );
     }
//--- задержка в 1 секунду
   Sleep ( 1000 );
//--- счетчик цикла
   int v_steps=accuracy/ 2 ;
//--- перемещаем точки привязки
   for ( int i= 0 ; i<v_steps; i++)
     {
       //--- возьмем следующие значения
       if (p1<accuracy- 1 )
         p1+= 1 ;
       if (p2> 1 )
         p2-= 1 ;
       //--- сдвигаем точки
       if (!RectanglePointChange( 0 ,InpName, 0 ,date[d1],price[p1]))
         return ;
       if (!RectanglePointChange( 0 ,InpName, 1 ,date[d2],price[p2]))
         return ;
       //--- проверим факт принудительного завершения скрипта
       if ( IsStopped ())
         return ;
       //--- перерисуем график
       ChartRedraw ();
     }
//--- задержка в 1 секунду
   Sleep ( 1000 );
//--- удалим прямоугольник с графика
   RectangleDelete( 0 ,InpName);
   ChartRedraw ();
//--- задержка в 1 секунду
   Sleep ( 1000 );
//---
  }
//+------------------------------------------------------------------+
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов / OBJ_RECTANGLE
  • www.mql5.com
OBJ_RECTANGLE - Типы объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
파일:
 
안녕하세요, 저는 mt5의 거래 고문에 대한 아이디어가 있습니다. 아이디어는 새로운 것이 아니며 동일한 그리드 운영자 및 동일한 마틴게일입니다. 그러나 그리드 자체의 장력은 표준이 아닙니다. 예를 들어, 하나의 표준 랏에서 1.13200의 가격으로 매도 거래를 열 때 보류 중인 판매 제한 주문이 1.13400의 가격으로 2개의 표준 랏에 배치됩니다. 4랏과 동일하며 가격은 1.13800입니다. 즉, 로트에 2를 곱할 때마다 그리드 단계도 1 로트 = 100pips의 비율로 곱해지는 것으로 나타납니다.
 
친구, 로봇 / 표시기가있는 창의 이름을 MT4에서 얻는 방법. 예를 들어 (유로달러)


 
noxter195 # :
친구, 로봇 / 표시기가 있는 창의 이름을 MT4에서 얻는 방법. 예를 들어 (유로달러)

이 개념은 무엇을 의미합니까?

 
Vitaly Muzichenko # :

이 개념은 무엇을 의미합니까?

버튼 제목으로 번역하려면 현재 통화 쌍의 이름을 가져와야 합니다. 예를 들어 표시기가 eurusd 차트에 있는 경우 비문 eurusd를 버튼 이름으로 번역해야 합니다. 따라서 다른 쌍에 있으면 다른 통화 쌍의 이름을 방송합니다.

문제는 스트레칭 방법입니다. 기호 변수가 mt에서 충돌합니다.
 
noxter195 # :
버튼 제목으로 번역하려면 현재 통화 쌍의 이름을 가져와야 합니다. 예를 들어 표시기가 eurusd 차트에 있는 경우 비문 eurusd를 버튼 이름으로 번역해야 합니다. 따라서 다른 쌍에 있으면 다른 통화 쌍의 이름을 방송합니다.

문제는 스트레칭 방법입니다. 기호 변수가 mt에서 충돌합니다.

MetaTrader 생성 이후로 충돌이 발생하지 않고 완벽하게 작동합니다.

 
Vitaly Muzichenko # :

MetaTrader 생성 이후로 충돌이 발생하지 않고 완벽하게 작동합니다.

네 감사합니다. 분명히 문제는 터미널에 있었습니다. 다른 터미널에서 시도했는데 작동했습니다.

 
안녕하세요. 마틴을 사용하여 이러한 지표에 대한 어드바이저를 작성할 수 있지만 일반 tp 또는 소스 코드의 첫 번째 tp에 닫힌 위치에 mt4에 대한 범용 어드바이저 유형이 없습니다

<*•ex* 파일이 제거되었습니다.>
사유: