Необходимо заменить объект CMoneyNone. Это класс манименеджмента, выдающий минимальный лот в любом случае.
Можно заменить на, скажем, CMoneyFixedLot - будет работать с фиксированным лотом.
Но, надо хоть немного разбираться в ООП.
И что-то у меня сомнение, чтобы советник по MACD без всяких дополнительных наворотов стал бы прибыльным, тем более, "на любых парах".
Необходимо заменить объект CMoneyNone. Это класс манименеджмента, выдающий минимальный лот в любом случае.
Можно заменить на, скажем, CMoneyFixedLot - будет работать с фиксированным лотом.
Но, надо хоть немного разбираться в ООП.
И что-то у меня сомнение, чтобы советник по MACD без всяких дополнительных наворотов стал бы прибыльным, тем более, "на любых парах".
так как замена CMoneyNone родила ошибку
Конечно, надо изменить немного. Ошибка-то в чем ? Что она говорит ?
Конечно, надо изменить немного. Ошибка-то в чем ? Что она говорит ?
'CMoneyFixedLot' - undeclared identifier
'money' - undeclared identifier ExpertMACD.mq5 104 20
'CMoneyFixedLot' - struct undefined ExpertMACD.mq5 104 30
'new' - expression of 'void' type is illegal ExpertMACD.mq5 104 26
'*' - l-value required ExpertMACD.mq5 104 19
'=' - l-value required ExpertMACD.mq5 104 25
104 это строчка CMoneyFixedLot *money=new CMoneyFixedLot;
113 это строчка if(!ExtExpert.InitMoney(money))
'CMoneyFixedLot' - undeclared identifier
Ну, неудивительно, вы создали объект, а описывать его кто будет ? Компилятор и написал, что он такого объекта не знает. С дальнейшими ошибками, повлекшими действия с неизвестным классом. Вы хоть немного бы думали над тем, что вам пишет компилятор в описании ошибки...
Класс описать надо.
К счастью, это сделали уже за вас в соответствующем .mqh-файле. Вам осталось включить в компиляцию этот .mqh-файл. (И можно удалить из компиляции файл с описанием класса CMoneyNone)
Можно так:
добавить входной параметр, например для торговли фиксированным лотом:
input double InpLot = 0.02; // Lot size
Добавить свой класс наследник от CMoneyNone и переписать методы CheckOpenLong и CheckOpenLong - отвечают за размер лота, в них вставить вашу логику определяющую размер лота:
class CMoneyNoneMy : public CMoneyNone { public: double CheckOpenLong(double price,double sl); double CheckOpenShort(double price,double sl); }; double CMoneyNoneMy::CheckOpenLong(double price,double sl){ return InpLot; } double CMoneyNoneMy::CheckOpenShort(double price,double sl){ return InpLot; }
и заменить строку
CMoneyNone *money=new CMoneyNone;
на свой класс
CMoneyNoneMy *money=new CMoneyNoneMy;
Можно так:
добавить входной параметр, например для торговли фиксированным лотом:
Добавить свой класс наследник от CMoneyNone и переписать методы CheckOpenLong и CheckOpenLong - отвечают за размер лота, в них вставить вашу логику определяющую размер лота:
и заменить строку
на свой класс
А без классов разве никак?!
Если без классов - дык и надо тогда писать советника без классов.
А у автора - изначально советник построен на классах из Стандартной Библиотеки. И теперь, если вписывать отсутствующую функциональность без классов - потребуется довольно много кода. А с классами - все очень просто.
Если без классов - дык и надо тогда писать советника без классов.
А у автора - изначально советник построен на классах из Стандартной Библиотеки. И теперь, если вписывать отсутствующую функциональность без классов - потребуется довольно много кода. А с классами - все очень просто.

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
доброго времени суток, недавно стал использовать данного советника, прибыльный на любых валютах но работает с минимальным лотом. ломал голову как заставить его изменить лот но ничего не получилось! помогите пожалуйста ну если не сделать увеличение лота автоматическим то хотябы менять его вручную.