| 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 Probabilistic 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 |
# This import statement causes AddForex() to fail when the market is set. Why?
from AJS_PB01_TF1 import *
class AJS_PB01(QCAlgorithm):
'''
A development system for trading intra-day pull-backs in trends.
Intended for Forex.
'''
def Initialize(self):
self.SetTimeZone("America/New_York")
# Backtest variables
self.SetStartDate(2020, 8, 5) # Set Start Date
self.SetEndDate(2020, 8, 5) # Set End Date
self.SetCash(100000) # Set Strategy Cash
# System variables
tf1 = timedelta(minutes=5)
ema1_len = 8
ema2_len = 21
ema3_len = 40
# Instrument(s)
instrument = "EURUSD"
# Why does this not work with the import statement above?
# symbol = self.AddForex(instrument, Resolution.Minute, Market.Oanda, False).Symbol
symbol = self.AddForex(instrument, Resolution.Minute).Symbol
self.Consolidate(instrument, tf1, self.tf1_bar_handler)
self.tf1_setup = AJS_PB01_TF1(ema1_len, ema2_len, ema3_len)
def OnData(self, data):
pass
def tf1_bar_handler(self, bar):
'''
Once every TF1 bar, update set-up time frame objects.
'''
# Update TF1 set-up object.
self.tf1_setup.Update(bar)
# Test
self.Plot("Test Plot", "Output 1", self.tf1_setup.Test()[0])
self.Plot("Test Plot", "Output 2", self.tf1_setup.Test()[1])
self.Plot("Test Plot", "Output 3", self.tf1_setup.Test()[2])class AJS_PB01_TF1():
'''
Holds TF1 information and functionality, including set-up detection.
'''
def __init__(self, ema1_len,
ema2_len,
ema3_len
):
self.ema1_len = ema1_len
self.ema2_len = ema2_len
self.ema3_len = ema3_len
self.ema1 = ExponentialMovingAverage(ema1_len)
self.ema2 = ExponentialMovingAverage(ema2_len)
self.ema3 = ExponentialMovingAverage(ema3_len)
def Update(self, bar):
# Indicator values
self.ema1.Update(bar.EndTime, bar.Close)
self.ema2.Update(bar.EndTime, bar.Close)
self.ema3.Update(bar.EndTime, bar.Close)
def Test(self):
return [self.ema1.Current.Value,
self.ema2.Current.Value,
self.ema3.Current.Value]