| 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 Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0 Beta 0 Annual Standard Deviation 0 Annual Variance 0 Information Ratio 0 Tracking Error 0 Treynor Ratio 0 Total Fees $0.00 |
using NodaTime;
namespace QuantConnect
{
/// <summary>
/// Daily Fx demonstration to call on and use the FXCM Calendar API
/// </summary>
public class FxDaily : QCAlgorithm
{
Dictionary<Symbol, StandardDeviation> Vol= new Dictionary<Symbol, StandardDeviation>() ;
string[] _tickers = { "EURUSD", "USDJPY", "USDCHF", "GBPUSD", "USDCAD", "AUDUSD"};
List<Symbol> _symbols = new List<Symbol>();
public int signal = 0;
/// <summary>
/// Add the Daily FX type to our algorithm and use its events.
/// </summary>
public override void Initialize()
{
SetStartDate(2016, 1, 1); //Set Start Date
SetEndDate(2017, 3, 30); //Set End Date
SetCash(100000); //Set Strategy Cash
AddData<DailyFx>("DFX", Resolution.Minute, DateTimeZone.Utc);
foreach (var ticker in _tickers)
{
_symbols.Add(AddForex(ticker, market: Market.Oanda).Symbol);
var symbol = _symbols.Last();
Vol[symbol]= STD(symbol, 24, Resolution.Hour);
}
SetBrokerageModel(BrokerageName.OandaBrokerage);
}
public override void OnData(Slice slice)
{
// RiskManager.UpdateTrailingStopOrders();
}
/// <summary>
/// Trigger an event on a complete calendar event which has an actual value.
/// </summary>
public void OnData(DailyFx calendar)
{
// We only want to trade the news of all others currencies against USD.
if (calendar.Currency.ToUpper() == "USD") return;
// The algorithm only uses meaningful and important news/announcements.
if (calendar.Importance == FxDailyImportance.High
&& calendar.Meaning != FxDailyMeaning.None)
{
foreach (var symbol in _symbols)
{
var fxPair = (Forex)Securities[symbol];
// Check if the new/announcement affects the Base or the Quote of the actual pair.
var isBaseCurrency = fxPair.BaseCurrencySymbol == calendar.Currency.ToUpper();
var isQuoteCurrency = fxPair.QuoteCurrency.Symbol == calendar.Currency.ToUpper();
if (calendar.Meaning == FxDailyMeaning.Better && isBaseCurrency
|| calendar.Meaning == FxDailyMeaning.Worse && isQuoteCurrency)
{
var date = Time ;
signal += 1;
Log(signal.ToString()+ "\n" + date.ToString() + "\n" + symbol.ToString() + "\n" + calendar.Meaning.ToString());
Log(Vol[symbol].ToString());
}
if (calendar.Meaning == FxDailyMeaning.Worse && isBaseCurrency
|| calendar.Meaning == FxDailyMeaning.Better && isQuoteCurrency)
{
var date = Time ;
signal += 1;
Log(signal.ToString()+ "\n" + date.ToString() + "\n" + symbol.ToString() + "\n" + calendar.Meaning.ToString());
Log(Vol[symbol].ToString());
}
}
}
}
}
}