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次)。

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

提前致谢。

昂热达伦
12-13-2021 00:44, 12:44 AM
有更好的方法来解决这个问题,但简单的方法就是布尔型。在你的init()中你需要TradeOK = True;然后,一旦您进行交易,您想使用TradeOK = false;最后,您需要将If语句修改为if((MMAgt; Ask 0.0010)(TradeOK = True))

孔查阿尔瓦罗
12-13-2021 02:05, 02:05 AM
谢谢,米尔豪斯!我做了改变,但仍然在下一个十字架前重复每个新蜡烛的订单。另一个消化?干杯。

yapinwy
12-13-2021 03:25, 03:25 AM
插入的代码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是否高于或低于价格。如果它与当前的蜡烛相同,那么当前的蜡烛不会发生交叉。

孔查阿尔瓦罗
12-13-2021 04:46, 04:46 AM
谢谢,quaestus。代码运行良好。事实上,订单是重复的,但只有当趋势在右侧时,甚至在下一个交点之前。还不太了解这个逻辑,但我会在稍后做更多的测试并在这里发布。感谢小小的帮助!

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

孔查阿尔瓦罗
12-13-2021 07:28, 07:28 AM
你好quaestus,我做了一些后测,但不幸的是表达没有正确的工作。我尝试了几种选择。 EA基于的通用EA Ma分频器:
https://www.histoforex.com/crypto-trading/538-idea-programmer.html在这篇文章中有更好的解释:
https://www.histoforex.com/crypto-trading/376-set-2-ea-pair.html

yapinwy
12-13-2021 08:48, 08:48 AM
用您所做的更改上传EA文件,我会看看它
https://www.histoforex.com/attachments/1527469837.png

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

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

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

Kawen487G
12-13-2021 14:11, 02:11 PM
先生,任何人都可以帮我写一个每周和每月开放的代码。提前谢谢。

阿拉诗阿格斯蒂娜
12-13-2021 15:32, 03:32 PM
只需使用ibarshift ...