| 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;
// }
// }
// }