Installation¶
In [ ]:
Copied!
!pip install bayesian-optimization
!pip install bayesian-optimization
Sample Strategy¶
In [1]:
Copied!
# import talib.abstract as ta
from lettrade import DataFeed, Strategy, indicator as i
from lettrade.exchange.backtest import ForexBackTestAccount, let_backtest
from lettrade.indicator.vendor.qtpylib import inject_indicators
inject_indicators()
class SmaCross(Strategy):
ema1_window = 9
ema2_window = 21
def indicators(self, df: DataFeed):
# df["ema1"] = ta.EMA(df, timeperiod=self.ema1_window)
# df["ema2"] = ta.EMA(df, timeperiod=self.ema2_window)
df["ema1"] = df.close.ema(window=self.ema1_window)
df["ema2"] = df.close.ema(window=self.ema2_window)
df["signal_ema_crossover"] = i.crossover(df.ema1, df.ema2)
df["signal_ema_crossunder"] = i.crossunder(df.ema1, df.ema2)
def next(self, df: DataFeed):
if len(self.orders) > 0 or len(self.positions) > 0:
return
if df.l.signal_ema_crossover[-1]:
price = df.l.close[-1]
self.buy(size=0.1, sl=price - 0.001, tp=price + 0.001)
elif df.l.signal_ema_crossunder[-1]:
price = df.l.close[-1]
self.sell(size=0.1, sl=price + 0.001, tp=price - 0.001)
lt = let_backtest(
strategy=SmaCross,
datas="example/data/data/EURUSD_5m-0_10000.csv",
account=ForexBackTestAccount,
# plotter=None,
)
# import talib.abstract as ta
from lettrade import DataFeed, Strategy, indicator as i
from lettrade.exchange.backtest import ForexBackTestAccount, let_backtest
from lettrade.indicator.vendor.qtpylib import inject_indicators
inject_indicators()
class SmaCross(Strategy):
ema1_window = 9
ema2_window = 21
def indicators(self, df: DataFeed):
# df["ema1"] = ta.EMA(df, timeperiod=self.ema1_window)
# df["ema2"] = ta.EMA(df, timeperiod=self.ema2_window)
df["ema1"] = df.close.ema(window=self.ema1_window)
df["ema2"] = df.close.ema(window=self.ema2_window)
df["signal_ema_crossover"] = i.crossover(df.ema1, df.ema2)
df["signal_ema_crossunder"] = i.crossunder(df.ema1, df.ema2)
def next(self, df: DataFeed):
if len(self.orders) > 0 or len(self.positions) > 0:
return
if df.l.signal_ema_crossover[-1]:
price = df.l.close[-1]
self.buy(size=0.1, sl=price - 0.001, tp=price + 0.001)
elif df.l.signal_ema_crossunder[-1]:
price = df.l.close[-1]
self.sell(size=0.1, sl=price + 0.001, tp=price - 0.001)
lt = let_backtest(
strategy=SmaCross,
datas="example/data/data/EURUSD_5m-0_10000.csv",
account=ForexBackTestAccount,
# plotter=None,
)
Optimize¶
In [2]:
Copied!
from bayes_opt import BayesianOptimization
lettrade_model = lt.optimize_model()
def train_model(**params):
params = {
"ema1_window": int(params["ema1_window"]),
"ema2_window": int(params["ema2_window"]),
}
# Model
result = lettrade_model(params)
# Score
return result["equity"]
pbounds = {"ema1_window": (5, 25), "ema2_window": (10, 50)}
optimizer = BayesianOptimization(
f=train_model,
pbounds=pbounds,
random_state=1,
)
optimizer.maximize(
init_points=2,
n_iter=200,
)
from bayes_opt import BayesianOptimization
lettrade_model = lt.optimize_model()
def train_model(**params):
params = {
"ema1_window": int(params["ema1_window"]),
"ema2_window": int(params["ema2_window"]),
}
# Model
result = lettrade_model(params)
# Score
return result["equity"]
pbounds = {"ema1_window": (5, 25), "ema2_window": (10, 50)}
optimizer = BayesianOptimization(
f=train_model,
pbounds=pbounds,
random_state=1,
)
optimizer.maximize(
init_points=2,
n_iter=200,
)
| iter | target | ema1_w... | ema2_w... | ------------------------------------------------- | 1 | 9.917e+03 | 13.34 | 38.81 | | 2 | 9.868e+03 | 5.002 | 22.09 | | 3 | 9.916e+03 | 13.3 | 39.0 | | 4 | 9.949e+03 | 20.15 | 34.13 | | 5 | 9.967e+03 | 25.0 | 26.44 | | 6 | 1e+04 | 25.0 | 13.15 | | 7 | 1.004e+04 | 18.64 | 10.0 | | 8 | 1.013e+04 | 12.01 | 10.03 | | 9 | 9.983e+03 | 6.235 | 10.0 | | 10 | 1e+04 | 13.69 | 13.61 | | 11 | 1.018e+04 | 14.33 | 10.0 | | 12 | 1e+04 | 25.0 | 50.0 | | 13 | 9.901e+03 | 5.0 | 50.0 | | 14 | 1.011e+04 | 15.78 | 10.1 | | 15 | 9.925e+03 | 17.32 | 50.0 | | 16 | 9.985e+03 | 25.0 | 42.48 | | 17 | 1.015e+04 | 13.69 | 10.84 | | 18 | 9.865e+03 | 5.0 | 34.04 | | 19 | 1.003e+04 | 20.96 | 19.6 | | 20 | 9.955e+03 | 16.25 | 24.79 | | 21 | 9.954e+03 | 24.96 | 19.59 | | 22 | 1.015e+04 | 13.31 | 10.13 | | 23 | 9.895e+03 | 9.931 | 11.94 | | 24 | 1.016e+04 | 19.26 | 14.34 | | 25 | 1.016e+04 | 18.31 | 16.36 | | 26 | 1.014e+04 | 20.69 | 15.96 | | 27 | 9.806e+03 | 16.24 | 18.66 | | 28 | 1.005e+04 | 17.23 | 14.24 | | 29 | 1.009e+04 | 21.23 | 12.96 | | 30 | 9.907e+03 | 5.0 | 42.3 | | 31 | 1.016e+04 | 19.26 | 15.78 | | 32 | 9.995e+03 | 12.4 | 30.25 | | 33 | 9.909e+03 | 19.23 | 42.99 | | 34 | 9.914e+03 | 24.94 | 36.65 | | 35 | 9.868e+03 | 11.44 | 46.76 | | 36 | 1.003e+04 | 22.93 | 10.0 | | 37 | 9.866e+03 | 9.878 | 26.32 | | 38 | 9.897e+03 | 19.49 | 28.76 | | 39 | 1.012e+04 | 19.53 | 17.49 | | 40 | 1.009e+04 | 23.06 | 15.94 | | 41 | 9.936e+03 | 5.0 | 15.73 | | 42 | 9.977e+03 | 14.91 | 33.4 | | 43 | 1.001e+04 | 24.98 | 46.12 | | 44 | 9.881e+03 | 25.0 | 31.18 | | 45 | 1e+04 | 19.39 | 12.65 | | 46 | 1.014e+04 | 21.42 | 14.65 | | 47 | 9.965e+03 | 10.51 | 33.99 | | 48 | 9.984e+03 | 21.67 | 48.07 | | 49 | 1.014e+04 | 20.15 | 14.62 | | 50 | 9.976e+03 | 21.58 | 23.64 | | 51 | 9.836e+03 | 5.0 | 28.46 | | 52 | 1.016e+04 | 18.5 | 15.23 | | 53 | 9.911e+03 | 18.6 | 38.04 | | 54 | 9.883e+03 | 9.621 | 18.93 | | 55 | 1.014e+04 | 22.76 | 13.63 | | 56 | 9.945e+03 | 8.623 | 38.71 | | 57 | 1.016e+04 | 14.99 | 11.6 | | 58 | 1.018e+04 | 14.65 | 10.65 | | 59 | 9.966e+03 | 15.23 | 29.0 | | 60 | 1.008e+04 | 21.67 | 17.3 | | 61 | 1.016e+04 | 14.47 | 11.02 | | 62 | 1.007e+04 | 15.97 | 11.83 | | 63 | 1.012e+04 | 24.97 | 23.21 | | 64 | 1.003e+04 | 23.76 | 22.16 | | 65 | 9.973e+03 | 15.12 | 44.06 | | 66 | 9.966e+03 | 9.791 | 42.62 | | 67 | 9.918e+03 | 9.419 | 50.0 | | 68 | 1.012e+04 | 25.0 | 10.0 | | 69 | 1.015e+04 | 23.23 | 12.06 | | 70 | 1.014e+04 | 24.41 | 11.25 | | 71 | 9.856e+03 | 5.374 | 46.14 | | 72 | 9.926e+03 | 5.0 | 38.36 | | 73 | 1e+04 | 24.28 | 24.27 | | 74 | 9.934e+03 | 22.49 | 40.17 | | 75 | 9.964e+03 | 22.47 | 44.84 | | 76 | 1.016e+04 | 19.17 | 16.67 | | 77 | 1.016e+04 | 19.19 | 14.94 | | 78 | 1.018e+04 | 14.81 | 10.12 | | 79 | 1.015e+04 | 25.0 | 22.11 | | 80 | 9.967e+03 | 13.68 | 49.86 | | 81 | 9.806e+03 | 12.62 | 22.98 | | 82 | 9.965e+03 | 18.92 | 22.54 | | 83 | 1.016e+04 | 18.71 | 16.05 | | 84 | 9.985e+03 | 17.73 | 46.57 | | 85 | 1.011e+04 | 17.65 | 15.86 | | 86 | 1e+04 | 5.0 | 12.38 | | 87 | 1.016e+04 | 18.48 | 17.14 | | 88 | 1.011e+04 | 15.09 | 10.82 | | 89 | 1.005e+04 | 15.0 | 12.66 | | 90 | 9.906e+03 | 8.988 | 30.96 | | 91 | 9.913e+03 | 11.58 | 15.76 | | 92 | 1.002e+04 | 25.0 | 16.26 | | 93 | 9.957e+03 | 17.55 | 32.0 | | 94 | 9.967e+03 | 15.59 | 36.06 | | 95 | 9.97e+03 | 16.1 | 41.05 | | 96 | 9.994e+03 | 20.59 | 50.0 | | 97 | 1.009e+04 | 22.07 | 11.7 | | 98 | 9.896e+03 | 12.69 | 42.6 | | 99 | 1.015e+04 | 22.56 | 14.74 | | 100 | 9.996e+03 | 19.65 | 25.56 | | 101 | 9.875e+03 | 5.056 | 18.74 | | 102 | 1.016e+04 | 21.75 | 15.65 | | 103 | 9.936e+03 | 11.08 | 36.56 | | 104 | 9.928e+03 | 15.1 | 47.03 | | 105 | 9.937e+03 | 22.47 | 27.76 | | 106 | 1.015e+04 | 12.15 | 11.33 | | 107 | 1e+04 | 12.87 | 12.14 | | 108 | 1.017e+04 | 11.56 | 10.86 | | 109 | 1e+04 | 10.74 | 10.01 | | 110 | 1.013e+04 | 12.21 | 10.64 | | 111 | 9.935e+03 | 13.48 | 27.04 | | 112 | 9.9e+03 | 23.03 | 34.18 | | 113 | 1e+04 | 19.11 | 19.18 | | 114 | 1.002e+04 | 8.382 | 22.81 | | 115 | 9.886e+03 | 6.562 | 24.92 | | 116 | 9.825e+03 | 7.853 | 15.11 | | 117 | 1e+04 | 22.88 | 49.91 | | 118 | 9.995e+03 | 25.0 | 39.75 | | 119 | 1e+04 | 11.48 | 11.48 | | 120 | 1.01e+04 | 23.88 | 14.56 | | 121 | 1.001e+04 | 20.62 | 10.0 | | 122 | 1.012e+04 | 23.5 | 11.04 | | 123 | 1.007e+04 | 17.05 | 10.03 | | 124 | 1e+04 | 15.01 | 15.67 | | 125 | 1.016e+04 | 22.51 | 12.73 | | 126 | 9.885e+03 | 8.067 | 35.43 | | 127 | 1e+04 | 12.62 | 32.63 | | 128 | 9.906e+03 | 8.381 | 44.9 | | 129 | 1.015e+04 | 23.46 | 12.91 | | 130 | 1.004e+04 | 24.94 | 47.97 | | 131 | 1.001e+04 | 22.79 | 18.66 | | 132 | 9.925e+03 | 20.04 | 46.19 | | 133 | 9.948e+03 | 21.31 | 31.29 | | 134 | 1.002e+04 | 18.45 | 13.93 | | 135 | 1.013e+04 | 20.43 | 16.91 | | 136 | 9.919e+03 | 21.52 | 37.3 | | 137 | 9.987e+03 | 12.79 | 19.04 | | 138 | 9.876e+03 | 7.708 | 41.31 | | 139 | 1.001e+04 | 17.17 | 27.0 | | 140 | 9.996e+03 | 13.15 | 35.0 | | 141 | 1.012e+04 | 25.0 | 10.88 | | 142 | 9.936e+03 | 17.67 | 34.78 | | 143 | 1.011e+04 | 24.29 | 10.34 | | 144 | 9.976e+03 | 14.56 | 31.19 | | 145 | 1.012e+04 | 20.1 | 13.82 | | 146 | 1.004e+04 | 25.0 | 21.26 | | 147 | 9.904e+03 | 16.2 | 22.08 | | 148 | 1.015e+04 | 21.91 | 13.84 | | 149 | 1.016e+04 | 24.05 | 12.11 | | 150 | 1e+04 | 21.41 | 21.37 | | 151 | 9.993e+03 | 23.54 | 47.39 | | 152 | 9.906e+03 | 7.181 | 12.03 | | 153 | 1.007e+04 | 21.42 | 16.27 | | 154 | 1.007e+04 | 20.82 | 18.08 | | 155 | 1.016e+04 | 19.94 | 16.25 | | 156 | 1.008e+04 | 22.03 | 15.09 | | 157 | 1.014e+04 | 20.67 | 15.36 | | 158 | 1.01e+04 | 23.05 | 14.53 | | 159 | 1.016e+04 | 17.44 | 16.96 | | 160 | 1e+04 | 16.59 | 16.37 | | 161 | 1e+04 | 17.85 | 17.68 | | 162 | 1.014e+04 | 21.02 | 14.0 | | 163 | 9.826e+03 | 5.958 | 31.33 | | 164 | 9.863e+03 | 7.755 | 20.98 | | 165 | 1.005e+04 | 17.71 | 11.35 | | 166 | 1.007e+04 | 25.0 | 14.83 | | 167 | 9.926e+03 | 7.685 | 48.04 | | 168 | 9.946e+03 | 10.83 | 40.3 | | 169 | 9.975e+03 | 22.34 | 42.59 | | 170 | 9.929e+03 | 19.65 | 40.36 | | 171 | 9.967e+03 | 15.87 | 38.54 | | 172 | 1.016e+04 | 14.38 | 11.84 | | 173 | 9.845e+03 | 10.82 | 28.92 | | 174 | 9.973e+03 | 24.89 | 44.26 | | 175 | 9.919e+03 | 25.0 | 28.61 | | 176 | 1.002e+04 | 23.05 | 17.24 | | 177 | 9.956e+03 | 9.801 | 23.78 | | 178 | 9.898e+03 | 17.17 | 44.44 | | 179 | 9.934e+03 | 19.25 | 48.53 | | 180 | 1.016e+04 | 17.82 | 16.76 | | 181 | 9.986e+03 | 13.54 | 16.94 | | 182 | 9.926e+03 | 21.92 | 25.56 | | 183 | 1.018e+04 | 14.04 | 10.42 | | 184 | 9.95e+03 | 11.69 | 50.0 | | 185 | 9.956e+03 | 17.13 | 29.51 | | 186 | 1.014e+04 | 24.79 | 11.81 | | 187 | 1.003e+04 | 18.21 | 24.85 | | 188 | 1.004e+04 | 24.59 | 22.62 | | 189 | 9.954e+03 | 22.9 | 21.09 | | 190 | 9.954e+03 | 7.6 | 28.03 | | 191 | 9.945e+03 | 19.62 | 20.75 | | 192 | 1.016e+04 | 19.84 | 15.49 | | 193 | 9.962e+03 | 20.57 | 11.62 | | 194 | 1.003e+04 | 11.15 | 20.7 | | 195 | 9.975e+03 | 11.17 | 31.96 | | 196 | 1e+04 | 15.72 | 14.23 | | 197 | 1.008e+04 | 9.859 | 21.83 | | 198 | 1.015e+04 | 22.35 | 14.24 | | 199 | 9.981e+03 | 13.34 | 45.09 | | 200 | 1.014e+04 | 22.14 | 13.12 | | 201 | 9.847e+03 | 13.78 | 20.61 | | 202 | 9.916e+03 | 8.272 | 10.01 | =================================================
In [3]:
Copied!
optimizer.max
optimizer.max
Out[3]:
{'target': 10176.96,
'params': {'ema1_window': 14.332034902880366, 'ema2_window': 10.0}}
Plot¶
In [4]:
Copied!
lt.plotter.heatmap(x="ema1_window", y="ema2_window", z="equity")
lt.plotter.heatmap(x="ema1_window", y="ema2_window", z="equity")
In [5]:
Copied!
lt.plotter.contour(x="ema1_window", y="ema2_window", z="equity")
lt.plotter.contour(x="ema1_window", y="ema2_window", z="equity")
Plot plotly¶
Init Plotly environment¶
In [6]:
Copied!
import plotly.io as pio
pio.renderers.default = "notebook"
pio.templates.default = "plotly_dark"
import plotly.io as pio
pio.renderers.default = "notebook"
pio.templates.default = "plotly_dark"
In [7]:
Copied!
optimizer.res
optimizer.res
Out[7]:
[{'target': 9917.18,
'params': {'ema1_window': 13.34044009405148,
'ema2_window': 38.81297973768632}},
{'target': 9868.46,
'params': {'ema1_window': 5.002287496346898,
'ema2_window': 22.09330290527359}},
{'target': 9916.34,
'params': {'ema1_window': 13.3001407276959,
'ema2_window': 39.00039537269421}},
{'target': 9949.32,
'params': {'ema1_window': 20.150617901155936,
'ema2_window': 34.129567895477145}},
{'target': 9966.86,
'params': {'ema1_window': 25.0, 'ema2_window': 26.43865565208876}},
{'target': 10004.82,
'params': {'ema1_window': 25.0, 'ema2_window': 13.152876659642798}},
{'target': 10042.6,
'params': {'ema1_window': 18.637708287319818, 'ema2_window': 10.0}},
{'target': 10131.88,
'params': {'ema1_window': 12.008472233635572,
'ema2_window': 10.0274533068913}},
{'target': 9983.02,
'params': {'ema1_window': 6.2345994038838395, 'ema2_window': 10.0}},
{'target': 10000.0,
'params': {'ema1_window': 13.688189977287218,
'ema2_window': 13.60562993820364}},
{'target': 10176.96,
'params': {'ema1_window': 14.332034902880366, 'ema2_window': 10.0}},
{'target': 10002.76, 'params': {'ema1_window': 25.0, 'ema2_window': 50.0}},
{'target': 9900.52, 'params': {'ema1_window': 5.0, 'ema2_window': 50.0}},
{'target': 10113.68,
'params': {'ema1_window': 15.77634291874924,
'ema2_window': 10.095666359342271}},
{'target': 9925.06,
'params': {'ema1_window': 17.317919291899347, 'ema2_window': 50.0}},
{'target': 9984.86,
'params': {'ema1_window': 25.0, 'ema2_window': 42.478422889764204}},
{'target': 10146.74,
'params': {'ema1_window': 13.686433812325918,
'ema2_window': 10.841210837456936}},
{'target': 9864.66,
'params': {'ema1_window': 5.0, 'ema2_window': 34.03725595237402}},
{'target': 10025.12,
'params': {'ema1_window': 20.96386324637636,
'ema2_window': 19.600444342364295}},
{'target': 9954.84,
'params': {'ema1_window': 16.245235934093564,
'ema2_window': 24.785210642918983}},
{'target': 9954.2,
'params': {'ema1_window': 24.96002025326071,
'ema2_window': 19.59334093052412}},
{'target': 10146.74,
'params': {'ema1_window': 13.306169655394562,
'ema2_window': 10.13232677990274}},
{'target': 9894.52,
'params': {'ema1_window': 9.930676380039309,
'ema2_window': 11.938672363287571}},
{'target': 10160.68,
'params': {'ema1_window': 19.257596012820454,
'ema2_window': 14.336820273737521}},
{'target': 10162.62,
'params': {'ema1_window': 18.307901480002904,
'ema2_window': 16.36450151429704}},
{'target': 10142.82,
'params': {'ema1_window': 20.6937850140083,
'ema2_window': 15.95972188704653}},
{'target': 9806.22,
'params': {'ema1_window': 16.238539833310536,
'ema2_window': 18.658641629078}},
{'target': 10050.0,
'params': {'ema1_window': 17.231153783951616,
'ema2_window': 14.238758133764623}},
{'target': 10091.24,
'params': {'ema1_window': 21.22834513283038,
'ema2_window': 12.964148435614263}},
{'target': 9906.82,
'params': {'ema1_window': 5.0, 'ema2_window': 42.304883853435676}},
{'target': 10162.72,
'params': {'ema1_window': 19.262294554696986,
'ema2_window': 15.780118424220234}},
{'target': 9995.02,
'params': {'ema1_window': 12.395960332116548,
'ema2_window': 30.248121994893673}},
{'target': 9908.56,
'params': {'ema1_window': 19.225913938565377,
'ema2_window': 42.98755074072035}},
{'target': 9913.82,
'params': {'ema1_window': 24.944026515368797,
'ema2_window': 36.64519955481913}},
{'target': 9867.9,
'params': {'ema1_window': 11.442254688637123,
'ema2_window': 46.76195501211062}},
{'target': 10030.54,
'params': {'ema1_window': 22.928098068871368, 'ema2_window': 10.0}},
{'target': 9866.08,
'params': {'ema1_window': 9.878419429314752,
'ema2_window': 26.320564289347878}},
{'target': 9897.02,
'params': {'ema1_window': 19.492865397009265,
'ema2_window': 28.75987475220795}},
{'target': 10124.06,
'params': {'ema1_window': 19.532335468288842,
'ema2_window': 17.49493247161354}},
{'target': 10085.04,
'params': {'ema1_window': 23.063182660225763,
'ema2_window': 15.938772698972624}},
{'target': 9935.76,
'params': {'ema1_window': 5.0, 'ema2_window': 15.728802193252715}},
{'target': 9976.7,
'params': {'ema1_window': 14.909082612749145,
'ema2_window': 33.40188604275903}},
{'target': 10013.08,
'params': {'ema1_window': 24.984096964565204,
'ema2_window': 46.11802107464013}},
{'target': 9880.66,
'params': {'ema1_window': 25.0, 'ema2_window': 31.178649842555295}},
{'target': 10000.1,
'params': {'ema1_window': 19.391080660671506,
'ema2_window': 12.649221456717385}},
{'target': 10143.02,
'params': {'ema1_window': 21.420131668893983,
'ema2_window': 14.649350463285922}},
{'target': 9964.88,
'params': {'ema1_window': 10.50519883407079,
'ema2_window': 33.98893049013029}},
{'target': 9984.46,
'params': {'ema1_window': 21.674339073379237,
'ema2_window': 48.07203781042372}},
{'target': 10142.64,
'params': {'ema1_window': 20.14614269340214,
'ema2_window': 14.617067488379512}},
{'target': 9975.92,
'params': {'ema1_window': 21.57507731172532,
'ema2_window': 23.637459713454206}},
{'target': 9836.22,
'params': {'ema1_window': 5.0, 'ema2_window': 28.456410853213544}},
{'target': 10160.48,
'params': {'ema1_window': 18.49819821832407,
'ema2_window': 15.234496755885365}},
{'target': 9910.62,
'params': {'ema1_window': 18.598006632905136,
'ema2_window': 38.04122117373202}},
{'target': 9882.88,
'params': {'ema1_window': 9.620636583839627,
'ema2_window': 18.933804347073075}},
{'target': 10142.84,
'params': {'ema1_window': 22.759496968091774,
'ema2_window': 13.628847277155005}},
{'target': 9945.24,
'params': {'ema1_window': 8.623102940506728,
'ema2_window': 38.714930622197635}},
{'target': 10163.72,
'params': {'ema1_window': 14.988141861509218,
'ema2_window': 11.59966279731066}},
{'target': 10176.96,
'params': {'ema1_window': 14.645298405378643,
'ema2_window': 10.646806301958707}},
{'target': 9965.74,
'params': {'ema1_window': 15.231917270545463,
'ema2_window': 29.00038344422895}},
{'target': 10084.94,
'params': {'ema1_window': 21.668816006025974,
'ema2_window': 17.300512278033903}},
{'target': 10163.72,
'params': {'ema1_window': 14.46721774435375,
'ema2_window': 11.020364940810152}},
{'target': 10074.08,
'params': {'ema1_window': 15.968127850114344,
'ema2_window': 11.826876284200406}},
{'target': 10123.36,
'params': {'ema1_window': 24.971246584072638,
'ema2_window': 23.207997239929302}},
{'target': 10033.92,
'params': {'ema1_window': 23.757013571630818,
'ema2_window': 22.161133346918263}},
{'target': 9972.82,
'params': {'ema1_window': 15.115823220934384,
'ema2_window': 44.06336102646235}},
{'target': 9965.92,
'params': {'ema1_window': 9.79057400085918,
'ema2_window': 42.61625859774694}},
{'target': 9917.86,
'params': {'ema1_window': 9.4191564704299, 'ema2_window': 50.0}},
{'target': 10121.98, 'params': {'ema1_window': 25.0, 'ema2_window': 10.0}},
{'target': 10152.78,
'params': {'ema1_window': 23.225932541999956,
'ema2_window': 12.064409824582443}},
{'target': 10142.46,
'params': {'ema1_window': 24.41226871765222,
'ema2_window': 11.249964373429021}},
{'target': 9856.32,
'params': {'ema1_window': 5.373588779722748,
'ema2_window': 46.136978123117295}},
{'target': 9925.76,
'params': {'ema1_window': 5.0, 'ema2_window': 38.36322373105064}},
{'target': 10000.0,
'params': {'ema1_window': 24.28136451026694,
'ema2_window': 24.268457127471244}},
{'target': 9933.6,
'params': {'ema1_window': 22.49054791172255,
'ema2_window': 40.17018554527488}},
{'target': 9964.26,
'params': {'ema1_window': 22.466898657207544,
'ema2_window': 44.83899428570267}},
{'target': 10162.82,
'params': {'ema1_window': 19.173041979233634,
'ema2_window': 16.66599884624037}},
{'target': 10160.68,
'params': {'ema1_window': 19.19237891455921,
'ema2_window': 14.940342407749608}},
{'target': 10176.96,
'params': {'ema1_window': 14.808620614033067,
'ema2_window': 10.123486023947521}},
{'target': 10153.32,
'params': {'ema1_window': 25.0, 'ema2_window': 22.105760217823264}},
{'target': 9967.12,
'params': {'ema1_window': 13.676183553511972,
'ema2_window': 49.864380813174115}},
{'target': 9805.88,
'params': {'ema1_window': 12.616532847720554,
'ema2_window': 22.975345230068353}},
{'target': 9964.78,
'params': {'ema1_window': 18.91801152551102,
'ema2_window': 22.540685353750145}},
{'target': 10162.62,
'params': {'ema1_window': 18.71050860435547,
'ema2_window': 16.05058439408016}},
{'target': 9984.58,
'params': {'ema1_window': 17.72683371272307,
'ema2_window': 46.56621520355506}},
{'target': 10110.94,
'params': {'ema1_window': 17.646298250730613,
'ema2_window': 15.857495516393584}},
{'target': 10003.2,
'params': {'ema1_window': 5.0, 'ema2_window': 12.376665611134667}},
{'target': 10162.32,
'params': {'ema1_window': 18.476655346194807,
'ema2_window': 17.14124548377033}},
{'target': 10113.68,
'params': {'ema1_window': 15.085739582665049,
'ema2_window': 10.82456379473597}},
{'target': 10053.9,
'params': {'ema1_window': 14.998114191524257,
'ema2_window': 12.664791954060785}},
{'target': 9906.46,
'params': {'ema1_window': 8.987760304092504,
'ema2_window': 30.956140126733573}},
{'target': 9913.08,
'params': {'ema1_window': 11.57660225943067,
'ema2_window': 15.755672799388297}},
{'target': 10015.04,
'params': {'ema1_window': 24.995295140600895,
'ema2_window': 16.259208179123736}},
{'target': 9956.54,
'params': {'ema1_window': 17.549766992461247,
'ema2_window': 32.001796392030975}},
{'target': 9966.56,
'params': {'ema1_window': 15.590959623848025,
'ema2_window': 36.058344920309096}},
{'target': 9969.92,
'params': {'ema1_window': 16.10162931349772,
'ema2_window': 41.04670651166125}},
{'target': 9993.78,
'params': {'ema1_window': 20.591647303820906, 'ema2_window': 50.0}},
{'target': 10090.94,
'params': {'ema1_window': 22.066133392411235,
'ema2_window': 11.69975716905784}},
{'target': 9896.22,
'params': {'ema1_window': 12.693754607544918,
'ema2_window': 42.60404060142393}},
{'target': 10153.36,
'params': {'ema1_window': 22.560026013665762,
'ema2_window': 14.73536236377905}},
{'target': 9995.92,
'params': {'ema1_window': 19.64679772469404,
'ema2_window': 25.561230225120184}},
{'target': 9874.74,
'params': {'ema1_window': 5.055552329636068,
'ema2_window': 18.73606679458244}},
{'target': 10163.2,
'params': {'ema1_window': 21.746988739141354,
'ema2_window': 15.647689650192236}},
{'target': 9935.88,
'params': {'ema1_window': 11.077494547402955,
'ema2_window': 36.56183350410814}},
{'target': 9927.6,
'params': {'ema1_window': 15.09940089380413,
'ema2_window': 47.030376800148176}},
{'target': 9936.64,
'params': {'ema1_window': 22.46564365281448,
'ema2_window': 27.760254353948728}},
{'target': 10146.84,
'params': {'ema1_window': 12.151315491048344,
'ema2_window': 11.334438409974581}},
{'target': 10000.0,
'params': {'ema1_window': 12.865881795198812,
'ema2_window': 12.13593391945699}},
{'target': 10170.22,
'params': {'ema1_window': 11.564129697724322,
'ema2_window': 10.863584955901523}},
{'target': 10000.0,
'params': {'ema1_window': 10.739100491517917,
'ema2_window': 10.005918491689503}},
{'target': 10131.88,
'params': {'ema1_window': 12.214533830671225,
'ema2_window': 10.640870446917624}},
{'target': 9934.96,
'params': {'ema1_window': 13.479425387006085,
'ema2_window': 27.035213011389697}},
{'target': 9900.16,
'params': {'ema1_window': 23.031325516096935,
'ema2_window': 34.18360027539021}},
{'target': 10000.0,
'params': {'ema1_window': 19.108118818979168,
'ema2_window': 19.180639556374558}},
{'target': 10016.46,
'params': {'ema1_window': 8.381955911425255,
'ema2_window': 22.812632553767624}},
{'target': 9886.16,
'params': {'ema1_window': 6.562318160028098,
'ema2_window': 24.924024716376927}},
{'target': 9824.76,
'params': {'ema1_window': 7.853201776240833,
'ema2_window': 15.10916780735726}},
{'target': 10002.92,
'params': {'ema1_window': 22.877434079869474,
'ema2_window': 49.91282008766895}},
{'target': 9994.82,
'params': {'ema1_window': 25.0, 'ema2_window': 39.7469857057223}},
{'target': 10000.0,
'params': {'ema1_window': 11.477524688732867,
'ema2_window': 11.478772921300045}},
{'target': 10095.32,
'params': {'ema1_window': 23.879342830908403,
'ema2_window': 14.559147767104239}},
{'target': 10011.28,
'params': {'ema1_window': 20.62086127108661, 'ema2_window': 10.0}},
{'target': 10122.48,
'params': {'ema1_window': 23.495780639879918,
'ema2_window': 11.042160244030224}},
{'target': 10073.82,
'params': {'ema1_window': 17.049737010871347,
'ema2_window': 10.03048566813634}},
{'target': 10000.0,
'params': {'ema1_window': 15.014017055275563,
'ema2_window': 15.671408805813396}},
{'target': 10162.48,
'params': {'ema1_window': 22.513793336954176,
'ema2_window': 12.731072080110923}},
{'target': 9885.1,
'params': {'ema1_window': 8.06734799249617,
'ema2_window': 35.42669211082986}},
{'target': 10004.92,
'params': {'ema1_window': 12.616397468739098,
'ema2_window': 32.626037881365995}},
{'target': 9905.82,
'params': {'ema1_window': 8.381086549947845,
'ema2_window': 44.90467174675231}},
{'target': 10152.78,
'params': {'ema1_window': 23.458565052425953,
'ema2_window': 12.907419754199232}},
{'target': 10043.0,
'params': {'ema1_window': 24.944494341675462,
'ema2_window': 47.970109061095876}},
{'target': 10005.18,
'params': {'ema1_window': 22.792558138511076,
'ema2_window': 18.660709395709926}},
{'target': 9924.86,
'params': {'ema1_window': 20.0411695269928, 'ema2_window': 46.193605004484}},
{'target': 9948.18,
'params': {'ema1_window': 21.313736637789567,
'ema2_window': 31.287197013016954}},
{'target': 10020.16,
'params': {'ema1_window': 18.447713769487436,
'ema2_window': 13.931697637793246}},
{'target': 10133.72,
'params': {'ema1_window': 20.428363490560344,
'ema2_window': 16.912356762897357}},
{'target': 9918.74,
'params': {'ema1_window': 21.518686446442743,
'ema2_window': 37.296966526736455}},
{'target': 9987.3,
'params': {'ema1_window': 12.785561164975114,
'ema2_window': 19.035077955112577}},
{'target': 9876.32,
'params': {'ema1_window': 7.707850854078622,
'ema2_window': 41.31341630123843}},
{'target': 10005.96,
'params': {'ema1_window': 17.16605087223638,
'ema2_window': 27.002647284444702}},
{'target': 9996.32,
'params': {'ema1_window': 13.145261765561335,
'ema2_window': 35.004792655287446}},
{'target': 10121.98,
'params': {'ema1_window': 25.0, 'ema2_window': 10.883255888172936}},
{'target': 9936.44,
'params': {'ema1_window': 17.674073890554574,
'ema2_window': 34.775616186158636}},
{'target': 10112.54,
'params': {'ema1_window': 24.28531365749124,
'ema2_window': 10.339585045282519}},
{'target': 9975.6,
'params': {'ema1_window': 14.562216462421793,
'ema2_window': 31.193056332067876}},
{'target': 10120.88,
'params': {'ema1_window': 20.103438505856953,
'ema2_window': 13.821923499682708}},
{'target': 10044.06,
'params': {'ema1_window': 25.0, 'ema2_window': 21.26086084623064}},
{'target': 9904.44,
'params': {'ema1_window': 16.20426902331689,
'ema2_window': 22.081158478578164}},
{'target': 10152.6,
'params': {'ema1_window': 21.905689354316415,
'ema2_window': 13.837368043482545}},
{'target': 10163.5,
'params': {'ema1_window': 24.04676673958337,
'ema2_window': 12.110652555449983}},
{'target': 10000.0,
'params': {'ema1_window': 21.41091684061125,
'ema2_window': 21.370591496387785}},
{'target': 9992.98,
'params': {'ema1_window': 23.53790470715531,
'ema2_window': 47.38748463150178}},
{'target': 9905.74,
'params': {'ema1_window': 7.181278705156884,
'ema2_window': 12.03053584842895}},
{'target': 10074.98,
'params': {'ema1_window': 21.41547457495814,
'ema2_window': 16.269303553458396}},
{'target': 10074.9,
'params': {'ema1_window': 20.820694051207944,
'ema2_window': 18.07893575108031}},
{'target': 10162.82,
'params': {'ema1_window': 19.936235439485387,
'ema2_window': 16.252569929453557}},
{'target': 10075.0,
'params': {'ema1_window': 22.025466999740438,
'ema2_window': 15.093316513013413}},
{'target': 10142.82,
'params': {'ema1_window': 20.666069152755835,
'ema2_window': 15.360105359283498}},
{'target': 10095.32,
'params': {'ema1_window': 23.052513477770834,
'ema2_window': 14.531012092743524}},
{'target': 10160.48,
'params': {'ema1_window': 17.439404071474442,
'ema2_window': 16.959569623759876}},
{'target': 10000.0,
'params': {'ema1_window': 16.59401500721872,
'ema2_window': 16.374195114478383}},
{'target': 10000.0,
'params': {'ema1_window': 17.847588919981874,
'ema2_window': 17.68315470367896}},
{'target': 10143.02,
'params': {'ema1_window': 21.017197914552796,
'ema2_window': 14.00079425528888}},
{'target': 9825.78,
'params': {'ema1_window': 5.957924915666442,
'ema2_window': 31.33342636121423}},
{'target': 9862.88,
'params': {'ema1_window': 7.755217306024138,
'ema2_window': 20.980317706044115}},
{'target': 10052.52,
'params': {'ema1_window': 17.708615296216706,
'ema2_window': 11.348956130574233}},
{'target': 10074.58,
'params': {'ema1_window': 25.0, 'ema2_window': 14.825706038147459}},
{'target': 9926.22,
'params': {'ema1_window': 7.68523950303905,
'ema2_window': 48.04398035623746}},
{'target': 9946.26,
'params': {'ema1_window': 10.83434312601231,
'ema2_window': 40.29607043657573}},
{'target': 9974.7,
'params': {'ema1_window': 22.3408622767175,
'ema2_window': 42.59155464964322}},
{'target': 9928.6,
'params': {'ema1_window': 19.649621997541328,
'ema2_window': 40.3607328460689}},
{'target': 9966.88,
'params': {'ema1_window': 15.869514541935894,
'ema2_window': 38.54452320180021}},
{'target': 10163.72,
'params': {'ema1_window': 14.382492988265266,
'ema2_window': 11.84270826652789}},
{'target': 9845.1,
'params': {'ema1_window': 10.820042502365395,
'ema2_window': 28.92154679847306}},
{'target': 9973.42,
'params': {'ema1_window': 24.89344332127321,
'ema2_window': 44.258633935505344}},
{'target': 9918.88,
'params': {'ema1_window': 25.0, 'ema2_window': 28.60707748081732}},
{'target': 10015.24,
'params': {'ema1_window': 23.0541182708466,
'ema2_window': 17.23989202343017}},
{'target': 9956.0,
'params': {'ema1_window': 9.800793823399644,
'ema2_window': 23.77826992176809}},
{'target': 9897.54,
'params': {'ema1_window': 17.173642517883867,
'ema2_window': 44.43625081407885}},
{'target': 9934.4,
'params': {'ema1_window': 19.247081907175364,
'ema2_window': 48.53112245996386}},
{'target': 10160.48,
'params': {'ema1_window': 17.81714905026366,
'ema2_window': 16.760775241128123}},
{'target': 9986.14,
'params': {'ema1_window': 13.54016538661564,
'ema2_window': 16.936246097023723}},
{'target': 9926.06,
'params': {'ema1_window': 21.924576141259067,
'ema2_window': 25.558173416768977}},
{'target': 10176.96,
'params': {'ema1_window': 14.0376116748325,
'ema2_window': 10.41653182744042}},
{'target': 9950.32,
'params': {'ema1_window': 11.69320071851341, 'ema2_window': 50.0}},
{'target': 9956.42,
'params': {'ema1_window': 17.134773260831604,
'ema2_window': 29.506723706626566}},
{'target': 10142.46,
'params': {'ema1_window': 24.789052383864295,
'ema2_window': 11.807343382822166}},
{'target': 10025.48,
'params': {'ema1_window': 18.2075190647766,
'ema2_window': 24.84979100412843}},
{'target': 10043.86,
'params': {'ema1_window': 24.59374751738575,
'ema2_window': 22.61732605982764}},
{'target': 9954.2,
'params': {'ema1_window': 22.90466016535968,
'ema2_window': 21.089662486387567}},
{'target': 9954.28,
'params': {'ema1_window': 7.599982797103866,
'ema2_window': 28.033468876609216}},
{'target': 9944.52,
'params': {'ema1_window': 19.623506718374625,
'ema2_window': 20.746791512844425}},
{'target': 10162.72,
'params': {'ema1_window': 19.844219648242643,
'ema2_window': 15.490333845330087}},
{'target': 9961.8,
'params': {'ema1_window': 20.57407701244893,
'ema2_window': 11.624893966640188}},
{'target': 10025.6,
'params': {'ema1_window': 11.147425829959692,
'ema2_window': 20.69949614573705}},
{'target': 9975.02,
'params': {'ema1_window': 11.168275894521537,
'ema2_window': 31.955252967340723}},
{'target': 10000.84,
'params': {'ema1_window': 15.719895580950126,
'ema2_window': 14.225909451711933}},
{'target': 10076.3,
'params': {'ema1_window': 9.858992232680606,
'ema2_window': 21.83053504293911}},
{'target': 10153.36,
'params': {'ema1_window': 22.347939593308155,
'ema2_window': 14.23841538367607}},
{'target': 9980.68,
'params': {'ema1_window': 13.339265212594777,
'ema2_window': 45.092188022835145}},
{'target': 10142.84,
'params': {'ema1_window': 22.142233227244898,
'ema2_window': 13.124475206864986}},
{'target': 9847.48,
'params': {'ema1_window': 13.78248342957268,
'ema2_window': 20.612574367925806}},
{'target': 9915.82,
'params': {'ema1_window': 8.271972586257633,
'ema2_window': 10.01356944516527}}]
In [8]:
Copied!
import pandas as pd
df = pd.DataFrame(columns=["ema1_window", "ema2_window", "score"])
for i, trial in enumerate(optimizer.res):
df.loc[i] = [
int(trial["params"]["ema1_window"]),
int(trial["params"]["ema2_window"]),
trial["target"],
]
df
import pandas as pd
df = pd.DataFrame(columns=["ema1_window", "ema2_window", "score"])
for i, trial in enumerate(optimizer.res):
df.loc[i] = [
int(trial["params"]["ema1_window"]),
int(trial["params"]["ema2_window"]),
trial["target"],
]
df
Out[8]:
| ema1_window | ema2_window | score | |
|---|---|---|---|
| 0 | 13.0 | 38.0 | 9917.18 |
| 1 | 5.0 | 22.0 | 9868.46 |
| 2 | 13.0 | 39.0 | 9916.34 |
| 3 | 20.0 | 34.0 | 9949.32 |
| 4 | 25.0 | 26.0 | 9966.86 |
| ... | ... | ... | ... |
| 197 | 22.0 | 14.0 | 10153.36 |
| 198 | 13.0 | 45.0 | 9980.68 |
| 199 | 22.0 | 13.0 | 10142.84 |
| 200 | 13.0 | 20.0 | 9847.48 |
| 201 | 8.0 | 10.0 | 9915.82 |
202 rows × 3 columns
Type 1¶
In [9]:
Copied!
from plotly import express as px
fig = px.scatter(df, x=df.index, y="score")
fig.show()
from plotly import express as px
fig = px.scatter(df, x=df.index, y="score")
fig.show()
Type 2¶
In [10]:
Copied!
import plotly.express as px
fig = px.density_contour(
df,
x="ema1_window",
y="ema2_window",
z="score",
histfunc="max",
)
fig.update_traces(contours_coloring="fill", contours_showlabels=True)
fig.show()
import plotly.express as px
fig = px.density_contour(
df,
x="ema1_window",
y="ema2_window",
z="score",
histfunc="max",
)
fig.update_traces(contours_coloring="fill", contours_showlabels=True)
fig.show()
Type 3¶
In [11]:
Copied!
import plotly.express as px
fig = px.density_heatmap(
df,
x="ema1_window",
y="ema2_window",
z="score",
nbinsx=20,
nbinsy=40,
histfunc="max",
color_continuous_scale="Viridis",
)
fig.show()
import plotly.express as px
fig = px.density_heatmap(
df,
x="ema1_window",
y="ema2_window",
z="score",
nbinsx=20,
nbinsy=40,
histfunc="max",
color_continuous_scale="Viridis",
)
fig.show()