Я попытался исправить несколько ошибок, но еще одна продолжает всплывать... Если цель была облегчить жизнь новичкам, то это становится все сложнее и сложнее, и я схожу с ума...
Отличная статья! Мне пришлось изменить две вещи, чтобы заставить его работать.
В файле "TableOrders.mqh" в этой функции bool CTableOrders::Add(ulong Ticket,double stop_loss,double take_profit) строка 89, переменная m_type должна быть заменена на:
Я попытался исправить несколько ошибок, но еще одна продолжает всплывать... Если цель была облегчить жизнь новичкам, то это становится все сложнее и сложнее, и я схожу с ума...
Помогите, пожалуйста!
Airton эта статья очень продвинутая для новичков, вы должны сначала понять концепцию объектно-ориентированной разработки приложений, иерархии, полиморфизм, наследование, виртуальные методы, то есть вы должны знать продвинутое программирование, ошибки в этих примерах однако связаны с объявлениями классов, в некоторых из них отсутствует ключевое слово public, которое вы должны вставить вручную, возможно предыдущая версия MQL не требовала этих ключевых слов для компиляции, но эта версия требует этого исправления.
'MACD_MA model.mq5' MACD_MA model.mq5 11'Trade.mqh' Trade.mqh 11'Object.mqh' Object.mqh 11'StdLibErr.mqh' StdLibErr.mqh 11'SymbolInfo.mqh' SymbolInfo.mqh 11'OrderInfo.mqh' OrderInfo.mqh 11'HistoryOrderInfo.mqh' HistoryOrderInfo.mqh 11'PositionInfo.mqh' PositionInfo.mqh 11'DealInfo.mqh' DealInfo.mqh 11'AccountInfo.mqh' AccountInfo.mqh 11'model_macd.mqh' model_macd.mqh 11'Model.mqh' Model.mqh 11'List.mqh' List.mqh 11'TableOrders.mqh' TableOrders.mqh 11'Time.mqh' Time.mqh 11'mm.mqh' mm.mqh 11'stdlib.mqh' stdlib.mqh 11'model_ma.mqh' model_ma.mqh 11'model_bollinger.mqh' model_bollinger.mqh 11returnvalue of 'OrderSelect' should be checked TableOrders.mqh 1204implicitenum conversion TableOrders.mqh 5044'new_message' - conversion is not accessible because of inheritance access Time.mqh 18521
possible use of uninitialized variable 'lot_limit' mm.mqh 12910't' - conversion is not accessible because of inheritance access Model.mqh 25227
declaration of 'trade' hides global variable Model.mqh 28216
see previous declaration of 'trade' MACD_MA model.mq5 188
declaration of 'i' hides local variable Model.mqh 31015
see previous declaration of 'i' Model.mqh 30712
possible loss of data due to type conversion Model.mqh 42847
possible loss of data due to type conversion model_macd.mqh 8611
possible loss of data due to type conversion model_macd.mqh 9014
possible loss of data due to type conversion model_macd.mqh 9114
possible loss of data due to type conversion model_macd.mqh 9216
expression not boolean model_macd.mqh 22811
expression not boolean model_macd.mqh 25411
possible loss of data due to type conversion model_ma.mqh 8511
possible loss of data due to type conversion model_ma.mqh 898
possible loss of data due to type conversion model_ma.mqh 9019
expression not boolean model_ma.mqh 21911
expression not boolean model_ma.mqh 24211
declaration of 'k_ATR' hides global variable model_bollinger.mqh 97110
see previous declaration of 'k_ATR' MACD_MA model.mq5 2516
possible loss of data due to type conversion model_bollinger.mqh 9922
possible loss of data due to type conversion model_bollinger.mqh 10422
possible loss of data due to type conversion model_bollinger.mqh 10722
variable 'rezult' not used model_bollinger.mqh 1709
variable 'rezult' not used model_bollinger.mqh 1959
expression not boolean model_bollinger.mqh 23811
expression not boolean model_bollinger.mqh 263112 errors, 25 warnings 326
class Test : public CObject {
public:
int i_;
Test(int i) {
i_ = i;
};
int get_i() {
return i_;
};
};
CList *list = new CList();
for (int i = 0; i < 10; i++) {
Test *t = new Test(i);
list.Add(t);
}
for (int i = 0; i < list.Total(); i++) {
Test *t = list.GetNodeAtIndex(i);
if (i == 5) {
list.DeleteCurrent();
}
if (CheckPointer(t) == POINTER_INVALID) {
continue;
}
Print(t.get_i());
}
После удаления узла с индексом 5 вы выполняете итерацию по индексу 6, но следующим элементом по-прежнему является индекс 5.
Лучше использовать GetFirstNode / GetNextNode.
for (Test *t = list.GetFirstNode(); t != NULL;) {
t_current = t;
if (t.get_i() == 5) {
list.DeleteCurrent();
t = list.GetCurrentNode();
if (t == t_current) {break;}
continue;
}
Print(t.get_i());
t = list.GetNextNode();
}
Спасибо, это отличная статья и хорошая основа. Именно то, что я искал.
Я планирую использовать его с реальными деньгами, это последняя версия?
Спасибо
Добрый день!
Я попытался исправить несколько ошибок, но еще одна продолжает всплывать... Если цель была облегчить жизнь новичкам, то это становится все сложнее и сложнее, и я схожу с ума...
Помогите, пожалуйста!
Отличная статья!
Мне пришлось изменить две вещи, чтобы заставить его работать.
В файле "TableOrders.mqh" в этой функции bool CTableOrders::Add(ulong Ticket,double stop_loss,double take_profit) строка 89, переменная m_type должна быть заменена на:
From:
m_type=order_info.Type();
To:
m_type=order_info.OrderType();
Второе также в файле "TableOrders.mqh":
From:
class CTableOrders : CObject
To:
class CTableOrders : public CObject
С уважением,
A. HUPP
Добрый день!
Я попытался исправить несколько ошибок, но еще одна продолжает всплывать... Если цель была облегчить жизнь новичкам, то это становится все сложнее и сложнее, и я схожу с ума...
Помогите, пожалуйста!
Airton эта статья очень продвинутая для новичков, вы должны сначала понять концепцию объектно-ориентированной разработки приложений, иерархии, полиморфизм, наследование, виртуальные методы, то есть вы должны знать продвинутое программирование, ошибки в этих примерах однако связаны с объявлениями классов, в некоторых из них отсутствует ключевое слово public, которое вы должны вставить вручную, возможно предыдущая версия MQL не требовала этих ключевых слов для компиляции, но эта версия требует этого исправления.
чтобы скомпилировать файл simple_model.mq5, мне пришлось добавить "public":
class CModel: public CObject в строке 12
При компиляции MACD_MA_model.mq5 я продолжаю получать эту ошибку:
'MODE_OPEN' - идентификатор перечислителя уже определен stdlib.mqh 13 4
Я не могу обойти эту ошибку, которая относится к базовой библиотеке.
Спасибо за вашу статью и попытку создать общий фреймворк для тестирования.
Чтобы скомпилировать файл simple_model.mq5, мне пришлось добавить "public":
class CModel: public CObject в строке 12
При компиляции MACD_MA_model.mq5 я продолжаю получать эту ошибку:
'MODE_OPEN' - идентификатор перечислителя уже определен stdlib.mqh 13 4
Я не могу обойти эту ошибку, которая относится к базовой библиотеке.
Спасибо за вашу статью и попытку создать общий фреймворк для тестирования.
https://www.mql5.com/en/forum/244512
Попробовал откломпилировать, получил ошибки
Планируется исправить код?
min_risk = point * tick_value * symbol_info_.LotsStep();
следует использовать подсчет тиков вместо подсчета пунктов.
tick_count = MathAbs(open_price - stop_loss) / symbol_info_.TickSize();
потому что в некоторых символах размер тика != пункт
например:
Futures\Agricultural Commodities\#Coffee_H21:
Не следует удалять узел при итерации списка.
Например:
После удаления узла с индексом 5 вы выполняете итерацию по индексу 6, но следующим элементом по-прежнему является индекс 5.
Лучше использовать GetFirstNode / GetNextNode.
Спасибо за ваш вклад!