[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 310

 

这样的问题。我现在该如何优化?现在,专家顾问的骨架如下。

init(){
        //если файл истории не существовал, формируем заголовок
}

start(){
        //ловим тики
        //смотрим, сколько прошло секунд с последнего вызова start():
                //если 1 или больше, то---(блок свеч)---
                        //запоминаем, сколько прошло секунд
                        //---(блок выбора режима)---
                        //формируем RateInfo - столько раз, сколько прошло секунд
                //если 0, то---(блок теней)---
                        //редактируем RateInfo - столько раз, сколько прошло секунд в прошлый раз
}

//---(блок выбора режима)---
//флаги в экстерне - все бычьи, все медвежьи или любые
//если все бычьи, то в close всегда ask
//если все медвежьи, то в close всегда bid
//Если любые, то
        //если текущий бид меньше предыдущего, то медвежья
        //в любом другом случае бычья

我把开盘-收盘放在变量中,并删除了第二个区块FileSeek,它已变得没有必要,增加了蜡烛图风格的选择(全部看涨,全部看跌,任何),如果下一个升水或买入价高于或低于前一个高点和低点,则增加了阴影,用打印来追踪,这是由头中的一个标志激活的,用行号的链接来评论一切,试图使代码在论坛中可以阅读。我还添加了打印的行号。

现在看看。

在顶部是一个滴答的时间框架,在底部 - 秒。阴影(尾巴)是指在一秒钟内抓到两个ticks,并且出价或要价与前一个不同。滴答声像时钟一样工作。第二个刻度线滞后,这意味着它花在处理刻度线上的时间比刻度线之间的最小时间间隔还要长。这就是为什么我在问如何优化代码。我把代码附在后面,并重复说我已经把所有东西都补全了。如果你想检查它是如何工作的--你把它设置为分钟上的EA,然后在自主搜索和打开'sec'+仪器名称。

附加的文件:
hhi.jt.mq4  29 kb
 
david2:
如何在你的EA中实现这个功能?当任何海湾订单的TP或SL被触发时,所有海湾订单都应该被关闭。

如果你有编程经验,给你一个提示。

1.在打开一个买入订单后,计算买入订单的数量

2.将它们的数量保存在一个全局变量

在下一个tick上,检查买入订单的数量是否少于前一个,然后关闭所有的买入订单。

在Kodobase中,有一些功能可以通过未结头寸的类型和选定类型(买入或卖出)的头寸的关闭来计算订单的数量。

在功能上有很多有用的功能,从金

 

关于变量类型的转换。
将系数双K的值写在行说明中,作为文本(K=0.573)。
在代码执行过程中,系数K的值已经改变了好几次。
现在我想在提取行描述字符串ObjectDescription(string name)之后,将变量double Z乘以数值K=0.573。
在MQL中,是否可以将一个字符串类型 的变量转换为一个双数类型的变量,以再次得到0.573。如果可能的话,请给我链接。
注意到。舒尔金。

 
Shurkin:

是否可以将MQL中的字符串类型的变量转换为双倍类型的变量,再次得到0.573。如果可能的话,请给我一个链接。
.

https://docs.mql4.com/ru/convert/StrToDouble
 
08:05:30 Sec.TF AUDUSD,M1: 15
08:05:31 Tick.tf AUDUSD,M1: 0
08:05:33 Tick.tf AUDUSD,M1: 0
08:05:33 Tick.tf AUDUSD,M1: 0
08:05:35 Tick.tf AUDUSD,M1: 0
08:05:38 Tick.tf AUDUSD,M1: 0
08:05:39 Tick.tf AUDUSD,M1: 0
08:05:39 Tick.tf AUDUSD,M1: 0
08:05:40 Tick.tf AUDUSD,M1: 0
08:05:41 Tick.tf AUDUSD,M1: 0
08:05:42 Tick.tf AUDUSD,M1: 0
08:05:42 Tick.tf AUDUSD,M1: 0
08:05:43 Tick.tf AUDUSD,M1: 0
08:05:51 GMT AUDUSD,M1: 15062
08:05:54 Tick.tf AUDUSD,M1: 0
08:05:54 Tick.tf AUDUSD,M1: 0
08:05:55 Tick.tf AUDUSD,M1: 0
08:05:56 Tick.tf AUDUSD,M1: 0
08:05:56 Tick.tf AUDUSD,M1: 0
08:05:57 Tick.tf AUDUSD,M1: 0
08:05:58 Tick.tf AUDUSD,M1: 0
08:05:58 Tick.tf AUDUSD,M1: 16
08:05:59 Tick.tf AUDUSD,M1: 0
08:06:00 Tick.tf AUDUSD,M1: 0
08:06:06 Tick.tf AUDUSD,M1: 0
08:06:06 Tick.tf AUDUSD,M1: 0
08:06:09 GMT audusd,m1: 10156
08:06:16 Tick.tf AUDUSD,M1: 0
08:06:16 Tick.tf AUDUSD,M1: 0
08:06:17 Tick.tf AUDUSD,M1: 0
08:06:18 Tick.tf AUDUSD,M1: 0
08:06:26 GMT audusd,m1: 5078
08:06:27 Tick.tf AUDUSD,M1: 0
08:06:28 Tick.tf AUDUSD,M1: 0
08:06:30 Tick.tf AUDUSD,M1: 31

08:06:32 GMT AUDUSD,M1: 15

部分日志在两个代码中都有毫秒 级的计时器(刻度线和第二时间段)。到目前为止,我所能想到的是完全删除周期,即无论从上一次滴答到现在过了多少秒,每秒都有一个或多个滴答,它总是一个蜡烛。如果有一秒钟,以此类推,每秒钟都有一个ticks--一个有阴影的烛台。但接下来会有第二个有 "洞 "的TF,通过High[15],我们假设我不会取15秒前asc的值......

 
hoz:

我想知道如何写一个函数。这个想法是,当N个蜡烛 向某个方向滚动时,它应该计算出蜡烛的数量。BUT。对此,有几个条件,或者更准确地说,随着时间的推移,会有一个清单。

比方说,趋势是向下的,......回调就会上涨。我想,如果有5个烛台上升,而且每个烛台都是看涨的,并且,例如,每个烛台的大小都大于i_sizeOfCurrBar,以及其他一些条件,那么就输出连续看涨的烛台数量,并从函数中返回一些结果。

什么是最好的写作方法?目前我已经开始写了,我明白我应该通过一个循环按条数运行,并以某种方式限制历史深度的视图,不是按固定的条数,而是按条数,用那些参数,我们对条件感兴趣。

这是我所拥有的,得到了。

目前,我们只是从倒数第二条杠到指数为6的杠,即连续5条杠。但我希望我的专家顾问只搜索看涨的条形图,而不是连续搜索所有的条形图。如何充分地实施它?

我已经按照尺寸进行了正确的过滤。

好吧,当一切都已经写好时,底部的计数器将已经计算出带有nht,etvsvb参数的连续条数,如果有足够的这样的条数,那么函数的一些值将被返回。

一如既往的原创:"从下往上 "数条...

for (int i=Bars-1; i>=Bars-6; i--)
 
Zhunko:

有很多不同的方法。

1.通过一个全局变量

2.通过文件

3.通过iCustom()

4.通过全局图形变量

5.绘图。你可以将数据从一个终端传输到另一个终端。或者在一个终端中,将数据从一个窗口传输到另一个窗口,而不受MT4全局变量的限制。


其中哪项工作最快?
 
gyfto:

其中哪项工作最快?
5.绘图。
 
hoz:
在印刷品中,它的数值为1和2...这里到底发生了什么事?
Print("i = ", i, "; up = ", cnt, "; cnt = ", cnt);

只是不注意。一般来说,这里的bool是4字节的,这并不意味着它只能取0和1的值。C++ boolearn是1字节的。我个人在switch()中使用二进制运算中的bool,如果我需要进行多次选择,相信它总是0或1))像这样。

bool f1, f2, f3, f4//флаги

switch(8*f4+4*f3+2*f2+f1){
   case 0:
   ...
   case 15:
}//без default
 
gyfto:

这样的问题。我现在该如何优化?现在,专家顾问的骨架如下。

我把开盘-收盘放在变量中,并删除了第二个区块FileSeek,它已变得没有必要,增加了蜡烛图风格的选择(全部看涨,全部看跌,任何),如果下一个升水或买入价高于或低于前一个高点和低点,则增加了阴影,用打印来追踪,这是由头中的一个标志激活的,用行号的链接来评论一切,试图使代码在论坛中可读。我还添加了打印的行号。

现在看看。

在顶部是一个滴答的时间框架,在底部 - 秒。阴影(尾巴)是指在一秒钟内抓到两个ticks,并且出价或要价与前一个不同。滴答声像时钟一样工作。第二个刻度线滞后,这意味着它花在处理刻度线上的时间比刻度线之间的最小时间间隔还要长。这就是为什么我在问如何优化代码。我把代码附在后面,并重复说我已经把所有东西都补全了。如果你想检查它是如何工作的--你把它设置为分钟上的EA,然后在自主搜索和打开'sec'+仪器名称。

我还没有研究过这个逻辑,但直觉告诉我有一些额外的计算。一年半以前,我在解决同样的问题,在天文分钟的开始,用报价收集和形成M1蜡烛图,并进行明确的切割。
如果你会感兴趣,你可以看看你的代码(文件)的一些纯优化的时刻。真的,如果我们认真谈论优化,你需要衡量代码的运行时间。;)
附加的文件:
hhi.jt_c_.mq4  23 kb