diff options
Diffstat (limited to 'python-lnmarketbot.spec')
| -rw-r--r-- | python-lnmarketbot.spec | 225 |
1 files changed, 225 insertions, 0 deletions
diff --git a/python-lnmarketbot.spec b/python-lnmarketbot.spec new file mode 100644 index 0000000..426de6f --- /dev/null +++ b/python-lnmarketbot.spec @@ -0,0 +1,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.nju.edu.cn/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 +* Wed May 31 2023 Python_Bot <Python_Bot@openeuler.org> - 0.3.6-1 +- Package Spec generated |
