| Overall Statistics |
|
Total Trades 1 Average Win 0% Average Loss 0% Compounding Annual Return 2.233% Drawdown 11.100% Expectancy 0 Net Profit 5.503% Sharpe Ratio 0.263 Probabilistic Sharpe Ratio 10.201% Loss Rate 0% Win Rate 0% Profit-Loss Ratio 0 Alpha 0.013 Beta 0.047 Annual Standard Deviation 0.074 Annual Variance 0.005 Information Ratio -0.568 Tracking Error 0.221 Treynor Ratio 0.414 Total Fees $0.00 |
class QuantumTransdimensionalReplicator(QCAlgorithm):
stopMarketTicket = None
highestEURUSDPrice = 0
def Initialize(self):
self.SetStartDate(2018,7, 30) # Set Start Date
self.SetEndDate(2020,12, 31) #Set End Date
self.SetCash(5000) # Set Strategy Cash
# self.private Identity _prevClose;
self.AddForex("EURUSD", Resolution.Minute,Market.FXCM)
self.Consolidate("EURUSD",timedelta(minutes=15), self.fifeteenminutebar)
self.Rsi_in = self.RSI("EURUSD", 14, MovingAverageType.Simple)
self.Window = RollingWindow[QuoteBar](2)
self.SetWarmUp(timedelta(20))
def OnData(self, data):
#Add security
self.Window.Add(data["EURUSD"])
#self.Plot("Levels", "Asset Price", self.Securities["EURUSD"].Price)
if not (self.Rsi_in.IsReady and self.Window.IsReady):
return
currBar = self.Window[0]
pastBar = self.Window[1]
#self.Log("Price: {0} -> {1} ... {2} -> {3}".format(pastBar.Time, pastBar.Close, currBar.Time, currBar.Close))
if self.Rsi_in.Current.Value < 20 and self.Portfolio["EURUSD"].Invested <= 0 and currBar.Value > pastBar.Value:
#self.Debug("RSI is less then 20")
self.MarketOrder("EURUSD", 5000)
self.stopMarketTicket = self.StopMarketOrder("EURUSD", -5000, 0.9 * self.Securities["EURUSD"].Close)
elif self.Portfolio["EURUSD"].Invested:
#self.Plot("Levels", "Stop Price", self.Securities["EURUSD"].Price * 0.9)
if self.Securities["EURUSD"].Close > self.highestEURUSDPrice:
self.highestEURUSDPrice = self.Securities["EURUSD"].Close
updateFields = UpdateOrderFields()
updateFields.StopPrice = self.highestEURUSDPrice * 0.9
self.stopMarketTicket.Update(updateFields)
def OnOrderEvent(self, orderEvent):
if orderEvent.Status != OrderStatus.Filled:
return
if self.stopMarketTicket is not None and self.stopMarketTicket.OrderId == orderEvent.OrderId:
self.stopMarketOrderFillTime = self.Time
def fifeteenminutebar(self, bar):
passfrom QuantConnect import *
from Selection.ManualUniverseSelectionModel import ManualUniverseSelectionModel
class G10CurrencySelectionModel(ManualUniverseSelectionModel):
def __init__(self):
super().__init__([Symbol.Create(x, SecurityType.Forex, Market.Oanda) for x in [ "EURUSD", "GBPUSD", "USDJPY", "AUDUSD", "NZDUSD","USDCAD", "USDCHF", "USDNOK", "USDSEK"]])