| 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 System;
using System.Linq;
using QuantConnect.Indicators;
using QuantConnect.Models;
namespace QuantConnect.Algorithm.Examples
{
public class MACDCross : QCAlgorithm
{
private const string Symbol = "XAUUSD";
private RollingWindow<MovingAverageConvergenceDivergence> _win =new RollingWindow<MovingAverageConvergenceDivergence>(1);
MovingAverageConvergenceDivergence _macd;
MovingAverageConvergenceDivergence _macd_hist;
public override void Initialize()
{
SetStartDate(2017, 01, 01);
SetEndDate(2017, 07, 17);
SetCash(10000);
SetBrokerageModel(BrokerageName.OandaBrokerage);
// request SPY data with minute resolution
AddSecurity( SecurityType.Cfd,Symbol, Resolution.Minute);
// AddSecurity(SecurityType.Forex, Symbol, Resolution.Minute);
_macd = MACD(Symbol, 12, 26, 9, MovingAverageType.Exponential, Resolution.Daily);
// _macd_hist = MACD(Symbol, 12, 26, 9, MovingAverageType.Exponential, Resolution.Daily);
}
public void OnData(QuoteBars data)
{
_win.Add(_macd);
_macd_hist =_win[0];
if (!_macd.IsReady || !_macd_hist.IsReady) return;
Log("started");
var holdings = Portfolio[Symbol].Quantity;
Log("last_fast " + _macd_hist.Fast);
Log("last_slow " + _macd_hist.Slow);
if (holdings <= 0)
{
Log("last_fast " +_macd_hist.Fast);
Log("last_slow " +_macd_hist.Slow);
Log("fast " + _macd.Fast);
Log("slow " + _macd.Slow);
if ( _macd.Fast > _macd.Slow && _macd_hist.Fast <_macd_hist.Slow )
{
Log("BUY >> " + Securities[Symbol].Price);
MarketOrder(Symbol, 200, false, "buy 100 XAUUSD");
}
}
if (holdings >= 0)
{
Log("last_fast " +_macd_hist.Fast);
Log("last_slow " +_macd_hist.Slow);
Log("fast " + _macd.Fast);
Log("slow " + _macd.Slow);
if ( _macd.Fast < _macd.Slow &&_macd_hist.Fast > _macd_hist.Slow)
{
Log("SELL >> " + Securities[Symbol].Price);
MarketOrder(Symbol,-200, false, "sell 100 XAUUSD");
}
}
Log("last_fast " +_macd_hist.Fast);
Log("last_slow " +_macd_hist.Slow);
Log("fast " + _macd.Fast);
Log("slow " + _macd.Slow);
Plot("MACD", _macd.Fast, _macd.Slow);
}
}
}