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

 

你能保持简单吗?)

我在哪里可以得到这个?

该指标有一个封闭的代码,我如何知道这个枚举的名称?

那么我需要什么类型的变量呢?

我只知道如何通过iCustom来合并指标,但我无法更进一步)。

如果不是太难,你能不能把它变得更简单))))。

ENUM_BASE_CORNER试过了,还是不显示。
 
Сергей:

你能保持简单吗?)

我在哪里可以得到这个?

该指标有一个封闭的代码,我如何知道这个枚举的名称?

那么我需要什么类型的变量呢?

我只知道如何通过iCustom来合并指标,但我无法更进一步)。

如果不是太难,你能不能把它变得更简单))))。

ENUM_BASE_CORNER试过了,还是不显示

下面是一个例子。

第一个选项是使用标准枚举ENUM_BASE_CORNER。

第二个变体是使用自定义枚举

然后在iCustom中,它应该放在base或my_base变量中,这取决于你选择哪种变量。

附加的文件:
100.mq4  5 kb
 
Сергей:

你好。

你能不能给我一个提示,我现在脑子一片空白。

我通过iCustom开出指标,面临一个问题--指标有一个文本菜单,有一个选择,打开后有几个项目开出,嗯,我想这是很清楚的)

我怎样才能在菜单中添加它?

extern int HIT = 0; 不起作用,停止显示,没有留下任何参数显示。

也许通过ENUM,有什么可选择的,或者也许是别的什么?

提前感谢。

你是否在iCustom(,,,,,,,) 中按正确的顺序输入了所有的参数?

 

大家好。我想在开单时收集数据。 我想在开单时将蜡烛图1、2、3的adh指标值记录在一个文件中。

我做了以下工作。我打开数据目录,进入测试器文件夹,进入文件文件夹,在那里创建了一个名为 "ZNA4_ADX.csv "的文件。然后在库文件中以.NET为扩展名。mqh 文件的扩展名是.下面是注释出来的函数代码。

void writing_adx_screen1_to_file(int i_param) // ФУНКЦИЯ ЗАПИСИ ДАННЫХ В ФАЙЛ
   { //---НАЧАЛО ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУЭКРАНУ-----------------------------------------------------------------------+
   
   //-НАЧАЛО ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   int hendel= FileOpen("ZNA4_ADX.csv",FILE_WRITE,';');
   
   //-КОНЕЦ ПОЛУЧЕНИЯ ХЕНДЕЛА ОТКРЫВАЕМОГО ФАЙЛА------------------------------------------------------------------------------+
   
   
//---НАЧАЛО ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ------------------------------------------------------------------------+

  double adx1= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,1);

//---АДХ_СВЕЧА 2 НАЧАЛО------------------------------------------------------------------------------------------+

double adx2= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,2);
//---АДХ_СВЕЧА 2 КОНЕЦ---------------------------------------------------------------------------------------------+

//---АДХ_СВЕЧА 3 НАЧАЛО------------------------------------------------------------------------------------------+

double adx3= iADX(Symbol(),//СИМВОЛ НА КОТОРОМ УСТАНОВЛЕН СОВЕТНИК
  PeriodForWork_screen1,// ТАЙМ ФРЕЙМ ПЕРВОГО ЭКРАНА
  period_adx_zapici_v_fail, //ПЕРИОД АДХ ДЛЯ ЗАПИСИ В ФАЙЛ 
  Price_adx_dl9_zapici,     // ЦЕНА РАСЧЁТА ЛИНИЙ АДХ ДЛЯ ЗАПИСИ В ФАЙЛ
  MODE_MAIN // ПОЛУЧЕНИЕ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ АДХ 
,3);
//---АДХ_СВЕЧА 3 КОНЕЦ----------------------------------------------------------------------------------------+

//--КОНЕЦ ПОЛУЧЕНИЯ ЗНАЧЕНИЯ ОСНОВНОЙ ЛИНИИ//------------------------------------------------------------------------------+
if(hendel>0)
FileWrite(hendel,"ордер "+(string)i_param+" "+(string)adx1,(string)adx2,(string)adx3); // ЗАПИСЫВАЮ ДАННЫЕ В ФАЙЛ:)

FileClose(hendel);

   
   }//---КОНЕЦ ФУНКЦИИ ЗАПИСИ В ФАЙЛ ЗНАЧЕНИЯ АДХ ПО ПЕРВОМУ ЭКРАНУ----------------------------------------------------------------+

我想把数据写在下面的截图上。

我想记录数据的例子


也就是说,红色的文字是我将手动编写的标题。第2行是我想用这个函数设置的内容。这是测试中的1个订单号。而我们有三个adx 值。然后当第二个订单在测试中打开时,我们需要下一行,其中订单号变成2,adx ,在这个订单打开之前,将写下三个烛台,以此类推,测试中的许多订单将出来......

我在EA代码中调用该函数本身,如下面的代码片段所示。


  //---КОНЕЦ БАЙ ТРЕНДА СИГНАЛ АО------------------------------------------------------------------------------------------+
  if(f_end_trend_buy_ao_market_order() && count_orders_market_buy == 0 && count_orders_market_sell == 0)
  {// НАЧАЛО ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО
      if(OrderSend(Symbol(),OP_SELL,lot,Bid,slippages,Bid+sl , Bid-tp ,Coment, Magik_number)) Print("ОТКРЫВАЕМ ОРДЕР СЕЛЛ ПО СИГНАЛУ ОКОНЧАНИЯ ТРНЕДА- ДИВЕРЕГЕНЦИЯ АО"); // ОТКРКЫВВАЕМ СЕЛ ОРДЕР
      writing_adx_screen1_to_file(i_nomer_ordera);// ВЫЗОВ ФУНКЦИ ЗАПИСИ ДАННЫХ В ФАЙЛ
      if (GetLastError()==141){Alert("ОШИБКА № "+string(GetLastError())+"УДАЛЯЕМ ЭКСПЕРТА С ГРАФИКА"); ExpertRemove();}// ПРОВЕРКА ОТ ДОЛБАНИЯ СЕРВЕРА И БАНА СЧЁТА   


  } // КОНЕЦ ЕСЛИ ЕСТЬ СИГНАЛ ОКОНЧАНИЯ БАЙ ТРЕНДА ДИВЕРЕГЕНЦИЯ АО//-------------------------------------------------------------------------------------------------+
  



测试正在运行,没有任何错误,但我在文件中得到了这样的结果(下面的 屏幕)。

写入文件时我得到了什么


我得到了一条有第一个订单和三个数值的线,但在测试中,有189个未结订单。我在什么地方忘记了增加用于计算订单数量 的变量,我应该如何使第一笔订单之后的数据记录在第2,3-189行?请不要把我送到代码库和其他地方,在那里我很难读懂文字,而其他人的代码也几乎不可能。那么,请明确告诉我应该添加什么,在哪里可以得到我需要的数据?P/S 如果你不介意用加法来强调这一点......。

 
DanilaMactep:

大家好。我想在开单时收集数据。 我想在开单时将蜡烛图1、2、3的adh指标值记录在一个文件中。

我做了以下工作。我打开数据目录,进入测试器文件夹,进入文件文件夹,在那里创建了一个名为 "ZNA4_ADX.csv "的文件。然后在库文件中以.NET为扩展名。mqh 文件的扩展名是.下面是注释出来的函数代码。

我想把数据写在下面的截图上。


也就是说,红色的文字是我将手动编写的标题。第2行是我想用这个函数设置的内容。这是测试中的1个订单号。而我们有三个adx 值。然后当第二个订单在测试中打开时,我们需要下一行,其中订单号变成2,adx ,在这个订单打开之前,将写下三个烛台,以此类推,测试中的许多订单将出来......

我在EA代码中调用该函数本身,如下面的代码片断所示。




测试正在运行,没有任何错误,但我在文件中得到了这样的结果(下面的 屏幕)。


我得到了一条有第一个订单和三个数值的线,但在测试中,有189个未结订单。我在什么地方忘记了增加用于计算订单数量 的变量,我应该如何使第一笔订单之后的数据记录在第2,3-189行?请不要把我送到代码库和其他地方,在那里我很难读懂文字,而其他人的代码也几乎不可能。那么,请明确告诉我应该添加什么,在哪里可以得到我需要的数据?P/S 如果你不介意用加法来强调这一点......。

如果一个文件在打开时只有一个标志FILE_WRITE,文件中的所有内容都会被删除。要在文件中保存现有数据,你需要打开文件进行读写。

然后别忘了把指针移到文件的末尾。

 
Alexey Viktorov:

如果文件被打开时只有一个标志FILE_WRITE,文件中的所有内容都会被删除。要保存文件中的现有数据,你必须打开文件进行读写。

然后别忘了把指针移到文件的末尾。

阿列克谢,非常感谢你指出了 "挖掘 "错误的地方--到目前为止,我已经设法逐行记录--剩下的就是把整个事情梳理成可用的形式进行分析))))。
 

阵列的值在RAM单元中,这些单元彼此相邻。未被占用的单元的最大长度可能取决于。

 
为什么这对函数地址不起作用?
template<typename T>
typedef T (*Fun)(const int, const int, const double &[], const double &[], const double &[], const double &[], const int &[]);
Fun    calculation,
       function;

//------------------------------------------------------------------------------------------------------------------------------

int OnInit()
  {
   calculation  = test;
   function     = Dis_HL_Value;
  //-----------------------------------------------------------------
   return(INIT_SUCCEEDED);
  }
 
你好,你能告诉我这是否是一个二维数组的声明?
      ArrayInitialize(ZigZagBuffer,0.0);
提前感谢!
 
Дмитрий:
你好,你能告诉我这是否是一个二维数组的声明?提前感谢!

不,它是对已经声明的一个的初始化。

原因: