我将免费撰写一份顾问报告 - 页 164 1...157158159160161162163164165166167168169170171 新评论 SanAlex 2022.02.19 22:55 #1631 GhostMan #:我可以免费写一个指标吗? 这样做可以吗? //+------------------------------------------------------------------+ //| 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); } //+------------------------------------------------------------------+ 附加的文件: iMACD_Four_TimeFrames.mq5 23 kb GhostMan 2022.02.20 07:10 #1632 谁能为MT4写一个指标... 任务。 绘制一个 给定时间的矩形。上下限由给定时间间隔的最大和最小值设定(在诱导中设定)。 例子。 在这种情况下,2022.02.01 2:00 - 2022.02.01 14:00的时间间隔为72小时(从最近的最小或最大点到时间间隔的开始)。 SanAlex 2022.02.20 08:48 #1633 GhostMan # :谁能为 MT4 写火鸡..任务。为给定的(在土耳其设置)小时数绘制一个矩形。上限和下限由指定时间间隔的最大值和最小值确定(在土耳其设置) 。例子。在这种情况下,时间间隔 2022.02.01 2:00 - 2022.02.01 14:00 绘制了 72 小时(从最近的最小或最大点到间隔开始)这是一个示例脚本 - 取自这里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 www.mql5.com OBJ_RECTANGLE - Типы объектов - Константы объектов - Константы, перечисления и структуры - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5 附加的文件: OBJ_RECTANGLE.mq4 24 kb belaz13 2022.02.21 17:29 #1634 你好,我有一个关于MT5的EA的想法。这个想法并不新鲜,所有的网格都是一样的,而且是同样的马丁格尔。但网格本身的张力并不十分标准,例如:当在1.13200点以一个标准手开出卖出交易时,在1.13400点以两个标准手挂出卖出限价单,下一个订单在1.13800点相当于四个手。这意味着每个手数乘以2将使网格大小在1手=100点的基础上倍增。 noxter195 2022.02.27 11:45 #1635 朋友们,如何在mt4中获得机器人/指示器所在的窗口的名称。例如(Eurusd)。 Vitaly Muzichenko 2022.02.27 11:54 #1636 noxter195 #: 朋友们,如何在mt4中获得机器人/指示器所在的窗口的名称。例如(Eurusd)。 这个词的意思是什么? noxter195 2022.02.27 12:50 #1637 Vitaly Muzichenko #:这个词的意思是什么? 我需要获得当前货币对的名称,将其翻译成按钮的名称。例如,该指标是在eurusd图表上,我需要翻译按钮名称中的eurusd铭文。相应地,如果是在另一个货币对上--翻译另一个货币对的名称问题是如何把它拉起来。符号变量崩溃mt Vitaly Muzichenko 2022.02.27 12:55 #1638 noxter195 #: 我需要获得当前货币对的名称,将其翻译成按钮的名称。例如,该指标是在eurusd图表上,我需要翻译按钮名称中的eurusd铭文。相应地,如果是在另一个货币对上--翻译另一个货币对的名称 询问如何拉起。 符号变量崩溃mt 没有什么崩溃,自从MetaTrader创建以来,它一直工作良好。 noxter195 2022.02.27 13:05 #1639 Vitaly Muzichenko #:没有什么崩溃,自MetaTrader创建以来,它一直在完美地工作。 是的,谢谢。显然,问题出在终端上。在一个不同的终端上试了一下,成功了。 vilka2345 2022.02.27 13:08 #1640 你好,你能为这些指标写一个 马丁的EA,但在总TP或第一个TP上平仓吗?<*-ex*文件被删除 1...157158159160161162163164165166167168169170171 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我可以免费写一个指标吗?
这样做可以吗?
谁能为MT4写一个指标...
任务。
绘制一个 给定时间的矩形。上下限由给定时间间隔的最大和最小值设定(在诱导中设定)。
例子。
在这种情况下,2022.02.01 2:00 - 2022.02.01 14:00的时间间隔为72小时(从最近的最小或最大点到时间间隔的开始)。
谁能为 MT4 写火鸡..
任务。
为给定的(在土耳其设置)小时数绘制一个矩形。上限和下限由指定时间间隔的最大值和最小值确定(在土耳其设置) 。
例子。
在这种情况下,时间间隔 2022.02.01 2:00 - 2022.02.01 14:00 绘制了 72 小时(从最近的最小或最大点到间隔开始)
这是一个示例脚本 - 取自这里https://www.mql5.com/ru/docs/constants/objectconstants/enum_object/obj_rectangle
朋友们,如何在mt4中获得机器人/指示器所在的窗口的名称。例如(Eurusd)。
这个词的意思是什么?
这个词的意思是什么?
我需要获得当前货币对的名称,将其翻译成按钮的名称。例如,该指标是在eurusd图表上,我需要翻译按钮名称中的eurusd铭文。相应地,如果是在另一个货币对上--翻译另一个货币对的名称
没有什么崩溃,自从MetaTrader创建以来,它一直工作良好。
没有什么崩溃,自MetaTrader创建以来,它一直在完美地工作。
是的,谢谢。显然,问题出在终端上。在一个不同的终端上试了一下,成功了。