/// <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); }
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); }
/// <summary> /// /// </summary> public FxpaIndicatorUI(FxpaIndicator indicator) : base(indicator) { Console.WriteLine(indicator.Name + "," + (indicator.DataProvider != null).ToString()); }