Overall Statistics
Total Trades
50
Average Win
0.12%
Average Loss
-0.03%
Compounding Annual Return
1.207%
Drawdown
0.400%
Expectancy
0.234
Net Profit
0.204%
Sharpe Ratio
0.882
Loss Rate
72%
Win Rate
28%
Profit-Loss Ratio
3.41
Alpha
0.054
Beta
-2.816
Annual Standard Deviation
0.011
Annual Variance
0
Information Ratio
-0.578
Tracking Error
0.011
Treynor Ratio
-0.003
Total Fees
$0.00
import pandas as pd
from datetime import datetime
from collections import deque

class QCAlgorithm(QCAlgorithm):

    def Initialize(self):
        self.SetStartDate(2018, 3, 1)  
        self.SetEndDate(2018, 5, 1)  
        self.SetCash(5000) 
        self.AddForex("EURUSD", Resolution.Hour, Market.Oanda)

        self.fast = self.EMA("EURUSD", 10)
        self.slow = self.EMA("EURUSD", 15)
        self.previous = None
        
        self.rsi = self.RSI("EURUSD", 14,  MovingAverageType.Simple, Resolution.Hour)
        self.sto = self.STO("EURUSD", 15, 3, 3, Resolution.Hour)

    def OnData(self, data):
        if not (self.fast.IsReady and self.slow.IsReady): return
        if not (self.rsi.IsReady and self.sto.IsReady): return
        if not self.Portfolio["EURUSD"].IsLong:
                if self.fast.Current.Value > self.slow.Current.Value:
                    if self.rsi.Current.Value > 40 and self.rsi.Current.Value < 80:
                            if self.sto.Current.Value > 20 and self.sto.Current.Value < 90:
                                    self.MarketOrder("EURUSD", 1000)

        if self.Portfolio["EURUSD"].IsLong and self.fast.Current.Value < self.slow.Current.Value:
            #self.Log("SELL >> {0}".format(self.Securities["EURUSD"].Price))
            self.MarketOrder("EURUSD", -1000)
        self.previous = self.Time