[АРХИВ] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 3. - страница 309
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Это всё правильно: мусор за собой подчищать - правило хорошего тона...
Только в данном контексте как определить, что вот сейчас "мусор" подчистить нужно или наоборот: это не мусор - это нужные данные для дальнейших расчётов.
Как я понимаю, выполнять за собой уборку нужно в deinit(), но... он исполняется не только при удалении графика торгового инструмента, снятии с него советника, но и при смене рабочего ТФ. В данном случае все накопленные данные для ТФ будут утеряны и при возврате на прежний таймфрейм, советник начнёт работу заново с нулевым массивом. То же произойдёт и при изменении любого из параметров советника.
Получается, что в некоторых ситуациях "уборка мусора" - сложный логический процесс, а не простое изменение размера массива.
Ну это не сложно. В цикле проинициализировали массив значениями. Затем поработали с полученным массивом. Когда работа закончена, делаем его длиною в ноль. Если сомневаетесь, то это можно сделать в конце кода перед самым return(0).
Подскажите, пожалуйста, ниже код для чтения лог-файла. Автоматически читается текущий по дате лог-файл и выводится в принт.
Там, где:
происходит сборка файла из частей. Но мне нужен не весь файл, а только последняя строка. Помогите откорректировать, пожалуйста.
Ну это не сложно. В цикле проинициализировали массив значениями. Затем поработали с полученным массивом. Когда работа закончена, делаем его длиною в ноль. Если сомневаетесь, то это можно сделать в конце кода перед самым return(0).
Меня не поняли.
В контексте разговора (если я верно понял предпосылки данного разговора) циклом является сама работа советника. Ведь каждый раз, с приходом тика, массив либо увеличивается, либо остаётся неизменным в зависимости от необходимости записи в него нового значения.
Как определить, что работа закончена, а не просто человек, например, сменил таймфрейм? Да хоть случайно... При этом будет вызвана deinit() и все данные будут утеряны. Советник их начнёт накапливать (записывать в динамический массив) по-новой, исходя из значений, получаемых на новом ТФ (новый цикл).
Я об этом.
Меня не поняли.
В контексте разговора (если я верно понял предпосылки данного разговора) циклом является сама работа советника. Ведь каждый раз, с приходом тика, массив либо увеличивается, либо остаётся неизменным в зависимости от необходимости записи в него нового значения.
Как определить, что работа закончена, а не просто человек, например, сменил таймфрейм? Да хоть случайно... При этом будет вызвана deinit() и все данные будут утеряны. Советник их начнёт накапливать (записывать в динамический массив) по-новой, исходя из значений, получаемых на новом ТФ (новый цикл).
Я об этом.
Заметил одну особенность терминала. Расчет профита ордера не учитывает OrderSwap().
Т.е., чтобы закрыть ордер с профитом, надо использовать такую формулу:
(OrderProfit()+OrderSwap()+OrderCommission())>0
Никогда не работал с комиссией, а на демо комиссия не используется, потому не могу проверить на счете.
Мои расчеты верны?
Если вдаваться в детали, то можно использовать эту функцию. Она сообщит по какой причине деинициализация.
Совершенно верно... :)
Забыл о ней. Теперь, с моей привычкой использовать "защиту от дурака", бум юзать...
ObjectGetValueByShift() вам в помощь
А уж как вы там с ней работать собираетесь - только вам и известно...
Спасибо, добрый человек!
Народ подскажите можно ли изменить лот у отложенного ордера?
нет, нельзя
всё что можно изменить расписано здесь https://docs.mql4.com/ru/trading/OrderModify