Overall Statistics
Total Trades
0
Average Win
0%
Average Loss
0%
Compounding Annual Return
0%
Drawdown
0%
Expectancy
0
Net Profit
0%
Sharpe Ratio
0
Probabilistic Sharpe Ratio
0%
Loss Rate
0%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
0
Beta
0
Annual Standard Deviation
0
Annual Variance
0
Information Ratio
-2.045
Tracking Error
0.143
Treynor Ratio
0
Total Fees
$0.00
Estimated Strategy Capacity
$0
Lowest Capacity Asset
namespace QuantConnect {

	public class Signal : BaseData
    {
    	public decimal Sig3d = 0;
    	public decimal Sig1m = 0;
    	
    public override string GetSource(SubscriptionDataConfig config, DateTime date, DataFeedEndpoint datafeed){
    	return "https://www.dropbox.com/sh/4qs8pqq758z7fjx/AAAn-JCEYsg7JuEg-OaCPOWpa?dl=1";
    	// FILE WITH ALL CHARTS UP UNTIL 1 YEAR FOR BACKTEST = https://www.dropbox.com/sh/q30ws9w6dv1wo09/AABEtpaYQLO-5hjJzOIDkQiba?dl=0
   
	}
		 
	public override BaseData Reader(SubscriptionDataConfig config, string line, DateTime date, DataFeedEndpoint datafeed){
		Signal signal = new Signal();
		try{
			string[] data = line.Split(',');
			signal.Time = DateTime.Parse(data[0]);
			signal.Sig3d = Convert.ToDecimal(data[1]);
			signal.Sig1m = Convert.ToDecimal(data[2]);
			}
		catch (Exception){
			return null;
			}
		return signal;
		}	
	}
    		
}
namespace QuantConnect.Algorithm.CSharp
{
    public class IKFbot : QCAlgorithm
    {
    	private Signal tradeSignal; 
    	private const string Symbol = "USO";
    	private SimpleMovingAverage sma;
    	private SimpleMovingAverage smanow;

        public override void Initialize()
        {
            SetStartDate(2020, 9, 6);  //Set Start Date
            SetEndDate(2021, 9, 20);
            SetCash(100000);             //Set Strategy Cash
            AddSecurity(SecurityType.Equity, Symbol, Resolution.Minute, false, 2, false);
        	
        	AddData<Signal>("SignalStrength", Resolution.Minute);
        	sma = SMA(Symbol, 5, Resolution.Daily);
        	smanow = SMA(Symbol, 1, Resolution.Daily);
        	}
        
	public void OnData(Signal data){
		tradeSignal = data;
		}
		
	public void OnData(TradeBars data){
		
		if(!sma.IsReady) return;
		
		var holdings = Portfolio[Symbol].Quantity;
		
			if(tradeSignal != null){
				if ((tradeSignal.Sig1m > 0 && smanow > sma) || (tradeSignal.Sig1m < 0 && smanow < sma)){
					if (tradeSignal.Sig3d > 0 && holdings <=0){
					SetHoldings(Symbol, 1.0);
					
				}
				if (tradeSignal.Sig3d < 0 && holdings >=0){
					SetHoldings(Symbol, -1.0);
					
					}
			
				}
			}
		}
	}


}        
// using System;
// using System.Collections.Generic;
// using System.Globalization;
// using System.Linq;
// using QuantConnect.Data;

// namespace QuantConnect.Algorithm.CSharp
// {
//     public class CustomDataNiftyAlgorithm : QCAlgorithm
//     {
//         public override void Initialize()
//         {
//             SetStartDate(2020, 9, 6);  //Set Start Date
//             SetEndDate(2021, 9, 6);
//             SetCash(100000);
            
//             AddData<Signal>("SIGNAL", Resolution.Daily);
//         }

//         public void OnData(Slice data)
//         {

//             if (!data.ContainsKey("SIGNAL"))
//             {
//                 return;
//             }

//             Log(Convert.ToDouble(data["SIGNAL"].Sig1m));
//             Log(Convert.ToDouble(data["SIGNAL"].Sig3d));
//         }
//     }

//     public class Signal : BaseData
//     {
//         public decimal Sig3d;
//         public decimal Sig1m;

//         public Signal()
//         {
//             Symbol = "SIGNAL";
//         }

//         public override SubscriptionDataSource GetSource(SubscriptionDataConfig config, DateTime date, bool isLiveMode)
//         {
//             return new SubscriptionDataSource("https://www.dropbox.com/sh/4qs8pqq758z7fjx/AAAn-JCEYsg7JuEg-OaCPOWpa?dl=1", SubscriptionTransportMedium.RemoteFile);
//         }

//         public override BaseData Reader(SubscriptionDataConfig config, string line, DateTime date, bool isLiveMode)
//         {
//             //New Signal object
//             var index = new Signal();
            
//             string[] data = line.Split(',')[0].Split(';');
            
//             if (char.IsLetter(data[0][0]))
//                 return index;
            
//             try
//             {
//                 index.Symbol = "SIGNAL";
//                 index.Sig3d = Convert.ToDecimal(data[1]);
//                 index.Sig1m = Convert.ToDecimal(data[2]);
//                 index.Time = DateTime.Parse(Convert.ToString(data[0])); 
//             }
//             catch
//             {
//             }
//             return index;
//         }
//     }
// }