namespace QuantConnect
{
/*
* QuantConnect University: Full Basic Template:
*
* The underlying QCAlgorithm class is full of helper methods which enable you to use QuantConnect.
* We have explained some of these here, but the full algorithm can be found at:
* https://github.com/QuantConnect/QCAlgorithm/blob/master/QuantConnect.Algorithm/QCAlgorithm.cs
*/
class MyBrokerage: InteractiveBrokersBrokerageModel{
}
public class BasicTemplateAlgorithm : QCAlgorithm
{
public string[] Symbols = {"EURUSD", "EURJPY", "USDJPY"};
public Resolution _dataresolution = Resolution.Minute;
//Initialize the data and resolution you require for your strategy:
public override void Initialize()
{
//Start and End Date range for the backtest:
SetStartDate(DateTime.Now.Date.AddDays(-2));
SetEndDate(DateTime.Now.Date.AddDays(-1));
//Cash allocation
SetCash(10000);
//Add as many securities as you like. All the data will be passed into the event handler:
foreach( var symbol in Symbols)
{
AddForex(symbol,_dataresolution, Market.FXCM);
}
///AddForex(string ticker, Resolution resolution = Resolution.Minute, string market = Market.FXCM, bool fillDataForward = true, decimal leverage = 0m)
}
//Data Event Handler: New data arrives here. "TradeBars" type is a dictionary of strings so you can access it by symbol.
public void OnData(TradeBars data)
{
// "TradeBars" object holds many "TradeBar" objects: it is a dictionary indexed by the symbol:
//
// e.g. data["MSFT"] data["GOOG"]
decimal eurusdclose = data["EURUSD"].Close;
decimal eurjpyclose = data["USDJPY"].Close;
decimal usdjpyclose = data["USDJPY"].Close;
decimal conversion = (eurusdclose * (1.0m/eurjpyclose) * usdjpyclose) - 1.002m;
if( conversion > 0.0m)
{
//Debug("above zero"); // use Debug to print it to console (excessive printing to console will be suppressed after some thousand lines; may not work all for tick resolution)
Log("above zero"); // use Log to print it to text file (excessive file sizes will be truncated)
}
if( conversion == 0.0m)
{
//Debug("equals zero"); // use Debug to print it to console (excessive printing to console will be suppressed after some thousand lines; may not work all for tick resolution)
Log("equals zero"); // use Log to print it to text file (excessive file sizes will be truncated; may not work all for tick resolution)
}
if( conversion < 0.0m)
{
//Debug("below zero"); // use Debug to print it to console (excessive printing to console will be suppressed after some thousand lines; may not work all for tick resolution)
Log("below zero"); // use Log to print it to text file (excessive file sizes will be truncated; may not work all for tick resolution)
}
}
}
}