错误、漏洞、问题 - 页 4 1234567891011...3184 新评论 Vladimir 2010.06.08 19:02 #31 Interesting: MarketInfo(Symbol(),MODE_MARGININIT) = SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL) 那么MODE_MARGINREQUIRED对应的是什么?否则,我怎么知道我需要多少闲钱 才能开1手买? 在mql5创建者的Moving Average.mq5专家顾问中,手数是这样计算的input double MaximumRisk = 0.02; // Maximum Risk in percentageinput double DecreaseFactor = 3; // Descrease factorinput int MovingPeriod = 12; // Moving Average periodinput int MovingShift = 6; // Moving Average shift//---int ExtHandle=0;//+------------------------------------------------------------------+//| Calculate optimal lot size |//+------------------------------------------------------------------+double TradeSizeOptimized(void) {//--- select lot size double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_FREEMARGIN)*MaximumRisk/1000.0,2); 为什么MaximumRisk这么小(0.02%),在计算手数时被1000除以?这个1000代表什么?也许1000=购买1手所需的可用资金乘以100%(将0.02%转换为0.0002的分数)?也就是说,购买1手的可用资金是10美元(10美元x100%=1000)。我认为方向正确吗? 还有一个问题。对未结订单的最大数量是否有限制? [删除] 2010.06.08 19:33 #32 gpwr: 那么MODE_MARGINREQUIRED对应的是什么?或者,否则我怎么知道开1手买入所需的可用资金数额? 还有一个问题。对未结订单的最大数量是否有限制?我问自己这个问题。以下是开发者的回答。拉希德-乌马罗夫。 见 符号_交易_合约大小 交易合同规模 双и 符号_货币_边际 计算保证金的货币 绳子 根据我的理解,你将不得不自己计算一下 [删除] 2010.06.08 19:44 #33 gpwr:在mql5创建者的Moving Average.mq5专家顾问中,手数是这样计算的 为什么MaximumRisk这么小(0.02%),在计算手数时被1000除以?这个1000代表什么?也许1000=购买1手所需的可用资金乘以100%(将0.02%转换为0.0002的分数)?也就是说,购买1手的可用资金是10美元(10美元x100%=1000)。我认为方向正确吗? 还有一个问题。对未结订单的最大数量是否有限制?AccountInfoDouble(ACCOUNT_FREEMARGIN)*MaximumRisk 如果我理解正确的话,这一行计算的风险是自由资金数额 的2%。为什么他们要把这个数额除以1000?但如果我理解正确的话,那么在存款(自由资金)为20,000美元的情况下,专家顾问建议开设不超过该金额的2%(400美元)。将这一数额除以1,000,我们将合乎逻辑地得到0.4手。 [删除] 2010.06.08 19:48 #34 gpwr:对未结订单的最大数量是否有限制? 我也在想这个问题。有一个建议,开发人员仍在思考(对他们来说,顺便说一下--申请15802)。 Vladimir 2010.06.08 20:55 #35 Interesting:如果我理解正确的话,这一行计算的风险是可用资金量的2%。为什么这个数额要除以1,000,由开发商决定。但如果我理解正确的话,那么在存款(自由资金)为20,000美元的情况下,专家顾问建议开设不超过该金额的2%(400美元)。将这一数额除以1,000,我们将合乎逻辑地得到0.4手。 现在我明白了。Moving Average.mq5中有一个错误。而不是input double MaximumRisk = 0.02; // Maximum Risk in percentage 它应该是input double MaximumRisk = 0.02; // Maximum Risk as a fraction of a free margin 那么在计算手数时除以1000就很清楚了:100,000美元(手数)/100(杠杆)=1000。然而,mql5的开发者一定不会展示这样一个专家顾问的例子。它应该被改变double lot=NormalizeDouble(AccountInfoDouble(ACCOUNT_FREEMARGIN)*MaximumRisk/1000.0,2); 拟double LotSize =SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);int Leverage =AccountInfoInteger(ACCOUNT_LEVERAGE);double FreeMargin =AccountInfoDouble(ACCOUNT_FREEMARGIN); double LotRqdMgn =LotSize/Leverage;double lot =NormalizeDouble(FreeMargin*MaximumRisk/LotRqdMgn,2); 或者更好的是double Step =SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_STEP);double LotSize =SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);int Leverage =AccountInfoInteger(ACCOUNT_LEVERAGE);double FreeMargin =AccountInfoDouble(ACCOUNT_FREEMARGIN); double LotRqdMgn =LotSize/Leverage;double lot =NormalizeDouble(MathFloor(FreeMargin*MaximumRisk/LotRqdMgn/Step)*Step,2); 不过很遗憾,MODE_MARGINREQUIRED已经丢失了。也许开发者会恢复这个参数,以减少计算的次数。 [删除] 2010.06.08 21:05 #36 Interesting: stringo。 简称一直以来只用于在指标子窗口中显示。 所以它没有显示在那里,要么是一个错误,要么是我不明白什么...... 找到了错误并修复了它,16051可以关闭。 Vladimir 2010.06.09 07:43 #37 我不知道我是否把我的错误报告放在了正确的地方。如果没有,请纠正我。 在测试我的EA时,我特意创造了这样一种情况,看看测试者是否正确地确定了保证金。因此,100美元的存款。我们交易欧元兑美元。最小地段面积为0.1。以下是专家顾问中用于计算手数的代码double volMin =SymbolInfoDouble(_Symbol,SYMBOL_VOLUME_MIN);double LotSize =SymbolInfoDouble(_Symbol,SYMBOL_TRADE_CONTRACT_SIZE);long Leverage =AccountInfoInteger(ACCOUNT_LEVERAGE);double FreeMargin =AccountInfoDouble(ACCOUNT_FREEMARGIN); double LotRqdMgn =LotSize/Leverage;double vol=NormalizeDouble(MathFloor(FreeMargin*MaxRisk/LotRqdMgn/Step)*Step,2);if(vol<volMin) vol=volMin;if(vol*LotRqdMgn>FreeMargin) vol=0.0;Print(LotRqdMgn," ",FreeMargin);return(vol); 测试员产生了这些错误 2010.06.08 22:28:57 核心 1 没有足够的钱 [在1.19242处即时买入0.10欧元兑美元] 。 2010.06.08 22:28:57 核心 1 前期余额: 100.00, 前期权益: 100.00, 前期保证金: 0.00, 新保证金: 119.24, 新自由保证金: -19.24 2010.06.08 22:28:57 核心 1 1000 100 2010.06.08 22:28:57 核心 1 没有足够的钱 [在1.19180即时买入0.10 EURUSD] 2010.06.08 22:28:57 核心 1 前期余额: 100.00, 前期权益: 100.00, 前期保证金: 0.00, 新保证金: 119.18, 新自由保证金: -19.18 2010.06.08 22:28:57 核心 1 1000 100 2010.06.08 22:28:57 核心 1 没有足够的钱 [在1.19362处即时买入0.10 EURUSD] 2010.06.08 22:28:57 核心 1 前期余额: 100.00, 前期权益: 100.00, 前期保证金: 0.00, 新保证金: 119.36, 新自由保证金: -19.36 2010.06.08 22:28:57 核心 1 1000 100 根据这些信息判断,买入1手的自由保证金LotRqdMgn等于1000,这似乎是正确的。FreeMargin=100。0.1手乘以1000,得到100。这意味着我们有足够的资金来打开第一块地。但测试人员报告说,我们没有足够的资金。错误在哪里? Errors, bugs, questions Flexible Time Charts for PREDICT time period Renat Fatkhullin 2010.06.09 09:57 #38 gpwr: 根据这些信息,买入1手的自由保证金,LotRqdMgn,需要1000,这似乎是正确的。FreeMargin=100。0.1手乘以1000,得到100。这意味着我们有足够的资金来打开第一块地。但测试人员报告说,我们没有足够的资金。错误在哪里?错误在于你在计算中忘记了保证金货币。 余额=100美元,保证金要求=100欧元(119美元)。这就是为什么你不能进行交易--一切都很正确。 Vladimir 2010.06.09 16:35 #39 Renat: 错误在于你在计算中忘记了保证金货币。 余额=100美元,保证金要求=100欧元(119美元)。 这就是为什么不可能进行交易 - 一切都是正确的。 谢谢你,雷纳特。我已经明白了我的错误。改变了LotRqdMgn的计算公式,现在一切工作正常了。 [删除] 2010.06.10 03:26 #40 图书馆学的一个新词,或旁边的惊人...因此,我创建了一个使用该库的专家顾问,检查后一切正常。我做了一个存档,里面有专家顾问、这个库和一些MQL5和MQH文件。我把档案交给了应用者/开发者进行测试。那是可以的,但我决定在另一个终端上进行测试。所以我解开了档案,决定将专家顾问附在图表上。而在终端日记中,写着这两行字。2010.06.10 09:54:51 PM 专家 MechanicalTrading-Infinity-2010 (EURUSD,Daily)2010.06.10 09:54:51 专家加载MechanicalTrading-Infinity-2010(EURUSD,Daily)失败。我开始搜索它是如何工作的(或者说,不工作),发现了一个惊人的事实--终端看到目录中的编译库(作为*.ex5),但持续地 "汇入 "它,这不是很好,如你所理解的...在尝试了许多可能导致这种行为的原因后,我决定将原始文件(以*.mq5的形式)放在库的文件夹中。我试着在图表上添加一个EA--哦,我的上帝,一切都在运作。在游戏的过程中,出现了一些问题。1.如果库只表示为.ex5,为什么专家顾问不能工作?2.为什么终端会顽固地从目录中删除这个文件?3.为什么终端日志中没有关于上述所有内容的明确评论?4.为什么文档中没有说这种行为是可能的?最后是第五个问题,也是最后一个问题--我如何应对这一切,我做错了什么(可能是终端缺少一个EX5文件,正在寻找什么,例如头文件或库本身)?PS顺便说一下,我在使用Expert Advisors时也遇到了同样的问题,顽固地删除了*.ex5文件......。:( 1234567891011...3184 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
MarketInfo(Symbol(),MODE_MARGININIT) = SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL)
那么MODE_MARGINREQUIRED对应的是什么?否则,我怎么知道我需要多少闲钱 才能开1手买?
在mql5创建者的Moving Average.mq5专家顾问中,手数是这样计算的
为什么MaximumRisk这么小(0.02%),在计算手数时被1000除以?这个1000代表什么?也许1000=购买1手所需的可用资金乘以100%(将0.02%转换为0.0002的分数)?也就是说,购买1手的可用资金是10美元(10美元x100%=1000)。我认为方向正确吗?
还有一个问题。对未结订单的最大数量是否有限制?
那么MODE_MARGINREQUIRED对应的是什么?或者,否则我怎么知道开1手买入所需的可用资金数额?
还有一个问题。对未结订单的最大数量是否有限制?
我问自己这个问题。
以下是开发者的回答。
见
符号_交易_合约大小
交易合同规模
双
и
符号_货币_边际
计算保证金的货币
绳子
根据我的理解,你将不得不自己计算一下
gpwr:
在mql5创建者的Moving Average.mq5专家顾问中,手数是这样计算的
为什么MaximumRisk这么小(0.02%),在计算手数时被1000除以?这个1000代表什么?也许1000=购买1手所需的可用资金乘以100%(将0.02%转换为0.0002的分数)?也就是说,购买1手的可用资金是10美元(10美元x100%=1000)。我认为方向正确吗?
还有一个问题。对未结订单的最大数量是否有限制?
如果我理解正确的话,这一行计算的风险是自由资金数额 的2%。为什么他们要把这个数额除以1000?
但如果我理解正确的话,那么在存款(自由资金)为20,000美元的情况下,专家顾问建议开设不超过该金额的2%(400美元)。
将这一数额除以1,000,我们将合乎逻辑地得到0.4手。
gpwr:
对未结订单的最大数量是否有限制?
如果我理解正确的话,这一行计算的风险是可用资金量的2%。为什么这个数额要除以1,000,由开发商决定。
但如果我理解正确的话,那么在存款(自由资金)为20,000美元的情况下,专家顾问建议开设不超过该金额的2%(400美元)。
将这一数额除以1,000,我们将合乎逻辑地得到0.4手。
现在我明白了。Moving Average.mq5中有一个错误。而不是
它应该是
那么在计算手数时除以1000就很清楚了:100,000美元(手数)/100(杠杆)=1000。然而,mql5的开发者一定不会展示这样一个专家顾问的例子。它应该被改变
拟
或者更好的是
不过很遗憾,MODE_MARGINREQUIRED已经丢失了。也许开发者会恢复这个参数,以减少计算的次数。
简称一直以来只用于在指标子窗口中显示。
我不知道我是否把我的错误报告放在了正确的地方。如果没有,请纠正我。
在测试我的EA时,我特意创造了这样一种情况,看看测试者是否正确地确定了保证金。因此,100美元的存款。我们交易欧元兑美元。最小地段面积为0.1。以下是专家顾问中用于计算手数的代码
测试员产生了这些错误
2010.06.08 22:28:57 核心 1 没有足够的钱 [在1.19242处即时买入0.10欧元兑美元] 。
2010.06.08 22:28:57 核心 1 前期余额: 100.00, 前期权益: 100.00, 前期保证金: 0.00, 新保证金: 119.24, 新自由保证金: -19.24
2010.06.08 22:28:57 核心 1 1000 100
2010.06.08 22:28:57 核心 1 没有足够的钱 [在1.19180即时买入0.10 EURUSD]
2010.06.08 22:28:57 核心 1 前期余额: 100.00, 前期权益: 100.00, 前期保证金: 0.00, 新保证金: 119.18, 新自由保证金: -19.18
2010.06.08 22:28:57 核心 1 1000 100
2010.06.08 22:28:57 核心 1 没有足够的钱 [在1.19362处即时买入0.10 EURUSD]
2010.06.08 22:28:57 核心 1 前期余额: 100.00, 前期权益: 100.00, 前期保证金: 0.00, 新保证金: 119.36, 新自由保证金: -19.36
2010.06.08 22:28:57 核心 1 1000 100
根据这些信息判断,买入1手的自由保证金LotRqdMgn等于1000,这似乎是正确的。FreeMargin=100。0.1手乘以1000,得到100。这意味着我们有足够的资金来打开第一块地。但测试人员报告说,我们没有足够的资金。错误在哪里?
根据这些信息,买入1手的自由保证金,LotRqdMgn,需要1000,这似乎是正确的。FreeMargin=100。0.1手乘以1000,得到100。这意味着我们有足够的资金来打开第一块地。但测试人员报告说,我们没有足够的资金。错误在哪里?
错误在于你在计算中忘记了保证金货币。 余额=100美元,保证金要求=100欧元(119美元)。
这就是为什么你不能进行交易--一切都很正确。
错误在于你在计算中忘记了保证金货币。 余额=100美元,保证金要求=100欧元(119美元)。
这就是为什么不可能进行交易 - 一切都是正确的。
谢谢你,雷纳特。我已经明白了我的错误。改变了LotRqdMgn的计算公式,现在一切工作正常了。
图书馆学的一个新词,或旁边的惊人...
因此,我创建了一个使用该库的专家顾问,检查后一切正常。我做了一个存档,里面有专家顾问、这个库和一些MQL5和MQH文件。我把档案交给了应用者/开发者进行测试。
那是可以的,但我决定在另一个终端上进行测试。所以我解开了档案,决定将专家顾问附在图表上。
而在终端日记中,写着这两行字。
2010.06.10 09:54:51 PM 专家 MechanicalTrading-Infinity-2010 (EURUSD,Daily)
2010.06.10 09:54:51 专家加载MechanicalTrading-Infinity-2010(EURUSD,Daily)失败。
我开始搜索它是如何工作的(或者说,不工作),发现了一个惊人的事实--终端看到目录中的编译库(作为*.ex5),但持续地 "汇入 "它,这不是很好,如你所理解的...
在尝试了许多可能导致这种行为的原因后,我决定将原始文件(以*.mq5的形式)放在库的文件夹中。我试着在图表上添加一个EA--哦,我的上帝,一切都在运作。
在游戏的过程中,出现了一些问题。
1.如果库只表示为.ex5,为什么专家顾问不能工作?
2.为什么终端会顽固地从目录中删除这个文件?
3.为什么终端日志中没有关于上述所有内容的明确评论?
4.为什么文档中没有说这种行为是可能的?
最后是第五个问题,也是最后一个问题--我如何应对这一切,我做错了什么(可能是终端缺少一个EX5文件,正在寻找什么,例如头文件或库本身)?
PS
顺便说一下,我在使用Expert Advisors时也遇到了同样的问题,顽固地删除了*.ex5文件......。:(