однозначно у вас проблемы в коде. на компилятор тут уже нет нареканий.
проверяйте какой тип AvailableLots.
также учитывайте, что
однозначно у вас проблемы в коде. на компилятор тут уже нет нареканий.
проверяйте какой тип AvailableLots.
также учитывайте, что
AvailableLots типа double, рассчитывается корректно. Да и я специально же пробовал присвоить массиву просто фиксированное значение, а не значение переменной - результат один и тот же. Сама не понимаю, что за мистика...
AvailableLots типа double, рассчитывается корректно. Да и я специально же пробовал присвоить массиву просто фиксированное значение, а не значение переменной - результат один и тот же. Сама не понимаю, что за мистика...
Да нет никакой мистики. Немцы говорят : "Если у Вас что-либо не получилось с 3-го раза - прочтите наконец то инструкцию".
https://book.mql4.com/ru/variables/arrays
Массивы размещать надо - то есть выделять память под элементы массива.
double OrderLotSize[]; int Start() { int N=10; ................ ArrayResize(OrderLotSize,N); } //============================================================== или так : double OrderLotSize[10];
- Вы же только указатель( в терминах языка С) на массив объявили
double OrderLotSize[]; - // У МАССИВА НЕТ ЭЛЕМЕНТОВ, ТОЧНЕЕ ЭТО НЕ ОБЪЯВЛЕНИЕ МАССИВА
, память не выделили ( память не выделена, соответственно записывать значения некуда. С-шная прога с крешем свалила бы терминал, а так свой менеджер памяти - позволяет всякие вольности).
Удачи.
Да нет никакой мистики. Немцы говорят : "Если у Вас что-либо не получилось с 3-го раза - прочтите наконец то инструкцию".
https://book.mql4.com/ru/variables/arrays
Массивы размещать надо - то есть выделять память под элементы массива.
- Вы же только указатель( в терминах языка С) на массив объявили
, память не выделили ( память не выделена, соответственно записывать значения некуда. С-шная прога с крешем свалила бы терминал, а так свой менеджер памяти - позволяет всякие вольности).
Удачи.
Спасибо огромное за детальный ответ, моя ошибка, просмотрел. Теперь работает отлично.
Да нет никакой мистики. Немцы говорят : "Если у Вас что-либо не получилось с 3-го раза - прочтите наконец то инструкцию".
https://book.mql4.com/ru/variables/arrays
Массивы размещать надо - то есть выделять память под элементы массива.
- Вы же только указатель( в терминах языка С) на массив объявили
, память не выделили ( память не выделена, соответственно записывать значения некуда. С-шная прога с крешем свалила бы терминал, а так свой менеджер памяти - позволяет всякие вольности).
Удачи.
Дай бог тебе здоровья, добрый молодец! Полночи вчера протупил, весь яндекс излазил, а на твою последнюю ссылку и не нажал в отчаянии, а сегодня взял-таки и добил её, и вот оно решение! :)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Столкнулся с такой проблемой. собственно сначала покажу необходимый код, чтобы нагляднее сразу было:
--в глобальных переменных
double OrderLotSize[];
int j;
...
--в start()
...
MinLot = MarketInfo(Symbol(),MODE_LOTSTEP);
LotCost = MarketInfo(Symbol(), MODE_MARGINREQUIRED);
AvailableMargin = AccountFreeMargin();
OrderSize = MaxOrderValue*0.01*AvailableMargin;
AvailableLots = MathFloor((OrderSize/LotCost)/MinLot)*MinLot;
Print("AvailableLots:", AvailableLots);
if(AvailableLots <= 10)
{
j=0;
OrderLotSize[j]=AvailableLots;
Print("OrderLotSize:", OrderLotSize[j]);
}
...
-------------------------------
Так вот, при любом значении AvailableLots в массив пишется 0ю. например, если AvailableLots рассчиталось как 1.15, то в массив в ячейку с нулевым индексом запиештся 0, а не это число.
Попробовал посмотреть что происходит, когда записываю в массив в этом коде просто вещественное число - записывается опять же 0:
...
if(AvailableLots <= 10)
{
j=0;
OrderLotSize[j]=2.34;
Print("OrderLotSize:", OrderLotSize[j]);
}
...
Кто сталкивался с подобным, в чём тут может быть проблема? До этого момента в коде этот счётчик (j) и массив нигде не используются.