• Demo счет NinjaTrader, регистрируется в брокерской компании NinjaTrader Brokerage . NinjaTrader™, LLC
    Ссылка на демо счет NinjaTrader
    Фид на соединении Continuum/CQG.
    Для справки: Continuum - это брэнд CQG, и ни чем они не отличаются друг от друга.
    Обратите внимание, что в настоящее время CQG не высылает логин и пароль на электронные адреса от mail.ru, bk.ru, list.ru, inbox.ru, поэтому необходимо повторить регистрацию с электронного адреса от другого домейна (yahoo, gmail, и тд).
  • NinjaTrader с зарекомендовавшим себя брокерским сервисом предоставляет наилучшие условия для фьючерсной торговли, включая:
    • Низкие комиссии: Экономьте на торгах через низкие и понятные комиссии
    • Низкая маржа: Всего $50 для микро контрактов
    • Низкие минимумы: Откройте счет от $400
    • Бесплатная платформа: Включает весь необходимый функционал для торговли в реале
  • Уважаемые посетители форума!
    При регистрации на форуме отправляется письмо подтверждения на ваш почтовый ящик, если письмо не пришло, просьба проверить папку "спам" вашего почтового ящика, возможно письмо попало туда.
  • Сколько я реально плачу комиссии?
    Подробнее по ссылке

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

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

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