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

Historical Data Простая RSI стратегия пытается открывать ордера в реале вместо симуляции

artemiusgreat

New Member
NinjaTrader
Пытаюсь разобраться с тестированием АТС

1. нагенерил простую RSI стратегию, managed mode, live ******************* account
2. попытался запустить ее на графике MSFT и еще нескольких US stocks
3. при запуске в режиме "Order Fill Resolution" = "Standard" стратегия кое-как выполняется
4. при запуске в режиме "Order Fill Resolution" = "High" / 1 Tick стратегия с какого-то перепуга пытается открыть позицию, получает ошибку "Trading session closed" и отключается
5. также пробовал тестировать и запускать АТС из консоли, без привязки к графику, тогда выдает другую ошибку - что нет Market Data, хотя я подгрузил Historical Data для MSFT и AMZN с *******************

Вопросы:

1. почему именно при тестировании на тиках, даже на симуляции стратегия пытается выставлять реальный ордер?
2. есть ли в NT8 режим тестирования похожий на MetaTrader, когда котировки не за раз подгружаются, а симулируют реальные торги, где бары по одному отрисовываются?

Во вложении скрины с настройкаим стратегии и CS файл с кодом.
 

Вложения

  • Params.png
    Params.png
    269,3 КБ · Просмотры: 20
  • Res.png
    Res.png
    385,8 КБ · Просмотры: 19
  • RsiStrategy.cs
    4 КБ · Просмотры: 7
Последнее редактирование:
Так вы запустите тестер стратегий, на анг. версии Stratagy Analyzer. Там и тестируйте. Так же можно подгрузить данные в марке реплей, и прогнать как на мт4.
 

Вложения

  • Screenshot_11.png
    Screenshot_11.png
    42,2 КБ · Просмотры: 16
когда котировки не за раз подгружаются, а симулируют реальные торги, где бары по одному отрисовываются?
да есть и такое , в разделе подключение в самом низу подключиться к симулейтед дата фид .
По простому можно пояснить что должна делать стратегия по задумке ?
 
Так вы запустите тестер стратегий, на анг. версии Stratagy Analyzer. Там и тестируйте. Так же можно подгрузить данные в марке реплей, и прогнать как на мт4.

Да, спасибо, в Strategy Analyzer нормально запускается, правда, есть еще непонятные моменты

1. вроде Historical Data загружена за последний год, с 2017-01-01 по 2017-11-11, и вроде ордера выставляются начиная с января, но в разделе Analysis, там где график прибыли, почему-то показаны сделки только с 2017-05-31

2. сейчас у меня в Market Replay ничего нельзя сделать, наверное, потому что нет истории, мой брокер имеет минутную историю для US stocks, но я могу сгенерировать тиковые данные из МТ5, можно ли как-то подставить их в Market Replay или это только за деньги с серверов NinjaTrader?

3. если я хочу сделать произвольный трейлинг, это только через Unmanaged Orders делается?

Алгоритм трейлинга:

1. запомнить текущую прибыль по открытым позициям
2. как только текущая прибыль становится меньше 90% от последней запомненной, начинать трейлинг

Это улучшает стратегии, т.к. изначально не реагирует на шум на рынке ниже определенного порога. Так делал в МТ5:

Код:
void OnTick()
{
    double aim = 0;
    double income = 0;
    double commission = 0;
    double equity = AccountInfoDouble(ACCOUNT_EQUITY);

    int count = iExperts.Total();

    for (int k = 0; k < count; k++)
    {
        CExpert * expert = iExperts.At(k);

        double point = SymbolInfoDouble(expert.iSymbol, SYMBOL_POINT);
        double volumeBuy = expert.iPositions.getPositionsSize(expert.iSymbol, 1);
        double volumeSell = expert.iPositions.getPositionsSize(expert.iSymbol, -1);
        double volume = volumeBuy + volumeSell;

        income += iTrades.getPositionsIncome(expert.iSymbol);
        aim += iHelpers.pipsToMoney(expert.iSymbol, MathMin(volumeBuy, volumeSell), InpLevel);
        commission += iHelpers.getTickCost(expert.iSymbol, volume) * InpCommission * volume * 2;  // считаем накопленную комиссию
    }

    if ((income < iIncome * 0.9 && income > commission * 10)) // если профит по позам окупил комиссию, и начал уменьшаться, то начинаем трейлить или кроемся
    {
        iIncome = 0;
        iTrades.closeOrders();
        iTrades.closePositions();
        iBalance = AccountInfoDouble(ACCOUNT_EQUITY);
        return;
    }

    for (int k = 0; k < count; k++)
    {
        CExpert * expert = iExperts.At(k);
        expert.tick(1);
    }

    iIncome = MathMax(iIncome, income); // запоминаем профит на предыдущем шаге чтобы если мы начнем терять деньги, то цена развернулась и пора крыть позиции
}
 
да есть и такое , в разделе подключение в самом низу подключиться к симулейтед дата фид .
По простому можно пояснить что должна делать стратегия по задумке ?

по простому, дубовая RSI стратегия, которая при пересечении снизу-вверх делает Buy
закрывается только по достижению опр. профита, самое простое - Take Profit ордер в 2 раза больше Stop Loss, чтобы улучшить показатель надо добавить трал как описал выше
на рынке акций это работает потому что

1. там нет свопов как в CFD или Forex
2. голубые фишки практически всегда растут, т.е. надо ловить только тренд вверх
3. даже если встрял с позой, то крыть не обязательно, т.к. нормальные компании платят дивиденды
 
на картинке примерный профит, только надо

1. прогнать на тиках
2. добавить трал
3. найти, где в настройках NT8 устанавливается депозит для тестирования, чтобы знать, достаточно ли для этой стратегии, к примеру $1К или $5К

на аккаунте Sim101 почему-то всегда стоит $100000, можно как-то изменить значение денег на тестовом счете?
 

Вложения

  • Res.png
    Res.png
    378,2 КБ · Просмотры: 19
Назад
Верх Низ