Какие проверки должен пройти торговый робот перед публикацией в Маркете - статья:
Перед каждой отправкой торгового приказа необходимо проверять достаточность средств на вашем счете. Нехватка средств для обеспечения будущей открытой позиции или ордера считается грубой ошибкой.
... и так далее, начиная с этого абзаца https://www.mql5.com/ru/articles/2555#not_enough_money (там есть коды, которые нужны в советнике - для МТ4 и МТ5).
- www.mql5.com
при загрузке робота для публикации показывает ошибку как её исправить о чём она говорит ?
Денег не хватает.
У Вас в сообщение вставлена ссылка на статью. Чтобы перейти по ссылке, нужно кликнуть по ней левой кнопкой мышки:

откроется статья сразу в месте описания действий при получении этой ошибки.
Какие проверки должен пройти торговый робот перед публикацией в Маркете - статья:
Перед каждой отправкой торгового приказа необходимо проверять достаточность средств на вашем счете. Нехватка средств для обеспечения будущей открытой позиции или ордера считается грубой ошибкой.
... и так далее, начиная с этого абзаца https://www.mql5.com/ru/articles/2555#not_enough_money (там есть коды, которые нужны в советнике - для МТ4 и МТ5).
подскажите пожалуйста какую строку добавить в код и куда именно её вставить ?
MQL5
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))
{
//--- что-то пошло не так, сообщим и вернем false
Print("Error in ",__FUNCTION__," code=",GetLastError());
return(false);
}
//--- если не хватает средств на проведение операции
if(margin>free_margin)
{
//--- сообщим об ошибке и вернем false
Print("Not enough money for ",EnumToString(type)," ",lots," ",symb," Error code=",GetLastError());
при загрузке робота для публикации показывает ошибку как её исправить о чём она говорит ?
Отчет тестирования версии 1.0
Состояние тестирования: Тестирование завершилось с ошибками
- Количество ошибок21
- Запущен2024.07.09 17:35:26
- Завершено2024.07.09 17:35:49
- ТипЭксперт
test on EURUSD,H1 (netting) 2021.08.23 20:00:00 current account state: Balance: 238.10, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.63, FreeMargin: -11.93 2021.08.23 20:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.78, FreeMargin: -12.08 2021.08.23 20:00:00 not enough money [instant buy 0.4 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893] 2021.08.23 20:00:00 failed instant buy 0.4 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893 [No money] 2021.08.23 20:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 20:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.79, FreeMargin: -12.09 2021.08.23 20:00:00 not enough money [instant buy 0.2 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893] 2021.08.23 20:00:00 failed instant buy 0.2 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893 [No money] 2021.08.23 21:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 21:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.87, FreeMargin: -12.17 2021.08.23 21:00:00 not enough money [instant buy 0.2 EURUSD at 1.17435 sl: 1.16935 tp: 1.17935] 2021.08.23 21:00:00 failed instant buy 0.2 EURUSD at 1.17435 sl: 1.16935 tp: 1.17935 [No money] 2021.08.23 22:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 22:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.97, FreeMargin: -12.27 2021.08.23 22:00:00 not enough money [instant buy 0.2 EURUSD at 1.17483 sl: 1.16983 tp: 1.17983] 2021.08.23 22:00:00 failed instant buy 0.2 EURUSD at 1.17483 sl: 1.16983 tp: 1.17983 [No money] 2021.08.23 23:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 23:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.93, FreeMargin: -12.23 2021.08.23 23:00:00 not enough money [instant sell 0.2 EURUSD at 1.17467 sl: 1.17967 tp: 1.16967] 2021.08.23 23:00:00 failed instant sell 0.2 EURUSD at 1.17467 sl: 1.17967 tp: 1.16967 [No money] 2021.08.24 00:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulat
Не рановато ли такую лажу выставлять на продажу ?!
//+---------------------------------------------------------------------------------------------------------------------------+ //+--- int OpenPosition(string symb, int op, double ll, int Slippage, int sl, int tp, string comment, int mn,color Color) ---+ //+---------------------------------------------------------------------------------------------------------------------------+ bool OpenPos(const int v_tip, const double v_lot, const double v_pr=NULL, const int v_stop=NULL, const int v_take=NULL, const string v_comm=NULL ) { if(!Conect()) return(false); trd.SetExpertMagicNumber(Magic); trd.SetDeviationInPoints(Input7); double op=NULL,sl=NULL,tp=NULL; switch(v_tip) { case 0: for(int i=0; i<1; i++) { op=NormalizeDouble(sy.Ask(),(int)SymbolInfoInteger(sy.Name(),SYMBOL_DIGITS)); if(!FreeMoney(sy.Name(),ORDER_TYPE_BUY,op,v_lot)) return(false); sl=(v_stop>NULL) ? (op-NormE(sy.Name(),v_stop)*SymbolInfoDouble(sy.Name(),SYMBOL_POINT)) : NULL; tp=(v_take>NULL) ? (op+NormE(sy.Name(),v_take)*SymbolInfoDouble(sy.Name(),SYMBOL_POINT)) : NULL; if(trd.Buy(NormL(sy.Name(),v_lot),sy.Name(),op,sl,tp,(v_comm==NULL) ?"" :v_comm)) { return(true); } Sleep(100); } break; case 1: for(int i=0; i<1; i++) { op=NormalizeDouble(sy.Bid(),(int)SymbolInfoInteger(sy.Name(),SYMBOL_DIGITS)); if(!FreeMoney(sy.Name(),ORDER_TYPE_SELL,op,v_lot)) return(false); sl=(v_stop>NULL) ? (op+NormE(sy.Name(),v_stop)*SymbolInfoDouble(sy.Name(),SYMBOL_POINT)) : NULL; tp=(v_take>NULL) ? (op-NormE(sy.Name(),v_take)*SymbolInfoDouble(sy.Name(),SYMBOL_POINT)) : NULL; if(trd.Sell(NormL(sy.Name(),v_lot),sy.Name(),op,sl,tp,(v_comm==NULL) ?"" :v_comm)) { return(true); } Sleep(100); } break; } return(false); }
bool FreeMoney(const string v_sym, const ENUM_ORDER_TYPE v_tip, const double v_opr, const double v_lot ) { static string txt=NULL; if(acc.MaxLotCheck(v_sym,v_tip,v_opr)>NormL(v_sym,v_lot)) { if(txt!=NULL) txt=NULL; return(true); } string text="There is not enough money to open a position"; if(txt!=text) { Print(text); txt=text; } return(false); }
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
при загрузке робота для публикации показывает ошибку как её исправить о чём она говорит ?
Отчет тестирования версии 1.0
Состояние тестирования: Тестирование завершилось с ошибками
test on EURUSD,H1 (netting) 2021.08.23 20:00:00 current account state: Balance: 238.10, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.63, FreeMargin: -11.93 2021.08.23 20:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.78, FreeMargin: -12.08 2021.08.23 20:00:00 not enough money [instant buy 0.4 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893] 2021.08.23 20:00:00 failed instant buy 0.4 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893 [No money] 2021.08.23 20:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 20:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.79, FreeMargin: -12.09 2021.08.23 20:00:00 not enough money [instant buy 0.2 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893] 2021.08.23 20:00:00 failed instant buy 0.2 EURUSD at 1.17393 sl: 1.16893 tp: 1.17893 [No money] 2021.08.23 21:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 21:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.87, FreeMargin: -12.17 2021.08.23 21:00:00 not enough money [instant buy 0.2 EURUSD at 1.17435 sl: 1.16935 tp: 1.17935] 2021.08.23 21:00:00 failed instant buy 0.2 EURUSD at 1.17435 sl: 1.16935 tp: 1.17935 [No money] 2021.08.23 22:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 22:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.97, FreeMargin: -12.27 2021.08.23 22:00:00 not enough money [instant buy 0.2 EURUSD at 1.17483 sl: 1.16983 tp: 1.17983] 2021.08.23 22:00:00 failed instant buy 0.2 EURUSD at 1.17483 sl: 1.16983 tp: 1.17983 [No money] 2021.08.23 23:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulated: 0.00, Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 0.00, FreeMargin: 222.70 2021.08.23 23:00:00 calculated account state: Assets: 0.00, Liabilities: 0.00, Equity 222.70, Margin: 234.93, FreeMargin: -12.23 2021.08.23 23:00:00 not enough money [instant sell 0.2 EURUSD at 1.17467 sl: 1.17967 tp: 1.16967] 2021.08.23 23:00:00 failed instant sell 0.2 EURUSD at 1.17467 sl: 1.17967 tp: 1.16967 [No money] 2021.08.24 00:00:00 current account state: Balance: 222.70, Credit: 0.00, Commission: 0.00, Accumulat