Overall Statistics
Total Trades
2
Average Win
0%
Average Loss
-2.83%
Compounding Annual Return
-0.954%
Drawdown
4.700%
Expectancy
-1
Net Profit
-2.832%
Sharpe Ratio
-0.522
Loss Rate
100%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
-0.019
Beta
0.7
Annual Standard Deviation
0.015
Annual Variance
0
Information Ratio
-1.628
Tracking Error
0.015
Treynor Ratio
-0.011
Total Fees
$0.00
import numpy as np


class RSIAlgorithm(QCAlgorithm):

    def Initialize(self):
        # Set our main strategy parameters
        self.SetStartDate(2015,1, 1)   # Set Start Date
        self.SetEndDate(2018,1,1)      # Set End Date
        self.SetCash(100000)            # Set Strategy Cash
        
        self.IsLong = False
        self.IsShort = False
        
        RSI_Period    = 14                # RSI Look back period 
        self.RSI_OB   = 80                # RSI Overbought level
        self.RSI_OS   = 20                # RSI Oversold level
        self.Allocate = 0.5               # Percentage of capital to allocate
        
        self.AddForex("EURUSD", Resolution.Daily)
        self.RSI_Ind = self.RSI("EURUSD", RSI_Period)
        
    def OnData(self, data):
        if not self.RSI_Ind.IsReady:
            return
        if not self.Portfolio.Invested:
            self.Log("inside "+str(self.RSI_Ind.Current.Value))
            # If not, we check the RSI Indicator
            if self.RSI_Ind.Current.Value < self.RSI_OS:
                self.SetHoldings("EURUSD", self.Allocate)
                self.IsLong = True
                #stopPrice = close * decimal.Decimal(.9975)
                #newTicket = self.StopMarketOrder("EURUSD", -100, stopPrice)
            elif self.RSI_Ind.Current.Value > self.RSI_OB:
                self.SetHoldings("EURUSD", self.Allocate*-1)
                self.IsShort = True
                #stopPrice = close * decimal.Decimal(1.0025)
                #newTicket = self.StopMarketOrder("EURUSD", 100, stopPrice)
        else:
            if self.IsLong:
                if self.RSI_Ind.Current.Value >= 50:
                    self.Liquidate()
            elif self.IsShort:
                if self.RSI_Ind.Current.Value <= 50:
                    self.Liquidate()