Esempio n. 1
0
        /// <summary>
        /// Constructeur des données. Récupère les Chandeliers et les différents indicateurs.
        /// </summary>
        public Donnees(MonnaieBTC monnaie, String monnaieReference = "BTC", String interval = "1h", String limit = "500")
        {
            // Récupération de la monnaie.
            Monnaie          = monnaie;
            MonnaieReference = monnaieReference;
            Interval         = interval;
            Limit            = limit;

            RecuperationMaxDonnees();

            // Récupération de l'indicateur MA.
            MA = new IndicatorMA(this);

            // Récupération de l'indicateur MACD.
            MACD = new IndicatorMACD(this);

            // Récupération de l'indicateur DMI.
            DMI = new IndicatorDMI(this);

            // Récupération de l'indicateur BOLL.
            BOLL = new IndicatorBOLL(this);

            // Récupération de l'indicateur RSI.
            RSI = new IndicatorRSI(this);

            // Récupération de l'indicateur MTM.
            MTM = new IndicatorMTM(this);

            // Création du réseau de neurones.
            Neurone = new Neurone(this);
        }
Esempio n. 2
0
        /// <summary>
        /// Normalise l'ensemble des données MA.
        /// </summary>
        /// <param name="donnees"> Les MA. </param>
        private void NormalisationMA(IndicatorMA donnees)
        {
            listeMA7Normalise  = new List <double>(NormaliserDonnees(donnees.MA7));
            listeMA25Normalise = new List <double>(NormaliserDonnees(donnees.MA25));
            listeMA99Normalise = new List <double>(NormaliserDonnees(donnees.MA99));

            listeDIFFMA7MA25Normalise  = new List <double>(NormaliserDonnees(donnees.DIFFMA7MA25));
            listeDIFFMA7MA99Normalise  = new List <double>(NormaliserDonnees(donnees.DIFFMA7MA99));
            listeDIFFMA25MA99Normalise = new List <double>(NormaliserDonnees(donnees.DIFFMA25MA99));
        }
Esempio n. 3
0
    public Operation GetOperationDetail(double[] arrayPriceOpen, double[] arrayPriceClose, double[] arrayPriceLow, double[] arrayPriceHigh, double[] arrayVolume)
    {
        try
        {
            int      atr1 = 0;
            int      atr2 = 0;
            double[] atr3 = new double[arrayPriceClose.Length];
            TicTacTec.TA.Library.Core.Atr(0, arrayPriceClose.Length - 1, arrayPriceHigh, arrayPriceLow, arrayPriceClose, 14, out atr1, out atr2, atr3);
            double atrVal = atr3[atr2 - 1];

            IndicatorMACD macd          = new IndicatorMACD();
            Operation     operationMACD = macd.GetOperation(arrayPriceOpen, arrayPriceClose, arrayPriceLow, arrayPriceHigh, arrayVolume);

            IndicatorCCI cci          = new IndicatorCCI();
            Operation    operationCCI = cci.GetOperation(arrayPriceOpen, arrayPriceClose, arrayPriceLow, arrayPriceHigh, arrayVolume);

            IndicatorRSI rsi          = new IndicatorRSI();
            Operation    operationRSI = rsi.GetOperation(arrayPriceOpen, arrayPriceClose, arrayPriceLow, arrayPriceHigh, arrayVolume);

            if (this.maTimegraph != MainClass.timeGraph)
            {
                MainClass.log("Download candles " + maTimegraph + " para processar MA");
                MainClass.getCandles(maTimegraph);
            }

            IndicatorMA ma = new IndicatorMA();
            ma.setLong(this.ilong);
            ma.setShort(this.ishort);
            Operation operationMA = ma.GetOperation(MainClass.arrayPriceOpen[maTimegraph], MainClass.arrayPriceClose[maTimegraph], MainClass.arrayPriceLow[maTimegraph], MainClass.arrayPriceHigh[maTimegraph], MainClass.arrayPriceVolume[maTimegraph]);


            //TicTacTec.TA.Library.Core.Atr();

            MainClass.log("CCI: " + cci.result);
            MainClass.log("CCI Tendency: " + cci.getTendency());
            MainClass.log("RSI: " + rsi.result);
            MainClass.log("RSI Tendency: " + rsi.getTendency());
            MainClass.log("MACD: " + macd.result);
            MainClass.log("MACD Sig: " + macd.result2);
            MainClass.log("MACD OP: " + operationMACD.ToString());
            MainClass.log("EMA Long 5m: " + ma.getResult());
            MainClass.log("EMA Short 5m: " + ma.getResult2());


            if (MainClass.carolatr)
            {
                MainClass.log("ATR: " + atrVal);
            }
            //return Operation.buy;
            if (cci.result > 0 && operationMACD == Operation.buy && rsi.result > 50 /*&& cci.getTendency() == Tendency.high && rsi.getTendency() == Tendency.high*/ && ((MainClass.carolatr && atrVal < MainClass.atrvalue) || !MainClass.carolatr))
            //if (operationMACD == Operation.buy)
            {
                /*double[] arrayresultMAHigh = new double[arrayPriceClose.Length];
                 * int outBegidxHigh, outNbElementHigh;
                 * TicTacTec.TA.Library.Core.MovingAverage(0, arrayPriceClose.Length - 1, arrayPriceClose, Convert.ToInt32(this.high), TicTacTec.TA.Library.Core.MAType.Ema, out outBegidxHigh, out outNbElementHigh, arrayresultMA);
                 * if (arrayPriceClose[arrayPriceClose.Length - 1] > arrayresultMAHigh[outNbElementHigh - 1])
                 *  return Operation.buy;*/

                if (ma.getResult2() > ma.getResult())
                {
                    return(Operation.buy);
                }
            }
            if (cci.result < 0 && operationMACD == Operation.sell && rsi.result < 50 /*&& cci.getTendency() == Tendency.low && rsi.getTendency() == Tendency.low */ && ((MainClass.carolatr && atrVal < MainClass.atrvalue) || !MainClass.carolatr))
            //if (operationMACD == Operation.sell)
            {
                /*double[] arrayresultMA = new double[arrayPriceClose.Length];
                 * int outBegidx, outNbElement;
                 * TicTacTec.TA.Library.Core.MovingAverage(0, arrayPriceClose.Length - 1, arrayPriceClose, 100, TicTacTec.TA.Library.Core.MAType.Ema, out outBegidx, out outNbElement, arrayresultMA);
                 * if (arrayPriceClose[arrayPriceClose.Length - 1] < arrayresultMA[outNbElement - 1])
                 *  return Operation.sell;*/
                if (ma.getResult2() < ma.getResult())
                {
                    return(Operation.sell);
                }
            }
            return(Operation.nothing);
        }
        catch
        {
            return(Operation.nothing);
        }
    }