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

 
MakarFX:

不过,它还是会在每一次打勾 时进行检查

和最低限度的计算得到关闭......滚回两格。

我的最低计算是像你的照片中那样被击中。但后来我添加了LoY1变量,就不再出现这种错误了。结果,所有订单的开仓方式(按时间、金额和价格)与我最初的代码相同,也就是我需要的方式。我的代码在另一个地方失败了 ....但我把它固定 在同一个地方。


double LoU,LoY1,Pr;
int x;
void OnTick()
{
if (Low[1]>Low[2]&&Time[2]>x&&Low[2]<LoY1)
{
LoU=Low[2];
LoY1=Low[2];
}
//**************************************************************
if (Bid-LoU>=0.0030&&Pr!=LoU)
{
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,0,0,"300",0);
Pr=LoU;
LoU=Bid;
LoY1=Bid;
x=TimeCurrent();
}
}

你也可以从LoU的30点开始下挂单,而不是在市场上开盘。 这样你就不需要在每个tick上检查Bid。但在挂单的情况下,每当LoU 发生变化时,我们应该删除旧的挂单并设置一个新的挂单,或者改变当前挂单的参数而不删除它而所有这些都应该比检查每一个Bid tick的频率低得多

在我的案例中,哪种变体在代码实现方面的耗时最少?

1.在每次打勾时检查投标 是否LoU30个点的距离

2.每次改变LoU,要删除旧的待定,并设置一个新的

3.随着LoU 的每次改变,改变活动LoU的参数

谢谢你的帮助

 
ANDREY:

我对最小值的计算就像你的照片中那样,出现了偏差。但后来我添加了LoY1的变量,它就停止了。

有标准函数iLowest和iHighest

 
ANDREY:

我对最小值的计算就像你的照片中那样,出现了偏差。但后来我添加了一个变量LoY1,它停止了这种游离。结果是,所有订单的开仓方式(按时间、金额和价格)与我原来的代码相同(也就是我想要的方式)。我的代码在另一个地方失败了 ....但我把它固定 在同一个地方。


你也可以从LoU的30点开始下挂单,而不是在市场上开盘。 这样你就不需要在每个tick上检查Bid。但在挂单的情况下,每当LoU 发生变化时,我们应该删除旧的挂单并设置一个新的挂单,或者改变当前挂单的参数而不删除它而所有这些都应该比检查每一个Bid tick的频率低得多

在我的案例中,哪种变体在代码实现方面的耗时最少?

1.在每次打勾时检查投标 是否LoU30个点的距离

2.每次改变LoU,要删除旧的待定,并设置一个新的

3.随着LoU 的每一次改变,改变活动位置的参数

1)x不是int,是datetime(将来会很方便)。

2)你的初始代码没有挂单

3) 现在你的代码在每个tick上做更多的操作

检查您的信息

 
Taras Slobodyanik:

有标准的iLowest和iHighest 函数。

不合适......时间序列项目的数量不固定
 
MakarFX:
不是的......时间序列元素的数量不是恒定的

呃......它是否妨碍你找到高/低点?

 
Taras Slobodyanik:

呃......这是否妨碍你找到高/低点?

iLowestiHighest 函数意味着在一定数量的条形图(时间序列元素的数量中搜索

在这种情况下,这个数字是未知的,而且每次都在变化

 
MakarFX:

1)x不是int,是datetime(将来会很方便)。

2)你的初始代码没有挂单

3) 现在你的代码在每个tick上做更多的操作

检查你的信息。

这是我的旧代码

这是我的新代码,与旧代码的时间段相同

对我来说,每个刻度的操作数远不如在这个数字上花费的时间重要。如果我没有记错的话,新的代码需要的时间少了25%....。

谢谢你的帮助。

 
Aleksei Stepanenko:
这里有一个微妙的问题。首先我们设定尺寸,然后通过重置为零来释放固定,这并不改变尺寸。 没有其他的办法。
非常感谢您!
 
MakarFX:

不过,它还是会在每一次打勾 时进行检查

和低点的计算得到偏离......滚回两格。

以下是我的原始代码,没有添加你的内容

下面是您的最新改进



也许if(TimeSeconds(TimeCurrent())==0)应该只适用于那些没有订单的部分,以及寻找下一个最小值的部分?

如果我没有弄错的话,由于你的功能,我的代码只在每分钟的蜡烛开始时才开始执行,这就是为什么它不能正确开仓。


谢谢你的帮助。

 
ANDREY:

以下是我的原始代码,没有添加你的内容

以下是有你最新改进的代码



也许,if(TimeSeconds(TimeCurrent())==0)应该只适用于那些没有开仓的部分,并在其中寻找下一个低点?

如果我没有弄错的话,你的函数只在每分钟的蜡烛开始时开始执行我的代码。


谢谢你的帮助。

原因: