| 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 |
from clr import AddReference
AddReference("System")
AddReference("QuantConnect.Algorithm")
AddReference("QuantConnect.Common")
from System import *
from QuantConnect import *
from QuantConnect.Algorithm import *
from QuantConnect.Indicators import *
from QuantConnect.Data.Market import TradeBar
class RollingWindowAlgorithm(QCAlgorithm):
def Initialize(self):
self.SetStartDate(2013, 6, 1) #Set Start Date
self.SetEndDate(2017, 7, 1) #Set End Date
self.SetCash(10000) #Set Strategy Cash
self.SetBrokerageModel(BrokerageName.FxcmBrokerage)
self.AddForex("EURUSD", Resolution.Daily)
self.window = RollingWindow[QuoteBar](2)
# create a bollinger band
self.Bolband = self.BB("EURUSD", 20, 0.75, MovingAverageType.Simple, Resolution.Daily)
self.BolbandWin = RollingWindow[IndicatorDataPoint](5)
# set warmup period
self.SetWarmUp(20)
def BolbandUpdated(self, sender, updated):
'''Adds updated values to rolling window'''
self.Updated += self.BolbandUpdated
self.BolbandsWin.Add(updated)
def OnData(self, data):
self.window.Add(data["EURUSD"])
if not (self.window.IsReady and self.BolbandWin.IsReady): return
holdings = self.Portfolio["EURUSD"].Quantity
price = self.window[0]
previousPrice = self.window[1]
if holdings <= 0:
if previousPrice <= self.Bolband.LowerBand.Current.Value and price > self.Bolband.LowerBand.Current.Value:
self.SetHoldings("EURUSD", 1.0)
if holdings > 0:
if previousPrice >= self.Bolband.UpperBand.Current.Value and price < self.Bolband.UpperBand.Current.Value:
self.Liquidate()
if previousPrice <= self.Bolband.LowerBand.Current.Value and price > self.Bolband.LowerBand.Current.Value:
self.SetHoldings("EURUSD", 1.0)