Overall Statistics
Total Trades
47
Average Win
0%
Average Loss
-27.60%
Compounding Annual Return
-40.146%
Drawdown
31.800%
Expectancy
-1
Net Profit
-27.557%
Sharpe Ratio
-1.231
Probabilistic Sharpe Ratio
1.188%
Loss Rate
100%
Win Rate
0%
Profit-Loss Ratio
0
Alpha
-0.587
Beta
1.042
Annual Standard Deviation
0.257
Annual Variance
0.066
Information Ratio
-2.532
Tracking Error
0.227
Treynor Ratio
-0.303
Total Fees
$0.00
Estimated Strategy Capacity
$370000.00
Lowest Capacity Asset
AUDUSD 8G
from AlgorithmImports import *
from System.Drawing import Color
import math
from collections import deque


class MACD(QCAlgorithm):
        
    def Initialize(self,qb=None):
        self.initialization(qb)
        self.macd = self.MACD(self.pair, 12, 26, 9,  MovingAverageType.Exponential, self.resolution)
        self.sma = self.SMA(self.pair, 200, self.resolution)
        self.SetWarmUp(200)
        
    def OnData(self, data):
        self.MACDStrategy(data)

    def OnEndOfAlgorithm(self):
      self.qb.Liquidate()

    def initialization(self,qb):
        self.initialCash = 100000
        self.inc = 0.00001
        self.pair = self.GetParameter("Pair")
        # self.SetBenchmark("SPY")
        self.resolution = Resolution.Hour
        self.qb = self if qb is None else qb
        self.qb.SetStartDate(2021,1,1)
        self.qb.SetEndDate(2022,1,1)
        self.qb.SetCash(self.initialCash)
        self.qb.AddForex(self.pair, self.resolution)
        self.lastValue = 1
        
        macdPlot = Chart('MACD')
        macdPlot.AddSeries(Series('macdCurrent', SeriesType.Line, "", Color.Green))
        macdPlot.AddSeries(Series('macdSignal', SeriesType.Line, "", Color.Red))
        macdPlot.AddSeries(
            Series('Signal', SeriesType.Scatter, "", Color.Blue))
        macdPlot.AddSeries(
            Series('Current', SeriesType.Scatter, "", Color.Aqua))
        self.qb.AddChart(macdPlot)

        sma200 = Chart('SMA200')
        sma200.AddSeries(Series('Price', SeriesType.Line, "", Color.Green))
        sma200.AddSeries(Series('SMA200', SeriesType.Line, "", Color.Red))
        self.qb.AddChart(sma200)

    def MACDStrategy(self, data):
        macdCurrent = self.macd.Current.Value
        macdSignal = self.macd.Signal.Current.Value
        macdSlow = self.macd.Slow.Current.Value
        macdFast = self.macd.Fast.Current.Value

        self.qb.Plot("MACD", "macdCurrent", macdCurrent);
        self.qb.Plot("MACD", "macdSignal", macdSignal);

        self.qb.Plot("SMA200", "Price", data[self.pair].Close);
        self.qb.Plot("SMA200", "SMA200", self.sma.Current.Value);

        if macdCurrent>0:
          return
        if(macdCurrent - macdSignal > 0 and self.lastValue<=0):
          if(self.sma.Current.Value < data[self.pair].Close):
            quantity = self.initialCash * 0.1 / data[self.pair].Close
            takeProfit = data[self.pair].Close + 0.00150
            stopPrice = data[self.pair].Close - 0.00100
            self.qb.MarketOrder(self.pair,quantity)
            self.qb.StopLimitOrder(self.pair,quantity,stopPrice,takeProfit)
                   

        self.lastValue = macdCurrent - macdSignal