Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
одна только конструкция приведённая ниже чего стоит.
чуть причешем
и уже становится понятно, что, в какой последовательности выполняется. Это только форматирование. А ведь ещё можно разбивать код на логически целостные операции и выделять их в отдельные функции. Облегчая тем самым основной алгоритм от нагромождений перемешанного кода.
Беда в дублировании кода, в чрезмерно большом количестве условных операторов. По факту, код состоит из 99% строк так или иначе включающих условный оператор If, уверен, если разобраться, наверняка количество сравнений можно сократить раз в 10. Это не только тормозит исполнение, такой код трудно читаем. У человека вносящего в него дополнения как минимум 2 основных задачи:
1 - не сломать
2 - добавить нужный функционал
Не читаемый код, так или иначе приводит к дополнительному дублированию всевозможных проверок, сравнений - а это опять дополнительные расходы. Глядя в код, лично я вспоминаю себя лет эдак 25 назад, когда программировать только начинал, причём учился этому по инструкции к ПК Atari 800ХL без учителей, просто потому, что было интересно.
Это конечно интересно, о каких "if" идет речь, там видимо есть мое ТЗ - где я пишу "если так, то так", а программист так и интерпретирует это в коде, а есть "if" относящийся к непосредственной работе с ордерами, и операций с ордерами очень много...
Конечно я думал что дело в каком то цикле, выполнение которого приводит к многократному выполнению проверки условий ТЗ. А выходит дело, что исправить ситуацию можно только переписав код с нуля?
одна только конструкция приведённая ниже чего стоит.
чуть причешем
и уже становится понятно, что, в какой последовательности выполняется. Это только форматирование. А ведь ещё можно разбивать код на логически целостные операции и выделять их в отдельные функции. Облегчая тем самым основной алгоритм от нагромождений перемешанного кода.
А на производительность это разве как то влияет?
Беда в дублировании кода
одна только конструкция приведённая ниже чего стоит.
чуть причешем
и уже становится понятно, что, в какой последовательности выполняется. Это только форматирование. А ведь ещё можно разбивать код на логически целостные операции и выделять их в отдельные функции. Облегчая тем самым основной алгоритм от нагромождений перемешанного кода.
rev 1.1
Для выставления стоп лосса и фильтрации отложенных ордеров используем два варианта применения зеркального МА.
maMirror - рассчитывается на основании стандартной функции iMA, работает один раз на бар, данные беруться по ценам открытия бара
Алгоритм расчета:
Для продажи:
начальная точка расчета maMirror=iMA+pipsXHmaM(o/b)
последующие точки расчета maMirror=maMirror(1)-(iMA(0)+pipsXHmaM(o/b)-iMA(1)+pipsXHmaM(o/b))
расчет завершается после точки окончания расчета.
Для покупки:
начальная точка расчета maMirror=iMA-pipsXHmaL
последующие точки расчета maMirror=maMirror(1)-(iMA(0)-pipsXLmaM-iMA(1)-pipsXLmaM)
расчет завершается после точки окончания расчета.
Для упрощения ТЗ необходимо ставить два блока расчета, которые будут независимы по работе и переменным, и настраиваются пользователем
maMBlock=0 - не использовать блоки (используется стандартный стоп лосс)
maMBlock=1 - использовать только блок №1
maMBlock=2 - использовать только блок №2 (используется стандартный стоп лосс)
maMBlock=3 - использовать оба блока
Блок №1
Расчет выставления стоп лосса. Стоп лосс пересчитывается и ордер модернизируется при каждом баре на значение maMirror.
1. Для определения точки начала отсчета для вычисления расчета используется переменная StartPoint, если StartPoint=1 (расчет происходит после касания maT), если StartPoint=2 (расчет происходит после открытия ордера).
1.1 Если StartPointO=1 то окончание расчета происходит после касания maT;
1.2.Если StartPointO=2 то окончание расчета происходит после закрытия ордера;
1.3. Если выставить стоп лосс нельзя по maMirror, то ордер закрывается.
1.4. Levl_Zerro=0 (не используем), Levl_Zerro!=0 (модернизируем стоп лосс до максимально заданного значения отсчет идет от цены открытия, отрицательное значение значит что стоп лосс переводиться в положительное значение)
Блок №2
Расчет фильтрации выставления отложенных ордеров.
0.1 Для покупки ордера выставляются если maMirror>цены открытия отложенного ордера
0.2 Для продажи ордера выставляются если maMirror<цены открытия отложенного ордера
1. Для определения точки начала отсчета для вычисления расчета используется переменная StartPoint, если StartPoint=1 (расчет происходит после касания maT), если StartPoint=2 (расчет происходит после открытия ордера).
1.1 Если StartPointB=1 то окончание расчета происходит после касания maT;
1.2. Если StartPointB=2 то окончание расчета происходит после закрытия ордера;
2. Если maMirrorDell=0 (не используется) maMirrorDell=1 (удаляются все открытые ордера при несовпадении условий из пункта 0)
Пользовательские переменные
maMirrorO (настройки по iMA)
maMirrorB (настройки по iMA)
StartPointO
StartPointB
pipsXHmaMo
pipsXLmaMo
pipsXHmaMb
pipsXLmaMb
maMBlock
maMirrorDell
Помогите оценить задание, заказчик хочет новую работу, не знаю во сколько оценить) Так как я не программист, я инженер аэрокосмической академии)
А на производительность это разве как то влияет?
Очень у вас веские аргументы, ваш код, где можно посмотреть опытного программиста?
Дублирование ни при чем, ифы тоже. Реальное замедление дает работа с ордерами.
Работа с ордерами в коде по ТЗ, а может ТЗ само, или работа MT4 с ордерами вообще?