新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1249

 
Roman:

你能告诉我是否有mql5指标的挂钩?要设置两个显示属性。

并以某种方式绑定不同的输出,每一个都有自己的映射属性。

是的,有。但它只适用于mql5,它不会与市场一起工作。在指标中,你必须搜索具有第二个指标名称的指标,如果它不存在,那么 ChartIndicatorAdd()。

 
Alexey Viktorov:

有的。但只适用于mql5,对Market不起作用。在指标中,你必须搜索一个带有第二个指标名称的指标,如果它不存在,那么 ChartIndicatorAdd()。

你有两个指标。而不是在主图表和子窗口中同时具有双重渲染属性的。

但它将作为同时发射两个指标的变体。但数据需要从两个指标中获得,而不是从一个指标中获得。

 
Artyom Trishkin:

嗯,这是两个指标。不是一个具有同时在主图表和子窗口中绘图的双重属性。

虽然,作为同时发射两个不同指标的变体,它也可以做到。但数据需要从两个指标中获得,而不是从一个指标中获得。

是的,这是正确的,意思是在主图表和子窗口中绘制,从一个代码开始。

Artyom Trishkin:

在主图上使用你自己的图纸,从子窗口。

这就是问题所在。你如何从子窗口画到图形?
如果你有一个例子,就会更清楚。

 

请帮助我解决我遇到的一个问题。 不明白为什么我试过的计算方法对计算保证金没有帮助。 使用的是来自的公式。

h ttps://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants?#enum_symbol_calc_mode

但问题依然存在。

Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Для получения текущей рыночной информации служат функции SymbolInfoInteger(), SymbolInfoDouble() и SymbolInfoString(). В качестве второго параметра этих функций допустимо передавать один из идентификаторов из перечислений ENUM_SYMBOL_INFO_INTEGER, ENUM_SYMBOL_INFO_DOUBLE и ENUM_SYMBOL_INFO_STRING соответственно. Некоторые символы (как правило...
 

告诉我如何将这段代码从MQL4翻译成MQL5。

datetime  bar_day   = TimeDay(Time[Bars - 1]);

?

我尝试了很多变体,这里是其中之一。

int bars=Bars;
//+------------------------------

   datetime  bar_day   = TimeDayMQL4(iTimeMQL4(NULL,0,(bars - 1)));

我尝试了很多变体,以下是在MQL4兼容库中创建的TimeDayMQL4iTimeMQL4 函数的代码。

int TimeDayMQL4(datetime date)
  {
   MqlDateTime tm;
   TimeToStruct(date,tm);
   return(tm.day);
  }

datetime iTimeMQL4(string symbol,int tf,int index)
{
   if(index < 0) return(-1);
   ENUM_TIMEFRAMES timeframe=TFMigrate(tf);
   datetime Arr[];
   if(CopyTime(symbol, timeframe, index, 1, Arr)>0)
        return(Arr[0]);
   else return(-1);
}

但它仍然不工作,我得到了1970...

 
Sayberix :

告诉我如何将这段代码从MQL4翻译成MQL5。

?

这很容易。关注本文: https://www.mql5.com/ru/articles/81

Переход с MQL4 на MQL5
Переход с MQL4 на MQL5
  • www.mql5.com
Данная статья, построенная в форме справочника по функциям MQL4, призвана помочь переходу с MQL4 на MQL5. Для каждой функции языка MQL4 приведено описание и представлен способ ее реализации на MQL5, что позволит вам значительно ускорить перевод своих программ с MQL4 на MQL5. Для удобства функции разбиты на группы, как в документации по MQL4.
 
jaffer wilson:

这很容易。关注文章: https://www.mql5.com/ru/articles/81

更新了我的帖子。试过了,不起作用。我在变量中得到这个值:D'1970.01.01 00:00:24'

我也使用TimeMonthMQL4和TimeYearMQL4
 
jaffer wilson:

请帮助我解决我遇到的一个问题。 不明白为什么我试过的计算方法对计算保证金没有帮助。 使用的是来自的公式。

h ttps://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants?#enum_symbol_calc_mode

但问题仍然存在。

我还没有想明白--不幸的是没有线索。

 
Roman:

是的,这是正确的,重点是在图表上和子窗口中,从同一代码中绘制。

这里有一个小插曲。如何从子窗口绘制到图表?
如果你有一个例子,就会更容易理解。

有两种方法可以在图表上显示它。

  1. 图形对象
  2. 帆布

在任何情况下,我们都要做一个额外的缓冲区,它不会显示在数据窗口 中,但可以从中获得这些数据。 可以用于从主窗口获得数据的值将被写入缓冲区。这样就可以从一个指标中同时接收子窗口和主图表的数据。

或者,更方便的做法是先将每个柱状图的所有计算数据写入这个缓冲区,然后用这些数据在主窗口中建立主图。如何谋划由你决定。我会选择Kanvas。

 
Sayberix:

更新了我的帖子。试过了,不起作用。我在变量中得到这个值:D'1970.01.01 00:00:24'。

我也使用TimeMonthMQL4和TimeYearMQL4

从Jaffer引用的文章来看

void OnStart()
{
   datetime Time[];
   int count = 2;        //сколько копируем 
   ArraySetAsSeries(Time, true);
   CopyTime(_Symbol, PERIOD_D1, 0, count, Time); 
   
   Print(Time[1]); //1-окрытие вчерашнего дня, 0-открытие текущего дня
}
原因: