-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
313 lines (286 loc) · 12.8 KB
/
Copy path.env.example
File metadata and controls
313 lines (286 loc) · 12.8 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
# Copy this file to .env and fill only local/private values there.
# The bot loads only the root .env file. Keep long/short profile overrides in
# this same file.
API_KEY=
API_SECRET=
COINS=aave,ada,algo,apt,arb,atom,avax,bch,bnb,bonk,btc,cake,comp,doge,dot,ena,etc,eth,hbar,htx,hype,icp,inj,jup,kas,ldo,link,ltc,near,ondo,orca,pendle,pengu,people,pepe,pol,sei,shib,sol,ssv,sui,sushi,ton,trx,uni,xaut,xlm,xmr,xrp,zec
# Optional second HTX API key for symbols that are not enabled on the first key.
# Orders, order sync, leverage, open orders, fills, and balance checks for these
# symbols are routed to this account. Public market data can still be fetched
# through the shared/default route.
API_KEY_2=
API_SECRET_2=
COINS_2=1inch,aixbt,akt,ape,ar,arkm,axs,bera,blur,bome,brett,cfx,chz,ckb,core,crv,dydx,eigen,ens,ethfi,fet,fil,floki,gala,gmx,grt,imx,jasmy,jto,kaito,lpt,mask,metis,mina,mnt,op,ordi,pyth,ray,render,ronin,rune,sand,strk,theta,tia,virtual,wif,wld,zro
# Run both profiles by default. Use "long" or "short" to run only one.
# LEVERAGE is the bot's sizing multiplier. SET_LEVERAGE_ON_START=true also
# applies it to each tracked HTX contract during live startup.
# SET_LEVERAGE_ON_START=false
# Optional: set this to the leverage you manually configured in HTX, e.g. 50.
# If empty/0, the bot tries to read the current HTX leverage before live orders.
# ACCOUNT_LEVERAGE=50
# Risk caps and cleanup. Legacy names without EMA_ are also accepted.
# MIN_QUOTE_RESERVE=15
# MAX_ACTIVE_POSITIONS=50
# EMA_MAX_POSITION_MARGIN_FRACTION=0.03
# EMA_MAX_TOTAL_MARGIN_FRACTION=0.50
# DUST_POSITION_NOTIONAL=10
# TINY_ENTRY_CLOSE_ENABLED=true
# TINY_ENTRY_MAX_NOTIONAL=10
# TINY_ENTRY_MAX_PLANNED_FRACTION=0.10
# BTC hedge for combined long/short exposure is disabled by default. Set
# BTC_HEDGE_ENABLED=true to enable it. When enabled, the bot keeps a separate
# BTC USDT-M futures position opposite to total open alt exposure:
# long_notional - short_notional. BTC remains a benchmark and is not added to
# the normal entry universe.
# BTC_HEDGE_COIN=btc
# BTC_HEDGE_RATIO=1.0
# BTC_HEDGE_MIN_REBALANCE_NOTIONAL=10
# BTC_HEDGE_MAX_NOTIONAL=0
# BTC_HEDGE_MAX_SPREAD_BPS=30
# BTC_HEDGE_COOLDOWN_SEC=30
# Optional per-profile overrides use LONG_ or SHORT_ prefixes.
# LONG_LEVERAGE=30
# SHORT_LEVERAGE=30
# Safety gate for fresh entries: set to 0 to stop opening new cycles
# whenever any profile has an unhealthy active position.
# MAX_UNHEALTHY_POSITIONS_FOR_NEW_ENTRIES=8
# EMA Pullback strategy periods are configured in minutes, then converted to
# candle counts for each timeframe below.
# EMA_STRATEGY_ENABLED=true
# EMA_MACRO_TIMEFRAME=1d
# EMA_PULLBACK_TIMEFRAME=4h
# EMA_TRIGGER_TIMEFRAME=1m
# EMA_MACRO_FAST_MINUTES=36000
# EMA_MACRO_SLOW_MINUTES=72000
# EMA_PULLBACK_FAST_MINUTES=1440
# EMA_PULLBACK_SLOW_MINUTES=2880
# Pullback recovery gate: pullback must have crossed back in the trade direction
# after being against it inside the recent lookback window.
# EMA_PULLBACK_RECOVERY_LOOKBACK_MINUTES=2880
# EMA_PULLBACK_RECOVERY_MAX_CROSS_AGE_MINUTES=1440
# EMA_PULLBACK_RECOVERY_GAP=0.001
# EMA_TRIGGER_FAST_MINUTES=50
# EMA_TRIGGER_SLOW_MINUTES=100
# Entry filters.
# EMA_USE_RS_CONFIRMATION=true
# EMA_LONG_MIN_RS60=0.0
# EMA_SHORT_MAX_RS60=0.0
# EMA_USE_BTC_RISK_FILTER=true
# EMA_BTC_LONG_MIN_RETURN_30M=-0.0025
# EMA_BTC_SHORT_MAX_RETURN_30M=0.0025
# Market-structure gate for EMA entries and averaging: block noisy/choppy
# trigger candles and EMA crosses without fresh volume confirmation.
# EMA_CHOP_FILTER_ENABLED=true
# EMA_CHOP_PERIOD=14
# EMA_CHOP_MAX=61.8
# EMA_VOLUME_CONFIRMATION_ENABLED=true
# EMA_VOLUME_SHORT_WINDOW=5
# EMA_VOLUME_LONG_WINDOW=20
# EMA_VOLUME_MIN_RATIO=1.05
# EMA_VOLUME_MIN_DIRECTIONAL_FRACTION=0.0
# EMA_VOLUME_SPIKE_FILTER_ENABLED=true
# EMA_VOLUME_SPIKE_WINDOW=5
# EMA_VOLUME_SPIKE_MIN_RATIO=1.80
# EMA_VOLUME_ADVERSE_SPIKE_MIN_RATIO=2.00
# EMA_VOLUME_PROFILE_FILTER_ENABLED=true
# EMA_VOLUME_PROFILE_WINDOW=60
# EMA_VOLUME_PROFILE_BINS=12
# EMA_VOLUME_PROFILE_VALUE_AREA=0.70
# Extra quality gate applied only to fresh entries, not averaging.
# ENTRY_MIN_SCORE=0.03
# ENTRY_MIN_RS60_ABS=0.002
# ENTRY_MIN_RS30_ABS=0.001
# ENTRY_MAX_NEW_LADDERS_PER_SIGNAL=5
# ENTRY_RATE_LIMIT_LADDERS=10
# ENTRY_RATE_LIMIT_WINDOW_MINUTES=60
# Crowded mode is enabled when too many raw entry signals appear together.
# ENTRY_CROWDED_SIGNAL_FRACTION=0.30
# ENTRY_CROWDED_MIN_SIGNALS=12
# ENTRY_CROWDED_MAX_NEW_LADDERS_PER_SIGNAL=3
# ENTRY_CROWDED_MIN_SCORE=0.04
# ENTRY_CROWDED_MIN_RS60_ABS=0.003
# ENTRY_CROWDED_MIN_RS30_ABS=0.0015
# HTX order-book spread gate for fresh entries.
# ENTRY_SPREAD_FILTER_ENABLED=true
# ENTRY_SPREAD_FILTER_MAX_BPS=30
# ENTRY_SPREAD_FILTER_BLOCK_IF_UNAVAILABLE=false
# Initial entry: two limit orders, 1% + 1% equity-margin budget.
# Legacy POSITION_BUDGET_FRACTION is accepted as a fallback.
# EMA_POSITION_BUDGET_FRACTION=0.02
# EMA_ENTRY_LADDER_FRACTIONS=0.50,0.50
# EMA_ENTRY_LADDER_OFFSETS=0.0,0.01
# Exit and averaging.
# Adaptive reduce-only exits:
# NORMAL <= 1.3x initial notional, MEDIUM <= 1.8x, HEAVY > 1.8x.
# NORMAL keeps the first fraction as fixed take-profit and trails the rest while
# the position age is below 6h. Set EMA_EXIT_TRAILING_ENABLED=false to use the
# old multi-level fixed ladder with only the last fraction as runner.
# EMA_ADAPTIVE_EXIT_ENABLED=true
# EMA_EXIT_NORMAL_LADDER_FRACTIONS=0.35,0.25,0.25,0.15
# EMA_EXIT_NORMAL_LADDER_MARKUPS=0.008,0.016,0.030,0.050
# EMA_EXIT_MEDIUM_LADDER_FRACTIONS=0.45,0.30,0.15,0.10
# EMA_EXIT_MEDIUM_LADDER_MARKUPS=0.004,0.010,0.020,0.035
# EMA_EXIT_HEAVY_LADDER_FRACTIONS=0.60,0.25,0.15
# EMA_EXIT_HEAVY_LADDER_MARKUPS=0.003,0.008,0.015
# EMA_EXIT_MEDIUM_POSITION_RATIO=1.30
# EMA_EXIT_HEAVY_POSITION_RATIO=1.80
# EMA_EXIT_DECAY_FIRST_MARKUP_AFTER_HOURS=2
# EMA_EXIT_DECAY_FIRST_MARKUP_CAP=0.008
# EMA_EXIT_DECAY_MAX_MARKUP_AFTER_HOURS=6
# EMA_EXIT_DECAY_MAX_MARKUP=0.030
# EMA_EXIT_RUNNER_ENABLED=true
# EMA_EXIT_RUNNER_ACTIVATION_MARKUP=0.020
# EMA_EXIT_RUNNER_TRAILING_PULLBACK=0.010
# EMA_EXIT_RUNNER_TAKE_PROFIT_MARKUP=0.050
# EMA_EXIT_TRAILING_ENABLED=true
# EMA_EXIT_TRAILING_FIXED_FRACTION=0.35
# EMA_EXIT_TRAILING_ACTIVATION_MARKUP=0.020
# EMA_EXIT_TRAILING_PULLBACK=0.010
# EMA_EXIT_TRAILING_TAKE_PROFIT_MARKUP=0.050
# Legacy exit settings used only when EMA_ADAPTIVE_EXIT_ENABLED=false.
# EMA_TAKE_PROFIT_MARKUP=0.01
# EMA_EXIT_LADDER_FRACTIONS=1.0
# EMA_AVERAGING_ENABLED=true
# EMA_AVERAGING_DRAWDOWN_STEP=0.01
# Hard floor for every averaging stage; staged drawdown settings cannot go
# below EMA_AVERAGING_MIN_DRAWDOWN_STEP * stage.
# EMA_AVERAGING_MIN_DRAWDOWN_STEP=0.01
# Fraction of the current open position used for each EMA averaging stage.
# EMA_AVERAGING_BASE_FRACTION=0.50
# EMA_AVERAGING_POWER=1.0
# EMA_AVERAGING_INTERVAL_HOURS=8
# Optional ATR-based averaging step: effective drawdown threshold is the
# larger of EMA_AVERAGING_DRAWDOWN_STEP_N and ATR_RATE * multiplier * stage.
# EMA_AVERAGING_ATR_ENABLED=false
# EMA_AVERAGING_ATR_PERIOD=14
# EMA_AVERAGING_ATR_MULTIPLIER=1.0
# Hard volatility floors, applied even when the optional ATR mode is disabled.
# EMA_AVERAGING_MIN_ATR_MULTIPLIER=1.0
# EMA_AVERAGING_MIN_DAILY_VOLATILITY_FRACTION=0.18
# EMA_AVERAGING_REQUIRE_PULLBACK_RECOVERY=true
# Hard strategy cap: values above 2 are clamped to 2.
# EMA_MAX_AVERAGING_STAGES=2
# Exchange-side hard stop. Uses HTX/ccxt TPSL stopLossPrice with a reduce-only
# market close amount no larger than the current position size. The fixed stop
# is always the fallback; ATR can widen it up to HARD_STOP_LOSS_ATR_MAX_PCT.
# HARD_STOP_LOSS_ENABLED=true
# HARD_STOP_LOSS_PCT=0.02
# HARD_STOP_LOSS_ATR_ENABLED=true
# HARD_STOP_LOSS_ATR_MULTIPLIER=2.0
# HARD_STOP_LOSS_ATR_MAX_PCT=0.03
# ENABLE_CONTROLLED_LOSS_EXIT=true
# Trigger: min drawdown before strategy activates
# conservative=0.030 │ recommended=0.025 │ aggressive=0.015
# CONTROLLED_LOSS_MIN_DRAWDOWN=0.025
# Trigger: hard max loss on notional (backstop)
# conservative=0.050 │ recommended=0.060 │ aggressive=0.080
# CONTROLLED_LOSS_MAX_LOSS_ON_NOTIONAL=0.06
# Exit pacing: max position fraction closed per cycle
# conservative=0.10 │ recommended=0.20 │ aggressive=0.33
# CONTROLLED_LOSS_MAX_POSITION_FRACTION=0.20
# Profit bank: today's realized profit used as loss buffer
# conservative=0.50 │ recommended=0.75 │ aggressive=1.00
# CONTROLLED_LOSS_PROFIT_BANK_TODAY_FRACTION=0.75
# Profit bank: 7-day realized profit (secondary buffer — keep low)
# conservative=0.05 │ recommended=0.12 │ aggressive=0.25
# CONTROLLED_LOSS_PROFIT_BANK_7D_FRACTION=0.12
# Zombie: minutes before a stale position is handled
# conservative=240 │ recommended=180 │ aggressive=90
# CONTROLLED_LOSS_AFTER_ZOMBIE_MINUTES=180
# Controlled-loss exit acceleration. Uses closed-candle signal volatility
# (max of realized volatility and ATR rate) only when trend_ema_gap/macro_gap
# is adverse for the active position. Reference 0 falls back to VOLATILITY_REFERENCE.
# CONTROLLED_LOSS_VOLATILITY_SPEED_ENABLED=true
# CONTROLLED_LOSS_VOLATILITY_REFERENCE=0
# CONTROLLED_LOSS_VOLATILITY_TRIGGER_MULTIPLIER=1.5
# CONTROLLED_LOSS_VOLATILITY_MAX_SPEED_MULTIPLIER=3.0
# CONTROLLED_LOSS_VOLATILITY_EXPONENT=2.0
# CONTROLLED_LOSS_VOLATILITY_REPRICE_MIN_MOVE_DELTA=0.05
# Account-level PnL guard. The bot logs account_pnl.csv, unloads profitable
# positions when the whole account is in an upper PnL band, and allows averaging
# near account-level troughs only after the account PnL stops falling.
# ACCOUNT_PNL_ENABLED=true
# ACCOUNT_PNL_WINDOW_MINUTES=360
# ACCOUNT_PNL_SAMPLE_INTERVAL_SEC=30
# ACCOUNT_PROFIT_UNLOAD_ENABLED=true
# ACCOUNT_PROFIT_UNLOAD_MIN_PNL_QUOTE=5
# ACCOUNT_PROFIT_UNLOAD_MIN_PNL_RATE=0.002
# ACCOUNT_PROFIT_UNLOAD_PERCENTILE=0.75
# ACCOUNT_PROFIT_UNLOAD_FRACTION=0.25
# ACCOUNT_PROFIT_UNLOAD_DRAWDOWN_FRACTION=0.50
# ACCOUNT_PROFIT_UNLOAD_PEAK_DRAWDOWN_FRACTION=0.25
# ACCOUNT_PROFIT_UNLOAD_FULL_PNL_QUOTE=0
# ACCOUNT_PROFIT_UNLOAD_MIN_POSITION_PNL_QUOTE=0.50
# ACCOUNT_PROFIT_UNLOAD_MIN_POSITION_PNL_RATE=0.001
# ACCOUNT_PROFIT_UNLOAD_COOLDOWN_SEC=300
# Global account PnL trailing: after peak open PnL rate reaches activation,
# a pullback to stop rate requests reduce-only market close for all positions.
# ACCOUNT_PNL_TRAILING_ENABLED=false
# ACCOUNT_PNL_TRAILING_ACTIVATION_RATE=0.05
# ACCOUNT_PNL_TRAILING_STOP_RATE=0.035
# ACCOUNT_PNL_TRAILING_MIN_PNL_QUOTE=0
# ACCOUNT_AVERAGING_ENABLED=true
# ACCOUNT_AVERAGING_MIN_SAMPLES=6
# ACCOUNT_AVERAGING_PERCENTILE=0.25
# ACCOUNT_AVERAGING_NEAR_TROUGH_QUOTE=3
# ACCOUNT_AVERAGING_NEAR_TROUGH_FRACTION=0.10
# ACCOUNT_AVERAGING_BOUNCE_QUOTE=1
# ACCOUNT_AVERAGING_FALLING_GUARD_QUOTE=1
# ACCOUNT_AVERAGING_FALLING_GUARD_FRACTION=0.05
# ACCOUNT_AVERAGING_BUDGET_SCALE=0.50
# Breakeven after 48h; no stop-loss, controlled-loss or force market exit.
# EMA_BREAKEVEN_ENABLED=true
# EMA_BREAKEVEN_AFTER_HOURS=48
# EMA_BREAKEVEN_REPRICE_MINUTES=15
# EMA_BREAKEVEN_FEE_BUFFER=0.0002
# EMA_BREAKEVEN_EXIT_FRACTIONS=1.0
# External MEXC price radar. MEXC is used only as reference market data.
# EXTERNAL_PRICE_FEED_ENABLED=true
# EXTERNAL_PRICE_REST_POLL_INTERVAL_SEC=1
# EXTERNAL_PRICE_REST_TIMEOUT_SEC=3
# EXTERNAL_PRICE_MAX_PRICE_AGE_MS=3000
# EXTERNAL_PRICE_STALE_AFTER_MS=3000
# EXTERNAL_PRICE_MIN_VALID_BID_QTY_USDT=50
# EXTERNAL_PRICE_MIN_VALID_ASK_QTY_USDT=50
# EXTERNAL_PRICE_MAX_INTERNAL_SPREAD_BPS=30
# EXTERNAL_PRICE_ENTRY_FILTER_ENABLED=true
# EXTERNAL_PRICE_MAX_HTX_PREMIUM_FOR_LONG_BPS=15
# EXTERNAL_PRICE_MAX_HTX_DISCOUNT_FOR_SHORT_BPS=15
# EXTERNAL_PRICE_BLOCK_IF_DIVERGENCE_1M_BPS=50
# EXTERNAL_PRICE_BLOCK_DURATION_SEC=300
# EXTERNAL_PRICE_DIRECTIONAL_1M_GATE_ENABLED=true
# EXTERNAL_PRICE_DIRECTIONAL_ENTRY_1M_BLOCK_BPS=50
# EXTERNAL_PRICE_DIRECTIONAL_AVERAGING_1M_BLOCK_BPS=50
# EXTERNAL_PRICE_IMPULSE_CONFIRMATION_ENABLED=true
# EXTERNAL_PRICE_MEXC_LEAD_THRESHOLD_BPS_30S=5
# EXTERNAL_PRICE_IMPULSE_SCORE_BONUS=0.02
# EXTERNAL_PRICE_REQUIRE_SAME_DIRECTION=true
# EXTERNAL_PRICE_EXIT_ADJUSTMENT_ENABLED=true
# EXTERNAL_PRICE_LONG_TP_TIGHTEN_PREMIUM_BPS=20
# EXTERNAL_PRICE_SHORT_TP_TIGHTEN_DISCOUNT_BPS=20
# EXTERNAL_PRICE_TIGHTENED_LADDER_FRACTIONS=0.40,0.30,0.20,0.10
# EXTERNAL_PRICE_TIGHTENED_LADDER_MARKUPS=0.005,0.010,0.020,runner
# EXTERNAL_PRICE_DISABLE_TRADING_IF_REFERENCE_STALE=false
# EXTERNAL_PRICE_IGNORE_REFERENCE_IF_STALE=true
# XAUT/BTC RSI macro overlay. XAUT is fetched only for analytics and is not
# added to COINS/COINS_2 or entry_symbols.
# ENABLE_GOLD_BTC_RSI_OVERLAY=true
# MACRO_GOLD_COINS=xaut
# GOLD_TIMEFRAME=4h
# GOLD_RSI_PERIOD=14
# GOLD_MIN_CANDLES=80
# GOLD_CACHE_TTL_SEC=900
# USE_DIRECT_GOLD_BTC_PAIR=false
# DIRECT_GOLD_BTC_SYMBOL=
# GOLD_STRONG_RSI=60
# GOLD_WEAK_RSI=40
# BTC_STRONG_RSI=60
# BTC_WEAK_RSI=40
# RSI_SPREAD_THRESHOLD=15
# RISK_OFF_LONG_BUDGET_MULTIPLIER=0.55
# RISK_OFF_SHORT_BUDGET_MULTIPLIER=0.85
# RISK_OFF_LADDER_MULTIPLIER=1.25
# RISK_OFF_DISABLE_AVERAGING=true
# RISK_OFF_TIME_EXIT_MULTIPLIER=0.75
# PANIC_DISABLE_NEW_ENTRIES=true
# STALE_MACRO_MAX_AGE_SEC=3600