for(inti=1; i<=OrdersTotal(); i++){ if(OrderSelect(i-1,SELECT_BY_POS)
executedpreviously = true; while(true)
{
modify section is ok...
}
executedpreviously = false;
}
//or would I declare this back to false elsewhere...
//I am just not sure if it needs to run here each tick to grab the next order
IfGap_SELLLevel_00AlreadyExe == FALSE) this may still compile, but truly speaking, this a "mis-spelt" boolean syntax.
你没有犯任何错误。第一个是好的...。
if (OrderType() == OP_SELL && OrderSymbol() == Symbol() && OrderMagicNumber() == SELL_Magic01 && !IfGap_SELLLevel_00AlreadyExe) <--- this is GOOD to go..
在这个阶段,这个链接在我之上,但是我可以看到我如何做一个很酷的库文件来解决我的问题... https://www.mql5.com/en/articles/1390。我现在对建立票据阵列有点紧张,希望我可以暂时绕过它。因为当我修改时,它只是所有的Pair和Magic等。
在进入修改部分之前,我已经做了所有正确的工作。 它正确地选择了票据,然后通过了修改块......这部分很好。
我只是不知道'如果事情卡在这个修改部分',或者我是否有麻烦,因为它'需要通过这些部分来抓取下一个订单'。
我曾希望我可以把它送到修改块,让它修改那个神奇数字和符号的所有订单。 这就是为什么我尝试了一个小的真或假开关。
如果它需要通过这些部分的每一个勾选 "来选择下一个订单",我可能会有麻烦。
也许我可以手动命名需要修改的票,但我不认为这是个问题,因为它能正确地得到它们,只是每次打勾都会循环,而我是个新手,不知道为什么......
这是否是另一种选择?
一个continue;、return()或break;会不会在某个地方有用?
啊,我在我之前的一个例子中看到了一个错误......。
我想应该是这样。
这应该是将它隔离在那个部分......现在是凌晨5点,所以还没有测试......(损失了一个小时,该死的夏令时哈哈)
如果我让它以一种方式通过这一部分,它就会在每一个tick 上用最新的订单修改订单......如果我让它以另一种方式通过,它就会正常滚动订单,但它仍然在每一个tick上修改订单缓存......。
我可以让订单向后滚动5,4,3,2,1或向前滚动1,2,3,4,5,但我想不出让它通过修改所有订单的方法,而不至于使它们成为垃圾。
我想知道:1)我是否需要让它通过一次来修改所有通过的订单......,或者2)它是否需要在每次需要选择新订单时通过?
我还在学习,就是这样。 如果没有人可以引导我到正确的方向,我将尝试上面这一行,在结尾处有一个中断,看看是否结束....,它必须是简单的东西。
IfGap_SELLLevel_00AlreadyExe == FALSE) this may still compile, but truly speaking, this a "mis-spelt" boolean syntax.
你没有犯任何错误。第一个是好的...。
如果我没有看错的话,我以前可能也有过类似的问题。我试图创建我自己的 "修改止损/限制订单 的最低MODE_STOP水平,如果买入/卖出移动x点..."
你的情况类似吗?
你没有犯任何错误。第一个是好的...。
如果我没有看错的话,我以前可能也有过类似的问题。 我试图创建我自己的 "修改止损/限制订单的最低MODE_STOP水平,如果买入/卖出移动x点..."
你的情况类似吗?
谢谢Diostar,我正试图用挂单做一个堆,然后当它到达下一个成功的挂单时,把旧的止损调出来。
我将再次尝试!......有很多组合可以尝试......我明白了,我应该用 "false "作为布尔值,而不是FALSE......是的,它仍然可以编译和工作,但问题相同。 我可能会再找到那个草案,用 "false "试试。 在例子2中,它不会滚动浏览订单,而且每一个刻度都 会修改,所以我将再次尝试改变这个变量。
我可以让它传递到修改块,并向前或向后旋转订单,但它修改每一个刻度,如果我在修改后加入一个真或假的过滤器,它只修改缓存中的第一个订单....。
对我来说,这表明EA需要在每个tick上获取下一个订单(我不确定当它到达这个区块时,我是否可以把它封在这里,并让它在订单中旋转一次)......
这给我带来了一个问题,因为任何真实或虚假的问题都不能让它通过......
我想如果我学会了如何制作一个订单缓存并通过它们进行选择,我仍然会有同样的问题......我有过所有的组合,但不是同时发生的。 我已经让它修改了一次,然后继续前进,但它只得到了第一个订单就停止了......所以我在想,我是否应该用一个开关来实际指定每张订单......。我不确定我报告错误信息的bool OrderTicket()是否把Pending_OrderTicket_XX的声明也弄乱了。 这一定是个简单的问题。
你是如何解决你的这个问题的?
不管我如何在全局变量中声明...
......它似乎修改了一次,但只是其中一个订单,我假设是最后一个订单,因为我滚动订单的方式。
我把订单 前的ret00也拿掉了,以防万一......
至少它不是每一个刻度,我可以使用这个例子,如果它仍然滚动我的订单,当第一个论坛的条件是真实的(但不是每一个刻度 "垃圾邮件修改 "后滚动确定,像我最成功的尝试...)。
这个尝试也没有成功。
我更清楚我在做什么,我希望上面的方法能起作用,如果是这样的话,我就可以完成了......
我希望我是在正确的轨道上。 我还是不明白为什么我前面的例子1是错误的,这个愚蠢的东西正是我想要的,但是每一个刻度... 我甚至不能让它在我编入订单时工作,所以我又完全迷失了。
有什么指点吗?
编辑:我真的很累了,但我刚刚想到了这个问题,不过,由于时间不够了,我得晚点再试试......
你是在处理小数点吗?
你是在处理小数点吗?
我想我把SL和TP值增加了一倍,如果你是这个意思的话,这样它就会被分配价格来设置SL和TP。 我希望我这样做没有错。
我只需要MT4到达那个区块,然后忘记它....。我感觉这个表达方式对MT4来说太复杂了,但我会继续尝试......
我想我把SL和TP值增加了一倍,如果这是你的意思的话,这样它就会被分配到设定SL和TP的价格。 我希望我这样做没有错。
我只需要MT4到达那个区块,然后忘记它....。我感觉这个表达方式对MT4来说太复杂了,但我会继续尝试......
我的意思是,你是在处理4/5位数 - 0.0001,还是0.00001点?
啊,5位数...我早些时候就用这个...
extern bool IsFiveDigitBroker = true; extern bool DoDetectBrokerDigits = true; double PipValue=1; int NDigits = 4; // ---- int init() { NDigits = Digits; } // ---- init start() int start() { OnEveryTick(); } void OnEveryTick() { if (DoDetectBrokerDigits == false && IsFiveDigitBroker) PipValue = 10; if (DoDetectBrokerDigits && (NDigits == 3 || NDigits == 5)) PipValue = 10; //then I go on to check the IfGaps on every tick... IfGap_SELLLevel_00(); IfGap_SELLLevel_01(); IfGap_SELLLevel_02(); IfGap_SELLLevel_03(); IfGap_SELLLevel_04(); IfGap_SELLLevel_05(); }
而我早些时候在想,我可能会尝试把这个Detect Digits作为我的第一个库的插入物,嘿嘿,但是一步一步来,我得先学会爬行,嘿嘿。
我没有收到任何错误信息130价格关闭或任何....。我希望它是像这样简单的东西。
上一页我的例子1在工作,还有很多其他类似的例子,我只是希望能让它在每个tick修改一次......
我不知道我是否应该为他们每个人做一个新的盒子,而不是试图一次获得我以前所有的卖出订单......是的,我真的很迷茫,如何在我的任何尝试中循环查看我所有的旧SELLS,并修改它们一次。
而不是
你知道你之前提出的一些建议,Diostart让我思考...
我在想,如果一个!"IfGap_SELLLevel_00AlreadyExe "的想法行不通的话(如果它不打算在我锁定该区块之前,在同一个通道中抓取所有的订单并修改它们),我想如果我使用你之前的想法,并在那里放一个这样的问题... 如果成功的话,我就会弹回来。
如果我走错了路,请让我知道,谢谢;)
啊,5位数...我在早些时候使用这个...
而我之前在想,我可能会尝试把这个Detect Digits作为我的第一个库插入,嘿嘿,但一步一步来,我得先学会爬行,嘿嘿。<--明智之举。 你正在爬行。有了图书馆,你最终会走路的。
我没有收到任何错误信息130价格关闭或任何....。我希望它是像这样简单的东西。
上一页我的例子1在工作,还有很多其他类似的例子,我只是希望我可以让它在每个tick上修改一次...<---见下图
我不知道我是否应该为每一个卖出的订单做一个新的盒子,而不是试图一次获得所有以前的卖出订单......是的,我真的不知道如何在我的任何尝试中循环所有的旧卖出订单,并修改它们一次。
我希望这可能会提供一些帮助。
最初,我的符号是4位数,所有的跟踪止损,止损/限价单的修改,都是按预期进行的。 然后我的经纪人决定采用小数点。我做了必要的修改,看到我的点数变成了-3.4,-4.5,0.1,4.6,7.3,等等,等等。 我想这是可以的,但实际上不是。假设我设定我的极限=7,然后说,新的tick 1,tick 2,tick 3依次发生。
1) 7.3>限价,然后订单被修改......经纪人填补了1个滑点......
2) 7.5>限价,然后订单被修改....,经纪人填补了0个滑点......
3) 7.1>限制,然后订单被修改...经纪人填补了2个滑点...
因此,总的来说,我的订单在所有3个点上被修改了3次。意识到这一点后,我决定使用MathRound() 将这些订单取整到最近的整数,因此1,2,3变成了
1) mathround(7.3) =7 >limit, NOT TRUE, not modified
2) mathround(7.5)=8 >limit, TRUE, 顺序被修改。
3) mathround(7.1)=7>limit,非真,未被修改。
实际上,我还在研究如何改进上述方法......到目前为止,它们还能工作,但我认为一定有比我更好的方法。