/// <summary>
        /// Does not include results.
        /// </summary>
        /// <returns></returns>
        public override BasicIndicator SimpleClone()
        {
            Console.WriteLine((this.DataProvider != null).ToString());

            FxpaIndicator newIndicator = CreateInstance(_methodInfo, Description, Tradeable, ScaledToQuotes);

            newIndicator._inputDefaultArrayParameters = new List <ParameterInfo>(_inputDefaultArrayParameters);
            newIndicator._intputParameters            = new List <ParameterInfo>(_intputParameters);
            newIndicator._outputArraysParameters      = new List <ParameterInfo>(_outputArraysParameters);
            newIndicator._inputParametersValues       = (object[])_inputParametersValues.Clone();
            newIndicator._realInputArraySource        = _realInputArraySource;
            newIndicator._real1InputArraySource       = _real1InputArraySource;

            //GenericTALibIndicator newIndicator = (GenericTALibIndicator)this.MemberwiseClone();
            //// Still pointing to old indicator UI, deatach.
            //newIndicator._ui.IndicatorUIUpdatedEvent -= new PlatformIndicatorUI.IndicatorUIUpdatedDelegate(_ui_IndicatorUIUpdatedEvent);

            // Create and attach.
            //newIndicator._ui = new GenericTALibIndicatorUI(newIndicator);
            //newIndicator._ui.IndicatorUIUpdatedEvent += new PlatformIndicatorUI.IndicatorUIUpdatedDelegate(_ui_IndicatorUIUpdatedEvent);

            //lock (this)
            //{
            //    List<string> resultSetsNames = new List<string>();
            //    foreach (IndicatorResultSet set in _results.ResultSets)
            //    {
            //        resultSetsNames.Add(set.Name);
            //    }

            //    newIndicator._results = new IndicatorResults(newIndicator, resultSetsNames.ToArray());
            //}
            return(newIndicator);
        }
예제 #2
0
        void InitializeFxpaIndicator(MethodInfo methodInfo, string indicatorName, bool?isTradeable,
                                     bool?isScaledToQuotes, BarData.DataValueSourceEnum?inRealSource, BarData.DataValueSourceEnum?inReal1Source, params object[] inputParameters)
        {
            lock (this)
            {
                FxpaIndicator indicator = FxpaIndicator.CreateInstance(methodInfo, indicatorName, isTradeable, isScaledToQuotes);

                if (indicator == null)
                {
                    Console.WriteLine("Creating indicator [" + indicator.Name + "] failed.");
                    return;
                }

                Console.WriteLine(indicator.SetInputParameters(inputParameters));

                _indicatorsGroups[IndicatorGroups.Fxpa].Add(indicator.Name, indicator);
                indicator.RealInputArraySource  = inRealSource;
                indicator.Real1InputArraySource = inReal1Source;
            }
        }
        // Parameters format of TaLibCore functions.
        //int startIdx, - mandatory
        //int endIdx, - mandatory
        //double[] inReal[added 0/1] or/and inOpen or/and inLow or/and inHigh or/and inClose
        //int/double optIn[NAME] or/and another one or none - parameters
        //out int outBegIdx,
        //out int outNBElement,
        //double/int[] out[Real/Integer] and or another one
        // Example:
        //TicTacTec.TA.Library.Core.RetCode code = TicTacTec.TA.Library.Core.Sma(0, indecesCount - 1, _closeResultValues, Period, out beginIndex, out number, ma);        }
        public static FxpaIndicator CreateInstance(MethodInfo methodInfo, string description, bool? isTradeable, bool? isScaledToQuotes)
        {
            //if (methodInfo == null)
            //{
            //    return null;
            //}

            //Type returnType = methodInfo.ReturnType;

            //if (returnType != typeof(TicTacTec.TA.Library.Core.RetCode))
            //{
            //    return null;
            //}

            //ParameterInfo[] parameters = methodInfo.GetParameters();
            //if (parameters.Length < 5)
            //{
            //    return null;
            //}

            //int index = 0;

            //if (parameters[index].ParameterType != typeof(int) ||
            //    parameters[index].Name != "startIdx")
            //{
            //    return null;
            //}
            //index++;

            //if (parameters[index].ParameterType != typeof(int) ||
            //    parameters[index].Name != "endIdx")
            //{
            //    return null;
            //}
            //index++;

            //List<ParameterInfo> indicatorParameters = new List<ParameterInfo>();
            //while (parameters.Length > index && parameters[index].ParameterType == typeof(double[]))
            //{
            //    if (parameters[index].Name != "inReal" &&
            //        parameters[index].Name != "inReal0" &&
            //        parameters[index].Name != "inReal1" &&
            //        parameters[index].Name != "inHigh" &&
            //        parameters[index].Name != "inLow" &&
            //        parameters[index].Name != "inOpen" &&
            //        parameters[index].Name != "inClose" &&
            //        parameters[index].Name != "inVolume"
            //        )
            //    {
            //        return null;
            //    }

            //    indicatorParameters.Add(parameters[index]);
            //    index++;
            //}

            //// optIn parameters
            //List<ParameterInfo> indicatorInputParameters = new List<ParameterInfo>();
            //while(parameters.Length > index && parameters[index].Name.StartsWith("optIn"))
            //{
            //    if (parameters[index].ParameterType == typeof(int) ||
            //        parameters[index].ParameterType != typeof(double) ||
            //        parameters[index].ParameterType != typeof(TicTacTec.TA.Library.Core.MAType))
            //    {
            //        indicatorInputParameters.Add(parameters[index]);
            //    }
            //    else
            //    {// Invalid type.
            //        return null;
            //    }
            //    index++;
            //}

            //if (parameters.Length <= index || parameters[index].IsOut == false
            //    || parameters[index].Name != "outBegIdx")
            //{
            //    return null;
            //}

            //index++;

            //if (parameters.Length <= index || parameters[index].IsOut == false
            //    || parameters[index].Name != "outNBElement")
            //{
            //    return null;
            //}

            //index++;

            //List<ParameterInfo> indicatorOutputArrayParameters = new List<ParameterInfo>();
            //List<string> indicatorOutputArrayParametersNames = new List<string>();
            //while (parameters.Length > index)
            //{
            //    if (parameters[index].Name.StartsWith("out") == false)
            //    {
            //        return null;
            //    }

            //    if (parameters[index].ParameterType == typeof(double[])
            //        || parameters[index].ParameterType == typeof(int[]))
            //    {
            //        indicatorOutputArrayParametersNames.Add(parameters[index].Name);
            //        indicatorOutputArrayParameters.Add(parameters[index]);
            //    }
            //    else
            //    {
            //        return null;
            //    }

            //    index++;
            //}

            //if (parameters.Length != index)
            //{// Parameters left unknown.
            //    return null;
            //}
            ParameterInfo[] parameters = methodInfo.GetParameters();
            List<ParameterInfo> indicatorOutputArrayParameters = new List<ParameterInfo>();
            List<string> indicatorOutputArrayParametersNames = new List<string>();
            List<ParameterInfo> indicatorInputParameters = new List<ParameterInfo>();
            List<ParameterInfo> indicatorParameters = new List<ParameterInfo>();

            indicatorInputParameters.Add(parameters[1]);
            indicatorParameters.Add(parameters[0]);
            indicatorOutputArrayParameters.Add(parameters[2]);

            indicatorOutputArrayParametersNames.Add(parameters[2].Name);

            FxpaIndicator indicator = new FxpaIndicator(methodInfo.Name, description, isTradeable, isScaledToQuotes, indicatorOutputArrayParametersNames.ToArray());
            indicator._inputDefaultArrayParameters.AddRange(indicatorParameters);
            indicator._outputArraysParameters.AddRange(indicatorOutputArrayParameters);
            indicator._intputParameters.AddRange(indicatorInputParameters);
            indicator._methodInfo = methodInfo;
            return indicator;
        }
        // Parameters format of TaLibCore functions.
        //int startIdx, - mandatory
        //int endIdx, - mandatory
        //double[] inReal[added 0/1] or/and inOpen or/and inLow or/and inHigh or/and inClose
        //int/double optIn[NAME] or/and another one or none - parameters

        //out int outBegIdx,
        //out int outNBElement,
        //double/int[] out[Real/Integer] and or another one

        // Example:
        //TicTacTec.TA.Library.Core.RetCode code = TicTacTec.TA.Library.Core.Sma(0, indecesCount - 1, _closeResultValues, Period, out beginIndex, out number, ma);        }

        public static FxpaIndicator CreateInstance(MethodInfo methodInfo, string description, bool?isTradeable, bool?isScaledToQuotes)
        {
            //if (methodInfo == null)
            //{
            //    return null;
            //}

            //Type returnType = methodInfo.ReturnType;

            //if (returnType != typeof(TicTacTec.TA.Library.Core.RetCode))
            //{
            //    return null;
            //}

            //ParameterInfo[] parameters = methodInfo.GetParameters();
            //if (parameters.Length < 5)
            //{
            //    return null;
            //}

            //int index = 0;

            //if (parameters[index].ParameterType != typeof(int) ||
            //    parameters[index].Name != "startIdx")
            //{
            //    return null;
            //}
            //index++;

            //if (parameters[index].ParameterType != typeof(int) ||
            //    parameters[index].Name != "endIdx")
            //{
            //    return null;
            //}
            //index++;

            //List<ParameterInfo> indicatorParameters = new List<ParameterInfo>();
            //while (parameters.Length > index && parameters[index].ParameterType == typeof(double[]))
            //{
            //    if (parameters[index].Name != "inReal" &&
            //        parameters[index].Name != "inReal0" &&
            //        parameters[index].Name != "inReal1" &&
            //        parameters[index].Name != "inHigh" &&
            //        parameters[index].Name != "inLow" &&
            //        parameters[index].Name != "inOpen" &&
            //        parameters[index].Name != "inClose" &&
            //        parameters[index].Name != "inVolume"
            //        )
            //    {
            //        return null;
            //    }

            //    indicatorParameters.Add(parameters[index]);
            //    index++;
            //}

            //// optIn parameters
            //List<ParameterInfo> indicatorInputParameters = new List<ParameterInfo>();
            //while(parameters.Length > index && parameters[index].Name.StartsWith("optIn"))
            //{
            //    if (parameters[index].ParameterType == typeof(int) ||
            //        parameters[index].ParameterType != typeof(double) ||
            //        parameters[index].ParameterType != typeof(TicTacTec.TA.Library.Core.MAType))
            //    {
            //        indicatorInputParameters.Add(parameters[index]);
            //    }
            //    else
            //    {// Invalid type.
            //        return null;
            //    }
            //    index++;
            //}

            //if (parameters.Length <= index || parameters[index].IsOut == false
            //    || parameters[index].Name != "outBegIdx")
            //{
            //    return null;
            //}

            //index++;

            //if (parameters.Length <= index || parameters[index].IsOut == false
            //    || parameters[index].Name != "outNBElement")
            //{
            //    return null;
            //}

            //index++;

            //List<ParameterInfo> indicatorOutputArrayParameters = new List<ParameterInfo>();
            //List<string> indicatorOutputArrayParametersNames = new List<string>();
            //while (parameters.Length > index)
            //{
            //    if (parameters[index].Name.StartsWith("out") == false)
            //    {
            //        return null;
            //    }

            //    if (parameters[index].ParameterType == typeof(double[])
            //        || parameters[index].ParameterType == typeof(int[]))
            //    {
            //        indicatorOutputArrayParametersNames.Add(parameters[index].Name);
            //        indicatorOutputArrayParameters.Add(parameters[index]);
            //    }
            //    else
            //    {
            //        return null;
            //    }

            //    index++;
            //}

            //if (parameters.Length != index)
            //{// Parameters left unknown.
            //    return null;
            //}
            ParameterInfo[]      parameters = methodInfo.GetParameters();
            List <ParameterInfo> indicatorOutputArrayParameters      = new List <ParameterInfo>();
            List <string>        indicatorOutputArrayParametersNames = new List <string>();
            List <ParameterInfo> indicatorInputParameters            = new List <ParameterInfo>();
            List <ParameterInfo> indicatorParameters = new List <ParameterInfo>();



            indicatorInputParameters.Add(parameters[1]);
            indicatorParameters.Add(parameters[0]);
            indicatorOutputArrayParameters.Add(parameters[2]);

            indicatorOutputArrayParametersNames.Add(parameters[2].Name);

            FxpaIndicator indicator = new FxpaIndicator(methodInfo.Name, description, isTradeable, isScaledToQuotes, indicatorOutputArrayParametersNames.ToArray());

            indicator._inputDefaultArrayParameters.AddRange(indicatorParameters);
            indicator._outputArraysParameters.AddRange(indicatorOutputArrayParameters);
            indicator._intputParameters.AddRange(indicatorInputParameters);
            indicator._methodInfo = methodInfo;
            return(indicator);
        }
예제 #5
0
 /// <summary>
 ///
 /// </summary>
 public FxpaIndicatorUI(FxpaIndicator indicator)
     : base(indicator)
 {
     Console.WriteLine(indicator.Name + "," + (indicator.DataProvider != null).ToString());
 }