/// <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); }
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); //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); if (MainClass.carolatr) { MainClass.log("ATR: " + atrVal); } 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[] 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.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); } } return(Operation.nothing); } catch { return(Operation.nothing); } }
public Operation GetOperationDetail(double[] arrayPriceOpen, double[] arrayPriceClose, double[] arrayPriceLow, double[] arrayPriceHigh, double[] arrayVolume) { try { 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); MainClass.log("CCI " + cci.result); MainClass.log("RSI " + rsi.result); if (cci.result > 0 && operationMACD == Operation.buy && rsi.result > 50 && cci.getTendency() == Tendency.high && rsi.getTendency() == Tendency.high) //if (operationMACD == Operation.buy) { 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.buy); } } if (cci.result < 0 && operationMACD == Operation.sell && rsi.result < 50 && cci.getTendency() == Tendency.low && rsi.getTendency() == Tendency.low) //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); } } return(Operation.nothing); } catch { return(Operation.nothing); } }
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); } }
/// <summary> /// Normalise l'ensemble des données MACD. /// </summary> /// <param name="donnees"> Le MACD. </param> private void NormalisationMACD(IndicatorMACD donnees) { listeMACDNormalise = new List <double>(NormaliserDonnees(donnees.MACD)); listeMACDHistNormalise = new List <double>(NormaliserDonnees(donnees.MACDHist)); listeMACDSignalNormalise = new List <double>(NormaliserDonnees(donnees.MACDSignal)); }
/// <summary> /// 追加MACD指标 /// </summary> /// <returns></returns> public IndicatorMACD AddMacd(string macd,string diff,string dea,string close, int longCycle,int shortCycle,int signalPeriods,int panelID) { if (this.dicChartPanel.ContainsKey(panelID)) { IndicatorMACD indicatorMACD = new IndicatorMACD(); indicatorMACD.LongCycle = longCycle; indicatorMACD.ShortCycle = shortCycle; indicatorMACD.SignalPeriods = signalPeriods; string zeroLine = CommonClass.GetGuid(); indicatorMACD.HsMACD = AddHistogram(macd, macd, null, panelID); SetHistogramStyle(macd, Color.Red, Color.SkyBlue, 1, true); indicatorMACD.TlsDiff = AddTrendLine(diff, diff, panelID); SetTrendLineStyle(diff, Color.White, Color.White, 1, DashStyle.Solid); indicatorMACD.TlsDea = AddTrendLine(dea, dea, panelID); SetTrendLineStyle(dea, Color.Yellow, Color.Yellow, 1, DashStyle.Solid); indicatorMACD.Close = close; this.dtAllMsg.Columns.Add(indicatorMACD.LongCycleEMA); this.dtAllMsg.Columns.Add(indicatorMACD.ShortCycleEMA); indicatorMACD.DataSource = this.dtAllMsg; this.indMacdList.Add(indicatorMACD); return indicatorMACD; } return null; }