Announcement

Collapse
No announcement yet.

Partner 728x90

Collapse

unable to run my strategy in strategy Analyzer

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    unable to run my strategy in strategy Analyzer

    Hi, I wrote a code in the script editor then compile it without error but if I open the strategy analyzer I can't find my strategy to run the backtest. what am I missing?

    Here is the code:

    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 Pruem2Optimized : Strategy
    {
    private RSI rsi;

    [Range(5, 50), NinjaScriptProperty]
    [Display(Name = "RSI Period", Description = "Period for RSI indicator", Order = 1, GroupName = "Parameters")]
    public int RsiPeriod { get; set; }

    [Range(70, 90), NinjaScriptProperty]
    [Display(Name = "RSI Overbought Level", Description = "Overbought level for RSI", Order = 2, GroupName = "Parameters")]
    public double RsiOverbought { get; set; }

    protected override void OnStateChange()
    {
    if (State == State.SetDefaults)
    {
    // Impostazioni generali della strategia
    Description = @"Strategia Pruem2 ottimizzata con Take Profit, Stop Loss e RSI";
    Name = "Pruem2Optimized";
    Calculate = Calculate.OnBarClose;
    EntriesPerDirection = 1;
    EntryHandling = EntryHandling.UniqueEntries;
    IsExitOnSessionCloseStrategy = true;
    ExitOnSessionCloseSeconds = 30;
    IsFillLimitOnTouch = false;
    MaximumBarsLookBack = MaximumBarsLookBack.TwoHundredFiftySix;
    OrderFillResolution = OrderFillResolution.Standard;
    Slippage = 0;
    StartBehavior = StartBehavior.WaitUntilFlat;
    TimeInForce = TimeInForce.Day;
    TraceOrders = false;
    RealtimeErrorHandling = RealtimeErrorHandling.StopCancelClose;
    StopTargetHandling = StopTargetHandling.PerEntryExecution;
    BarsRequiredToTrade = 30;
    IsInstantiatedOnEachOptimizationIteration = true;

    // Parametri personalizzabili
    RsiPeriod = 14;
    RsiOverbought = 80;

    // Regolazione Take Profit e Stop Loss per un miglior rapporto rischio/rendimento
    SetProfitTarget(CalculationMode.Ticks, 20); // 20 ticks = 5 punti
    SetStopLoss(CalculationMode.Ticks, 15); // 15 ticks = 3.75 punti
    }
    else if (State == State.Configure)
    {
    // Eventuali configurazioni aggiuntive
    }
    else if (State == State.DataLoaded)
    {
    // Inizializza l'indicatore RSI
    rsi = RSI(RsiPeriod, 1);
    }
    }

    protected override void OnBarUpdate()
    {
    // Assicurati che ci siano abbastanza barre per eseguire il controllo
    if (CurrentBar < BarsRequiredToTrade)
    return;

    // Controlla se le ultime 4 barre sono verdi
    if (Close[0] > Open[0] && Close[1] > Open[1] && Close[2] > Open[2] && Close[3] > Open[3])
    {
    // Controlla se il ROC è maggiore o uguale a 0.04
    if (ROC(28)[0] >= 0.04)
    {
    // Controlla se il prezzo di chiusura è inferiore alla banda superiore del Donchian Channel
    if (Close[0] < DonchianChannel(20).Upper[0])
    {
    // Controlla se l'RSI è in zona di ipercomprato
    if (rsi[0] >= RsiOverbought)
    {
    // Esegui un ordine short
    EnterShort();
    }
    }
    }
    }
    }

    protected override void OnExecutionUpdate(Execution execution, string executionId, double price, int quantity,
    MarketPosition marketPosition, string orderId, DateTime time)
    {
    // Implementazione di un trailing stop
    if (Position.MarketPosition == MarketPosition.Short)
    {
    // Sposta lo Stop Loss al prezzo di entrata dopo un profitto di 10 ticks
    if (Position.GetUnrealizedProfitLoss(PerformanceUnit. Currency, Close[0]) >= 10 * TickSize)
    {
    // Aggiorna lo Stop Loss al prezzo di entrata
    SetStopLoss(CalculationMode.Price, Position.AveragePrice);
    }
    }
    }
    }
    }
    Attached Files

    #2
    Find the error, no need to reply, thank you

    Comment

    Latest Posts

    Collapse

    Topics Statistics Last Post
    Started by NullPointStrategies, Today, 05:17 AM
    0 responses
    52 views
    0 likes
    Last Post NullPointStrategies  
    Started by argusthome, 03-08-2026, 10:06 AM
    0 responses
    130 views
    0 likes
    Last Post argusthome  
    Started by NabilKhattabi, 03-06-2026, 11:18 AM
    0 responses
    70 views
    0 likes
    Last Post NabilKhattabi  
    Started by Deep42, 03-06-2026, 12:28 AM
    0 responses
    44 views
    0 likes
    Last Post Deep42
    by Deep42
     
    Started by TheRealMorford, 03-05-2026, 06:15 PM
    0 responses
    48 views
    0 likes
    Last Post TheRealMorford  
    Working...
    X