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

Программирование Шаблон стратегии. Что не так?

smarthead

Member
NinjaTrader
Ребята, всем привет.
Написал шаблон стратегии для проверки торговых идей, а он не работает. То не запускается, то проблемы с ордерами. Суть шаблона в использовании дополнительной серии и применение трейлинга. Что не так? Подскажите пожалуйста. Вроде всё просто - но блин что-то не так. На анализаторе стратегии всё работает и показывает результативность. Но включаю на демосчёт и начинаются проблемы. Может пригодится ещё кому из новичков.
Спасибо.

C#:
#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

namespace NinjaTrader.NinjaScript.Strategies
{
    public class ksMaket : Strategy
    {
        #region OnStateChange
        protected override void OnStateChange()
        {
            if (State == State.SetDefaults)
            {
                Description                                    = @"Strat  ";
                Name                                        = "ksMaket";
             
                Calculate                                    = Calculate.OnBarClose;
                EntriesPerDirection                            = 1;
                EntryHandling                                = EntryHandling.AllEntries;
                IsExitOnSessionCloseStrategy                = true;
                ExitOnSessionCloseSeconds                    = 1800;
                IsFillLimitOnTouch                            = false;
                MaximumBarsLookBack                            = MaximumBarsLookBack.TwoHundredFiftySix;
                OrderFillResolution                            = OrderFillResolution.Standard;
                Slippage                                    = 0;
                IsAdoptAccountPositionAware                 = true;
                StartBehavior                                = StartBehavior.AdoptAccountPosition;
                TimeInForce                                    = TimeInForce.Day;
                TraceOrders                                    = true;
                RealtimeErrorHandling                        = RealtimeErrorHandling.StopCancelClose;
                StopTargetHandling                            = StopTargetHandling.PerEntryExecution;
                BarsRequiredToTrade                            = 5;
                ConnectionLossHandling                         = ConnectionLossHandling.KeepRunning;
                IsInstantiatedOnEachOptimizationIteration    = true;
             
                QuantityContracts                            = 21;
             
            }
            else if (State == State.Configure)
            {
                             
                AddDataSeries(Data.BarsPeriodType.Day, 1);
                SetTrailStop(@"MyEntryLong", CalculationMode.Ticks, 5, false);
                SetTrailStop(@"MyEntryShort", CalculationMode.Ticks, 5, false);
            }
        }
        #endregion
     
        #region OnBarUpdate
        protected override void OnBarUpdate()
        {
            if (BarsInProgress != 0) return;
            if (CurrentBars[0] < BarsRequiredToTrade || CurrentBars[1] < BarsRequiredToTrade) return;
            Print("BarsInProgress & CurrentBars - yes");
         
            if(    
                //Логика любая
                Close[0] > CurrentDayOHL().CurrentOpen[0]
            )
             
            {
                EnterLong(Convert.ToInt32(QuantityContracts), @"MyEntryLong");
            }
         
            else if(
                Close[0] < Opens[1][0]
            )
             
            {
                EnterShort(Convert.ToInt32(QuantityContracts), @"MyEntryShort");
            }
         
        }
        #endregion
     
        #region Properties
     
        [NinjaScriptProperty]
        [Range(1, int.MaxValue)]
        [Display(Name="QuantityContracts", Description="Количество контрактов", Order=1, GroupName="Parameters")]
        public int QuantityContracts
        { get; set; }
     
        #endregion

    }
}
 
Последнее редактирование:
Назад
Верх Низ