-
-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathapplication.example.yaml
370 lines (329 loc) · 13.8 KB
/
application.example.yaml
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
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
# Sample Arbitrader configuration file
#
# Copy this file to "application.yaml" and fill out the settings that you want for your bot.
# When you run the JAR file, make sure the config file is in the current directory so it can be read.
#
# The configurations here are meant to demonstrate and document the different features of Arbitrader.
# For more up to date configurations that have been contributed and tested by our community check out
# this page:
# https://github.com/agonyforge/arbitrader/wiki/Recommended-Exchange-Configurations
# If you want to see a LOT of logs, you can turn on DEBUG by uncommenting this:
#logging:
# level:
# com:
# agonyforge:
# arbitrader: DEBUG
# If you wish to be notified by email on every trade then you need to add your mail server configuration here and
# configure the email notifications in notifications.mail section.
spring:
mail:
host: x # Your mail server host
username: x # Your mail server username (may or may not be your email address)
password: x # Your mail server password
port: x # Your mail server port
properties:
# If your email supports SSL or TLS, set this property to true
mail.smtp.ssl.enable: true
notifications:
# Send all the logs you see on the console to Discord using webhook. Be aware that Discord applies a rate limit so
# if you are logging too much some logs may not show up on Discord
discord:
webhookId: x
webhookToken: x
slack: # If you fill out this section, all the logs you see on the console will also be shipped to Slack.
accessToken: x
botAccessToken: x
channel: x
logs:
# The number of milliseconds before a slow ticker update generates a warning in the logs.
# Ticker updates are supposed to run every 3 seconds, but the time it takes to fetch them from the exchange's API
# can vary based on your internet connection speed, other things your computer is working on and how busy the
# exchange's API is. Because there are so many factors it made sense to be able to configure the warning so you can
# control how noisy your logs are.
slowTickerWarning: 4000
mail:
# Set to true to enable email notifications for each trade
active: false
# The email address to send mail FROM
from: x@x.x
# The email address to send mail TO
to: x@x.x
# Receive instant messages via Telegram whenever there is a trade
telegram:
# Set to true to enable telegram notifications
active: false
# Your chat group id, with your Telegram bot, starting with the letter g. For more information please check our wiki page here: https://github.com/agonyforge/arbitrader/wiki/Arbitrade-Configurations#telegram
groupId: g123456789
# The token to your telegram bot
token: x
trading:
# The percentage difference between the "long" and "short" exchange prices - fees included - before we will open our positions.
# The real percentage difference will be bigger than this value to compensate for the trading fees.
# Increasing this value will make trades harder to enter
entrySpreadTarget: 0.0010
# The minimum profit in percentage before we will close our positions.
# Increasing this value will make trades harder to exit
minimumProfit: 0.0001
# *** IF exitSpreadTarget IS SET minimumProfit WILL BE IGNORED ***
# The percentage difference between the "long" and "short" exchange prices - fees included - before we will close our positions.
# The real percentage difference will be lower than this value to compensate for the trading fees.
# If we want to wait until the long exchange price is bigger than the short exchange price before exiting the trade, we need to set a negative value.
# exitSpreadTarget: 0.00001
# (Default: false)
# Log notifications when a spreadIn reaches an all time high, or a spreadOut reaches an all time low.
# This gets very noisy at first because the values all start out empty, but after a few minutes it quiets down.
# These notifications can be very useful for tuning your entrySpread and exitTarget because it shows you what the
# ranges for the spreads are.
spreadNotifications: false
# (Optional)
# Specify the size per trade. If this value is missing, the bot will default to 90% of the balance
# of the exchange that has the smallest balance. I highly recommend starting out the bot
# with a fixedExposure around 10.00 to avoid risking much money at first.
fixedExposure: 10.00
# (Optional)
# If for some reason you want to block a specific combination of exchanges from trading, this is how you do it.
# Each entry in the list is of the format "LongExchangeName:ShortExchangeName:CurrencyPair".
#
# In my case the bot tends to go long on Quoine and short on Kraken but those two exchanges almost never reverse
# so the trades can be open for several days or weeks. In the meantime I'm losing fees and maybe missing other
# opportunities.
tradeBlacklist:
- Quoine:Kraken:ETH/USD
# (Optional)
# Set a time limit for open positions. If a position is open longer than the time limit it will be closed regardless
# of whether it will turn a profit or not. The value of this property is expressed in hours. 24 equals 1 day.
tradeTimeout: 48
# (Optional)
# Enable paper trading. Orders will not be forwarded to the exchanges. Instead, a paper exchange will execute the
# order at the limit price.
#
# Set active to true to turn on paper trading (default) or false to trade real money.
paper:
active: true
# Enable the autoFill option to fill the trigger the order completion after 1s: useful to avoid waiting for the good
# market condition. If false, the paper exchange will wait for the limit price to be met by the real exchange.
autoFill: true
#The default initial cash balance of the paper trading exchanges, default is 100
initialBalance: 100
# Connection information for each exchange goes in this list.
#
# To add a new exchange or remove one that you don't use, either add or remove the configuration from this list.
# Arbitrader uses the XChange library to talk to exchanges, so you can try any of the 60+ exchanges implemented in
# that project. Not all of them support all the features the bot needs, so you should be careful when you try out
# a new exchange for the first time. If you can, consider submitting pull requests to XChange to add better support
# for more exchanges!
exchanges:
-
# In XChange version 5.0.0 they added WebSocket based exchange implementations, which are much more efficient
# than polling because they wait for the exchange to send updates rather than asking the server for the current
# ticker every few seconds.
#
# To use WebSocket based exchanges, use the version of the exchange with "Streaming" in the name.
# Not all exchanges support streaming, so you'll need to check the XChange project on GitHub to see whether the
# exchange you are using has a "Streaming" version or not.
#
# This is how you provide the name of the class from XChange that implements the connection to the exchange.
exchangeClass: info.bitrich.xchangestream.kraken.KrakenStreamingExchange
# The API key for Kraken.
apiKey: x
# The API secret for Kraken.
secretKey: x
# The pairs you wish to trade on Kraken.
tradingPairs:
- BTC/USD
- BCH/USD
- LTC/USD
- EOS/USD
- ADA/USD
- XRP/USD
- BSV/USD
- XLM/USD
- ETC/USD
- XTZ/USD
- DASH/USD
- XMR/USD
- GNO/USD
- QTUM/USD
- ETH/USD
- REP/USD
- ZEC/USD
# Whether or not this exchange supports margin (aka. leveraged) trades. Kraken does.
margin: true
# Pairs to exclude from margin trading on Kraken.
# (i.e. because the exchange doesn't support margin for those pairs)
marginExclude:
- LTC/USD
- EOS/USD
- ADA/USD
- BSV/USD
- XLM/USD
- ETC/USD
- XTZ/USD
- DASH/USD
- XMR/USD
- GNO/USD
- QTUM/USD
- REP/USD
- ZEC/USD
# The amount of fees Kraken charges for each trade. If an exchange's API supports requesting fees at runtime, the bot
# will use that value instead. If not, it will fall back to the configured value.
tradeFee: 0.0026
# The amount of additional fees Kraken charges for margin trades. This fee is only needed if this exchange has margin set to true
marginFee: 0.0002
# Enable (value set to true) or disable (value set to false) this exchange. If 'active' configuration is not set
# then, by default, the exchange is set as active
active: true
-
exchangeClass: org.knowm.xchange.quoine.QuoineExchange
apiKey: x
secretKey: x
tradingPairs:
- BTC/USD
- ETH/USD
- XRP/USD
- BCH/USD
- QASH/USD
- QTUM/USD
- RKT/USD
- NEO/USD
- ONT/USD
- DASH/USD
# Quoine (Liquid) has a couple of custom parameters we need to pass in order to enable margin trading with the API.
custom:
Use_Margin: true
Leverage_Level: 2
margin: true
marginExclude:
- QASH/USD
- QTUM/USD
- RKT/USD
- NEO/USD
- ONT/USD
- DASH/USD
tradeFee: 0.0010
# The amount of fees Kraken charges for Quoine (Liquid) trades. This fee is only needed if this exchange has margin set to true.
# Liquid uses a lending market way to offer margin trade. At the time of writing this note, the average (top lower)
# fee percentage is around 0.002%. For more information go to https://app.liquid.com/lend/market
marginFee: 0.00002
-
exchangeClass: org.knowm.xchange.bitflyer.BitflyerExchange
apiKey: x
secretKey: x
# Bitflyer defaults to the Japan endpoints, so here are some extra settings to use the US based endpoints.
sslUri: https://api.bitflyer.com
host: api.bitflyer.com
port: 443
tradingPairs:
- BTC/USD
# Arbitrader won't start if your account has a crypto balance greater than the minimum trade size for the
# exchange. Unfortunately the metadata XChange has about the minimum trade sizes on exchanges is not always
# correct, and sometimes it's missing entirely. This is an option to provide your own value as a map of
# currency pairs to allowed account balances. If your account balance in the specified currency pair is less
# than the value provided here, the bot will start up and could potentially sell some of this balance.
#
# This configuration is your way out if you're stuck with 0.00000001 BTC that you can't seem to get rid of
# but the bot refuses to start up because the balance isn't _exactly_ zero.
minBalanceOverride:
BTC/USD: 0.001
# BitFlyer doesn't support margin trading (for US based customers, anyway).
margin: false
tradeFee: 0.0012
-
exchangeClass: org.knowm.xchange.coinbasepro.CoinbaseProExchange
apiKey: x
secretKey: x
# Coinbase Pro requires an additional "passphrase" for authentication to the API.
custom:
passphrase: x
# Coinbase Pro does not provide an API to fetch more than one ticker at a time
# and they rate limit at 3 calls per second, so here are some settings to control
# how many tickers we try to fetch at a time in order to avoid rate limiting.
ticker:
# Only fetch this many tickers at once.
batchSize: 3
# Wait this many milliseconds between batches of tickers.
batchDelay: 1250
tradingPairs:
- BTC/USD
- LTC/USD
- BCH/USD
- ETH/USD
- ETC/USD
- ZRX/USD
margin: false
tradeFee: 0.0030
-
exchangeClass: org.knowm.xchange.poloniex.PoloniexExchange
apiKey: x
secretKey: x
tradingPairs:
- BTC/USD
- BCHSV/USD
- LTC/USD
- ETH/USD
- XRP/USD
- STR/USD
- BCHABC/USD
- XMR/USD
- ZEC/USD
- FOAM/USD
- DOGE/USD
- BCH/USD
margin: false
tradeFee: 0.0025
# Poloniex doesn't support any fiat currencies, so we need to use a USD based stablecoin instead.
#
# Effectively this just aliases any xxx/USD pair to xxx/USDC. For computing trade opportunities it is important
# that this pair has prices that are true to the other exchanges, otherwise it will either never trade or
# find false opportunities.
homeCurrency: USDC
-
exchangeClass: info.bitrich.xchangestream.gemini.GeminiStreamingExchange
apiKey: x
secretKey: x
tradingPairs:
- BTC/USD
- ETH/USD
- BCH/USD
- LTC/USD
- ZEC/USD
margin: false
tradeFee: 0.0100
tickerArguments: # this is a workaround for a bug in XChange
- 1
-
exchangeClass: org.knowm.xchange.cexio.CexIOExchange
userName: x
apiKey: x
secretKey: x
tradingPairs:
- BTC/USD
- ETH/USD
margin: false
tradeFeeOverride: 0.0016 # Cex.IO returns 0.16 as the fee but this will force it to 0.0016 which is the correct value
-
exchangeClass: org.knowm.xchange.bitstamp.BitstampExchange
apiKey: x
secretKey: x
# Bitstamp requires username for authentication to the API
userName: x
tradingPairs:
- BTC/USD
- XRP/USD
- LTC/USD
- ETH/USD
- BCH/USD
margin: false
tradeFee: 0.0025
homeCurrency: USD
-
exchangeClass: org.knowm.xchange.cobinhood.CobinhoodExchange
apiKey: x
tradingPairs:
- BTC/USD
- ETH/USD
- LTC/USD
- XRP/USD
margin: false
tradeFee: 0.0000
homeCurrency: USDT