Все продукты Маркета перед публикацией проходят обязательную предварительную проверку, так как небольшая ошибка в логике советника или индикатора может привести к убыткам на торговом счете. Именно поэтому нами разработана серия базовых проверок, призванных обеспечить необходимый уровень качества продуктов Маркета. Если в процессе проверки...
bool CheckMoneyForTrade(string symb,double lots,ENUM_ORDER_TYPE type)
{
//--- получим цену открытияMqlTick mqltick;
SymbolInfoTick(symb,mqltick);
double price=mqltick.ask;
if(type==ORDER_TYPE_SELL)
price=mqltick.bid;
//--- значения необходимой и свободной маржиdouble margin,free_margin=AccountInfoDouble(ACCOUNT_MARGIN_FREE);
//--- вызовем функцию проверкиif(!OrderCalcMargin(type,symb,lots,price,margin))
{
//--- что-то пошло не так, сообщим и вернем falsePrint("Error in ",__FUNCTION__," code=",GetLastError());
return(false);
}
//--- если не хватает средств на проведение операцииif(margin>free_margin)
{
//--- сообщим об ошибке и вернем falsePrint("Not enough money for ",EnumToString(type)," ",lots," ",symb," Error code=",GetLastError());
return(false);
}
//--- проверка прошла успешноreturn(true);
}
//--- вызовем функцию проверкиif(!OrderCalcMargin(type,symb,lots,price,margin))
{
//--- что-то пошло не так, сообщим и вернем falsePrint("Error in ",__FUNCTION__," code=",GetLastError());
return(false);
}
//--- если не хватает средств на проведение операцииif(margin>free_margin)
{
//--- сообщим об ошибке и вернем falsePrint("Not enough money for ",EnumToString(type)," ",lots," ",symb," Error code=",GetLastError());
return(false);
}
我不建议你这样写。如果系统不能为阵列分配所需的内存量,程序将继续安静地运行,导致不可预知的后果。
我不建议你这样写。如果系统不能为阵列分配所需的内存量,程序将继续安静地运行,导致不可预知的后果。
我一定要把它放在真正的账户上。
关于交易、自动交易系统和测试交易策略的论坛
图书馆:HistoryTicks
fxsaber, 2019.09.10 18:58
关于交易、自动交易系统和交易策略测试的论坛
图书馆:HistoryTicks
fxsaber, 2018.12.10 13:55
如果你在任何MT4/5专家顾问的开头写上以下一行然后在执行ArrayResize或ArrayCopy时出现错误时得到详细的通知。
这可以让你看到在通过数组传递信息时难以识别的问题,但更重要的是,得到EA因数组超出范围 而停止的信息(不是EA的错)。例如,由于缺乏内存或其他一些故障。换句话说,你会马上知道EA发生了异常停止,而不是在几个小时后才意外地注意到它。
HistoryTicks库已经包含了这一行(不需要添加),因为工具的主要目的--在真实账户上与Expert Advisors作战。
在航站楼的日志中,只有另一个项目有这样的记录。
由于插入了这一行,在用户日志中可以看到所发生的详细情况
请建议在MQL5中对MQL4函数MarketInfo(asymbol, MODE_MARGIN_REQUIRED)进行模拟。
我需要获得开1手买入所需的自由资金数额。
我尝试了MQL5中SymbolInfoDouble(symbol, ...)函数的不同变体,我找不到正确的变体,它到处都返回0。
请建议在MQL5中对MQL4函数MarketInfo(asymbol, MODE_MARGIN_REQUIRED)进行模拟。
我需要获得开1手买入所需的自由资金数额。
我尝试了MQL5中SymbolInfoDouble(symbol, ...)函数的不同变体,我找不到正确的变体,它到处都返回0。
https://www.mql5.com/ru/articles/2555#not_enough_money
https://www.mql5.com/ru/articles/2555#not_enough_money
我很抱歉,我不明白为什么需要这个链接。我在那里没有看到我问题的答案。
我很抱歉,我不明白为什么需要这个链接。我在那里没有看到我问题的答案。
你在这篇文章中到底没有看到什么?
检查的例子。
MQL5
你在这篇文章中到底没有看到什么?
检查的例子。
MQL5
你需要获得开1手买入所需的自由资金数额。
文章中的检查与此有什么关系?
需要获得打开1个地段购买所需的可用资金数额。
文章中的支票与此有什么关系?
因为这篇文章教导人们要勤奋地学习材料。
这个例子甚至给了你完整的功能,让你在发送交易指令前进行检查。
一。
并立即进行参考。
帐户余额
账户中可用于开仓的存款货币的自由资金规模
帐户信息双倍
和两个是最低限度的检查。
需要获得打开1个地段购买所需的可用资金数额。
文章中的支票与此有什么关系?
没想到你会在阅读短代码时遇到困难,那么请阅读帮助https://www.mql5.com/ru/docs/trading/ordercalcmargin。
虽然这篇文章教导人们要勤奋学习材料。
这个例子甚至给出了在发送交易订单之前进行检查的全部功能。
一。
并立即进行了参考。
帐户余额
账户中可用于开仓的存款货币的自由资金规模
帐户信息双倍
和两个--最低限度的检查。
账户中以存款货币计算的自由资金规模,可用于开立我不需要的头寸
我以余额的百分比来计算手数。
我需要得到开1手买入所需的可用资金 数额。