【2020年4月損益】BitCoinでFXトレードして日銭を稼ぐ
2020年4月の損益結果
コロナの影響で大暴落した際に巨額赤字を出してしまった私ですが、それから真面目に勉強して随分と改善しました。
4月の最終的な損益はこちら。
損益:+129,714円
現物:+0.16BTC
これ、かなりすごい結果なんじゃないかなと思います。
また、トータルの赤字もだいぶ取り戻してきました。 調子が良ければ5月中にプラスに転換できるのではと思います。
4月にこれだけ調子が良かった理由はいろいろあったと思いますが、自分なりに整理しておきます。
4月はなぜ調子が良かったのか
ロングポジションを握っておけば儲かる相場だった
4月はBTC価格が100万円付近から半値近くの50万円まで暴落した後であったり、5月に半減期を控えていたりと、上昇するとしか思えない相場だったことが大きいかなと思います。 とりあえずロングポジションを持っておけば儲かる相場でした。
4月末日のBTC価格は95万円程度であり、特に30日には100万円を超えていることを鑑みるに、ロングポジションを持っておけば儲かる相場は一旦終わりかなと思っています。
ここから半減期に向けて、振動しながらも価格を上げていくだろうと予想はしています。
しかし、特に29日、30日の2日間で10万近く暴騰しての100万円付近への復帰だったこと、そして大きな値戻しもなく価格が上昇してきたことを踏まえると、近いうちに一旦暴落する可能性は捨て切れません。
(事実、102万円まで上昇した後、3時間後には93万円まで急落していました)
今の価格は流石に極端に上がりすぎかなと思っています。
半減期後には価格が上がると言われている一方、その前に一度どこかで暴落するのでは、という意見もあり、半減期相場になるまでの間にどれだけ下がるかは予測できないラインまで価格は回復してきたのかなと思います。
証拠金に余裕ができたら現物を買っていた
証拠金は日本円で必ず10万は残すようにして、余剰分はBTCの購入に充てるようにしていました。 もともと0.04BTC保有していたのですが、4月のうちに平均価格82万円程度で0.16BTCを購入しています。
4月末日のBTC価格が大体95万円だったので、これだけでも26000円の利益が出ています。
BTC価格が今後本当に上がるのかは誰にもわかりませんが、電子決済やブロックチェーン技術の普及を見ていると、まだ上がりそうだなという印象です。 私は少なくとも150万程度までは上がるだろうと見込んでいますので、価格が120万円以下の間は余剰資金が出れば現物を買い足していこうと思っています。
0.5~1BTCの保有が目標です。
1分足スキャルピング方式をやめて5分足トレードに変えた
FXには、数秒から数分の値動きの間に取引を行い、細かい利益を積み重ねるスキャルピング手法というものがあります。
長期の取引を行わないため相場が予想とは逆に動いた時の損が少なく済む反面、利益も少ないのでしっかりと損切りができないとコツコツ積み上げた利益を一回の失敗で全部無くしてしまうリスクが高い手法だなと思います。
これはあくまで私の感想ですが、相場は基本的に価格が上下に振動しながら動いていくものなので、短期間の間に上がるか下がるかを非常に予測しずらかったです。
それに対して、5分足のチャートは比較的相場のトレンドを反映していたように感じます。少なくとも、私にとっては予測と同じ値動きをすることが多い印象でした。
相場に逆らわないように「上昇傾向の相場で価格が落ちた後、再度上がり始めたらエントリー」「下落傾向の相場で価格が上がった時、再度下がり始めたらエントリー」を徹底したところ、大きな損をすることなく利益が出るようになってきました。
また、4時間足、1時間足、30分足でのトレンドを確認し、各トレンドがしっかり同じ方向を向いていることを確認してからエントリーするようにしてからは、より予測の精度が上がったような気がしています。
テクニカル指標の勉強をした
最初の頃はローソク足チャートと睨めっこしてトレードをしていました。 しかし、相場は世界中のトレーダーの需要供給で成り立っているものなので、相場を先読みするためには彼らの行動を先読みすることが必要になってきます。
そのための指標となるのが、テクニカル指標です。 テクニカル指標はあくまでも相場の傾向を数値化したものですが、多くのトレーダーがその指標に従ってトレードしていると考えると、テクニカル指標にはトレーダーの売買行動が反映されていると言うこともできるかと思います。
もちろん、必ずテクニカル指標の通りに相場が動くわけではないため、いわゆる "騙し" に注意する必要はあります。 しかし、ただローソク足チャートだけを見ているよりは、遥かに大量の情報を得ることができます。
私が使用するテクニカル指標については、4月後半には以下に落ちつきました。
これに加えて、さとちんという方が作っている、エントリータイミングを表示してくれるポジ子という指標も使用しています。
このポジ子のサインのタイミングが絶妙で、大きく価格が動く前にはしっかりサインが出てくれています。
ただし、エントリーサインは上記タイミング以外にも割と頻繁に出てくるため、すべてのサインでエントリーすればいいというものではなく、あくまで「自分がエントリーしたい時にサインが出るのを待つ」という戦略をとる必要があります。
そこさえ気を付けていれば、面白いほど利益が出ます。
TradingViewを導入した
複数のテクニカル指標をローソク足チャートと同時にチェックしたいと思い使い始めました。
TradingViewは、そのテクニカル指標のグラフをローソク足チャートと同時に表示することのできるチャートツールです。
無料枠だと、三つまでテクニカル指標を同時に表示することができます。また、指標を使った通知機能もあり、無料枠だと一つだけ設定することができます。
私は4月中旬から1ヶ月間の無料枠を使ってproユーザーになって使っています。 proユーザーの場合は、一度に表示できるテクニカル指標は5つ、通知は10個まで登録できるようになります。
一年で179.4ドルなので、執筆時のドル円レートだと大体2万円程度です。無料プラン中に一年契約すると40%引きになるため、1万円と少しで利用できます。
先行投資として高いか安いかで言うと、かなり安いと思っています。記事冒頭の損益グラフを見ても、4月後半からどんどん利益を積み重ねています。
ちなみに、前述したポジ子は「移動平均線」「ボリンジャーバンド」「一目均衡表」を内包しているため、無料枠を使用している場合は1枠で4つ分の指標を表示できるため、3つしかない表示枠の節約にもなります。
5月以降の目標
黒字転換
ひとまず、5月中の黒字転換を目指します。
とはいえ、トレードにおいては利益追求すると損をすることが多いので、コツコツと積み上げた結果の黒字転換が理想かなと思います。
どれだけ利益が出ても損をしても、慌てず焦らず、自分のトレード方針に忠実に行動した方が利益を得やすいことがこの1ヶ月でよくわかりました。
こんなに上がったんだからそろそろちょっと下がるだろう、とトレンドに逆らっては大損を出し、それまでの利益を全部吹き飛ばしていたので…
冒頭の損益グラフで利益が減っている箇所はほとんどそれです。
本当に人間は過去の経験から何も学ばない生き物です…
システムトレード化
この1ヶ月のトレードはすべて記録してあるので、利益を出したトレード、損をしたトレードでどういう指標からそう判断したのか、実際にはどうだったか、正しい指標の読み方はどうすれば良かったか、などのデータを抽出してみようと思っています。
それをうまく言語化できれば、システムに落とし込んで自動トレードできるんじゃないかなと思っています。
不労所得を得るのが最終目標です。
出産・育児で役に立ったアプリ5選
1.Babyプラス
妊娠がわかった時から使い始めました。
予定日までのカウントダウンと、各週数にあった出産に関する医師の記事を閲覧できます。 ホーム画面の赤ちゃんのセリフが秀逸で、ついつい毎日開いて確認したくなりました。
週数毎に「今の身長体重はこれくらいで、りんごくらいの重さと大きさだよ」といった例を挙げてくれるので、切り替わるのを夫婦で楽しみに見ていました。
2.ピヨろぐ
生まれた後から使い始めました。
授乳時間、ミルクの量、睡眠、排泄、体温等のデータを時系列で記録できるアプリです。 日記もつけられます。
身長体重については成長曲線にプロットして表示してくれるので、順調に成長しているかどうかもわかります。
各種データはグラフ表示してくれるので、昨日よりちょっとうんちの回数が少ないな、などが一目でわかります。
Google Home MiniやSiriと連携すると、排泄や睡眠は設定すれば「OK Google, うんちしたよ」の一言で登録できるのでとても便利です。
3.みてね
生まれた後から使い始めました。
写真を共有するアプリで、とった写真を片っ端からアップロードしています。 今のところ我が家では長い動画はほとんど撮っていないので、無料プランで十分使えています。
各写真にはコメントをつけられるので、祖父母とのコミュニケーションも取れたりします。
どちらの祖父母も遠隔地に住んでいるので滅多に会いに来られないため、両家への共有が一括でできるこちらのアプリはとても重宝しています。
また、アップロードした写真から毎月自動でアルバムを作成してくれて、500円程度で物理のアルバムとして購入することもできます。 試しにひとつ購入してみたのですが、iPhone7の画質でも十分な解像度で印刷されていたので、今後も使ってみようかなと思っています。
4.JapanTaxi
退院時と、病院に行くなど急な移動が必要なときに利用しました。
タクシー配車アプリです。 通常、午前中はタクシーの予約がとても捕まりにくいのですが、このアプリだと配車エリアを拡大して検索するビジーチケット(有料)のおかげで、予約できないという状況がまずないです。 一枚で捕まらなければ追加でビジーチケットを使用することでさらに範囲を拡大して検索してくれるので、捕まらないことはまずないでしょう。
アプリ内で予約した際にクレジット決済を指定しておくと降車時にタクシー内で支払いをしなくて済むので、降車がスムーズなのは赤ちゃんがいる状態だととても楽でした。
5.キッズタクシー
2週間検診と1ヶ月検診で利用しました。
24時間前に予約する必要があるので予め予定されている移動でしか使えませんが、安心面で通常のタクシーとは一線を画しています。
ドライバーは全員小児救急講習を受けており、予約時に依頼すればチャイルドシートも手配してくれます。もちろん乳幼児用のチャイルドシートも大丈夫です。
また、発進と停止に全く慣性を感じないほど静かに運転してくれるので、ドライバーの安全運転の質も普通のタクシーと比べて高いと思います。
充実したサポートですが、その分運賃はかなり高額です。
時間制料金で1時間(14.5km未満)当たり4700円とキッズチャージ料640円を加算した5340円が最低料金となります。 旅行でも行かない限りまずなさそうですが、万一時間料金制の枠を超えた分は追加でメーター制料金がかかります。
往復で1万円を超えるのでタクシー代としてはかなり高額ですが、お金で安心を買っていると思えば安いものです。
お名前.comのVPSでCentOS7上にdockerを用いてwordpressとlaravelを稼働させる 〜https対応を添えて〜
前々からdockerはキャッチアップしなきゃなと思いつつ結局触れていなかったのですが、育児休暇を取って少し自宅でPCを触れる時間ができたので勉強してみることにしました。
最近仮想通貨取引を始めて、取引アプリや自動売買bot、収支管理アプリなどいろいろ作ってみたいなと思っていたので、どうせならサーバー上で複数サービスを動かせるようにして、簡単に追加できるようにしてみます。
構成
最終的な構成はこんな感じになります。
docker-compose.ymlは一つにまとめた方が簡単そうではあったのですが、設定ファイルが肥大化してしまうのと、新しいアプリケーションを追加するときに他のサービスを意識しなくて良い、などの理由でアプリケーションごとに分割して作成します。
ディレクトリ構成は以下のようになります。
work_directory/ ├── laravel/ │ ├── docker-compose.yml │ ├── nginx/ │ │ └── default.conf │ └── php/ │ └── Dockerfile ├── shared/ │ └── docker-compose.yml └── wordpress/ ├── docker-compose.yml ├── nginx/ │ └── default.conf └── php/ └── Dockerfile
作業手順
docker、docker-composeのインストール
公式ドキュメントの通りに行えばOKです。
docs.docker.com
インストール
まずはインストール作業に必要となるパッケージを導入します。
$ sudo yum install -y yum-utils device-mapper-persistent-data lvm2
次にdockerのdocker公式のリポジトリをyumに登録します。
$ sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
最後にdockerをyumでインストールします。
$ sudo yum install -y docker-ce docker-ce-cli containerd.io
これでdockerのインストールは完了です。
続いてdocker-composeもインストールします。
以下のコマンドを実行してダウンロードしてきます。
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.25.3/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
実行権限を付与したら完了です。簡単ですね。
$ sudo chmod +x /usr/local/bin/docker-compose
動作確認
公式マニュアルに従って、無事にインストールできているか確認してみます。
まずはdockerを起動します。
$ sudo systemctl start docker
次に、動作確認用のhello-worldコンテナを起動します。
$ sudo docker run hello-world
hello-worldコンテナは初めて起動するので 「Unable to find image 'hello-world:latest' locally」 と表示されますが、イメージをダウンロードして処理が進んでいきます。
いろいろ表示されますが、以下の文章が表示されていれば正常に起動できています。
Hello from Docker! This message shows that your installation appears to be working correctly.
dockerグループに作業ユーザーを登録
dockerのコマンドは実行にsudo権限が必要なのですが、コマンド実行時に毎回sudoを書くのは面倒なので対応します。
まずは、dockerグループが存在するかを確認します。
$ cat /etc/group | grep docker
私の環境ではdockerグループが既に作成されていたので、作業ユーザーを追加するだけで大丈夫でした。
もしグループがなければ作成します。
$ sudo groupadd docker
あとは、ユーザーをdockerグループに登録して終わりです。
$ sudo usermod -aG docker $USER
ユーザーの所属グループを表示して、リストの中にdockerが存在していれば設定完了です。
確認できたら、設定を反映させるために再ログインします。
$ groups $USER
サブドメインのDNS設定
私はお名前.comでドメインを購入しているので、公式マニュアルに従ってサブドメイン登録を行います。
DNS関連機能の設定:DNSレコード設定|お名前.com Navi ガイド|ドメイン取るならお名前.com
shareネットワークの作成と所属するコンテナの起動
まず、yamlファイル作成する前に、先にshareネットワークを作成しておきます。
ネットワークを事前に作成しておかないとdocker-compose実行時にエラーになってしまいます。
$ docker network create share
次に、share/docker-compose.ymlを以下のように設定します。
shareネットワーク上では「nginx-proxy」「let's-encrypt」「MySQL」のコンテナを立ち上げるための設定を記述します。
version: "3" services: nginx-proxy: image: jwilder/nginx-proxy:alpine container_name: nginx-proxy privileged: true ports: - "80:80" - "443:443" volumes: - html:/usr/share/nginx/html - dhparam:/etc/nginx/dhparam - vhost:/etc/nginx/vhost.d - certs:/etc/nginx/certs:ro - /var/run/docker.sock:/tmp/docker.sock:ro restart: always letsencrypt: image: jrcs/letsencrypt-nginx-proxy-companion container_name: letsencrypt privileged: true depends_on: - "nginx-proxy" volumes: - certs:/etc/nginx/certs:rw - vhost:/etc/nginx/vhost.d - html:/usr/share/nginx/html - /var/run/docker.sock:/var/run/docker.sock:ro restart: always environment: NGINX_DOCKER_GEN_CONTAINER: "nginx-gen" NGINX_PROXY_CONTAINER: "nginx-proxy" mysql: image: mysql:5.7 container_name: mysql command: > --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --max-allowed-packet=128M ports: - "3306:3306" environment: MYSQL_ROOT_USER: root MYSQL_ROOT_PASSWORD: root MYSQL_DATABASE: mysql volumes: - ./mysql:/var/lib/mysql restart: always volumes: certs: html: vhost: dhparam: networks: default: external: name: shared
yamlファイルを作成したら、以下コマンドでコンテナを起動します。
$ docker-compose up -d
コマンドが正常に終了したら、コンテナがちゃんと立ち上がっているか念のため確認します。
下記コマンドを実行して、全てのコンテナのSTATUSが「UP xx seconds」 になっていれば大丈夫です。
$ docker ps
wordpressの構築
続いて、wordpress用のコンテナを起動していきます。
wordpressという名前のディレクトリを作成し、yamlファイルを以下のように記述します。
version: '3' services: nginx: image: nginx external_links: - mysql container_name: "wordpress-nginx" ports: - "80" - "443" volumes: - ./src:/src - ./nginx/default.conf:/etc/nginx/conf.d/default.conf environment: VIRTUAL_HOST: blog.yukineko.work LETSENCRYPT_HOST: blog.yukineko.work LETSENCRYPT_EMAIL: yuki@blog.yukineko.work restart: always php: build: ./php container_name: "wordpress-php" volumes: - ./src:/src - ./php/php.ini:/usr/local/etc/php/php.ini restart: always networks: default: external: name: shared
注意する点は、ssl対応するためにenvironmentで環境変数を設定しておくことくらいです。
VIRTUAL_HOSTとLETSENCRYPT_HOSTの値に割り当てたいドメインを設定しておくことで、nginx-proxyとlet's encryptのコンテナがいい感じにhttpsで接続できるようにしてくれます。
次に、nginxの設定ファイルと、phpコンテナのDockerfileを作成します。
nginx/default.conf
server { listen 80; server_name localhost; root /src/; index index.php index.html index.htm; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri = 404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass wordpress-php:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } }
php/Dockerfile
FROM php:7-fpm RUN apt-get update \ && docker-php-ext-install pdo_mysql mysqli \ && mkdir -p /src WORKDIR /src
作成したら、docker-compose.ymlがあるディレクトリに移動してコンテナ群を起動します。
$ docker-compose up -d
無事コンテナが立ち上がったら、コンテナ内に入ってwordpress用の設定を行なっていきます。
まずはmysqlコンテナに入ってデータベースを作成します。
$ docker exec -it mysql bash (docker内で実行) $ mysql -u root -p (mysql内で実行) $ create database wordpress;
次に、wordpressディレクトリでwordpressのソースをダウンロードしてきて展開します。
$ wget https://ja.wordpress.org/latest-ja.tar.gz $ tar xzfv latest-ja.tar.gz > /dev/null $ mv -R wordpress/* src/ $ rm -rf wordpress latest-ja.tar.gz
プラグインのインストール時などに権限エラーにならないよう、ディレクトリの権限を変更しておきます。
$ cd src $ sudo chmod -R 777 wp-content
最後に、 DBやSSLの設定を行います。
$ cp src/wp-config-sample.php src/wp-config.php $ sudo vi src/wp-config.php
今回はDB_NAMEは事前に作成した「wordpress」を、DB_USERやDB_PASSWORDは何も設定していないのでひとまずrootを使用します。
rootユーザーを使い続けるのはセキュリティ的にあんまりよくないので、そのうちDBにユーザーを作って設定を変更するようにしましょう。
また、SSL関連の設定はファイル末尾に記述されている「require_once(ABSPATH . 'wp-settings.php');」より前に書かないとブラウザからアクセスした際にエラーとなってしまうので気をつけてください。
~~ 省略 ~~ # DB系のデータベース名やユーザー名を設定 define('DB_NAME', 'wordpress'); define('DB_USER', 'root'); define('DB_PASSWORD', 'root'); define('DB_HOST', 'mysql'); ~~ 省略 ~~ if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === "https") { $_SERVER['HTTPS'] = 'on'; } define('FORCE_SSL_LOGIN', true); define('FORCE_SSL_ADMIN', true); ~~ 省略 ~~
ここまでできたら、VIRTUAL_HOSTで設定したドメインにブラウザでアクセスしてみます。
無事wordpressが表示されたら設定完了です。
laravel環境の構築
laravelというディレクトリを作成してyamlファイルを記述していきます。
version: '3' services: laravel-nginx: image: nginx external_links: - mysql container_name: "laravel-nginx" ports: - "80" - "443" volumes: - ./src:/src - ./nginx/default.conf:/etc/nginx/conf.d/default.conf environment: VIRTUAL_HOST: trade-log.yukineko.work LETSENCRYPT_HOST: trade-log.yukineko.work LETSENCRYPT_EMAIL: mail@trade-log.yukineko.work restart: always php: build: ./php container_name: "laravel-php" volumes: - ./src:/src restart: always networks: default: external: name: shared
wordpressの構築でも対応したように、こちらでもnginxディレクトリを作成して設定ファイルを、phpディレクトリを作成してDockerfileを設置します。
nginx/default.conf
server { listen 80; server_name localhost; index index.php index.html; root /src/public/; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { try_files $uri = 404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass laravel-php:9000; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; } }
laravel/php/Dockerfile
FROM php:7.2-fpm RUN apt-get update \ && apt-get install -y zlib1g-dev \ && docker-php-ext-install zip RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" \ && php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e0012edf3e80b6978849f5eff0d4b4e4c79ff1609dd1e613307e16318854d24ae64f26d17af3ef0bf7cfb710ca74755a') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;" \ && php composer-setup.php \ && php -r "unlink('composer-setup.php');" \ && mv composer.phar /usr/local/bin/composer ENV COMPOSER_ALLOW_SUPERUSER 1 ENV COMPOSER_HOME /composer ENV PATH $PATH:/composer/vendor/bin RUN composer global require "laravel/installer" RUN apt-get update \ && apt-get install -y libpq-dev \ && docker-php-ext-install pdo_mysql RUN apt-get update \ && apt-get install -my wget gnupg RUN curl -sL https://deb.nodesource.com/setup_6.x | bash - \ && apt-get update \ && apt-get install -y nodejs WORKDIR /src
ここまでできたら、コンテナ群を起動します。
$ docker-compose up -d
起動できたら「laravel-php」内でlaravelプロジェクトの作成を行います。
$ docker exec -it laravel-php bash (docker内で実行) $ laravel new (docker内で実行) $ docker-compose exec php php artisan key:generate
ここまでできたら、VIRTUAL_HOSTで設定したドメインにブラウザでアクセスしてみます。
無事laravelの画面が表示されたら設定完了です。
vpsサーバーのsshポートを変更する
作業内容
こちらの記事を参考にしました。
weblabo.oscasierra.net
作業としては以下三点です。
作業にあたって気をつける点は2つあって、
- 新しいポートの設定を追加してから古いポートの設定を消す
- ssh接続した状態のコンソールを一つ用意しておく
です。
設定を間違えると(vpsの場合はwebコンソールから操作できるのでなんとか復旧はできますが)最悪sshできなくなってしまうので、注意が必要です。
詰まった点
参考にした記事内に書かれている作業のうち、port22の設定をselinuxから削除する操作が以下のエラーが出てしまって実行できませんでした。
$ sudo semanage port --delete --type ssh_port_t --proto tcp 22 ValueError: ポート tcp/22 はポリシーに定義されているため、削除できません
どうも標準設定に定義されているので消せないらしいです。
firewallの設定でport22は許可していないためセキュリティ面では特に問題はなさそうですし、ログ的な意味も込めて残しておいてもいいのかなとは思います。
(まぁ、sshのportが22なのは周知の事実ではありますが)