来自一个 "傻瓜 "的问题 - 页 132

 
Yedelkin:

如果你对另一个指标的数据计算感兴趣,你可以通过以下方式进行。首先,我们创建另一个具有自己的数据计算方法的指标,然后我们采取这个指标的手柄(MQL5参考指南/ 技术指标/iCustom ),这个手柄用于新的指标。仔细看一下这个例子。如果你对这个例子有任何疑问

我有疑问,我还是不明白。
好吧,让我们以Custom Moving Average.mq5为基础。

将新的平滑程序MODE_MYMA添加到列表中--没有问题。

问题是如何通过另一个指标的i-cast输入数据? 好吧,让我们以第二种形式的任何指标为例(如果指标是由第一种形式的......我不知道如何取高低点......所以它意味着只有第二种形式?)

好吧,让我们宣布

int newHandl;

在onInit中定义它(抛物线,即什么都可以,主要是第二种类型,对吗? 我明白如何实现我的)。

newHandl=iCustom(_Symbol,0, "ParabolicSAR.mq5",0.02,0.2)。

然后在onCalculate中,我们用它来代替标准价格?

CalculateEMA(rate_total,prev_calculated,begin,newHandl);??

请解释一下,我不明白...。(((((

是的,我仍在使用MCL4模板。在那里,它很简单--循环,数据(任何!)取,平滑,输出。
但在这里....我不知道该抓住什么......

 
GameOver:

(如果指标是由第一种形式产生的......我不明白从哪里获取高低点......所以它意味着只由第二种形式产生?)

是的,关于高低点,它只是一个例子,如何自己处理文章。 对于第一种形式,你可以承担绘制close[i]/2线[或sqrt(close[i]/2)]的任务。一般来说,你也可以用一个数组想出一堆的变化。

游戏结束

好吧,让我们宣布

int newHandl;

在onInit中定义它(举个例子--抛物线。不管怎样,主要的是第二种类型,对吗? 如何实现你自己的,大致上是清楚的)

newHandl=iCustom(_Symbol,0, "ParabolicSAR.mq5",0.02,0.2)。

这很好。我现在要完成它。

如果指标句柄是正确的,这意味着我们可以向这个指标的缓冲区寻址。再看看MQL5参考/ 技术指标 /iCustom中的例子,有一条线。

//--- скопируем значения индикатора Custom Moving Average в наш индикаторный буфер
   int copy=CopyBuffer(MA_handle,0,0,rates_total,Label1Buffer);

现在阅读MQL5参考/ 访问时间序列和指标/ CopyBuffer(......再次强调:在逐行解析例子时,许多事情都变得清晰了)。

尝试接收你选择的任何指标缓冲区的数据。我没有终端,但在抛物线中,你可以看到哪些缓冲区被计算,以及它们的编号。

Документация по MQL5: Технические индикаторы
Документация по MQL5: Технические индикаторы
  • www.mql5.com
Технические индикаторы - Документация по MQL5
 

关于ArrayIsSeries()ArrayGetAsSeries() 函数的描述问题。

在《参考手册》中有这样一句话:"传入函数的数组反映了价格数据,即这些数组具有时间序列符号, ArrayIsSeries()函数 在检查这些数组时将返回true 。但在任何情况下,仍然 应该只用函数 ArrayGetAsSeries() 来检查索引方向 "。

从字面上看,即使ArrayIsSeries() 函数返回true(即确认被检查的数组是一个时间序列数组),仍然应该只由ArrayGetAsSeries() 函数检查索引方向。那么我就不明白为什么要引入ArrayIsSeries() 函数,如果它的结果必须被额外检查的话。这有什么意义?是否有可能该阵列是一个时间序列,但其索引方向不会与时间序列相同(AS_SERIES标志不会被设置)?

 


当从Mql4移植到Mql5时,出现了Lot错误。

'lot' - 常数不能被修改

input double Lot = 0.1; // Lot

if (MartingaleType ==7)
 {
 if (Counter1==1)
 Lot=Lots() ;
}

如何纠正?


 
Dark.Angel:


当从Mql4移植到Mql5时,发生了一个lot错误。

'lot' - 常数不能被修改

你如何解决这个问题?

你不能。这不是一个错误,是一个特点。:)

在mql5中输入变量是不可修改的(const)。

做一个简单的解耦。

input int x=5;
input double StartLot = 0.01;

int X;
double Lot;
...
...
void OnInit()
  {
   ....
    X=x;
    Lot=StartLot;
   .......
  }
.....
void OnStart()
  {
   ....
   Lot=Lots();
  }
 

MQL5手册/ 数组操作/ ArraySetAsSeries部分, 一个例子,当ArraySetAsSeries() 函数适用于每一个刻度 const datetime 数组&time[]时。

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[])
  {
//---  будем хранить время открытия текущего нулевого бара
   static datetime currentBarTimeOpen=0;
//--- перевернем доступ к массиву time[] - сделаем как в таймсерии
   ArraySetAsSeries(time,true);
//--- return value of prev_calculated for next call
   return(rates_total);
  }

大家都是这样做的吗(每次打勾时 翻转数组),把数组作为一个时间序列来处理?

另一个问题:OnCalculate()使用的数组能否任意改变其索引方向?还是只要检查一次这个方向就够了?

 


当从Mql4移植到Mql5时,出现错误 SymbolInfoDouble:
'SymbolInfoDouble' - 没有一个重载可以应用于函数调用

на Mql4:
double a = balance / MarketInfo (Symbol (), MODE_MARGINREQUIRED) - 0.2 ; 

на Mql5:
double a = balance / SymbolInfoDouble(Symbol(), 0) - 0.2 ;

我怎样才能纠正它?
 
Dark.Angel:


当从Mql4移植到Mql5时,出现了SymbolInfoDouble错误。
'SymbolInfoDouble' - 没有一个重载可以应用于函数调用


我怎样才能纠正它?

为什么在底部有一个0?

https://www.mql5.com/ru/docs/constants/environment_state/marketinfoconstants#enum_symbol_info_double

除此以外,还要检查是否被0除以。

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 

策略测试器的结果以图表形式显示。


你能告诉我在哪里可以找到图表上不同颜色的含义吗?

 
pusheax:

策略测试器 的结果以图表形式显示。

你能告诉我在哪里可以找到图表上不同颜色的含义吗?

蓝色的是盈利,红色的是亏损。但左上角的那个只是值得怀疑的...