Mogalef Bands para NT8

Foro dedicado a esta excelente herramienta de desarrollo e implementación de sistemas de trading
Responder
Avatar de Usuario
Fercho
Mensajes: 97
Registrado: 05 Ene 2022 13:48

Mogalef Bands para NT8

Mensaje por Fercho »

Que tal X, adjunto mi versión para NT8, vaya banda de Mogalef que hemos armado en el foro :-D

NT8 > New > NinjaScript Editor > New Indicator > Next > Name: "MogalefBands" > Generate

Ctrl+E en el archivo de texto adjunto, Ctrl+A y luego Ctrl+V en NT8, y luego F5 para compilar.

Saludos!
Adjuntos
MogalefBands.txt
(3.38 KiB) Descargado 181 veces
"Los números son como prisioneros de guerra, cuanto más los sacudes, más información te dan"
Avatar de Usuario
X-Trader
Administrador
Mensajes: 13166
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Mogalef Bands para NT8

Mensaje por X-Trader »

Mil gracias por el aporte Fercho!!! :smt038 :smt038 :smt038


Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
zapatapriscotrading
Mensajes: 1
Registrado: 05 May 2025 12:18

Re: Mogalef Bands para NT8

Mensaje por zapatapriscotrading »

hola buenos días, cordial saludo, de antemano gracias por tu aporte. sin embargo, he seguido los pasos que has puesto pero me sale error. te dejo una imagen adjunta, muchas gracias.
Adjuntos
WhatsApp Image 2025-05-05 at 12.22.30.jpeg
Avatar de Usuario
Fercho
Mensajes: 97
Registrado: 05 Ene 2022 13:48

Re: Mogalef Bands para NT8

Mensaje por Fercho »

Que tal zapata,

Aprovecho tu pregunta para adjuntar una nueva versión del código, mejor optimizada en rendimiento y visualización.

Recuerda primero crear un nuevo indicador en NinjaTrader8 con el nombre exacto: MogalefBands y le das directo a "generate", luego sólo copiar (el código que presento abajo), pegar en la ventana del nuevo indicador que has creado en NT8 (recuerda antes de seleccionar todo con un control+A), le das a la tecla F5 para compilar, et voilà...

Código: Seleccionar todo

#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.DrawingTools;
#endregion

namespace NinjaTrader.NinjaScript.Indicators
{
	/// <summary>
	/// The Mogalef Bands indicator is a technical analysis tool used to identify potential
	/// price reversals and trends in financial markets.
	/// The bands expand and contract based on market volatility, providing visual cues for traders.
	/// </summary>
	public class MogalefBands : Indicator
	{
		private Series<double>	cp;
		private LinReg	lrg;
		private	StdDev	dev;

		protected override void OnStateChange()
		{
			if (State == State.SetDefaults)
			{
				Description					= @"Mogalef Bands indicator @byFercho v.may25";
				Name						= "MogalefBands";
				Calculate					= Calculate.OnEachTick;
				IsOverlay					= true;
				IsSuspendedWhileInactive	= true;
				ScaleJustification			= NinjaTrader.Gui.Chart.ScaleJustification.Right;
				BarsRequiredToPlot			= 1;

				Period = 3;
				NumDev = 7;

				AddPlot(Brushes.Blue,		"Highest band");
				AddPlot(Brushes.DodgerBlue,	"Higher band");
				AddPlot(Brushes.White,		"Median line");
				AddPlot(Brushes.IndianRed,	"Lower band");
				AddPlot(Brushes.Red,		"Lowest band");
			}
			else if (State == State.DataLoaded)
			{
				cp	= new Series<double>(this);
				lrg	= LinReg(cp, Period);
				dev	= StdDev(lrg , NumDev);
			}
		}

		protected override void OnBarUpdate()
		{
			cp[0] = (Open[0] + Typical[0] + Close[0])/3;

			if (CurrentBar < NumDev - 1)
				return;

			double lr = lrg[0], dv, lrx;

			if (lr > BandLowest[1] && lr < BandHighest[1])
			{
				lrx = lrg[1];
				dv	= dev[1];
			}
			else
			{
				lrx = lr;
				dv	= dev[0];
			}

			BandHighest[0]	= lrx + 2*dv;
			BandHigher[0]	= lrx + dv;
			BandLower[0]	= lrx - dv;
			BandLowest[0]	= lrx - 2*dv;
			Median[0]		= (BandHighest[0] + BandLowest[0])/2;
		}

		public override string FormatPriceMarker(double price)
		{
			return price.ToString("N3");
		}

		#region Properties

		[Browsable(false)]
		[XmlIgnore()]
		public Series<double> BandHighest
		{
			get { return Values[0]; }
		}

		[Browsable(false)]
		[XmlIgnore()]
		public Series<double> BandHigher
		{
			get { return Values[1]; }
		}

		[Browsable(false)]
		[XmlIgnore()]
		public Series<double> Median
		{
			get { return Values[2]; }
		}

		[Browsable(false)]
		[XmlIgnore()]
		public Series<double> BandLower
		{
			get { return Values[3]; }
		}

		[Browsable(false)]
		[XmlIgnore()]
		public Series<double> BandLowest
		{
			get { return Values[4]; }
		}

		[Range(2, int.MaxValue), NinjaScriptProperty]
		[Display(ResourceType = typeof(Custom.Resource), Name = "LinReg Period", GroupName = "NinjaScriptParameters", Order = 0)]
		public int Period
		{ get; set; }

		[Range(1, int.MaxValue), NinjaScriptProperty]
		[Display(ResourceType = typeof(Custom.Resource), Name = "NumDev Period", GroupName = "NinjaScriptParameters", Order = 1)]
		public int NumDev
		{ get; set; }
#endregion
	}
}
Última edición por Fercho el 05 May 2025 19:52, editado 2 veces en total.
"Los números son como prisioneros de guerra, cuanto más los sacudes, más información te dan"
Avatar de Usuario
X-Trader
Administrador
Mensajes: 13166
Registrado: 06 Sep 2004 10:18
Contactar:

Re: Mogalef Bands para NT8

Mensaje por X-Trader »

Mil gracias por tu aporte, Fercho!


Saludos,
X-Trader
"Los sistemas de trading pueden funcionar en ciertas condiciones de mercado todo el tiempo, en todas las condiciones de mercado en algún momento del tiempo, pero nunca en todas las condiciones de mercado todo el tiempo."
Avatar de Usuario
Fercho
Mensajes: 97
Registrado: 05 Ene 2022 13:48

Re: Mogalef Bands para NT8

Mensaje por Fercho »

de nada X, le he dado una vuelta más de tuerca con ayuda de ChatGPT para optimizar el formuleo (algo que la IA sí lo hace de maravilla), ya lo he cargado en la sección de código anterior...

Saludos!
"Los números son como prisioneros de guerra, cuanto más los sacudes, más información te dan"
Si te ha gustado este hilo del Foro, ¡compártelo en redes!


Responder

Volver a “Ninja Trader”