PDA

View Full Version : Mql4编码帮助



尤娜科朗汀
01-29-2009 08:09, 08:09 AM
嗨,大家好

我有一个代码的问题。

我想知道如何在每次蜡烛超过MM时执行例程,只有一次,并且在下一次穿越之前不能重复该顺序。

代码示例:

插入的代码int limit = 1;双MMA; for(int shift = 1; shiftlt; = limit; shift ){MMA = iMA(NULL,timeFrame,FastEMA,0,MODE_EMA,PRICE_CLOSE,shift);/----卖条件if(MMAgt; Ask 0.0010){SellValue = 1;打破; }/----购买条件if(MMAlt; Ask - 0.0010){BuyValue = 1;打破; }}
上面的代码在获利和下一个交叉之前多次重复订单。

我想要它可以打开的订单不超过每个交叉1个订单。或者一个限制变量(N次)。

所以,如果有人能帮忙,我会很感激。

提前致谢。

andleadokaile
10-30-2021 19:31, 07:31 PM
有更好的方法来解决这个问题,但简单的方法就是布尔型。在你的init()中你需要TradeOK = True;然后,一旦您进行交易,您想使用TradeOK = false;最后,您需要将If语句修改为if((MMAgt; Ask 0.0010)(TradeOK = True))

尤娜科朗汀
10-30-2021 20:51, 08:51 PM
谢谢,米尔豪斯!我做了改变,但仍然在下一个十字架前重复每个新蜡烛的订单。另一个消化?干杯。

oxchevaz
10-30-2021 22:12, 10:12 PM
插入的代码int limit = 1;双MMA,MMA1; for(int shift = 1; shiftlt; = limit; shift ){MMA = iMA(NULL,timeFrame,FastEMA,0,MODE_EMA,PRICE_CLOSE,shift); MMA1 = IMA(NULL,时段,FastEMA,0,MODE_EMA,PRICE_CLOSE,移位 1);/销售条件if(MMAgt; Ask 0.0010 MMA1lt; Close#91; shift 1#93;){SellValue = 1;打破; }/----购买条件if(MMAlt; Ask - 0.0010 MMA1gt; Close#91; shift 1#93;){BuyValue = 1;打破;尝试此代码。您应该检查以前蜡烛的MMA是否高于或低于价格。如果它与当前的蜡烛相同,那么当前的蜡烛不会发生交叉。

尤娜科朗汀
10-30-2021 23:33, 11:33 PM
谢谢,quaestus。代码运行良好。事实上,订单是重复的,但只有当趋势在右侧时,甚至在下一个交点之前。还不太了解这个逻辑,但我会在稍后做更多的测试并在这里发布。感谢小小的帮助!

oxchevaz
10-31-2021 00:54, 12:54 AM
多个订单放置的原因很少。订单是否只在同一支蜡烛上重复?或者你的EA在交叉后也买卖蜡烛吗?

尤娜科朗汀
10-31-2021 02:14, 02:14 AM
你好quaestus,我做了一些后测,但不幸的是表达没有正确的工作。我尝试了几种选择。 EA基于的通用EA Ma分频器:
https://www.forex-pedia.com/crypto-trading/538-idea-programmer.html在这篇文章中有更好的解释:
https://www.forex-pedia.com/crypto-trading/376-set-2-ea-pair.html

oxchevaz
10-31-2021 03:35, 03:35 AM
用您所做的更改上传EA文件,我会看看它
https://www.forex-pedia.com/attachments/1527469837.png

dalk38
10-31-2021 04:56, 04:56 AM
有人可以让我知道如何做到以下几点,我想在4-00am(英国时间)的蜡烛结束时检索40s的价值,也可以在任何人提供的6-15am蜡烛结束时获得相同的价值代码为这谢谢你

lsgsolayno
10-31-2021 06:17, 06:17 AM
有人可以让我知道如何做到以下几点,我想在4-00am(英国时间)的蜡烛结束时检索40s的价值,也可以在任何人提供的6-15am蜡烛结束时获得相同的价值代码为这谢谢你
如果(小时()= 4分钟()=时段())double maval1 = iMA(...参数......,1)if(Hour()= 6 Minute()= 15 Period())double maval2 = iMA(...参数......,1)使用period()取决于您使用的时间范围,上述情况适用于h1以下的时间范围

Gnooxllo
10-31-2021 07:37, 07:37 AM
虽然上面的代码可能工作,但它有点混乱。尝试使用iHour和iMinute并指定PERIOD_M1作为时间范围。在帮助文件中了解它们。问候勒克斯

Anxo88
10-31-2021 08:58, 08:58 AM
先生,任何人都可以帮我写一个每周和每月开放的代码。提前谢谢。

贝纳尔多伯尼
10-31-2021 10:19, 10:19 AM
只需使用ibarshift ...