初学者的问题 MQL4 MT4 MetaTrader 4 - 页 133 1...126127128129130131132133134135136137138139140...260 新评论 Ihor Herasko 2018.04.12 14:45 #1321 Aliaksandr Kryvanos:你好! 谁能建议一个类似于MT5中的MaxLotCheck()的替换方法,用于MT4,谢谢没有任何功能本身。你必须写你自己的。加上所有的检查,它应该适合于10-20行。 [删除] 2018.04.12 14:46 #1322 Ihor Herasko:没有任何功能本身。你必须写你自己的。加上所有的检查,它应该适合于10-20行。好的,但公式本身呢? Ihor Herasko 2018.04.12 14:49 #1323 Aliaksandr Kryvanos:好吧,但这里的公式本身呢?让我们来看看来源。 //+------------------------------------------------------------------+ //| Access functions OrderCalcMargin(...). | //| INPUT: name - symbol name, | //| trade_operation - trade operation, | //| price - price of the opening position, | //| percent - percent of available margin [1-100%]. | //+------------------------------------------------------------------+ double CAccountInfo::MaxLotCheck(const string symbol,const ENUM_ORDER_TYPE trade_operation, const double price,const double percent) const { double margin=0.0; //--- checks if(symbol=="" || price<=0.0 || percent<1 || percent>100) { Print("CAccountInfo::MaxLotCheck invalid parameters"); return(0.0); } //--- calculate margin requirements for 1 lot if(!OrderCalcMargin(trade_operation,symbol,1.0,price,margin) || margin<0.0) { Print("CAccountInfo::MaxLotCheck margin calculation failed"); return(0.0); } //--- if(margin==0.0) // for pending orders return(SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX)); //--- calculate maximum volume double volume=NormalizeDouble(FreeMargin()*percent/100.0/margin,2); //--- normalize and check limits double stepvol=SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); if(stepvol>0.0) volume=stepvol*MathFloor(volume/stepvol); //--- double minvol=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN); if(volume<minvol) volume=0.0; //--- double maxvol=SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX); if(volume>maxvol) volume=maxvol; //--- return volume return(volume); }ENUM_ORDER_TYPE 和OrderCalcMargin需要在此替换。 [删除] 2018.04.12 14:53 #1324 百胜)的来源...谢谢你 [删除] 2018.04.12 16:18 #1325 仍然不清楚.... margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED) и double margin;OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),margin); 返回不同的保证金数量以开立1手 Ihor Herasko 2018.04.12 17:00 #1326 Aliaksandr Kryvanos:仍然不清楚.... margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED) и double margin;OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),margin); 返回不同的开仓手数的保证金你们显然是在不同的终端上进行比较))。上面是MT4,下面是MT5。因此,服务器是不同的,交易条件是不同的。最简单的事情是不同的杠杆。 你实际得到了什么,价值是什么? [删除] 2018.04.12 17:09 #1327 是的,这是正确的,杠杆是不同的,一个是1/300,另一个是1/2000。 谢谢 ArturR 2018.04.12 20:46 #1328 大家好! 我的EA使用多步骤搜索进入点,为此它首先从一开始就检查历史信号,然后实时工作。所以在策略测试器中,历史记录一切正常,但当我实时运行时,它不能正确扫描历史记录,错过了信号,这可能是什么问题? 也许有一个显而易见的答案,因为代码片段相当大,不能在这里公布,所以我还没有给出代码。 Konstantin Erin 2018.04.13 04:31 #1329 ArturR:大家好! 我的EA使用多步骤搜索进入点,为此它首先从一开始就检查历史信号,然后实时工作。所以在策略测试器中,历史记录一切正常,但当我实时运行时,它不能正确扫描历史记录,错过了信号,这可能是什么问题? 也许有一个显而易见的答案,因为代码片段相当大,不能在这里公布,所以我还没有给出代码。 一件一件地进行调试。将历史扫描分离到脚本中。用Alert()输出详细信息:首先是历史中的条数,开始和结束日期,...然后再进行扫描的过程。把它全部写到一个文件中 可能更方便 ArturR 2018.04.13 14:13 #1330 STARIJ: 一步一步地进行调试。将历史扫描分离成一个脚本。使用Alert()输出详细信息:首先,历史上的条数,开始和结束日期,......。然后再进行扫描的过程。把它全部写到一个文件中 可能更方便谢谢你的提示,我将阅读如何做到这一点。 我还有一个问题,当我运行实时调试时,Metatrader4总是在瑞士法郎上运行,有谁知道该如何调整才能使其在我需要的货币对上运行? 这是其他时间段的指标值,显然在测试器中没有被考虑。我也找到了正确配对的方法。 谢谢你的参与 ) 1...126127128129130131132133134135136137138139140...260 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你好!
谁能建议一个类似于MT5中的MaxLotCheck()的替换方法,用于MT4,谢谢
没有任何功能本身。你必须写你自己的。加上所有的检查,它应该适合于10-20行。
没有任何功能本身。你必须写你自己的。加上所有的检查,它应该适合于10-20行。
好的,但公式本身呢?
好吧,但这里的公式本身呢?
让我们来看看来源。
ENUM_ORDER_TYPE 和OrderCalcMargin需要在此替换。仍然不清楚....
margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED)
и
double margin;
OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),margin);
返回不同的保证金数量以开立1手
仍然不清楚....
margin = MarketInfo(Symbol(), MODE_MARGINREQUIRED)
и
double margin;
OrderCalcMargin(ORDER_TYPE_BUY,Symbol(),1.0,SymbolInfoDouble(Symbol(),SYMBOL_ASK),margin);
返回不同的开仓手数的保证金
你们显然是在不同的终端上进行比较))。上面是MT4,下面是MT5。因此,服务器是不同的,交易条件是不同的。最简单的事情是不同的杠杆。
你实际得到了什么,价值是什么?
是的,这是正确的,杠杆是不同的,一个是1/300,另一个是1/2000。
谢谢
大家好!
我的EA使用多步骤搜索进入点,为此它首先从一开始就检查历史信号,然后实时工作。所以在策略测试器中,历史记录一切正常,但当我实时运行时,它不能正确扫描历史记录,错过了信号,这可能是什么问题?
也许有一个显而易见的答案,因为代码片段相当大,不能在这里公布,所以我还没有给出代码。
大家好!
我的EA使用多步骤搜索进入点,为此它首先从一开始就检查历史信号,然后实时工作。所以在策略测试器中,历史记录一切正常,但当我实时运行时,它不能正确扫描历史记录,错过了信号,这可能是什么问题?
也许有一个显而易见的答案,因为代码片段相当大,不能在这里公布,所以我还没有给出代码。
一步一步地进行调试。将历史扫描分离成一个脚本。使用Alert()输出详细信息:首先,历史上的条数,开始和结束日期,......。然后再进行扫描的过程。把它全部写到一个文件中 可能更方便
谢谢你的提示,我将阅读如何做到这一点。
我还有一个问题,当我运行实时调试时,Metatrader4总是在瑞士法郎上运行,有谁知道该如何调整才能使其在我需要的货币对上运行?
这是其他时间段的指标值,显然在测试器中没有被考虑。我也找到了正确配对的方法。 谢谢你的参与 )