summaryrefslogtreecommitdiff
path: root/python-lnmarketbot.spec
blob: 6867752f2704d50796bbced9763f75325aeae396 (plain)
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
%global _empty_manifest_terminate_build 0
Name:		python-LNMarketBot
Version:	0.3.6
Release:	1
Summary:	Trading Bot for LNMarkets
License:	MIT
URL:		https://github.com/DivyanshuBagga/LNMarketBot
Source0:	https://mirrors.aliyun.com/pypi/web/packages/50/be/bd8cbf09f2e353dbb36fe37da95228f3cd6257358c2be3d4e64632aba36e/LNMarketBot-0.3.6.tar.gz
BuildArch:	noarch

Requires:	python3-requests
Requires:	python3-krakenex
Requires:	python3-pykrakenapi
Requires:	python3-LNMarkets
Requires:	python3-notifiers
Requires:	python3-nest-asyncio

%description
# LNMarkets Trading Bot

A trading bot for [LNMarkets](https://lnmarkets.com/), using the [LNMarkets API](https://pypi.org/project/LNMarkets/) in Python.

To install: `pip install LNMarketBot`

An abstract class `LNMarketBot.Strategy` is provided, which must be extended with implementation of `LNMarketBot.Strategy.init()`, `LNMarketBot.Strategy.execute()`, and `LNMarketBot.Strategy.stop()` methods. The `init()` method will be called only once, before the bot starts processing price information, while `execute()` is called repetedly, for every new price bar that bot recieves. Any parameters required by the strategy, can be passed during instantiation, and will be accessible using `LNMarketBot.Strategy.params` dictionary. Example strategies are provided in LNMarketBot/Examples/ on github.

The price information is obtained from Kraken, using [Pykrakenapi](https://github.com/dominiktraxl/pykrakenapi), as the methods for same are currently not working for LNMarkets API. This may result in price discrepancy between strategy and broker execution. The price bars are of 1 minute duration, and at present, only supplied for last 12 hours. You can also provide csv files containing price information for backtesting (see examples). A strategy can consume data from multiple data feeds, and bot can process multiple strategies simultaneously.

 Bot interacts with LNMarkets through `LNMarketBot.LNMBroker` class, which provides methods for buying/selling, as well as properties for viewing opne/closed positions, balance, etc. If backtesting, the strategy connects to `LNMarketBot.BacktestBroker` class instead.

 You can enable Telegram or Pushover notifications through `LNMarketBot.Notifier`, which provides methods enableTelegram(chatID, token) and enablePushover(userkey, APIkey) for the same. A notifier instance is added to broker on instantiation and access via `broker.notifier` and all position updates through broker will automatically be notified. If you want to disable the automatic notification, instantiate broker with `silent=False`.

Example Usage:
```python
from LNMarketBot import Strategy, LNMBroker, KrakenData, Bot

LNMToken = '<YOUR TOKEN>'
broker = LNMBroker(LNMToken, <Starting Balance>)
telegramToken = '<Telegram Bot Token>'
chatId = <Your Chat Id with Telegram Bot>
broker.notifier.enableTelegram(chatID = chatId, token = telegramToken)

#LowestPriceStrat is provided in LNMarketBot/Examples/ on git
strategy = LowestPriceStrat(
    broker=broker,
    BollingerPeriod=20, Deviation=2.0,
    AveragePeriod=240,
    StopMargin=0.02,
    BuyLimit=1.05,
    TradeDistance=0.1,
    RiskPercent=0.01,
    TrailPercent=0.1,
    CashLimit=1.0e06,
)
strategy.addData(KrakenData())

bot = Bot()
bot.addStrategy(strategy)
bot.run()
```

Note:
* LNMarket token needs only 'positions' scope. This ensures leaking it cannot result in loss of funds through withdrawal.
* This project is under development and not well tested. You are advised to review the code if you plan to use it for trading.
* The author is not responsible for any loss that may result from use of this project.




%package -n python3-LNMarketBot
Summary:	Trading Bot for LNMarkets
Provides:	python-LNMarketBot
BuildRequires:	python3-devel
BuildRequires:	python3-setuptools
BuildRequires:	python3-pip
%description -n python3-LNMarketBot
# LNMarkets Trading Bot

A trading bot for [LNMarkets](https://lnmarkets.com/), using the [LNMarkets API](https://pypi.org/project/LNMarkets/) in Python.

To install: `pip install LNMarketBot`

An abstract class `LNMarketBot.Strategy` is provided, which must be extended with implementation of `LNMarketBot.Strategy.init()`, `LNMarketBot.Strategy.execute()`, and `LNMarketBot.Strategy.stop()` methods. The `init()` method will be called only once, before the bot starts processing price information, while `execute()` is called repetedly, for every new price bar that bot recieves. Any parameters required by the strategy, can be passed during instantiation, and will be accessible using `LNMarketBot.Strategy.params` dictionary. Example strategies are provided in LNMarketBot/Examples/ on github.

The price information is obtained from Kraken, using [Pykrakenapi](https://github.com/dominiktraxl/pykrakenapi), as the methods for same are currently not working for LNMarkets API. This may result in price discrepancy between strategy and broker execution. The price bars are of 1 minute duration, and at present, only supplied for last 12 hours. You can also provide csv files containing price information for backtesting (see examples). A strategy can consume data from multiple data feeds, and bot can process multiple strategies simultaneously.

 Bot interacts with LNMarkets through `LNMarketBot.LNMBroker` class, which provides methods for buying/selling, as well as properties for viewing opne/closed positions, balance, etc. If backtesting, the strategy connects to `LNMarketBot.BacktestBroker` class instead.

 You can enable Telegram or Pushover notifications through `LNMarketBot.Notifier`, which provides methods enableTelegram(chatID, token) and enablePushover(userkey, APIkey) for the same. A notifier instance is added to broker on instantiation and access via `broker.notifier` and all position updates through broker will automatically be notified. If you want to disable the automatic notification, instantiate broker with `silent=False`.

Example Usage:
```python
from LNMarketBot import Strategy, LNMBroker, KrakenData, Bot

LNMToken = '<YOUR TOKEN>'
broker = LNMBroker(LNMToken, <Starting Balance>)
telegramToken = '<Telegram Bot Token>'
chatId = <Your Chat Id with Telegram Bot>
broker.notifier.enableTelegram(chatID = chatId, token = telegramToken)

#LowestPriceStrat is provided in LNMarketBot/Examples/ on git
strategy = LowestPriceStrat(
    broker=broker,
    BollingerPeriod=20, Deviation=2.0,
    AveragePeriod=240,
    StopMargin=0.02,
    BuyLimit=1.05,
    TradeDistance=0.1,
    RiskPercent=0.01,
    TrailPercent=0.1,
    CashLimit=1.0e06,
)
strategy.addData(KrakenData())

bot = Bot()
bot.addStrategy(strategy)
bot.run()
```

Note:
* LNMarket token needs only 'positions' scope. This ensures leaking it cannot result in loss of funds through withdrawal.
* This project is under development and not well tested. You are advised to review the code if you plan to use it for trading.
* The author is not responsible for any loss that may result from use of this project.




%package help
Summary:	Development documents and examples for LNMarketBot
Provides:	python3-LNMarketBot-doc
%description help
# LNMarkets Trading Bot

A trading bot for [LNMarkets](https://lnmarkets.com/), using the [LNMarkets API](https://pypi.org/project/LNMarkets/) in Python.

To install: `pip install LNMarketBot`

An abstract class `LNMarketBot.Strategy` is provided, which must be extended with implementation of `LNMarketBot.Strategy.init()`, `LNMarketBot.Strategy.execute()`, and `LNMarketBot.Strategy.stop()` methods. The `init()` method will be called only once, before the bot starts processing price information, while `execute()` is called repetedly, for every new price bar that bot recieves. Any parameters required by the strategy, can be passed during instantiation, and will be accessible using `LNMarketBot.Strategy.params` dictionary. Example strategies are provided in LNMarketBot/Examples/ on github.

The price information is obtained from Kraken, using [Pykrakenapi](https://github.com/dominiktraxl/pykrakenapi), as the methods for same are currently not working for LNMarkets API. This may result in price discrepancy between strategy and broker execution. The price bars are of 1 minute duration, and at present, only supplied for last 12 hours. You can also provide csv files containing price information for backtesting (see examples). A strategy can consume data from multiple data feeds, and bot can process multiple strategies simultaneously.

 Bot interacts with LNMarkets through `LNMarketBot.LNMBroker` class, which provides methods for buying/selling, as well as properties for viewing opne/closed positions, balance, etc. If backtesting, the strategy connects to `LNMarketBot.BacktestBroker` class instead.

 You can enable Telegram or Pushover notifications through `LNMarketBot.Notifier`, which provides methods enableTelegram(chatID, token) and enablePushover(userkey, APIkey) for the same. A notifier instance is added to broker on instantiation and access via `broker.notifier` and all position updates through broker will automatically be notified. If you want to disable the automatic notification, instantiate broker with `silent=False`.

Example Usage:
```python
from LNMarketBot import Strategy, LNMBroker, KrakenData, Bot

LNMToken = '<YOUR TOKEN>'
broker = LNMBroker(LNMToken, <Starting Balance>)
telegramToken = '<Telegram Bot Token>'
chatId = <Your Chat Id with Telegram Bot>
broker.notifier.enableTelegram(chatID = chatId, token = telegramToken)

#LowestPriceStrat is provided in LNMarketBot/Examples/ on git
strategy = LowestPriceStrat(
    broker=broker,
    BollingerPeriod=20, Deviation=2.0,
    AveragePeriod=240,
    StopMargin=0.02,
    BuyLimit=1.05,
    TradeDistance=0.1,
    RiskPercent=0.01,
    TrailPercent=0.1,
    CashLimit=1.0e06,
)
strategy.addData(KrakenData())

bot = Bot()
bot.addStrategy(strategy)
bot.run()
```

Note:
* LNMarket token needs only 'positions' scope. This ensures leaking it cannot result in loss of funds through withdrawal.
* This project is under development and not well tested. You are advised to review the code if you plan to use it for trading.
* The author is not responsible for any loss that may result from use of this project.




%prep
%autosetup -n LNMarketBot-0.3.6

%build
%py3_build

%install
%py3_install
install -d -m755 %{buildroot}/%{_pkgdocdir}
if [ -d doc ]; then cp -arf doc %{buildroot}/%{_pkgdocdir}; fi
if [ -d docs ]; then cp -arf docs %{buildroot}/%{_pkgdocdir}; fi
if [ -d example ]; then cp -arf example %{buildroot}/%{_pkgdocdir}; fi
if [ -d examples ]; then cp -arf examples %{buildroot}/%{_pkgdocdir}; fi
pushd %{buildroot}
if [ -d usr/lib ]; then
	find usr/lib -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/lib64 ]; then
	find usr/lib64 -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/bin ]; then
	find usr/bin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
if [ -d usr/sbin ]; then
	find usr/sbin -type f -printf "\"/%h/%f\"\n" >> filelist.lst
fi
touch doclist.lst
if [ -d usr/share/man ]; then
	find usr/share/man -type f -printf "\"/%h/%f.gz\"\n" >> doclist.lst
fi
popd
mv %{buildroot}/filelist.lst .
mv %{buildroot}/doclist.lst .

%files -n python3-LNMarketBot -f filelist.lst
%dir %{python3_sitelib}/*

%files help -f doclist.lst
%{_docdir}/*

%changelog
* Fri Jun 09 2023 Python_Bot <Python_Bot@openeuler.org> - 0.3.6-1
- Package Spec generated