[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 53

 

当我在我的EA中开出一个印刷品时,我已经注意到了这样的细微差别,即。

double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1)。

打印("+++++++++++++",向上)。

专家顾问显示以下结果 - ++++++++++++++ 2147483647。我可以看到向上和向下的缓冲区的数字是一样的。请告知这是什么类型的代码?那么如何在箭头出现时准确地从Ikastom "获得 "数值呢?

 

我请求有识之士的帮助:请告知正确的代码,以创建一个专家顾问/工具,其算法如下。

- 开启一个方向的双重交易(手数为0.1和0.1)是在当前图表/当前时间框架中最后形成的蜡烛的低点(卖出)/高点(买入)交叉的时刻,在该蜡烛的高点/低点附近停止,在该交叉点开启交易,并在挂单的同一点放置一个方向的双重交易,如0.2和0.1。

 

问题。

有代码

int start()

如果(H==TimeHour(TimeCurrent())&& M==TimeMinute(TimeCurrent())&& S==TimeSeconds(TimeCurrent())

{+一些条件

然后订单被打开

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alert ("Buy order opened " ,Ticket);

return;}

但如果此刻没有打勾,就不会被触发。

但如果我给它更多时间思考,它可能会开出几笔订单。

我应该只有一个订单,而不注意已经开出的订单。

请告知该怎么做

 
v2812:

当我在我的EA中开出一个印刷品时,我已经注意到了这样的细微差别,即。

double Up = iCustom(NULL, 0, "best div original", "*** CCI-OnArray Settings ***", 12, 3, 5, 25, "*** Indicator Settings ***", false, false, false, 0, 1)。

打印("+++++++++++++",向上)。

专家顾问显示以下结果 - ++++++++++++++ 2147483647。我可以看到向上和向下的缓冲区也是同样的数字。请告知这是什么类型的代码?那么如何在箭头出现时准确地从Ikastom "获得 "数值呢?


尝试不通过iCustom()而是通过终端的全局变量来传递指标值。这些是你可以通过F3看到的。问题是,当它是唯一正常的数据传输方式时,这并不是一种罕见的情况。我有过这样的案例。

很可能在你的指标中,有些类型的箭头是通过指标缓冲区绘制的,而有些则是作为对象创建的。这是数据窗口 中可能没有箭头价格的唯一原因--数据从指标缓冲区输出到这个窗口。

 
palesandr:

问题。

有代码

int start()

如果(H==TimeHour(TimeCurrent())&& M==TimeMinute(TimeCurrent())&& S==TimeSeconds(TimeCurrent())

{+一些条件

然后订单被打开

Ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,2,SL,TP);
if (Ticket > 0)
Alert ("Buy order opened " ,Ticket);

return;}

但如果此刻没有打勾,就不会被触发。

但如果我给它更多时间思考,它可能会开出几笔订单。

我应该只有一个订单,而不注意已经开出的订单。

请告知该怎么做


EA代码只在新的tick到达时才会被触发。超过一个订单被打开,因为在下一个tick上,设置信号也是真的,而且没有检查订单的数量。我们需要重新计算订单。
 
drknn:


尝试不通过iCustom()来传递指标值,而是通过全局终端的变量。这些是可以通过F3查看的。问题是,当它是唯一正常的数据传输方式时,这并不是一种罕见的情况。我也有过这样的情况。

有可能在你的指标中,一些箭头类型是通过指标缓冲区绘制的,而另一些是作为对象创建的。这是数据窗口中可能没有箭头设定价格的唯一原因--数据是从指标缓冲区输出到这个窗口的。


非常感谢您!我现在将按你说的尝试一下处方。
 
palesandr:
但如果这时没有打勾,就不会被触发。

如果你给它更多时间思考,它可能会开出几个订单。

但我只需要一个,而且我不希望它注意到已经打开的订单。

你能告诉我该怎么做吗?


1.全球数据时间last_dt。


2.做出正确的时间

datetime dt=StrToTime(H+": "+M+": "+S)。


3.

if (TimeCurrent()>=dt && last_dt<dt) // 正确的时间已经到来,是第二天。

{

// 打开订单

如果(ticket>0)last_dt=TimeCurrent(); //记住开启的时间

}

 
v2812:

那么EA给出的结果如下 - ++++++++++++++ 2147483647。而向上和向下的缓冲区都是相同的数字。

2147483647是EMPTY_VALUE 常数。
 

我明白这一点。

我需要对订单的重新计算做得更具体。也许一个例子(以代码形式)或一个链接。

我曾这样试过

if (Ticket > 0)
Alert ("Opened Buy order " ,Ticket);

sleep(10000)
return;}

由于某些原因失败了

drknn:

EA代码只在有新的tick出现时才会被触发。该订单打开了多个,因为在下一个嘀嗒声中,设置的信号也是真的,而且没有检查订单的数量。我们需要重新计算订单。
 

我希望软件能忽略日期,只有时间是重要的。

在这种情况下,你的建议有帮助吗?

sergeev:


1.全球数据时间last_dt。


2.使之成为正确的时间

datetime dt=StrToTime(H+": "+M+": "+S)。


3.

if (TimeCurrent()>=dt && last_dt<dt) // 它是正确的时间,而且是第二天。

{

//开放订单

如果(ticket>0)last_dt=TimeCurrent(); //记住开幕时间

}