Господа программисты, доброго дня!
Сов в настройках, куда лазил тоже. При таких настройках выдает 4051 ошибку в журнале. Просьба доковырять, чтобы этого не было
Посмотреть вложение 396316Посмотреть вложение 396318
131 - Неправильный объемПосмотреть вложение 396329
UPD
советник работает так как надо
но в журнале еще и эта ошибка нарисовалась
Да это здорово, меня пока банят мои мозги))131 - Неправильный объем
Изначально советник ставил лок каждой позиции, после моих криворуких изменений(насколько я читаю код) принцип как он стал работать, верный, но видимо редактировать код надо везде, а как это сделать я не знаю131 - Неправильный объем
Изначально советник ставил лок каждой позиции - не для каждой в отдельности, а для всех позиций по символу, это раз. Теперь, что такое лок - разница лотности противоположный позиций равна 0, т.е., в рынке лот бай = лот селл. А что делаете Вы: изначально, нужно сбалансировать новой позицией лотность в рынке и Вы уменьшаете эту лотность на величину 0,01 лота, т.е., баланса по лотности в рынке не станет, так как не достаточно лотности в 0,01 лота. На следующем тике советник будет пробовать установить вот эту не достающую лотность - 0,01, от которой Вы отнимаете значение в 0,01. Вопрос: позицию с какой лотность Вы пытаетесь установить?Изначально советник ставил лок каждой позиции, после моих криворуких изменений(насколько я читаю код) принцип как он стал работать, верный, но видимо редактировать код надо везде, а как это сделать я не знаю
mobidik, спасибо за откликИзначально советник ставил лок каждой позиции - не для каждой в отдельности, а для всех позиций по символу, это раз. Теперь, что такое лок - разница лотности противоположный позиций равна 0, т.е., в рынке лот бай = лот селл. А что делаете Вы: изначально, нужно сбалансировать новой позицией лотность в рынке и Вы уменьшаете эту лотность на величину 0,01 лота, т.е., баланса по лотности в рынке не станет, так как не достаточно лотности в 0,01 лота. На следующем тике советник будет пробовать установить вот эту не достающую лотность - 0,01, от которой Вы отнимаете значение в 0,01. Вопрос: позицию с какой лотность Вы пытаетесь установить?
Лок не есть что-т о однозначное - он может быть одним или несколькими ордерами, с учетом текущей просадки по торгующим ордерам и с учетом уровня безубытка, рассчитываться относительно текущей цены или цен (если торговля и балансировка идет по нескольким инструментам).мне не нужен лок в полном понимании этого термина.
несомненно, эти вещи многогранныЛок не есть что-т о однозначное - он может быть одним или несколькими ордерами, с учетом текущей просадки по торгующим ордерам и с учетом уровня безубытка, рассчитываться относительно текущей цены или цен (если торговля и балансировка идет по нескольким инструментам).
Если на одном инструменте нужно (учитывая все текущие ордера на этом инструменте) соблюсти "баланс" по лотам - нужно будет вычислить (возможно) для уравнивания лотности лоты добавочных ордеров, которые уровняют шансы и сбалансируют (возможно для обеих сторон).
Такой расчет (как в "оригинале") не правильный и уж точно не корректный. А ведь это не все нюансы по выставлению балансировочных ордеров.
Короче, для правильной балансировки нужен многофункциональный алгоритм, учитывающий многие нюансы. А разруливание лока - это еще более мутная тема.![]()
несомненно, эти вещи многогранны
Я, может быть, напишу алгоритм, который будет "вылазить" из просадок за счет балансировки, но это не "сегодня"... - Теоретически - это бесполезная система будет, т.к. будет чисто математической основой здесь не обойтись...Естессно речь идет об одном инструменте и рыночных позициях
Я, может быть, напишу алгоритм, который будет "вылазить" из просадок за счет балансировки, но это не "сегодня"... - Теоретически - это бесполезная система будет, т.к. будет чисто математической основой здесь не обойтись...
Тогда все становится более понятным, я о Ваши телодвижениях в коде, да и решается элементарно: если дисбаланс по лотности между ордерами бай/селл менее заданного значения - ничего не делаем, т.е., лок не ставим. В коде это можно реализовать одной строчкой, плюс объявить одну переменную в настройках, например, extern double DeltaLot = 0.02; А вот эту строку: if(MathAbs(LS-LB)<DeltaLot) return; вставить в код сразу после комента и все будет как Вы желаете, пробуйте и все получиться.лок ставился при условии BUY-SELL=0.02
mobidik, вот после слов плюс обьявить и далее вообще для меня темный лес.Тогда все становится более понятным, я о Ваши телодвижениях в коде, да и решается элементарно: если дисбаланс по лотности между ордерами бай/селл менее заданного значения - ничего не делаем, т.е., лок не ставим. В коде это можно реализовать одной строчкой, плюс объявить одну переменную в настройках, например, extern double DeltaLot = 0.02; А вот эту строку: if(MathAbs(LS-LB)<DeltaLot) return; вставить в код сразу после комента и все будет как Вы желаете, пробуйте и все получиться.
И да, уберите свои "доработки" из кода.
Сперва узнать цену открытия ордера и его лотность. Если позиция на бай, тогда узнать, начиная от момента открытия ордера до сегодняшнего дня, минимальное значение цены за выбранный период времени. Тогда сможете узнать насколько пипок цена уходила против позиции, зная её лотность - узнаете в деньгах. А там уже согласно вашего условия, в зависимости от величины просадки, зная лотность убыточной позиции, рассчитываете лотность для входа по мартину, как-то так, имхо.Всем привет. Можете подсказать как мне прописать в советнике подсчет всех просадок до текущего дня( т.е. сегодняшний день не учитывая), и если сегодня сделки не закрылись а при наступлении следующего дня открылся новый ордер, то этот ордер открывался бы с увеличенным лотом( как в мартине). И при достижении 200 пунктов сделки все закрывались и текущие и предыдущие. Можно такое реализовать?
очень был бы рад получить все собраное
mobidik, вот после слов плюс обьявить и далее вообще для меня темный лес.
и да я в MQL как паралитик на дискотеке
если это не совсем сложно и минута времени позволяет то очень был бы рад получить все собраное
Ну конечно можем! - Только и всего... набор-то советник среднего уровня - чисто подсказать весь код...Можете подсказать как мне прописать в советнике подсчет всех просадок до текущего дня( т.е. сегодняшний день не учитывая), и если сегодня сделки не закрылись а при наступлении следующего дня открылся новый ордер, то этот ордер открывался бы с увеличенным лотом( как в мартине). И при достижении 200 пунктов сделки все закрывались и текущие и предыдущие. Можно такое реализовать?
Посмотрите, может что-нить подойдет из этого набора (а может уже с ним знакомы). Я его использовал в мартине, когда 'поезд уже уходил', и довольно эффективно.Я, может быть, напишу алгоритм, который будет "вылазить" из просадок за счет балансировки, но это не "сегодня"... - Теоретически - это бесполезная система будет, т.к. будет чисто математической основой здесь не обойтись...