Ух ё. Ну дык нельзя же открывать рыночные ордера не по текущим ценам. Уровни, которые у Вас просчитываются, на них можно только ставить отложенные ордера.
Поясняю. Пришёл очередной тик - это значит, что пришёл Бид и Аск - это текущая цена. Рыночный ордер типа Бай/Селл - его можно открыть только по текущей цене. Если уровень рассчитывается как Бид+отклонение*Point, то уровень будет отстоять от текущей цены на размер этого отклонения. Уроввень будет ВЫШЕ текущей цены. Туда можно ставить только БайСтоп или СеллЛимит ордер. Да и то только в том случае, если размер отклонения болше или равен минимально-допустимому расстоянию для установки отложенных ордеров и/или стоп-приказов. Не забывайте так же, что Бай-ордера ставятся по Аску, а закрываются по Биду. У Селл-ордеров всё наоборот. Это правило справедливо для Бай/Селл ордеров любого типа. Поэтоу минимально-допустимое отклонение нужно рассчитывать опираясь на цены Бид/Аск в зависимости от типа ордера.
Ух ё. Ну дык нельзя же открывать рыночные ордера не по текущим ценам. Уровни, которые у Вас просчитываются, на них можно только ставить отложенные ордера.
Поясняю. Пришёл очередной тик - это значит, что пришёл Бид и Аск - это текущая цена. Рыночный ордер типа Бай/Селл - его можно открыть только по текущей цене. Если уровень рассчитывается как Бид+отклонение*Point, то уровень будет отстоять от текущей цены на размер этого отклонения. Уроввень будет ВЫШЕ текущей цены. Туда можно ставить только БайСтоп или СеллЛимит ордер. Да и то только в том случае, если размер отклонения болше или равен минимально-допустимому расстоянию для установки отложенных ордеров и/или стоп-приказов. Не забывайте так же, что Бай-ордера ставятся по Аску, а закрываются по Биду. У Селл-ордеров всё наоборот. Это правило справедливо для Бай/Селл ордеров любого типа. Поэтоу минимально-допустимое отклонение нужно рассчитывать опираясь на цены Бид/Аск в зависимости от типа ордера.
А если написать для каждого ордера свое условие открытия? Например:
if(_OrderOpenPrice1+OrderLevel*Point==Ask)
{
TimeBar=Time[0];
_OrderOpenPrice2=NormalizeDouble(Ask,Digits);
OPENORDER2("Buy")
}
Но все равно вместо расчетного значения _OrderOpenPrice1 надо вставить реальное. Как это сделать ? Может кто то подскажет или даст ссылку?
А если написать для каждого ордера свое условие открытия? Например:
if(_OrderOpenPrice1+OrderLevel*Point==Ask)
{
TimeBar=Time[0];
_OrderOpenPrice2=NormalizeDouble(Ask,Digits);
OPENORDER2("Buy")
}
Но все равно вместо расчетного значения _OrderOpenPrice1 надо вставить реальное. Как это сделать ? Может кто то подскажет или даст ссылку?
Установите рыночный ордер. Отыщите цену его открытия. Используйте эту цену как точку отсчёта (стартовый уровень). К этому уровню поприбавляйте отклонения - внесите полученные величины новых уровней в переменные. Расставьте по этим уровням BuyStop-ордера. Как только тренд достигнет очередного BuyStop-ордера, этот ордер сработает и станет обычным рыночным Бай-ордером, и именно на том уровне, который Вы так хотели. И не нужно ухищряться с описанием особых условий - Вы же хотели расставить ордера на разных уровнях - вот и расставьте - вычислите эти уровни и расставьте стоповые отложки.
Установите рыночный ордер. Отыщите цену его открытия. Используйте эту цену как точку отсчёта (стартовый уровень). К этому уровню поприбавляйте отклонения - внесите полученные величины новых уровней в переменные. Расставьте по этим уровням BuyStop-ордера. Как только тренд достигнет очередного BuyStop-ордера, этот ордер сработает и станет обычным рыночным Бай-ордером, и именно на том уровне, который Вы так хотели. И не нужно ухищряться с описанием особых условий - Вы же хотели расставить ордера на разных уровнях - вот и расставьте - вычислите эти уровни и расставьте стоповые отложки.
Отложки уже пробывал. Или не полностю удоляются, или открываются новые когда не нужно. Чтобы задать правильные условия открытия и удаления все равно все сводится к фиксации событий, и построению каких то массивов для учета ордеров, но четкого примера исполнения пока не нашел, поэтому захотелось пойти легким путем, фиксировать только цену открытия первой позиции.
Отложки уже пробывал. Или не полностю удоляются, или открываются новые когда не нужно. Чтобы задать правильные условия открытия и удаления все равно все сводится к фиксации событий, и построению каких то массивов для учета ордеров, но четкого примера исполнения пока не нашел, поэтому захотелось пойти легким путем, фиксировать только цену открытия первой позиции.
Ну если рассчитать, что очередной ордер должен открываться от текущего с определённым шагом, то какая разница, отложка там, или код советника по достижении этого уровня ставит рыночный ордер - один чёрт ордер на этот уровень встанет.
Отложки не удаляются - значит не правильно что-то делаете.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Подскажите пожалуйста как зафиксировать реальную цену открытия первой позиции, чтобы другие позиции тоже открывались . Цены остальных позиций расчитываются от первой. Выдается ошибка 138(цены изменились).