初学者的问题 MQL5 MT5 MetaTrader 5 - 页 755

 

下午好!

需要一些帮助/建议。在终端,有一个选项可以混合几个指标。在这种情况下,就有可能固定范围。

例如,CCI最小=300最大=300,RSI最小=0最大=100。

是否可以在专家顾问中实现2个指标的交叉。假设CCI从下到上越过RSI => 开启一个Bay订单。

这有可能吗?

还是不可能,因为这些指标的取值范围 不同。在rsi中,数值范围被限制在0到100之间,而在cci中,数值既可以是正值,也可以是负值,并且不受最大/最小值的限制。

 
lomaxx7:

下午好!

需要一些帮助/建议。在终端,有一个选项可以混合几个指标。在这种情况下,就有可能固定范围。

例如,CCI最小=300最大=300,RSI最小=0最大=100。

是否可以在专家顾问中实现2个指标的交叉。假设CCI从下到上越过RSI => 开启一个Bay订单。

这有可能吗?

还是不可能,因为这些指标的取值范围 不同。在rsi中,数值范围被限制在0到100之间,而在cci中,数值既可以是正值,也可以是负值,并且不受最大/最小值的限制。

如果你为此目的编写自己的iRSI,你可以从iRSI值中减去50,得到零水平的指标。还有一个问题:以这种方式混合指标有什么用?

 
Alexey Viktorov:

如果你为了这个目的自己写iRSI,你可以从iRSI值中减去50,得到一个零水平指标。还有一个问题:以这种方式混合指标有什么用?

谢谢你。有一些想法是需要解决的。
 

lomaxx7:

是否有可能在EA中实现跨越2个指标的功能。假设CCI从下到上穿过RSI => 开启Bay订单...

这有可能吗?

还是不可能,因为这些指标的取值范围 不同。对于rsi来说,数值的范围被限制在0到100之间,而对于ci来说,数值既可以是正的,也可以是负的,而且不限于最大/最小值。

并不复杂。你可以 通过 RSI 计算CCI ,反之亦然看一下文件。对每个指标都有解释,可以使用哪些价格。

https://www.mql5.com/ru/docs/indicators/irsi

应用价格

[in]价格使用 。它可以是任何一个价格常量ENUM_APPLIED_PRICE,也可以是其他指标的句柄

例如,我们 RSI替代 CCI 手柄

int OnInit()
h_cci=iCCI(_Symbol, _Period, cci_ma_period, cci_applied_price);
h_rsi=iRSI(_Symbol, _Period, rsi _ma_period, h_cci);
Далее
void OnTick() 
if(CopyBuffer(h_cci,0,0,to_copy, cci_buf)<=0) return(0);
if(CopyBuffer(h_rsi,0,0,to_copy, rsi _buf)<=0) return(0);
Далее сравниваете значения:
if(cci_buf>rsi_buf) {...ваши действия; ...buy; ...sell;} 
else
if(cci_buf<rsi_buf) {...ваши действия; ...buy; ...sell;}

这种情况下的数值范围并不重要,因为下一个振荡器已经使用了上一个振荡器的数值。

Документация по MQL5: Технические индикаторы / iRSI
Документация по MQL5: Технические индикаторы / iRSI
  • www.mql5.com
Технические индикаторы / iRSI - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
 //+------------------------------------------------------------------+
class A
  {
public: int       propA;
public:
                     A(void) {propA = 15;};
                    ~A(void) {};
  };
//+------------------------------------------------------------------+
class B: public A
  {
public:
                     B(void){};
                    ~B(void){};
  };
//+------------------------------------------------------------------+
void OnStart()
  {
   B newObj;
   GetA(newObj);
//---
   //B newObjArray[3];
   //GetA_Array(newObjArray);
  }
//+------------------------------------------------------------------+
void GetA(A &obj)
  {
   Print(obj.propA);
  }
//+------------------------------------------------------------------+
void GetA_Array(A &obj[])
  {
   for(int i=0;i<ArraySize(obj);i++)
      Print(obj[i].propA);
  }
//+------------------------------------------------------------------+

如果我们取消对OnStart()中的其余几行的注释,我们会得到 "newObjArray - 参数转换不允许"。

两个问题:为什么,以及如何解决这个问题?
 

你能告诉我如何从终端获得位置报告吗?

问题是,在终端我看到的是一个正常的位置,但在Excel报告中,它被分割成几个部分,这对我来说并不方便。

 

你好 2017.06.30_18:11 GMT+3.论坛的行家们。我在MT5的策略 测试器中测试了我的EA。它打开和关闭交易,但似乎只在第一个条件下打开和关闭交易。所以我决定在一个模拟账户上测试该EA。然而,该EA立即从模拟账户的图表中消失了。原来它在演示账户上有一个错误:2017.06.30 18:08:17.878 Late_raw3 (GOLD,M1) array out of range in 'Cross.mqh' (18,12)。
奇怪的是,在策略测试器中没有发现这种错误。我试图寻找这个错误,但未能理解。这个问题就像它一样愚蠢。这让我非常困惑。在这种情况下,MetaQuotes的程序员会不会搞砸了?标准的Moving Average.mq5专家顾问有相同的代码(我从那里重写了它)。它在模拟账户上没有错误。但它没有被交易。我在М1上进行了交易。不过,我没有等很久。问题是什么?我将等待你的答案。期待着它。附上的是文件,虽然不是彻底的全部。18:26 GMT+3。我试着用不同的方法来改变代码,但结果有两个:要么它超出了数组,要么写出错误 "没有指标数据"。而在策略测试者的日志中,你可以看到 "超标 "是如何获得的。以第一笔交易的开盘价为准。它与第二个交易的开盘价不同。这种 "偏差"(它大于我的130分)被称为 "超调"。你也应该对MetaQuotes的程序员说 "谢谢"?你不会感到厌烦。你所做的一切都很缓慢。我打算早点完成专家顾问的工作。18:45 GMT+3。如果你需要任何澄清,请毫不犹豫地与我联系。这就是全部。18:51 GMT+3。

附加的文件:
 
Николай Никитюк:

你好 2017.06.30_18:11 GMT+3.论坛的行家们。我在MT5的策略 测试器中测试了我的EA。它打开和关闭交易,但似乎只在第一个条件下打开和关闭交易。所以我决定在一个模拟账户上测试该EA。然而,该EA立即从模拟账户的图表中消失了。原来它在演示账户上有一个错误:2017.06.30 18:08:17.878 Late_raw3 (GOLD,M1) array out of range in 'Cross.mqh' (18,12)。
奇怪的是,在策略测试器中没有发现这种错误。我试图寻找这个错误,但未能理解。这个问题就像它一样愚蠢。这让我非常困惑。在这种情况下,MetaQuotes的程序员会不会搞砸了?标准的Moving Average.mq5专家顾问有相同的代码(我从那里重写了它)。它在模拟账户上没有错误。但它没有被交易。我在М1上进行了交易。不过,我没有等很久。问题是什么?我将等待你的答案。期待着它。附上的是文件,虽然不是彻底的全部。18:26 GMT+3。我试着用不同的方法来改变代码,但结果有两个:要么它超出了数组,要么写出错误 "没有指标数据"。而在策略测试者的日志中,你可以看到 "超标 "是如何获得的。以第一笔交易的开盘价为准。它与第二个交易的开盘价不同。这种 "偏差"(它大于我的130分)被称为 "超调"。你也应该对MetaQuotes的程序员说 "谢谢"?你不会感到厌烦。你所做的一切都很缓慢。我打算早点完成专家顾问的工作。18:45 GMT+3。如果你需要任何澄清,请毫不犹豫地与我联系。这就是全部。18:51 GMT+3。


到目前为止,似乎 "rate"(文件 "Cross.mqh",第18行,光标位置12)是在全局层面的某个地方声明的--所以所有问题都归结为。"这个 "费率 "究竟是如何填写的?"。

 

我想计算两条曲线的交角。任务甚至不是寻找角度本身,而是检查它是锐角还是钝角。我甚至画了这个。我可以找到B的正切和C的正切。我如何知道这些切线,以确定角A是否是锐角。帮助我,我对三角学不是很在行。当然,如果没有找到角度本身--由于比例尺的不同,他们的数值是不充分的。


 
igorbel:

我想计算两条曲线的交角。任务甚至不是寻找角度本身,而是检查它是锐角还是钝角。我甚至画了这个。我可以找到B的正切和C的正切。我如何知道这些切线来确定角A是否为锐角。帮助我,我对三角学不是很在行。当然,如果没有找到角度本身--由于比例尺的不同,他们的数值是不充分的。


要找切线,你有一个直角三角形吗?