Всем привет. Пишу функцию для расчёта фиксированного торгового лота.
//---ФУНКЦИЯ РАСЧЁТА ФИКСИРОВАННОГО ТОРГОВОГО ЛОТА НАЧАЛО----------------------------------------------------------------------------------------------+double f__fix_lot(double param_fix_lot)
{//---СКОБКА ФУНКЦИИ РАСЧЁТА ТОРГОВОГО ЛОТА ОТКРЫВАЮЩАЯСЯ----------------------------------------------------------------------------------------------+double lokal_lot= param_fix_lot; // ЛОТУ В ФУНКЦИИ ПРИСВАЕВАЕМ ЛОТ ПЕРЕДАННЫЙ В ФУНКЦИЮif(lokal_lot > max_lot) lokal_lot= max_lot; // ЕСЛИ ЛОКАЛ ЛОТО БЛЬШЕ МАКСИМАЛЬНО ВОЗМОЖНОГО ЛОТА ТО ПРИСВАЕМ ЛОТУ МАКСИМАЛЬНЫЙ ЛОТif(lokal_lot < min_lot) lokal_lot= min_lot; //ЕСЛИ ЛОКАЛ ЛОТ МЕНЬШЕ МИНИМАЬЛНО ВОЗМОЖНОГО ЛОТА Т ОПОКАЛ ЛОУ ПРИСВОЕВАЕМ МИНИМАЛЬНО ВОЗМОЖНЫЙ ЛОТreturn(lokal_lot);
}//---СКОБКА ФУНКЦИИ РАСЧЁТА ТОРГОВОГО ЛОТА ЗАКРЫВАЮЩАЯСЯ----------------------------------------------------------------------------------------------+
При использовании функции всё даже и работает, если лот ставлю сильно маленький то он пересчитывается в минимально возможный, а если сильно большой то пересчитывается в максимально возможный лот. Но есть проблема следующего плана- если депозит к примеру 100 долларов в тесте, а я лот задам в 999999999999 то появляется ошибка OrderSend error 134- Недостаточно денег для совершения операции. Как функцию переделать так, чтобы если лот сильно большойзадал, то рассчитается максимально возможный лот для конкретного депозита?
Всем привет. Пишу функцию для расчёта фиксированного торгового лота.
При использовании функции всё даже и работает, если лот ставлю сильно маленький то он пересчитывается в минимально возможный, а если сильно большой то пересчитывается в максимально возможный лот. Но есть проблема следующего плана- если депозит к примеру 100 долларов в тесте, а я лот задам в 999999999999 то появляется ошибка OrderSend error 134- Недостаточно денег для совершения операции. Как функцию переделать так, чтобы если лот сильно большойзадал, то рассчитается максимально возможный лот для конкретного депозита?
input double Lots=0.2;
input double Prots=0.2;
// входные данные
double CheckMoneyForTrade()
{
RefreshRates(); // Обновление данныхdouble Min_Lot=MarketInfo(Symbol(),MODE_MINLOT); // Миним. колич. лотовdouble Max_Lot=MarketInfo(Symbol(),MODE_MAXLOT);
double Free =AccountFreeMargin(); // Свободн средстваdouble CostOneLot=MarketInfo(Symbol(),MODE_MARGINREQUIRED);// Стоимость 1 лотаdouble Step =MarketInfo(Symbol(),MODE_LOTSTEP); // Шаг изменен размераdouble CostMinLot = CostOneLot * Min_Lot; // Стоимость минимального лотаdouble lts=0.0;
if(Lots > 0) // Если заданы лоты,то
lts =Lots; // с ними и работаемelse// % свободных средств
lts=MathFloor(Free*Prots/CostOneLot/Step)*Step;// Для открытияif(lang)Alert("Расчет лота ", lts," Min_Lot ",Min_Lot," Free Margin ",ND(Free)," Стоимость лота ",lts*CostOneLot," CostOneLot ",CostOneLot," Step ",Step);
elseAlert("Calc Lot ", lts," Min_Lot ",Min_Lot," Free Margin ",ND(Free)," Lts*CostOneLot ",lts*CostOneLot," CostOneLot ",CostOneLot," Step ",Step);
if(lts > Max_Lot)
lts=Max_Lot;
if(lts < Min_Lot)
lts=Min_Lot; // Не меньше минимальнdouble CostLts = lts*CostOneLot; // Стоимость лотаif(CostMinLot > Free)
{
if(lang) Alert("Не хватает средств на минимальный лот: Свободных средств ", ND(Free), " стоимость Мин Лота ", ND(CostMinLot));
elseAlert(" Not enough money for min lot: Free Margin ",ND(Free)," Cost Min Lot ",ND(CostMinLot));
Work=false;
return(0.0) ;
}
if(CostLts> Free)
{
if(lang) Alert("Стоимость лота больше свободных средств, уменьшим его: CostLts ",ND(CostLts)," Свободных средств ", ND(Free) );
elseAlert("The cost of the lot is more than available funds, we will reduce it: CostLts ",ND(CostLts)," Free Margin ", ND(Free) );
lts=MathFloor(0.9*Free/CostOneLot/Step)*Step;// Для открытияif(lang) Alert("Уменьшенный лот: Lot ", lts," Free Margin ",Free," стоимость лота ",lts*CostOneLot," CostOneLot ",CostOneLot," Step ",Step);
elseAlert("Reduce Lot ", lts," Free Margin ",Free," Cost lot ",lts*CostOneLot," CostOneLot ",CostOneLot," Step ",Step);
}
return(lts);
}
double ND(double par)
{
par=NormalizeDouble(par,Digits);
return(par);
}
Вот этот ChatGPT мне код такой даёт, а компилятор ругается - как ему на ошибку то указать?
class type expected, pointer to type 'Node'is not allowed IsolationForest_V_01.mq5 239
undefined struct'Node' cannot be used IsolationForest_V_01.mq5 2311
see declaration of struct'Node' IsolationForest_V_01.mq5 198class type expected, pointer to type 'Node'is not allowed IsolationForest_V_01.mq5 249
undefined struct'Node' cannot be used IsolationForest_V_01.mq5 2411
see declaration of struct'Node' IsolationForest_V_01.mq5 1984 errors, 0 warnings 51
Вот этот ChatGPT мне код такой даёт, а компилятор ругается - как ему на ошибку то указать?
К сожалению ничего не смыслю в ООП :(
Что и требовалось доказать))) А прикол в том, что NN не увидела различий м/у с++ или даже с и mql (лично для меня, так вполне ожидаемо), соответственно и код на нем сгенерила)
Вы правы, ошибка компиляции возникает из-за того, что структура Node содержит поля left и right , которые ссылаются на экземпляры того же типа Node . Такая рекурсивная ссылка в структуре не допускается.
Вместо использования структуры, можно использовать указатели на узлы внутри структуры, чтобы избежать рекурсивной ссылки. Вот исправленный код:
" И так пару раз по кругу по сути. Чёт он не поймёт, что для MQL5 так нельзя.
Может кто может поправить его код? Если я тут выложу?
Vladimir Simakov #: Что и требовалось доказать))) А прикол в том, что NN не увидела различий м/у с++ или даже с и mql (лично для меня, так вполне ожидаемо), соответственно и код на нем сгенерила)
В начале там был код ближе к C - со всякими массивами с указателями, я напомнил, что хочу код на MQL5, и вот выдал...
Vladimir Simakov #: Что и требовалось доказать))) А прикол в том, что NN не увидела различий м/у с++ или даже с и mql (лично для меня, так вполне ожидаемо), соответственно и код на нем сгенерила)
Алексей там всего несколько вещей нужно понять, просто не по лениться
Владимир Симаков кстати таинственный специалист, иногда выскакивает
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Спасибо за совет. Но это не поможет. Нужно точное изменение где то в реестре. Короче прошу откликнуться спеца по винде7
А вручную файлы в этих папках создаются?
Системный журнал смотреть в момент создания файла, может что напишет.
Восстановиться...
Всем привет. Пишу функцию для расчёта фиксированного торгового лота.
При использовании функции всё даже и работает, если лот ставлю сильно маленький то он пересчитывается в минимально возможный, а если сильно большой то пересчитывается в максимально возможный лот. Но есть проблема следующего плана- если депозит к примеру 100 долларов в тесте, а я лот задам в 999999999999 то появляется ошибка OrderSend error 134- Недостаточно денег для совершения операции. Как функцию переделать так, чтобы если лот сильно большой задал, то рассчитается максимально возможный лот для конкретного депозита?
Всем привет. Пишу функцию для расчёта фиксированного торгового лота.
При использовании функции всё даже и работает, если лот ставлю сильно маленький то он пересчитывается в минимально возможный, а если сильно большой то пересчитывается в максимально возможный лот. Но есть проблема следующего плана- если депозит к примеру 100 долларов в тесте, а я лот задам в 999999999999 то появляется ошибка OrderSend error 134- Недостаточно денег для совершения операции. Как функцию переделать так, чтобы если лот сильно большой задал, то рассчитается максимально возможный лот для конкретного депозита?
Так можно писать?
Вот этот ChatGPT мне код такой даёт, а компилятор ругается - как ему на ошибку то указать?
К сожалению ничего не смыслю в ООП :(
Так можно писать?
Вот этот ChatGPT мне код такой даёт, а компилятор ругается - как ему на ошибку то указать?
К сожалению ничего не смыслю в ООП :(
Так можно писать?
Вот этот ChatGPT мне код такой даёт, а компилятор ругается - как ему на ошибку то указать?
К сожалению ничего не смыслю в ООП :(
Как то странно, имя структуры вроде нельзя использовать для имени поля структуры. Это видимо из другого языка.
Он пробовал и так
Я ему " что за тип "Node "? "
А он
"
Вы правы, ошибка компиляции возникает из-за того, что структура Node содержит поля left и right , которые ссылаются на экземпляры того же типа Node . Такая рекурсивная ссылка в структуре не допускается.
Вместо использования структуры, можно использовать указатели на узлы внутри структуры, чтобы избежать рекурсивной ссылки. Вот исправленный код:
"
И так пару раз по кругу по сути. Чёт он не поймёт, что для MQL5 так нельзя.
Может кто может поправить его код? Если я тут выложу?
Что и требовалось доказать))) А прикол в том, что NN не увидела различий м/у с++ или даже с и mql (лично для меня, так вполне ожидаемо), соответственно и код на нем сгенерила)
В начале там был код ближе к C - со всякими массивами с указателями, я напомнил, что хочу код на MQL5, и вот выдал...
Что и требовалось доказать))) А прикол в том, что NN не увидела различий м/у с++ или даже с и mql (лично для меня, так вполне ожидаемо), соответственно и код на нем сгенерила)
Алексей там всего несколько вещей нужно понять, просто не по лениться
Владимир Симаков кстати таинственный специалист, иногда выскакиваетАлексей там всего несколько вещей нужно понять, просто не по лениться
Владимир Симаков кстати таинственный специалист, иногда выскакиваетПонять о чём, о СИ?