Nouveau Belkhayate Gravity MDF

MQL5 Indicadores Java

Termos de Referência

region Using declarations

using System;

using System.ComponentModel;

using System.Diagnostics;

using System.Drawing;

using System.Drawing.Drawing2D;

using System.Xml.Serialization;

using NinjaTrader.Cbi;

using NinjaTrader.Data;

using NinjaTrader.Gui.Chart;

#endregion


// This namespace holds all indicators and is required. Do not change it.

namespace NinjaTrader.Indicator

{

    /// <summary>

    /// Enter the description of your new custom indicator here

    /// </summary>

    [Description("Belkhayate Gravity Center")]

    public class BCG : Indicator

    {

        #region Variables

        // Wizard generated variables

        private int period = 180; // Default setting for Period

        private int order = 3; // Default setting for Order

        private double ecart = 1.618; // Default setting for Ecart

    // User defined variables (add any user defined variables below)

private double[,] ai = new double[10,10];

private double[] b = new double[10];

private double[] x = new double[10];

private double[] sx = new double[10];

private double sum;

private int ip;

private int p;

private int n;

private int f;

private double qq;

private double mm;

private double tt;

private int ii;

private int jj;

private int kk;

private int ll;

private int nn;

private double sq;

private double sq2;

private int i0 = 0;

private int mi;

        #endregion


        /// <summary>

        /// This method is used to configure the indicator and is called once before any bar data is loaded.

        /// </summary>

        protected override void Initialize()

        {

            Add(new Plot(Color.FromKnownColor(KnownColor.MediumBlue), PlotStyle.Line, "GravityLine"));

            Add(new Plot(Color.FromKnownColor(KnownColor.Gray), PlotStyle.Line, "UC1"));

            Add(new Plot(Color.FromKnownColor(KnownColor.Red), PlotStyle.Line, "UC2"));

            Add(new Plot(Color.FromKnownColor(KnownColor.Red), PlotStyle.Line, "UC3"));

            Add(new Plot(Color.FromKnownColor(KnownColor.Gray), PlotStyle.Line, "LC1"));

            Add(new Plot(Color.FromKnownColor(KnownColor.LimeGreen), PlotStyle.Line, "LC2"));

            Add(new Plot(Color.FromKnownColor(KnownColor.LimeGreen), PlotStyle.Line, "LC3"));

            CalculateOnBarClose = false;

            Overlay = true;

            PriceTypeSupported = true;

        }


        /// <summary>

        /// Called on each bar update event (incoming tick)

        /// </summary>

        protected override void OnBarUpdate()

        {

if( CurrentBar < Period) return;

ip = Period;

p = ip;

sx[1] = p + 1;

nn = Order + 1;

//----------------------sx-------------------------------------------------------------------

for(mi=1;mi<=nn*2-2;mi++) 

{

sum=0;

for(n=i0;n<=i0+p;n++)

{

sum+=Math.Pow(n,mi);

}

sx[mi+1]=sum;

}  

//----------------------syx-----------

for(mi=1;mi<=nn;mi++)

{

sum=0.00000;

for(n=i0;n<=i0+p;n++)

{

if(mi==1) sum+=Close[n];

else sum+=Close[n]*Math.Pow(n,mi-1);

}

b[mi]=sum;

//===============Matrix=======================================================================================================

for(jj=1;jj<=nn;jj++)

{

for(ii=1; ii<=nn; ii++)

{

kk=ii+jj-1;

ai[ii,jj]=sx[kk];

}

}  

//===============Gauss========================================================================================================

for(kk=1; kk<=nn-1; kk++)

{

ll=0;

mm=0;

for(ii=kk; ii<=nn; ii++)

{

if(Math.Abs(ai[ii,kk])>mm)

{

mm=Math.Abs(ai[ii,kk]);

ll=ii;

}

}

if(ll==0) return;   

if (ll!=kk)

{

for(jj=1; jj<=nn; jj++)

{

tt=ai[kk,jj];

ai[kk,jj]=ai[ll,jj];

ai[ll,jj]=tt;

}

tt=b[kk];

b[kk]=b[ll];

b[ll]=tt;

}  

for(ii=kk+1;ii<=nn;ii++)

{

qq=ai[ii,kk]/ai[kk,kk];

for(jj=1;jj<=nn;jj++)

{

if(jj==kk) ai[ii,jj]=0;

else ai[ii,jj]=ai[ii,jj]-qq*ai[kk,jj];

}

b[ii]=b[ii]-qq*b[kk];

}

}  

x[nn]=b[nn]/ai[nn,nn];

for(ii=nn-1;ii>=1;ii--)

{

tt=0;

for(jj=1;jj<=nn-ii;jj++)

{

tt=tt+ai[ii,ii+jj]*x[ii+jj];

x[ii]=(1/ai[ii,ii])*(b[ii]-tt);

}

//===========================================================================================================================

for(n=i0;n<=i0+p;n++)

{

sum=0;

for(kk=1;kk<=Order;kk++)

{

sum+=x[kk+1]*Math.Pow(n,kk);

}

GravityLine.Set(n,x[1]+sum);

//-----------------------------------Std-----------------------------------------------------------------------------------

sq=0.0;

for(n=i0;n<=i0+p;n++)

{

sq+=Math.Pow(Close[n]-GravityLine[n],2);

}

sq = Math.Sqrt(sq/(p+1))*Ecart;

for(n=i0;n<=i0+p;n++)

{

UC1.Set(n,GravityLine[n]+sq);

LC1.Set(n,GravityLine[n]-sq);

UC2.Set(n,GravityLine[n]+sq*2);

LC2.Set(n,GravityLine[n]-sq*2);

UC3.Set(n,GravityLine[n]+sq*3);

LC3.Set(n,GravityLine[n]-sq*3);

}

        }


        #region Properties

        [Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove

        [XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove

        public DataSeries GravityLine

        {

            get { return Values[0]; }

        }


        [Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove

        [XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove

        public DataSeries UC1

        {

            get { return Values[1]; }

        }


        [Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove

        [XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove

        public DataSeries UC2

        {

            get { return Values[2]; }

        }


        [Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove

        [XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove

        public DataSeries UC3

        {

            get { return Values[3]; }

        }


        [Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove

        [XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove

        public DataSeries LC1

        {

            get { return Values[4]; }

        }


        [Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove

        [XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove

        public DataSeries LC2

        {

            get { return Values[5]; }

        }


        [Browsable(false)] // this line prevents the data series from being displayed in the indicator properties dialog, do not remove

        [XmlIgnore()] // this line ensures that the indicator can be saved/recovered as part of a chart template, do not remove

        public DataSeries LC3

        {

            get { return Values[6]; }

        }


        [Description("")]

        [GridCategory("Parameters")]

        public int Period

        {

            get { return period; }

            set { period = Math.Max(1, value); }

        }


        [Description("")]

        [GridCategory("Parameters")]

        public int Order

        {

            get { return order; }

            set { order = Math.Max(1, value); }

        }


        [Description("")]

        [GridCategory("Parameters")]

        public double Ecart

        {

            get { return ecart; }

            set { ecart = Math.Max(0.100, value); }

        }

        #endregion

    }

}


#region NinjaScript generated code. Neither change nor remove.

// This namespace holds all indicators and is required. Do not change it.

namespace NinjaTrader.Indicator

{

    public partial class Indicator : IndicatorBase

    {

        private BCG[] cacheBCG = null;


        private static BCG checkBCG = new BCG();


        /// <summary>

        /// Belkhayate Gravity Center

        /// </summary>

        /// <returns></returns>

        public BCG BCG(double ecart, int order, int period)

        {

            return BCG(Input, ecart, order, period);

        }


        /// <summary>

        /// Belkhayate Gravity Center

        /// </summary>

        /// <returns></returns>

        public BCG BCG(Data.IDataSeries input, double ecart, int order, int period)

        {

            if (cacheBCG != null)

                for (int idx = 0; idx < cacheBCG.Length; idx++)

                    if (Math.Abs(cacheBCG[idx].Ecart - ecart) <= double.Epsilon && cacheBCG[idx].Order == order && cacheBCG[idx].Period == period && cacheBCG[idx].EqualsInput(input))

                        return cacheBCG[idx];


            lock (checkBCG)

            {

                checkBCG.Ecart = ecart;

                ecart = checkBCG.Ecart;

                checkBCG.Order = order;

                order = checkBCG.Order;

                checkBCG.Period = period;

                period = checkBCG.Period;


                if (cacheBCG != null)

                    for (int idx = 0; idx < cacheBCG.Length; idx++)

                        if (Math.Abs(cacheBCG[idx].Ecart - ecart) <= double.Epsilon && cacheBCG[idx].Order == order && cacheBCG[idx].Period == period && cacheBCG[idx].EqualsInput(input))

                            return cacheBCG[idx];


                BCG indicator = new BCG();

                indicator.BarsRequired = BarsRequired;

                indicator.CalculateOnBarClose = CalculateOnBarClose;

#if NT7

                indicator.ForceMaximumBarsLookBack256 = ForceMaximumBarsLookBack256;

                indicator.MaximumBarsLookBack = MaximumBarsLookBack;

#endif

                indicator.Input = input;

                indicator.Ecart = ecart;

                indicator.Order = order;

                indicator.Period = period;

                Indicators.Add(indicator);

                indicator.SetUp();


                BCG[] tmp = new BCG[cacheBCG == null ? 1 : cacheBCG.Length + 1];

                if (cacheBCG != null)

                    cacheBCG.CopyTo(tmp, 0);

                tmp[tmp.Length - 1] = indicator;

                cacheBCG = tmp;

                return indicator;

            }

        }

    }

}


// This namespace holds all market analyzer column definitions and is required. Do not change it.

namespace NinjaTrader.MarketAnalyzer

{

    public partial class Column : ColumnBase

    {

        /// <summary>

        /// Belkhayate Gravity Center

        /// </summary>

        /// <returns></returns>

        [Gui.Design.WizardCondition("Indicator")]

        public Indicator.BCG BCG(double ecart, int order, int period)

        {

            return _indicator.BCG(Input, ecart, order, period);

        }


        /// <summary>

        /// Belkhayate Gravity Center

        /// </summary>

        /// <returns></returns>

        public Indicator.BCG BCG(Data.IDataSeries input, double ecart, int order, int period)

        {

            return _indicator.BCG(input, ecart, order, period);

        }

    }

}


// This namespace holds all strategies and is required. Do not change it.

namespace NinjaTrader.Strategy

{

    public partial class Strategy : StrategyBase

    {

        /// <summary>

        /// Belkhayate Gravity Center

        /// </summary>

        /// <returns></returns>

        [Gui.Design.WizardCondition("Indicator")]

        public Indicator.BCG BCG(double ecart, int order, int period)

        {

            return _indicator.BCG(Input, ecart, order, period);

        }


        /// <summary>

        /// Belkhayate Gravity Center

        /// </summary>

        /// <returns></returns>

        public Indicator.BCG BCG(Data.IDataSeries input, double ecart, int order, int period)

        {

            if (InInitialize && input == null)

                throw new ArgumentException("You only can access an indicator with the default input/bar series from within the 'Initialize()' method");


            return _indicator.BCG(input, ecart, order, period);

        }

    }

}

#endregion


Respondido

1
Desenvolvedor 1
Classificação
(564)
Projetos
844
73%
Arbitragem
15
53% / 13%
Expirado
193
23%
Trabalhando
2
Desenvolvedor 2
Classificação
(1)
Projetos
1
0%
Arbitragem
1
0% / 100%
Expirado
0
Livre
Pedidos semelhantes
Title Professional AI Automation Trading Bot for Forex & Crypto Solution Language Python (preferred) or MQL5 depending on integration requirements. Categories Expert Advisor (EA) for MetaTrader 5 Automated trading strategies AI/ML-based signal generation Risk management automation Required Skills Strong knowledge of MQL5/Python Experience with MetaTrader API integration Machine learning model deployment

Informações sobre o projeto

Orçamento
30 - 200 USD
Prazo
para 100 dias