//Pseudo codeif(NewBar) ResetSignals(); //Set all SignalxExecuted to falseif(SignalBuy1&&!SignalBuy1Executed&&OpenOrders()==1){
//do open buy position
SignalBuy1Executed=true; //Set Signal to exectued to prevent a reuse in the same bar
}
if(SignalBuy2&&!SignalBuy2Executed&&OpenOrders()==2){
//do open buy position
SignalBuy2Executed=true; //Set Signal to exectued to prevent a reuse in the same bar
}
SignalBuy1=CheckForOpenBull42(); //Check for Signal1 condition is true
SignalBuy2=CheckForOpenBull62(); //Check for Signal2 condition is true
if(OpenOrders()>0)CheckForClose(); //Check any order needs to be closed
//and so on.....
bool Fun_New_Bar()
{
staticdatetime New_Time=0;
if(New_Time!=Time[0])
{
New_Time=Time[0];
return(true); // <---- we have a new bar so the function returns true
}
return(false);
}
//Pseudo codeif(NewBar) ResetSignals(); //Set all SignalxExecuted to falseif(SignalBuy1&&!SignalBuy1Executed&&OpenOrders()==1){
//do open buy position
SignalBuy1Executed=true; //Set Signal to exectued to prevent a reuse in the same bar
}
if(BULL4()&&!BULL6(){ // <--- only strategy BULL4 is valid, we are looking at a 'small' bar.if(!SignalBULL41Executed && OpenOrders(Symbol())==0){
OpenBULL41();//do open buy position
SignalBULL41Executed=true;
}
if(!SignalBULL42Executed && OpenOrders(Symbol())==1){
OpenBULL42();//do open buy position
SignalBULL42Executed=true;
}
// Check for open for scenario 1 / EA 1 / startegy 1 bool OpenBULL41()
{
int res;
if(Bid==Close[1]+3*Point) // <--- equal makes no sense here and you should not compare doubles for equality.
Read (again): https://www.mql5.com/en/forum/136997
{
res=OrderSend(Symbol(),OP_BUY,0.41,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue); // <--- what is your plan with res? You are aware, it does include the ticket
number or -1, aren't you?
return (true); // <--- Even if OrderSend() fails you return true.
}
return (false);
}
//----------------------------------- bool OpenBULL42()
{
int res;
if(Ask>OrderOpenPrice()+4*Point) // <--- OrderOpenPrice() from a somewhere selected order may or may not work here
(may because only one order is open), but it is not nice coded.
{
res=OrderSend(Symbol(),OP_BUY,0.42,Ask,0,Close[1]-25*Point,0,"",MAGICMA,0,Blue);
return;
}
}
对于那些 仍然不 理解我的 EA 的人, 写 一个 故事。D 嘿嘿
该事件 是 蜡烛-- 具有 各种 买卖 或关闭 的选项 。
与其把看电视节目作为你的第二个功能,你应该考虑阅读和理解这本书。)
你想实现的目标是直截了当的,在许多策略中都有使用,但你的代码--和你的故事--是混乱的,部分是错误的--至少代码....,不知道故事是什么。
你为什么不尝试暂时只实现一个信号,而专注于所需功能的编码?如果你对一个信号有很好的编码,那么实现其他信号可能就很容易了,而且很多功能已经存在了。
以后你可以使用Arrays和其他函数来简化它,但简化你上面的代码不应该是你目前最大的问题。
Kronin 是的! 你明白我的意思 :), 一个 EA 里有 很多策略 。
我必须 写 150个 策略, 它们 必须 同时 在同一个图形上 行走,并 同时运行 所有的策略 。 当我 同时运行150个EA时 ,我的 电脑 会 爆炸的 -- 我想是这样。
之后就 没有意义了 ,因为你 只能有一个 策略 EA ,而 里面已经有 很多 策略了。
当然, 策略 不能 相互干扰 ,当运行一个策略时,第二个策略也可以运行,我可以同时运行策略1、3和5,以及策略(1、3、5)。
我不会 再写 任何 故事 了:)
我的 代码是 错误的-- 这是众所周知的,我试图 将 两个策略 放在一个单一的 EA 中, 代码运行 良好 ,但 整体 运行 不 畅。
你的代码非常 有趣, 我会 研究 它,请 给我 一些时间。
嗨 ,朋友们, 经过长时间的 代码 工作 , 通过 Kronin 的 信息,代码 的结构和 操作。
代码 在 一个EA 中 提出了 两个策略
1.对于小 蜡烛 的购买 情况 用蓝色箭头 标记 , 有 两个选项为 买入
2.对于平均 蜡烛 ,购买情况 的蜡烛 用红色箭头 标记 , 有 三个选项为买入
我 也有一个 情况 ,1 点 = 1点 ,很方便 (解决 这个问题是 为了以后)。
不 使用 选项 if (NewBar) ResetSignals () 因为我认为 它们不是 错误 的原因
如果你删除了 start() 中的 函数 PART2,蓝色 的一个策略 就会工作,而且 工作正常
如果你运行 的代码 PART1 和 PART2 包含 两个 启动 策略, 但他们会 重叠。 这是错误的
你能不能 看一下 克罗尼
不要 使用 选项 if (NewBar) ResetSignals () ,因为我认为 它们不是 导致 错误 的原因。
函数 Fun_NewBar()的编码方式不允许你这样做 . . . 你需要这样做,以便它是bool 类型,并返回一个bool 值 . . .
是的, 你是对的,返回的 是bool ,还有 int(已经修复),我以前没有看到。谢谢你
但 这个函数 我 不使用,它 是作为一个 文本 的
我不认为 这 适用 于 将 我的两个 重叠的 战略 分开 的功能 。 我没有看到 这种关系。 或者是 我错了?
很高兴看到你取得了一些进展,但仍有很长的路要走 :-)
你需要解决RaptorUK上面所说的问题。重置信号很重要,否则EA很快就会停止新的交易。
你的实现是错误的。如果你每次都 重置SignalExecuted,那就没有意义了。也许它不会打开更多的交易,因为你也过滤了OpenOrders。但是,由于你的策略允许有多个订单打开,我可以想象你也想要一个算法来关闭订单,所以你需要在一个新的条形图上重置SignalExecuted标志(在你的实现中,它是无用的,你不需要它)。
如果我理解正确的话,如果BULL6也是真的,你就不会执行BULL4。或者换句话说,只有蓝色策略,如果红色策略无效,或者只有小蜡烛,如果平均蜡烛无效。
接下来的步骤。
CheckForClose()函数也有同样的问题,而且没有魔法数字的过滤器。 另外,从买入数的订单中选择OrderOpenPrice()可能会导致关闭错误的订单(我不确定它是否真的有效)。
请再次阅读Raptor在本主题第一页写的内容。
从你的帖子和代码中的评论,我感觉你想知道哪个订单属于哪个策略。为了达到这个目的,你可以为第二个策略定义一个神奇的数字,这样就可以更容易地根据开仓的策略来关闭订单。
接下来的步骤。
从你的帖子和代码中的评论,我感觉你想知道哪个订单属于哪个策略。为了达到这个目的,你可以为第二个策略定义一个神奇的数字,这样就可以根据订单打开的策略更容易地关闭订单。
在两个独立的EA中运行两个不同的策略,每个都在它自己的图表上,这不是更简单吗?
是的,对于2、3、4、5...同意。但是,根据这些故事和这个故事:"我必须 写 150个 策略, 它们 必须 同时 在同一个图表上 运行,并 同时运行 所有的策略 。当我 同时运行150个EA时 ,我的 电脑 会 爆炸 -- 我想 是的。"
我认为他计划在一个EA中运行更多的策略....。