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

 
-Aleks-:
两年了--在测试器中 :)嗯,它已经在演示中运行了一年了...那里有很多bug,当我因为外部课程而不得不连接它时...而现在有这样一个错误,我不知道如何解决--我暂时将数组的大小增加一位。为什么没有像图形缓冲区那样的自动尺寸,或者有吗?

像这样试试吧。

初始化数组 OrderBU[1]。

首先增加数组的大小( ArrayResize(OrderBU,NorderBU+1)),然后OrderBU[NorderBU]=OrderTicket();NorderBU++。

 
new-rena:

像这样试试吧。

初始化数组 OrderBU[1]。

首先增加数组的大小( ArrayResize(OrderBU,NorderBU+1)),然后OrderBU[NorderBU]=OrderTicket();NorderBU++。

谢谢 - 我将在闲暇时进行实验。
 
请告知如何在代码中实现以下事情。
有一个基础变量A,如果它小于零,那么我们再使用五个变量--数值由指标调用函数--iCustom分配。
收到数值后,我们应该对它们进行排序--找到高于和低于A变量的数值,并从这两组中定义--最大、最小、平均值。
我认为有必要使用一个数组,但我不太明白如何使用。
 

能否请您就这一点向我们提供建议?

例如,我们在图表上有一个威廉斯百分比范围(%R)指标,我们从导航器中拖动平衡量(OBV)指标到其窗口。

https://charts.mql5.com/8/675/xauusd-h4-metaquotes-software-corp.png

R%在0-100%的范围内工作,OBV没有一个特定的约束力。

当OBV在%R窗口时,我们直观地看到它超过了-20或-80%。

我们怎样才能在我们的EA中使OBV高于-20%或低于-80%?

如何将自定义指标中的OBV绑定到0-100%的范围?把它归纳为(范围)?如何才能做到这一点呢?

我理解你不需要将OBV归一化为%R(图片会有所不同)。

也许这是初级的,我只是没有遇到过。

 
-Aleks-:
请告知如何在代码中实现以下事情。
有一个基础变量A,如果它小于零,那么我们再使用五个变量--数值由指标调用函数--iCustom分配。
收到数值后,我们应该对它们进行排序--找到高于和低于A变量的数值,并从这两组中定义--最大、最小、平均值。
我认为我们应该使用数组,但我不太明白如何使用。

如果 (p1>p2&&p1>p3) , 如果 (p2>p1&&p2>p3) , 如果 (p3>p2&&p3>p1)

我是这样做的。

 

我需要一个浮动的手数参数,第一个手数由用户设定,然后这个参数不再是可寻的,EA自己工作,在亏损的情况下,它被提高到程序中指定的最大手数(或一个外部变量),在盈利的情况下,它被减少到指定的金额。

如果我在 "Init "中写入参数,EA将停止访问外部变量的批次?

或者我怎么做呢?

这是一个近似的表达。

 
你好。你能告诉我如何在我的EA中使用新闻数据吗?我是否需要一个指标,或者EA可以自己找到重要的新闻?
 
Leanid Aladzyeu:

如果 (p1>p2&&p1>p3) , 如果 (p2>p1&&p2>p3) , 如果 (p3>p2&&p3>p1)

我是这样做的。

这并不方便,特别是有大量的参数...

通过阵列的解决方案很有趣。特别有趣的是,在对总数值进行平均时,如何找到一个变量的最接近的数值。

 
first_may:

晚上好。试图编写一个 关于天干线和金线交叉的简单EA。以下是代码。

空白的OnTick()

空白的OnTick()

{

TradeSignal_20()。

}


int TradeSignal_20()

{

int sig=0。


如果(h_ich==INVALID_HANDLE)

{

h_ich=iIchimoku(Symbol(),Period(),IKHtenkansen,IKHkijunsen,IKHsenkouspanb) 。

return(0);

}

否则

{

如果(CopyBuffer(h_ich,0,0,3,ich1_buffer)<2) 返回(0); // TENKANSEN_LINE

如果(CopyBuffer(h_ich,1,0,3,ich2_buffer)<2) 返回(0); // KIJUNSEN_LINE

if (!ArraySetAsSeries(ich1_buffer,true)) return(0);

if (!ArraySetAsSeries(ich2_buffer,true)) return(0);

}

if(ich1_buffer[1]>ich2_buffer[1]) sig=1;

else if(ich1_buffer[1]<ich2_buffer[1]) sig=-1;

否则sig=0。

if (ich1_buffer[1]>ich2_buffer[1])

if (ich1_buffer[2]<ich2_buffer[2])

Alert(Symbol()+": purchase")。

if (ich1_buffer[1]<ich2_buffer[1])

if (ich1_buffer[2]>ich2_buffer[2])

Alert(Symbol()+": sale")。

//---- 返回交易信号

返回(sig)。

}

//+------------------------------------------------------------------+

我怎样才能使警报只被调用一次,而不是不断调用?

不是每次都运行它,而是根据需要。
 
Vasiliy Smirnov:
不是每次都运行,而是根据需要。
那么应该如何呢?当一个新的酒吧 打开时 - 然后为一个新的酒吧做检查...