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

Программирование Использование индикатора Sim22_DeltaV2 в роботах.

Scrittore

New Member
NinjaTrader
В начале скажу что у меня очень скромный стаж программирования исчисляющийся днями. Поэтому не судите за возможно глупые вопросы.
Нужен робот учитывающий дельту. Из бесплатных нашёл только этот индикатор поэтому его и заюзал. Может кто другой сможет предложитьне откажусь.
Суть в том что в дата боксе данные по нему отображаются норм, а когда пытаешься запихать эту инфу в код он не в какую не хочет работать.
Код:
Sim22_DeltaV21                = Sim22_DeltaV2(Close, Sim22_DeltaV2_Type.BidAsk, false, false, false, Sim22_DeltaV2_FilterModeType.None, 1);
if (Sim22_DeltaV21[0] > 500)
Что я не так делаю? Мои мысли - мог накосячить только с копированием, хендла индикатора (так это тут называется). В самом индикаторе есть опция настройки глубины истории, но при вызове через хендл такой опции нет, а по умолчанию он с нулевого бара начинает считать.
P.S. И я запутался, в ниндзе нулевым баром считается текущий? Через визард когда ноль ставишь, он обрабатывает предыдущий бар.
 
Я тут пораскинул мозгами и сообразил. На одну свечу в этом индикаторе приходится четыре числа, а у меня тут массив с номерами баров. Странно что он сразу предупреждение не выдаёт, или... Вобщем может помочь кто-нибудь?
 
Помогать тут любят)) но телепатов мало.прикладывайте код или исходники.
Да код простецкий, я специально кусок кода роботом сделал, разобраться. Выше указанная конструкция и не работает. Тут где-то грубейшая ошибка, но я по неопытности не понимаю. Как уже сказал, скорее всего на одну свечу тут приходится OHLC данные, а я в одну ячейку массива похоже пытаюсь это запихать. Не понятно только в этом случае почему код с такой ошибкой компилируется. Я так полагаю. По сути мне нужна переменная отвечающая за Close в индикаторе, чтобы в дальнейшем провести if и принять решение о сделке. Дело в том что там где обычные бары, например VOL у меня всё тоже самое нормально работает. Так что собака порылась именно там где я указал.
Код:
#region Using declarations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Gui;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Gui.SuperDom;
using NinjaTrader.Gui.Tools;
using NinjaTrader.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.Indicators;
using NinjaTrader.NinjaScript.DrawingTools;
#endregion

//This namespace holds Strategies in this folder and is required. Do not change it.
namespace NinjaTrader.NinjaScript.Strategies
{
    public class EasyVDSLongTest : Strategy
    {
        private NinjaTrader.NinjaScript.Indicators.Sim22.Sim22_DeltaV2 Sim22_DeltaV21;

        protected override void OnStateChange()
        {
            if (State == State.SetDefaults)
            {
                Description                                    = @"Enter the description for your new custom Strategy here.";
                Name                                        = "EasyVDSLongTest";
                Calculate                                    = Calculate.OnBarClose;
                EntriesPerDirection                            = 10;
                EntryHandling                                = EntryHandling.UniqueEntries;
                IsExitOnSessionCloseStrategy                = true;
                ExitOnSessionCloseSeconds                    = 30;
                IsFillLimitOnTouch                            = true;
                MaximumBarsLookBack                            = MaximumBarsLookBack.Infinite;
                OrderFillResolution                            = OrderFillResolution.Standard;
                Slippage                                    = 1;
                StartBehavior                                = StartBehavior.ImmediatelySubmit;
                TimeInForce                                    = TimeInForce.Gtc;
                TraceOrders                                    = true;
                RealtimeErrorHandling                        = RealtimeErrorHandling.StopCancelClose;
                StopTargetHandling                            = StopTargetHandling.PerEntryExecution;
                BarsRequiredToTrade                            = 2;
                // Disable this property for performance gains in Strategy Analyzer optimizations
                // See the Help Guide for additional information
                IsInstantiatedOnEachOptimizationIteration    = true;
                TP                    = 25;
                SL                    = 10;
            }
            else if (State == State.Configure)
            {
            }
            else if (State == State.DataLoaded)
            {               
                Sim22_DeltaV21                = Sim22_DeltaV2(Close, Sim22_DeltaV2_Type.BidAsk, false, false, false, Sim22_DeltaV2_FilterModeType.None, 1);
                SetStopLoss("", CalculationMode.Ticks, 12, false);
                SetProfitTarget("", CalculationMode.Ticks, 25);
            }
        }

        protected override void OnBarUpdate()
        {
            if (BarsInProgress != 0)
                return;

            if (CurrentBars[0] < 1)
                return;

             // Set 1
            if (Sim22_DeltaV21[0] > 1)
            {
                EnterLong(Convert.ToInt32(DefaultQuantity), "");
            }
            
        }

        #region Properties
        [NinjaScriptProperty]
        [Range(10, int.MaxValue)]
        [Display(Name="TP", Order=1, GroupName="Parameters")]
        public int TP
        { get; set; }

        [NinjaScriptProperty]
        [Range(10, int.MaxValue)]
        [Display(Name="SL", Order=2, GroupName="Parameters")]
        public int SL
        { get; set; }
        #endregion

    }
}
 
Да код простецкий, я специально кусок кода роботом сделал, разобраться. Выше указанная конструкция и не работает. Тут где-то грубейшая ошибка, но я по неопытности не понимаю. Как уже сказал, скорее всего на одну свечу тут приходится OHLC данные, а я в одну ячейку массива похоже пытаюсь это запихать. Не понятно только в этом случае почему код с такой ошибкой компилируется. Я так полагаю. По сути мне нужна переменная отвечающая за Close в индикаторе, чтобы в дальнейшем провести if и принять решение о сделке. Дело в том что там где обычные бары, например VOL у меня всё тоже самое нормально работает. Так что собака порылась именно там где я указал.
Код:
#region Using declarations
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Media;
using System.Xml.Serialization;
using NinjaTrader.Cbi;
using NinjaTrader.Gui;
using NinjaTrader.Gui.Chart;
using NinjaTrader.Gui.SuperDom;
using NinjaTrader.Gui.Tools;
using NinjaTrader.Data;
using NinjaTrader.NinjaScript;
using NinjaTrader.Core.FloatingPoint;
using NinjaTrader.NinjaScript.Indicators;
using NinjaTrader.NinjaScript.DrawingTools;
#endregion

//This namespace holds Strategies in this folder and is required. Do not change it.
namespace NinjaTrader.NinjaScript.Strategies
{
    public class EasyVDSLongTest : Strategy
    {
        private NinjaTrader.NinjaScript.Indicators.Sim22.Sim22_DeltaV2 Sim22_DeltaV21;

        protected override void OnStateChange()
        {
            if (State == State.SetDefaults)
            {
                Description                                    = @"Enter the description for your new custom Strategy here.";
                Name                                        = "EasyVDSLongTest";
                Calculate                                    = Calculate.OnBarClose;
                EntriesPerDirection                            = 10;
                EntryHandling                                = EntryHandling.UniqueEntries;
                IsExitOnSessionCloseStrategy                = true;
                ExitOnSessionCloseSeconds                    = 30;
                IsFillLimitOnTouch                            = true;
                MaximumBarsLookBack                            = MaximumBarsLookBack.Infinite;
                OrderFillResolution                            = OrderFillResolution.Standard;
                Slippage                                    = 1;
                StartBehavior                                = StartBehavior.ImmediatelySubmit;
                TimeInForce                                    = TimeInForce.Gtc;
                TraceOrders                                    = true;
                RealtimeErrorHandling                        = RealtimeErrorHandling.StopCancelClose;
                StopTargetHandling                            = StopTargetHandling.PerEntryExecution;
                BarsRequiredToTrade                            = 2;
                // Disable this property for performance gains in Strategy Analyzer optimizations
                // See the Help Guide for additional information
                IsInstantiatedOnEachOptimizationIteration    = true;
                TP                    = 25;
                SL                    = 10;
            }
            else if (State == State.Configure)
            {
            }
            else if (State == State.DataLoaded)
            {              
                Sim22_DeltaV21                = Sim22_DeltaV2(Close, Sim22_DeltaV2_Type.BidAsk, false, false, false, Sim22_DeltaV2_FilterModeType.None, 1);
                SetStopLoss("", CalculationMode.Ticks, 12, false);
                SetProfitTarget("", CalculationMode.Ticks, 25);
            }
        }

        protected override void OnBarUpdate()
        {
            if (BarsInProgress != 0)
                return;

            if (CurrentBars[0] < 1)
                return;

             // Set 1
            if (Sim22_DeltaV21[0] > 1)
            {
                EnterLong(Convert.ToInt32(DefaultQuantity), "");
            }
           
        }

        #region Properties
        [NinjaScriptProperty]
        [Range(10, int.MaxValue)]
        [Display(Name="TP", Order=1, GroupName="Parameters")]
        public int TP
        { get; set; }

        [NinjaScriptProperty]
        [Range(10, int.MaxValue)]
        [Display(Name="SL", Order=2, GroupName="Parameters")]
        public int SL
        { get; set; }
        #endregion

    }
}
это все классно, но вся соль в том индикаторе который ты используешь и к которому обращаешься - Sim22_DeltaV2. приложи файл сюда
 
посмотрел бегло индикатор, все там хорошо создается. мне кажется тебе надо просто написать условие иначе. там есть датасерия Delta, к ней и обращайся
Код:
 if (Sim22_DeltaV21.Delta[0] > 1)
            {
                EnterLong(Convert.ToInt32(DefaultQuantity), "");
            }
 
посмотрел бегло индикатор, все там хорошо создается. мне кажется тебе надо просто написать условие иначе. там есть датасерия Delta, к ней и обращайся
Код:
if (Sim22_DeltaV21.Delta[0] > 1)
            {
                EnterLong(Convert.ToInt32(DefaultQuantity), "");
            }
Спасибо, попробую данный вариант. Но я уже свою дельту написал :) Уже другие проблемы. Если интересно суть тут
 
в чем смысл что написал сам, только что прокачал свой уровень. а так суть пока не понятно что ты хочешь написать?
 

Вложения

  • Sim22_DeltaV3_NT8b13_Nov16.zip
    13,5 КБ · Просмотры: 49
  • Screenshot_01.png
    Screenshot_01.png
    117,3 КБ · Просмотры: 84
  • Screenshot_00.png
    Screenshot_00.png
    101,8 КБ · Просмотры: 77
Здравствуйте. Почему может индикатор не отображаться на графике? Причём у меня так и с 1й и со 2й версией Sim22_Delta
 

Вложения

  • 6E 03-21 (4 Range) 2020_12_22 (12_40_54).png
    6E 03-21 (4 Range) 2020_12_22 (12_40_54).png
    114,8 КБ · Просмотры: 54
Спасибо, попробую данный вариант. Но я уже свою дельту написал :) Уже другие проблемы. Если интересно суть тут
при наличии пожизненной лицензии дельта не проблема, как, собственно, 10Range Volumetric
 

Вложения

  • 2020-12-22_092830.png
    2020-12-22_092830.png
    91,7 КБ · Просмотры: 50
Сегодня обнаружил, что не могу активировать Tick Replay по причине отсутствия такого пункта в Data Series. Кто-нибудь знает, что произошло, куда делся?
 

Вложения

  • 2020-12-24_10-31-42.jpg
    2020-12-24_10-31-42.jpg
    53,4 КБ · Просмотры: 47
Сегодня обнаружил, что не могу активировать Tick Replay по причине отсутствия такого пункта в Data Series. Кто-нибудь знает, что произошло, куда делся?
Дополнительные настройки- рыночные данные и отметить- "показать историю тиковых данных" , тогда появится этот пункт
 
Назад
Верх Низ