トレーディングビューで高値ライン、安値ライン(channel break out)を表示するインジケーター(Pineスクリプト)

トレードを補助するインジケーターとして、高値ラインと安値ラインを表示してブレイクが発生した際に、サインを表示するインジケーターを作成しました。

ラインの色や濃さなどはPineスクリプトがわからなくても設定のスタイルから変更可能です。

高値ライン、安値ライン(channel break out)インジケーターの内容

指定期間内の高値ライン、安値ライン、高値と安値の平均ラインを表示します。
高値ライン、安値ラインを超えた際に、背景の色を変更します。
背景の色は表示、非表示の切り替えが可能です。

 

インジケーターのイメージ画像

設定画面(入力)

設定画面(スタイル)

Pineスクリプトのコード


 

PythonでJSONファイルの読み込み、書き込みを行う

PythonでJSONファイルを読み込んで
JSONファイルで書き込む方法についてのサンプルコードです。

PythonでJSONファイルを読み込み、書き込みするプログラム

やりたいこと

・「input.json」ファイルを読み込み
・「input.json」の値を判定し、条件に一致する値のみ抽出
・「output.json」ファイルに書き込み

 

input.jsonの中身

・”memberList”に”name”名前と”age”年齢が入力されている
・サンプルでは実行するPythonプログラムと同じフォルダに配置してあることが前提

{
    "members": [
        {"name":"sibayama","age":20},
        {"name":"sato","age":23},
        {"name":"sakamoto","age":36}
    ]
}

判定処理

30才未満の人だけ、output.jsonへ書き出す

 

サンプルプログラム


動作確認した環境は以下です。
windows10
Python 3.6.4

 

結果 output.jsonの中身

狙いどおりのデータが出力されています。
指定したインデント数でデータが見やすくフォーマットされています。

{
    "members": [
        {
            "name": "sibayama",
            "age": 20
        },
        {
            "name": "sato",
            "age": 23
        }
    ]
}

解説

利用するjsonモジュールは標準ライブラリに含まれいるため、改めてインストール必要はない

import json

ファイルの読み込み

# 読み込むJSONファイル
file_path = 'input.json'
# 入力データ
input_data = {}
# JSONファイル読込
with open(file_path) as f:
    input_data = json.loads(f.read())
print('入力ファイル : \n{}'.format(json.dumps(input_data, indent=4)))

open()関数にてファイルを開き、read()で読み込んでいます。
open()関数の引数には、ファイルを「パス+ファイル名」で指定します。
また、ファイルを読み込んだ直後はただの文字列のため辞書として扱うため、json.loads()関数でデータ形式を変更します。

データの判定

result_members = [] # 判定後の結果
# メンバーリストの数だけループ
for member in input_data['members']:
    print('name : {}, age : {}'.format(member['name'], member['age'])) # メンバー毎に名前と年齢を出力
    # ageが30未満か判定する
    if member['age'] < 30:
        result_members.append(member)
print('条件で判定したリスト : \n{}'.format(result_members))

取得したinput_data(ディクショナリ型)から'members'のキー名を指定してデータを取りだし、データの数だけ繰り返し処理を行います。
ここでは年齢である'age'が30未満のデータか判定し、一致する場合はresult_membersへ追加しています。

データを書込用に整形

# 辞書オブジェクトを生成。'members'のキー名で追加
out_data = {'members' : result_members}
print('出力ファイル : \n{}'.format(json.dumps(out_data, indent=4)))

元のJSONファイルと出力形式をあわせるために、'members'のキー名を指定してリストを追加します。

JSONファイルの書き込み

# 出力先JSONファイル
out_file_path = 'output.json'
with open(out_file_path, 'w') as f:
    json.dump(out_data, f, indent=4)

読み込んだ際と同様に、open()関数でファイルを指定します、書込の場合は第2引数に書込(write)を意味する'w'を指定します。
json.dump関数によってJSONファイルを出力します。
第1引数は書き込む内容(JSONデータ)
第2引数は書き込むファイル
第3引数はJSONファイル書き込み時のインデント

トレーディングビューでEMA12本とゴールデンクロス、デッドクロスのサインを表示するインジケーター(Pineスクリプト)

トレードを補助するインジケーターとして、EMAを12本表示してゴールデンクロスやデッドクロスが発生した際に、サインを表示するインジケーターを作成しました。

ラインの色や濃さなどはPineスクリプトがわからなくても設定のスタイルから変更可能です。

インジケーターの内容

短期EMA6本と長期EMA6本の12本を表示できます。
短期EMA3本と長期EMA3本の6本に表示切り替えが可能です。
(短期EMA1,2,3と長期EMA1,2,3の6本が表示されます)
ゴールデンクロス、デッドクロス発生時に背景の色とサインが表示されます。(短期EMA1と長期EMA1のクロス時になります)
背景の色とサインは表示、非表示の切り替えが可能です。

 

インジケーターのイメージ画像

設定画面(入力)

設定画面(スタイル)

Pineスクリプトのコード

 

トレーディングビューでボリンジャーバンド(bollinger band)を3つ表示するインジケーター(Pineスクリプト)

TradingViewにボリンジャーバンド(bollinger band)を3つ表示するインジケーターを作成しました。

ラインの色や濃さなどはPineスクリプトがわからなくても設定のスタイルから変更可能です。

 

ボリンジャーバンド3 インジケーターの内容

ボリンジャーバンドを3つ表示することができます。
それぞれ表示と非表示の切り替えが可能です。

 

ボリンジャーバンド3 インジケーターのイメージ画像

ボリンジャーバンド3 設定画面(入力)

ボリンジャーバンド毎の標準偏差を設定できます。

ボリンジャーバンド3 設定画面(スタイル)

ボリンジャーバンド3 Pineスクリプトのコード

 

PythonでBitcoinの過去データ(OHLCV、価格)を取得する(BitMEX)

Pythonでビットコイン(Bitcoin)の始値、高値、安値、終値といった過去データ(OHLCV)をBitMEXから取得するサンプルコードです。

今回はBitMEXのUDFからビットコインの1時間足の過去データを50時間分取得します。

サンプルコード

解説

パラメータの”symbol”には取得したい通貨を指定します。BitMEXの場合、ビットコインはXBTとなっているため、今回は”XBTUSD”を指定します。

パラメータの”resolution”には期間を指定します。CrptoWatchは秒で指定しましたが、BitMEXのUDFでは以下のような期間を指定します。

"1":1分,"3":3分,"5":5分,"15":15分,"30":30分,
"60":1時間,"120":2時間,"180":3時間,"240":4時間,"360":6時間,"720":12時間,
"1D":1日,"3D":3日,"1W":1週,"2W":2週,"1M":1月

今回は1時間なので、”60″を指定します。

パラメータの”from”、”to”にはUnixTimeで取得する期間を指定します。今回は50時間分取得したいので、”from”には現在時刻から50時間を引いたUnixTimeを指定し、”after”には現在時刻をUnixTimeで指定します。

 

BitMEX UDFからの取得結果のデータ形式について

BitMEXのUDFからの取得データ形式は下記となります。

BitMEXのBitcoin取得データ形式

{'s': 'ok', 
 't': [1542592800, 1542596400, 1542600000, 1542603600], 
 'c': [5490, 5512, 5499.5, 5467.5], 
 'o': [5513, 5490, 5512, 5499.5], 
 'h': [5517, 5516, 5512.5, 5500], 
 'l': [5472, 5482, 5480.5, 5456], 
 'v': [110602042, 51352052, 45152496, 70604820]}

何となくわかると思いますが上からステータス:’ok’正常にとれてる、時間、終値、始値、高値、安値、取引量となっています。

 

PythonでBitcoinの過去データ(OHLC、価格)を取得する(CryptoWatch)

Pythonでビットコイン(Bitcoin)の始値、高値、安値、終値といった過去データを取得するサンプルコードです。

今回はCryptoWatchからビットフライヤー(bitflyer)のビットコインの1時間足の過去データを50時間分取得します。

サンプルコード

 

解説

パラメータの”periods”には期間を指定します。単位は秒のため、1時間の場合、3600秒となり、今回は”3600″を指定しています。

パラメータの”after”にはUnixTimeを指定します。ここで指定した日時以降の過去データを取得します。今回は50時間前の時刻を指定しています。

※”after”の代わりに”before”を指定した場合、指定した日時以前の過去データを取得できます

取得した過去データはJSON形式のため、json()関数でエンコードして辞書型に変換します。変換後の辞書データから”result”(取得結果が入っています)から対象の時刻”3600″(1時間)のデータを取得します。

詳細については公式ドキュメントをご参照ください。

CryptoWatchの公式ドキュメントはこちら

Pythonで日付、時間を取得、変換する(UnixTime, datetime, JST, UST)

Pythonで日付、時間を扱うことがよくあるのでメモ。

JST、UTCをUnixTime、datetime型で取得します。

 

  1. 現在時刻(JST)をdatetime型で取得する
  2. 現在時刻(UTC)をdatetime型で取得する
  3. 現在時刻(JST)をUnixTime(float型)で取得する
  4. 現在時刻(UTC)をUnixTime(float型)で取得する
  5. datetimeをUnixTime(float型)に変換する
  6. UnixTime(float型)をdatetimeに変換する

 

サンプルコード

解説

importするモジュールはdatetime関連の以下の3つです。

  • datetime・・・日付と時刻を組み合わせたもの
  • timedelta・・・経過時間、すなわち二つの日付や時刻間の差を表す
  • timezone・・・UTC からの固定されたオフセットで定義されたタイムゾーンを表す
1.現在時刻(JST)をdatetime型で取得する

9時間の時差を指定したtimedeltaとtimezoneで日本のタイムゾーンを表すJSTを定義しています。datetime.now(JST)で指定したタイムゾーンの現在時刻を取得します。

2.現在時刻(UTC)をdatetime型で取得する

UTCタイムゾーンは最初からtimezoneクラスの変数”utc”で定義されているため、datetime.now(timezone.utc)で取得します。

3.datetimeからUnixTimeの変換

timestamp()関数でUnixTimeを取得できます。

また、UnixTimeはEpochTimeとも呼ばれます。

4.UNIXTIMEからDatetimeの変換

fromtimestamp()関数でDateTimeを取得できます。

 

Python公式ドキュメントURLはこちら

 

 

WordPressのコピーライトをサイトのリンクに変更する

WordPressのフッターに自分のサイトのリンクを表示できるように修正します。

デフォルトだと「Proudly powered by WordPress」が表示されます。

 

修正前のフッター

この表示内容を自分のサイトのリンクを表示できるように修正します。

 

WordPressのコピーライトをサイトのリンクに変更する

テーマ「Twenty Fifteen」を例にしてコピーライトを変更します。

ダッシュボードから「外観」→「テーマの編集」を選択。

「テーマフッター (footer.php)」の”site-info”が記載されている”div”タグをまるごと書き換えます。

フッター修正例のコード

<!-- .site-info start -->
<div class="site-info">
	<p>&copy;2018 <a href="<?php echo site_url(); ?>"><?php echo bloginfo('name'); ?></a></p>
</div>
<!-- .site-info end -->

※上記コードが反映されない場合は、修正後の”footer.php”ファイルをWordPressのサーバーに直接配置します。因みに私も反映されませんでした。サーバーのファイルを更新する権限がないようです。

 

変更が反映され、フッターが自分のサイトのタイトルでリンクに変更できました!

修正後のフッター

TradingView(トレーディングビュー)でインジケーター(Pineスクリプト)を追加する

TradingView(トレーディングビュー)で自作したインジケーターを追加する方法について記載します。

インジケーターの追加手順

1.チャートを表示する

通貨を選択し、トレーディングビューのチャートを表示します。

2.画面下部の「画面下部の「Pineエディタ」をクリック

Pineエディタが画面下部に表示されます

3.「新規作成」をクリック

4.「空のインディケーターのスクリプト」をクリック

5.最初にあるコードは全て消して、Pineスクリプトコードを貼り付ける

今回は試しに下記のPineスクリプトの「サンプルスクリプト1」と「サンプルスクリプト2」を利用します。

まずは「サンプルスクリプト1」を貼り付けます。

6.「保存」をクリック

7.スクリプトを保存のウインドウが表示されるので、スクリプトの名前を入力し、「保存」をクリック

※一度保存したスクリプトは「オープン」をクリックすると再度開けます

8.「チャートへ追加」をクリック

 

Pineスクリプトの「サンプルスクリプト1」をインジケーターとして表示

画面下部にインジケーターが表示されています。

高値が緑色で表示されて、安値が赤色で表示されています。

 

Pineスクリプトを修正して、インジケーターの表示内容を変更

先に記述されていたPineスクリプトの「サンプルスクリプト2」に変更します。

最初に追加した際と同様にPineエディタを開き、「オープン」をクリックし、「サンプルスクリプト1」を選択します。

現在表示されているスクリプトを削除し、「サンプルスクリプト2」を貼り付け、「保存」をクリック。

現在表示されていた「サンプルスクリプト1」のインジケーターが「サンプルスクリプト2」に変更されました。

「サンプルスクリプト1」から「サンプルスクリプト2」への変更内容は高値、安値のグラフの色とラインの太さを変更しています。

 

 

 

WordPressのログインページをプラグインなしで変更する

WordPressのログインページをプラグインなしで変更する

WordPressに記事を投稿する為には、管理者としてサイトへログインします。ログインページのURLはデフォルトの設定だと、以下の2つのURLのどちらかになると思います。

デフォルトのログインページURL

  • https://{サイトURL}/wp-admin
  • https://{サイトURL}/wp/wp-admin

ユーザー名は投稿ページなどに表示されている場合もあり、デフォルトのログインページのURLをそのまま利用することは、セキュリティ的に好ましくないです。

セキュリティを考慮してログインページのURLを変更してみます。

※WordPressに用意されているプラグインを利用して変更可能ですが、興味本位であえてプラグインを利用しないで変更してみようと思います

 

WordPressのログインページをプラグインなしで変更する手順

  1. 新しいログインファイルを作る(例:new-login.php)
  2. 自分のサイトの「wp-login.php」ファイルの内容をコピーして1.のファイルに貼り付ける
  3. 貼り付けたファイルの”wp-login.php”文字列を置換する(例:”wp-login.php”→”new-login.php”)
  4. 「wp-login.php」ファイルを削除する
  5. 新しいログインページからログイン(例:http://{サイトURL}/new-login.php)

 

こちらのサイトに詳細な手順が画像つきで記載されています。(英語)

How to Obscure Your Site’s Login Page Without a Plugin

上記手順で見事ログインURLを変更できました!!

しかし、問題発生です。

WordPressのログアウトが上手く動作しない

上記手順でログインURLを変更することが出来ましたが、ログアウト使用とすると削除したはずの「wp-login.php」へのリンクが生成されて上手くログアウトできません。。

Google検索してもいい感じの記事を見つけられなかったので、WordPressファイル内を検索してみました。

「wp-includes」フォルダ内の「general-template.php」ファイルに、それらしい記述をみつけました。

「general-template.php」ファイルの関数”wp_logout_url”内に記載されている”wp-login.php”の記載を”new-login.php”に変更することで、正常にログアウトすることが出来ました!

他にも修正すべき箇所があるかもしれませんが、発見したら修正していこうと思います。

結果、プラグインを利用するほうが無難にいいかもしれません。