satoshiをLNMarketsで自動売買する方法

# 趣旨
Bitcoin 初心者のために Lightning Network 上で satoshi を直接入手する方法と入手した satoshi を中央集権取引所に送金することなくそのまま先物・オプション市場で自動売買する方法を解説します。

:::note alert
本記事で紹介する手法について、全てフィナンシャルアドバイスではありませんのでご了承ください。
:::


# satoshiの入手方法
直接自分でBTCを Lightning Network にデポジットするなど色々方法はあるんですが、HNDR が提供しているゲームをプレイすることで得られる satoshi は無料でもらえるのでこちらを紹介します。僕が好きなのはスネークとソリティアとテトリスブロックですね。

- スネーク：https://bitcoinsnake.thndr.games/r/j9Ma
- バウンス：https://bitcoinbounce.thndr.games/r/6G6X
- コインベイ：https://bitcoinbay.thndr.games/r/sRJ9
- ソリティア：https://solitaire.thndr.games/r/p9PT
- テトリスブロック：https://blocks.thndr.games/r/UiQm
- ターボ84：https://turbo84.thndr.games/r/EjYz

尚正式名称はURLの中に記載されている名称になります。

受け取った satoshi は Wallet of Satoshi などのライトニング対応ウォレットにすぐに出金できます。1 satoshi を送金して 1 satoshi を受け取ることができてるので手数料かかっていないと思います。大きな金額になると手数料がかかるかも知れません。

# LNMarkets の準備
LNMarketsは Lightning Network で利用できるsatoshiを利用したデリバティブDEXです。エアドロやセクシーなマーケティングはやっていないので知名度は低いですが、とても使いやすくスピードも速いのでおすすめです。本記事で説明する Trading Bot もLNMarkets 自体が提供しているコードを利用したものです。

まずはアクセスしてみてください。

https://lnmarkets.com/en

ログインをしようとするといろんなログイン方法が出てきますが、Lightning wallet を選択してください。QRコードが生成されますので、それを読み込めばログインできます。特にアカウントなどを別途つくる必要はなく Lightning wallet をそのまま利用しているイメージです。

![Screenshot 2024-03-21 at 14.25.31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3670541/66779ecc-0adf-ad85-ce56-93f2e3bfce00.png)

次に先ほど用意した Wallet of Satoshi で右下のSendボタンを押してカメラが起動したら、そのカメラでQRコードを読み取り、ログインを許可してください。

![Screenshot 2024-03-21 at 14.36.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3670541/7071f007-c751-6feb-d920-a75b0170dbe8.png)

Wallet of Satoshiのモバイル版からは取引などはできないのですが、コンピュータで開いたブラウザ上ならこれでもう問題なく全ての操作が可能になるので、これ以降の操作はパソコンでの操作になります。

APIキーを生成します。
必要な機能の許可を選択して生成すればすぐにできます。botに必要なのは主にFuturesの項目です。必要なものに応じて適宜調整するのが良いかと思います。

![Screenshot 2024-03-21 at 15.21.24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3670541/786135a7-7c18-d34c-9560-8123bf1eb58c.png)


# Trading Botの準備
本格運用しようとするとサーバーが必要になるんですが、そこまで解説すると記事が長くなってしまうので割愛します。さくらのVPSの Ubuntu とかいいんじゃないかと思いますが、僕は日本のサーバーを借りたことがないのでよくわかりません。

もし、僕の開発環境が気になる方がいらしたらXにてDMをいただければ別途限定公開するかも知れません。以下に僕のアカウントに繋がるURLを置いておきますが、記事の一番下までいくとXのボタンがあるのでそこからでもDMを送ることはできます。

https://twitter.com/daniel_tanaka_

Mac環境で実装する方法を解説します。

ターミナルを起動し、仮想環境を用意します。
```
python3 -m venv lntradingbot
source lntradingbot/bin/activate
```
次にln-marketsのGithubからレポジトリをダウンロードします。
```
git clone https://github.com/ln-markets/trading-bot.git
```

該当ディレクトに移動して必要なライブラリをインストールします。
```
cd trading-bot/
pip install -r requirements.txt
```

ymlファイルを編集します。
```
nano configuration.yml 
```
ymlファイルの中に自分のAPI情報を記載します。ストラテジーのパラメータもここで調整することができます。
```yml 
## your personal information from LNMarkets
lnm_credentials:
  key: ‘your_api_key’
  secret: ‘you’r_secret’
  passphrase: ‘passphrase’
  network: 'mainnet'

## choose your strategy while affecting True (and False to other strategies)
strategies:
  #Trading strat based on TA Summary: https://www.tradingview.com/symbols/XBTUSD/technicals/
  ta_summary: True

## parameters for strategies
ta_summary:
  quantity: 10 #type=int, min=1, quantity of each open position
  leverage: 10 #type=int, min=1, max=100
  takeprofit: 0.02 #type=float, price to reach above (for long) or below (for short) entry price to take profit, 0.2 means take profit 20% above or below ent>
  stoploss: 0.02 #type=float, price to reach below (for long) or above (for short) entry price to stop loss, 0.1 means stop loss 10% below or above entry pri>
  interval: '1m' #type=string, available interval between 2 TA summary signals: "1m" for 1 minute, "5m" for 5 minutes, "15m" for 15 minutes, "30m" for 30 min>
  timeout: 60 #type=int, min=1, number of minutes the trading strat will be running2
```
必要な設定は環境にバージョン関連で異常がない限り既に実行できる状態にあるので実行してみます。
```
python main.py 
```

Connection to LN Markets ok!と表示されれば正常に起動しています。

デフォルトの設定では分足のスキャルピングトレードを以下のルールに基づいて実行するようです。

:::note info 
27のシグナル (オシレーターと移動平均) に基づいた TradingView テクニカル分析サマリー インジケーターに従い、方向性戦略を実行します。ボットは、シグナルが「STRONG_BUY」で少なくとも「BUY」に留まっている間は将来のロングポジションをオープンして実行し続けます。シグナルが「STRONG_SELL」で少なくとも「SELL」に留まっている間はショートの将来ポジションをオープンし、それ以外の場合はポジションを閉じます。
:::

# 僕の運用方法について
まだAPIの使い方やストラテジーの自作方法をリサーチしているところなので、本記事以上のことを2024年3月21日時点ではなにもできていないですが、構想としては自分に合うストラテジーを利用できるようにパラメータやロジックを書き換えた上で、psutil と subprocess を使って工数低めに無限連続起動できるようにしようかなと考えています。

というのはこのbotはトレードが終わると終了してしまうので連続して何度もポジションを持つことができない仕様になっていて、その仕様を書き換えるよりも外部ファイルから実行状況をモニタリングして終了になった時点で再度起動する方が楽そうだなと思ったからです。

最後にもしよろしければ、投げ銭をお願いいたします。

いただいたsatoshiを使って機能を色々テストしてさらなる開発に利用しようと思っています。10円以下などの少額でよいので送っていただいたら需要があるのだと判断して引き続き記事化して行こうと思います。

以下のQRコードを読み込むとライトニング送金ができるはずなので、送金を試すという意味でもぜひお願いします。

![Screenshot 2024-03-21 at 15.26.11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3670541/58ca3d5b-78a3-40f5-995c-764b3851d989.png)