• Тинькофф Банк-лучшие банковские продукты еще выгоднее
    Выбирайте продукт от банка Тинькофф
  • Уважаемые форумчане, друзья и посетители!
    Поступило предложение ( ссылка на обсуждение ) на сбор средств поддержания форума в рабочем состоянии с 1 июня ( оплата хостинга, бэкап ежедневный на другой хостинг и тд), отчетность будет предоставляться ежемесячно. Пока на ЮMoney ( яндекс деньги), доступно картой перевод, далее добавлю другие способы. Сумму перевода указывайте на ваш выбор исходя из своих возможностей.
    Форум продолжает свою работу благодаря Вашим пожертвованиям.

Торговать из индикатора или вызов стратегии из индикатора

Оба этих файла есть. И лежат там. Установлено все по умолчанию.
Странно, что один файл подцепился (WilsonORMapper.DLL)
А вот второй (NinjaTrader.Core.dll) не хочет
 
Ура нашел решение. Все получилось.
Перед тем как это делать
Под NinjaTrader.Custom -> References -> клик правой мышкой -> Add Reference -> Browse -> (кнопка Browse)

C:\Program Files (x86)\NinjaTrader 7\bin\NinjaTrader.Core.dll
и
C:\Program Files (x86)\NinjaTrader 7\bin\WilsonORMapper.DLL

Нужно их сначала удалить и только потом добавлять в проект
 
Вот и хорошо. Теперь вам будет полегче с разработкой.
 
Спасибо еще раз за помощь. Весь день сегодня ковырялся. Наслаждался процесcом + изучал VS, море ошибок по находил (точнее не неточностей программирования). ReSharper очень классная вещь оказывается, реально помогает.
С одним пока никак не могу разобраться, не понимаю как. Русский шрифт. Если пишу по русски в VS, то в NT - кракозяблы. Если в NT по русски - то в VS кракозяблы (((
Не знаете как решить эту проблему ?
 
По всей видимости, проблемы с кодировкой на вашей машине. В норме ваш кейс не воспроизводится.
 
Господа, снова нужна ваша помощь)
Возможно ли "подтягивать" за собой stop loss без применения Trailing Stop?
Пример: Пусть цена 10. Стоп лосс 5. Цена поднялась до 15. На этом моменте уже надо следить - если цена поднимется ещё на 5 тиков, т.е. до 20, то надо чтоб стоп лосс уже равнялся не 5, а 10. И если вдруг цена с 20 начнет идти вниз то стоп лосс сработает на 10. Надеюсь понятно изложил что хочу сделать)

И можно ли после исполнения ордера узнать цену входа, стоп лосс для него (до срабатывания take profit или stop loss)?
 
Последнее редактирование:
Возможно ли "подтягивать" за собой stop loss без применения Trailing Stop?
Возможно как в стакане, подтягивая вручную)), так и в стратегии, вызывая SetStopLoss. Т.е. если открыта позиция, то размер стоп-лосса можно менять. Но по идее в трейдинге стоп-лосс не увеличивают)).
Надеюсь понятно изложил что хочу сделать)
По примеру не понятно чес гря, как высчитывается множитель стоп-лосса, т.к. и цены и стопы кратны 5. Но, например, (ЦЕНА_ОТКРЫТИЯ+ЦЕНА_МАКСИМУМА_ДНЯ)/2 будет выставляться стоп-лосс половине пройденного пути цены от открытия позиции в лонг до максимума текущего дня.
И можно ли после исполнения ордера узнать цену входа
При необходимости записываю заранее в переменные перед выставлением ордеров на покупку/продажу. После срабатывания ордеров мониторю сами переменные.
 
... Т.е. если открыта позиция, то размер стоп-лосса можно менять.
Как мониторить открыта ли позиция? В случае если двумя лотами торгую, как менять размер стоп-лосса для каждого ордера?

Я делаю так:

Код:
в OnBarUpdate() пишу:
{
if(PRICE != 0)
        {
            if(PRICE < Bars.GetHigh(CurrentBar))
            {
                SetTrailStop(CalculationMode.Ticks, 4);
            }
        }

....
myEntryOrder = EnterLong()...
....

if(myEntryOrder != null)
PRICE = Bars.GetOpen(CurrentBar);
}

Но стоп лосс никуда не сдвигается(
 
Как мониторить открыта ли позиция?
в OnBarUpdate() можно проверить условия Position.MarketPosition!=MarketPosition.Flat (если нет открытых позиций) или конкретно Position.MarketPosition==MarketPosition.Long/Short (открыта длинная/короткая позиция). Стати в приведенном коде строка if(myEntryOrder != null) уже мониторит открыта ли позиция. Ток надо myEntryOrder вовремя обнулить при закрытии позиции.
как менять размер стоп-лосса для каждого ордера?
Не приходилось работать по такой схеме, но может стоит присмотреться к параметрам signalName в EnterLong и fromEntrySignal в SetStopLoss.
Но стоп лосс никуда не сдвигается(
Тут уж причин много может быть. От многоточий в приведенном коде, до отдельных настроек стратегии на графике. Может код отрабатывает не сразу на приходящем тике, а на закрытии бара?
 
Не приходилось работать по такой схеме, но может стоит присмотреться к параметрам signalName в EnterLong и fromEntrySignal в SetStopLoss.
Пытался и так - тоже не получается.

Может код отрабатывает не сразу на приходящем тике, а на закрытии бара?
Ну да, CalculateOnBarClose = true;
 
Ну да, CalculateOnBarClose = true;
На закрытие бара стоплосс тоже не сдвигается по трейлингу? Одновременно не используется SetTrailStop и SetStopLoss (трал в этом случае игнорится)? Вощем без полной картины (кода,настроек и т.д.) можно только гадать о причине
 
На закрытие бара стоплосс тоже не сдвигается по трейлингу?
Нет. Одновременно не используется.
А можно ли узнать где находится планка стоп лосса после срабатывания SetTrailStop? Т.е. проверить, действительно ли SetTrailStop сработал и стоп лосс поднялся.
 
Оно?)
DosOSto.png
 
Оно. Т.к. типа ордера трейлинг стопа нет и учитывая, что функция SetTrailStop двигает стоп ордер, то нужно мониторить ордер (его цену) с типом Stop в колонке Order type.
 
Кто-нибудь подскажет, можно ли убрать SetStopLoss? и поставить вместо него SetTrailStop()?
К примеру был выставлен ордер EnterLong() и установлен SetStopLoss(). Как только цена поднялась до определенного значения, снова использую SetStopLoss(), тем самым поднимая планку стоп лосса. И теперь надо бы убрать SetStopLoss() и уже с этой планки использовать SetTrailStop().
 
Кто-нибудь подскажет, можно ли убрать SetStopLoss? и поставить вместо него SetTrailStop()?
Я по крайней мере не вижу причин для запрета)). Вообще в коде можно все что угодно ставить и убирать, лишь бы компилировалось.
И теперь надо бы убрать SetStopLoss() и уже с этой планки использовать SetTrailStop().
Немного некорректно описана ситуация, но смысл вроде как понятен. Для ясности: SetStopLoss() - это команда установить защитный стоп-ордер, а не тип ордера. Тоже самое SetTrailStop() - это команда перемещать защитный стоп-ордер, а не тип ордера. По идее SetStopLoss() и SetTrailStop() это работа над одним ордером (стоп-ордером). В справке NT про SetTrailStop() сказано, что одновременно эти команды не могут использоваться, и при вызове обеих команд приоритетом пользуется SetStopLoss(). Чтобы использовать обе команды, нужно манипулировать параметром fromEntrySignal. Для стратегии обязательно использовать обе команды? Нельзя обойтись просто SetTrailStop(), меняя его параметр перемещения при определенных условиях?
 
Последнее редактирование:
Для стратегии обязательно использовать обе команды? Нельзя обойтись просто SetTrailStop(), меняя его параметр перемещения при определенных условиях?
Да, желательно сначала установить SetStopLoss() (или может аналог какой есть), а потом, при достижении цены определенного уровня начинать тралить планку стопа. Пробовал EnterShortStop() ставить (если выставлен EnterLong()) - так не работает (EnterShortStop() не выставляется если есть EnterLong())
 
Назад
Верх Низ