新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 215 1...208209210211212213214215216217218219220221222...1953 新评论 Konstantin Erin 2017.05.25 15:20 #2141 AlGuru: 请告知。如何在专家顾问中指定在下一个蜡烛上关闭?datetime Time[] - 阵列时间,包含当前图表中每个条形 的 开盘时间 。Time[0] - 上一个条形图的开放 时间。如果OrderOpenTime()小于 Time[0] - 这意味着订单是在最后一个柱子上打开的,根据你的策略,现在是关闭这个订单的时候。 Artyom Trishkin 2017.05.25 17:43 #2142 STARIJ:datetime Time[] -时间数组,包含当前图表中每个条形图 的 打开时间 。Time[0] - 最后一个条形图的开放 时间。 如果OrderOpenTime() 的 开盘时间小于 Time[0]- 这意味着订单是在最后一个柱子上打开的,根据你的策略,现在是关闭这个订单的时候。 或者,它已经被遗忘了,是一年前 打开的,例如;) AlGuru 2017.05.25 17:46 #2143 STARIJ: datetime Time[] - 数组中的时间序列,包含了当前图表中每个条形 的 打开时间 。Time[0] - 最后一个条形图的开放 时间。如果OrderOpenTime()小于Time[0] - 这意味着订单是在最后一个柱子上打开的,根据你的策略,现在是关闭这个订单的时候。 谢谢你!刚刚用iTime功能 解决了这个问题。我还不擅长使用数组))。 Artyom Trishkin 2017.05.25 18:03 #2144 AlGuru: 谢谢你!我刚刚用iTime功能解决了这个问题。我还不擅长使用数组))。告诉我你是如何解决的。只是有一点你可能没有考虑到。 关于交易、自动交易系统和交易策略测试的论坛 新手对MQL4的任何问题,对算法和代码的帮助和讨论 Artyom Trishkin, 2017.05.25 19:43STARIJ:datetime Time[] -时间数组,包含当前图表中每个条形图 的 打开时间 。Time[0] - 上一个条形图的开放时间。 如果OrderOpenTime()小于 Time[0]- 这意味着订单是在最后一栏打开的,根据你的策略,现在是关闭这个订单的时候。 比如说,要么已经被遗忘,一年前 就被发现了;) AlGuru 2017.05.25 18:29 #2145 Artyom Trishkin:告诉我你是如何解决的。只是有些事情你可能没有考虑到。 OrderOpenTime() < iTime(Symbol(), 0, 0) Artyom Trishkin 2017.05.25 18:32 #2146 AlGuru: OrderOpenTime() < iTime(Symbol(), 0, 0)而如果订单的开启时间 是一周前?那么它肯定不在最后一根蜡烛上(如果图表不是周线)。我们也应该关闭它吗?当然,这完全取决于你的TS的要求,但我想走另一条路...... AlGuru 2017.05.26 04:48 #2147 Artyom Trishkin:而如果订单的开启时间 是一周前?那么它肯定不是在最后一根蜡烛上(如果图表不是周线)。我们也应该关闭它吗?当然,这完全取决于你的TS的要求,但我想走另一条路。 这是一个额外的条件。当价格达到MA线时,应关闭头寸。有时,价格正好在这条线上开盘,在每一个刻度上开仓和平仓。我已经通过不早于下一个蜡烛的平仓来解决了这个问题。 a196012a 2017.05.26 05:05 #2148 大家好!请告知如何在策略测试器中 对以下动作进行编码一般想法 1.开单N -X(量=0.1)。2.如果 这个 订单在SL上被关闭,那么。为了补偿损失,立即在SL上的订单 N X的 收盘价,打开 订单 N - X1(体积= 0.3)。我们必须要做的。3 如果订单(体积=0.3)在SL上被关闭,只有 订单N-X 的 开仓小时值会 被记住,以补偿其开 仓时的 损失。我知道如何打开这两个订单,但我不能找到我的方法,如何记住一个 在SL上关闭的0.1手量的订单 的小时值。注意:这与同一勾股的订单关闭有关。有时,在一个tick上有超过一个成交量为0.1和0.3的订单被关闭。例如,如果3个0.1的订单 ,在一个SL上的一个tick上被关闭,而不是开3个0.3的订单 。- 只有1个0.3手的订单 被打开 在这种情况下,如果我在SL上只关闭1个0.3手的订单,那么当两个0.1手的订单被打开以 补偿他们的损失时,我将不会得到小时的数值。 也就是说,在这种情况下,我需要开3个0.3手的 订单,而不是一个。有时3个0.3手的订单会在一个点上被SL关闭,尽管它们对应的0.1手订单是在不同的点上打开的(但只是一个价格)。在这种情况下,程序只为最后一笔0.1手的订单保存了正确的数值。我需要程序保存SSL关闭的每个订单(0.1手)的小时值。下面是我的代码,我们需要修改。谢谢你的帮助。int A2; int A1; int A; int start() { int ot = OrdersTotal(); int Ht = OrdersHistoryTotal(); if(Bid == iOpen(NULL,PERIOD_H1,0)) if ( A!= Hour() ) { OrderSend(Symbol(),OP_SELL,0.1,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 ); A = Hour(); } //************************************************************************************** int Счет=0, Номер=OrdersHistoryTotal()-1; //int A1=0; for( ; Номер>=0; Номер--) { if(!OrderSelect(Номер, SELECT_BY_POS, MODE_HISTORY)) continue; A1=OrderOpenTime(); if(OrderProfit()>=0) break; Счет++; if(Счет ==1&&A2!=OrderOpenTime()) { A2=OrderOpenTime(); OrderSend(Symbol(),OP_SELL,0.3,Bid ,3,Ask+400*Point,Ask-200*Point,"jfh",123 ); } } //************************************************************************************** return; }下面是一个例子,说明在一个tick上有几个订单被关闭的情况 08:51:38.906 2017.03.27 13:09:44 Tester: stop loss #200 at 1.08858 (1.08856 / 1.08858) 2 08:51:38.906 2017.03.27 13:09:44 1 = 1 = 1 = 1 EURUSD,M1: open #214 sell 0.30 EURUSD at 1.08856 sl: 1.09258 tp: 1.08658 ok 0 08:51:38.906 2017.03.27 13:10:28 Tester: stop loss #192 at 1.08879 (1.08877 / 1.08879) 0 08:51:38.906 2017.03.27 13:10:28 Tester: stop loss #193 at 1.08879 (1.08877 / 1.08879) 2 08:51:38.906 2017.03.27 13:10:28 1 = 1 = 1 = 1 EURUSD,M1: open #215 sell 0.30 EURUSD at 1.08877 sl: 1.09279 tp: 1.08679 ok 0 08:51:38.906 2017.03.27 13:10:29 Tester: stop loss #194 at 1.08880 (1.08878 / 1.08880) Artyom Trishkin 2017.05.26 05:51 #2149 AlGuru: 这是一个额外的条件。当价格越过МА线时,头寸就被关闭。有时,价格正好在这条线上打开,并在每一个刻度上开仓和平仓。我已经通过在下一个蜡烛之前平仓来解决这个问题。要解决这样的问题,就应该检查在这根柱子上是否存在或曾经存在过开仓和平仓 的情况。否则你会把一切都堆积起来。信号功能应该发送信号,而交易功能应该已经检查信号的有效性。 sidovi 2017.05.26 06:01 #2150 你好。为什么 欧元对美元货币对显示为 149.16325而不是1.0616? 1...208209210211212213214215216217218219220221222...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
datetime Time[] -时间数组,包含当前图表中每个条形图 的 打开时间 。Time[0] - 最后一个条形图的开放 时间。 如果OrderOpenTime() 的 开盘时间小于 Time[0]- 这意味着订单是在最后一个柱子上打开的,根据你的策略,现在是关闭这个订单的时候。
datetime Time[] - 数组中的时间序列,包含了当前图表中每个条形 的 打开时间 。Time[0] - 最后一个条形图的开放 时间。如果OrderOpenTime()小于Time[0] - 这意味着订单是在最后一个柱子上打开的,根据你的策略,现在是关闭这个订单的时候。
谢谢你!刚刚用iTime功能 解决了这个问题。我还不擅长使用数组))。
谢谢你!我刚刚用iTime功能解决了这个问题。我还不擅长使用数组))。
告诉我你是如何解决的。
只是有一点你可能没有考虑到。
关于交易、自动交易系统和交易策略测试的论坛
新手对MQL4的任何问题,对算法和代码的帮助和讨论
Artyom Trishkin, 2017.05.25 19:43
STARIJ:
datetime Time[] -时间数组,包含当前图表中每个条形图 的 打开时间 。Time[0] - 上一个条形图的开放时间。 如果OrderOpenTime()小于 Time[0]- 这意味着订单是在最后一栏打开的,根据你的策略,现在是关闭这个订单的时候。
告诉我你是如何解决的。
只是有些事情你可能没有考虑到。
OrderOpenTime() < iTime(Symbol(), 0, 0)
OrderOpenTime() < iTime(Symbol(), 0, 0)
而如果订单的开启时间 是一周前?那么它肯定不在最后一根蜡烛上(如果图表不是周线)。我们也应该关闭它吗?
当然,这完全取决于你的TS的要求,但我想走另一条路......
而如果订单的开启时间 是一周前?那么它肯定不是在最后一根蜡烛上(如果图表不是周线)。我们也应该关闭它吗?
当然,这完全取决于你的TS的要求,但我想走另一条路。
这是一个额外的条件。当价格达到MA线时,应关闭头寸。有时,价格正好在这条线上开盘,在每一个刻度上开仓和平仓。我已经通过不早于下一个蜡烛的平仓来解决了这个问题。
大家好!
请告知如何在策略测试器中 对以下动作进行编码
一般想法
1.开单N -X(量=0.1)。
2.如果 这个 订单在SL上被关闭,那么。为了补偿损失,立即在SL上的订单 N X的 收盘价,打开 订单 N - X1(体积= 0.3)。
我们必须要做的。
3 如果订单(体积=0.3)在SL上被关闭,只有 订单N-X 的 开仓小时值会 被记住,以补偿其开 仓时的 损失。
我知道如何打开这两个订单,但我不能找到我的方法,如何记住一个 在SL上关闭的0.1手量的订单 的小时值。
注意:这与同一勾股的订单关闭有关。
有时,在一个tick上有超过一个成交量为0.1和0.3的订单被关闭。
例如,如果3个0.1的订单 ,在一个SL上的一个tick上被关闭,而不是开3个0.3的订单 。- 只有1个0.3手的订单 被打开
在这种情况下,如果我在SL上只关闭1个0.3手的订单,那么当两个0.1手的订单被打开以 补偿他们的损失时,我将不会得到小时的数值。
也就是说,在这种情况下,我需要开3个0.3手的 订单,而不是一个。
有时3个0.3手的订单会在一个点上被SL关闭,尽管它们对应的0.1手订单是在不同的点上打开的(但只是一个价格)。
在这种情况下,程序只为最后一笔0.1手的订单保存了正确的数值。
我需要程序保存SSL关闭的每个订单(0.1手)的小时值。
下面是我的代码,我们需要修改。
谢谢你的帮助。
下面是一个例子,说明在一个tick上有几个订单被关闭的情况
这是一个额外的条件。当价格越过МА线时,头寸就被关闭。有时,价格正好在这条线上打开,并在每一个刻度上开仓和平仓。我已经通过在下一个蜡烛之前平仓来解决这个问题。
要解决这样的问题,就应该检查在这根柱子上是否存在或曾经存在过开仓和平仓 的情况。
否则你会把一切都堆积起来。信号功能应该发送信号,而交易功能应该已经检查信号的有效性。
你好。为什么 欧元对美元货币对显示为 149.16325而不是1.0616?