仮想通貨×想い

仮想通貨、プログラミング、unityのこと、最近気になることなど。。。

Unity C# ネットワーク接続を確認するスクリプト

using UnityEngine;
using UnityEngine.UI;

 

public class NWCK : MonoBehaviour
{

  public Text networkState;
  

  void Update()
  {
    CheckNetworkState();
  }
  

  void CheckNetworkState()
  {
    if (Application.internetReachability == NetworkReachability.NotReachable)
    {
      networkState.text = "Network NG !!!!!";
    }
    else
    {
      networkState.text = "Network OK !";
    }
  }

 

}

Unityのインストール(Unity Hubでインストールできない場合)

1 Unityの本体インストール(2019.1.8.f1)

 下記サイトのUnity最新バージョンから、「Unity Installer」を選択・ダウンロードし、インストールする。

 https://unity3d.com/get-unity/download/archive

f:id:cocomoc:20190705203432p:plain

 

2 SDK、NDKのダウンロード

 下記サイトから、ダウンロードし、適当な場所で解凍する。

(1)SDKsdk-tools-windows-4333796.zip)

   https://developer.android.com/studio

   APIレベルが合わない場合(API 26)は、Android Studio(別途インストール)のSDK Managerから更新しておく。

 (2)NDK(android-ndk-r16b-windows-x86_64.zip)

   https://developer.android.com/ndk/downloads/older_releases.html?hl=ja

  

3 日本語化ファイルのダウンロード

  日本語化ファイルをダウンロードし、指定フォルダへ保存する。

(1)ダウンロードサイト

   http://editor-localization.s3-website-ap-northeast-1.amazonaws.com/2018.1/ja.po

(2)保存先(”Localization”は新規作成)

   C:¥Program Files¥Unity¥Editor¥Data¥Localization

 

4 Unityの設定(SDK,NDK,日本語)

(1)SDK,NDK

   Edit>Preferences>External Toolesで、先に保存したフォルダを指定する。

   なお、Script Editor(VisualStudio2019など)もここで指定できます。

(2)日本語

   Edit>Preferences>Langagesで、Editor Langage>Japaneseを選択

 

Android Studio バックグランド処理(Service)java

 開始ボタンでバックグランド処理を始め、停止ボタンでバックグランド処理を終える処理です。

1 activity_main.xml(ボタン設置)

 activity_main.xmlを開き、Buttonを2つ配置する。

 Service開始(id=button1)、Service停止(id=button2)

<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:text="Service開始"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.246"
app:layout_constraintStart_toStartOf="parent"
tools:layout_editor_absoluteY="642dp" />

<Button
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:text="Service停止"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.76"
app:layout_constraintStart_toStartOf="parent"
tools:layout_editor_absoluteY="642dp" />

 

2 MainActivity.java(ボタン動作)

 MainActivity.javaの onCreate()メソッド中に、※を記述する。

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

// ボタンでサービスを呼び出す--------------------------------------------------
// ボタンの制御
findViewById(R.id.button1).setEnabled(true);
findViewById(R.id.button2).setEnabled(false);

findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// サービスの開始
Intent intent = new Intent(MainActivity.this,MyService.class);
startService(intent);

findViewById(R.id.button1).setEnabled(false);
findViewById(R.id.button2).setEnabled(true);
}
});

findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// サービスの停止
Intent intent = new Intent(MainActivity.this,MyService.class);
stopService(intent);

findViewById(R.id.button1).setEnabled(true);
findViewById(R.id.button2).setEnabled(false);
}
});
// -----------------------------------------------------------------------------

 

3 AndroidManifest.xml(サービスクラス作成)

 ファイル>新規>サービス>サービス  ※サービス(IntentService)ではない!

 ここでは、MyService.javaというファイル名にした。

 マニフェストには下記が自動で書き込まれる。

<service
android:name=".MyService"
android:enabled="true"
android:exported="true"></service>

 

4 MyService.java(バックグランド処理準備)

 サービスクラスには、次のコードを記述する。

 バックグランド処理させたいことは、onStartCommand()メソッドに記述する。 

package com.pockan.ozaif;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;

public class MyService extends Service {

@Override
public void onCreate() {
super.onCreate();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//
// バックグランドで行わせたい処理
//
return START_NOT_STICKY;
}

@Override
public void onDestroy() {
super.onDestroy();
}

@Override
public IBinder onBind(Intent intent) {
// TODO: Return the communication channel to the service.
throw new UnsupportedOperationException("Not yet implemented");
}

}

 

以上

 

Android Studioを日本語化する。

1 Pleiadesプラグインをダウンロード、インストールする。

(1)ダウンロード http://mergedoc.osdn.jp/

(2)インストール zip を解凍して setup.exeを起動

 

2 日本語化するアプリケーションを選択する。

  C:¥Program Files¥Android¥Android Studio¥bin¥studio64.exe

 

 

参考サイト↓

https://www.javadrive.jp/android/install/index5.html

Android Studioで Your CPU does not support required features(VT-x or SVM) の対処法

f:id:cocomoc:20190523062455p:plain

 

 1 BIOSで、VT-xやSVMAMD)をEnableにする。

 

2 Windows Hypervisor Platformをインストールする。

コントロール パネル》プログラム》プログラムと機能》Windowsの機能の有効化または無効化

f:id:cocomoc:20190523064817p:plain

 

参考サイト↓

 https://qiita.com/keicha_hrs/items/455ee2f2cef36e9c6e1c

仮想通貨自動注文BOT「OZAIF」が完成しました。

Vectorさんから公開させていただいてます。気に入りましたらご利用くださいね。

www.vector.co.jp

1概要

 仮想通貨取引所・販売所ZaifAPIを使い、終値や過去24時間加重平均などを取得して、独自にテクニカル分析指標EMA Cross(EMA9,EMA26)計算しゴールデンクロス又はデッドクロスが発生したときに、一定の条件で自動注文を繰り返すBOTです。

 Zaifに自分の口座を持ち、日本円入金又は仮想通貨を購入しておく必要があります。ただし、デモ版は自動注文をしないので、口座がなくてもお試しいただけます。

2仕組み

 ゴールデンクロス又はデッドクロスが発生した際、その時の終値を過去24時間加重平均と比較して、0.5%超の差があれば、次の金額でリミット付きの注文を入れます。注文が全て成立した場合、注文額とリミット額の差×取引量が利益になります。

  ① 注文額=終値

  ② リミット額=終値+(過去24時間加重平均-終値×利幅%

 例えば、注文方法bid(買い&リミット売り)を選んだ場合は、ゴールデンクロスが発生し、終値が過去24時間加重平均よりも0.5%超安いときに注文を入れ、ask(売り&リミット買い)を選んだ場合は、デッドクロスが発生し、終値が過去24時間加重平均よりも0.5%超高いときに注文を入れます。

 なお、既にアクティブな注文が入っている場合は、追加注文を行いません。また、取引に必要な日本円や対象コインが不足している場合は「注文失敗」となります。

 アクティブ注文情報の取得や売買注文の際に、利用時に入力APIキーをzaif公式サイトへ送付するので予めご了承ください(API:get_info2tradeを利用)

3準備

 仮想通貨取引所・販売所Zaifの公式サイトにて次を行います。

 なお、secret keyは、他人に漏れないよう注意してください。また、自分のパソコン以外からの不正アクセス防止するため、必ずIPアドレス制限を付けるようにしてください

  Zaifに口座を開設する。

  日本円を入金する。又は仮想通貨を購入所持しておく。

  APIキー(keysecret)を発行する。権限は"info""trade"

4動作環境

 次の環境にて動作を確認しています。

  Windows 10 home(64bit)

5インストール

 ダウンロードした圧縮ファイルを適当なフォルダへ保存し解凍すると次の3つのファイルが現れます。ご購入の前には、デモ版で動作確認を行ってください。

 ① setup.zip :アプリ本体のインストーラーで、PWにて解凍します。

 ② setup demo.msi :注文機能のないデモ版のインストーラーです。

 ③ 取扱説明書.pdf

 setup.zip(①)をPWで解凍すると、setup.msiが現れるのでダブルクリックで実行し、画面の指示に従いインストールしてください。プログラムメニューとデスクトップにOZAIFのアイコンが現れます。

6アンインストール

 「スタートメニュー」を右クリックし、「アプリと機能」からOZAIFをアンインストールしてください。

 また、一度アプリを実行すると、次のフォルダにkey.txtというファイルが作成されるので忘れずに削除してください。API key及びSecret keyが保存されています。もし、ファイルが見つからない場合は、C:を検索してみてください。

C:\Users\(ユーザ名)\AppData\Local\VirtualStore\Program Files (x86)\OZAIF

7使い方

 ①OZAIFアイコンをダブルクリックします。

f:id:cocomoc:20181117134431p:plain 

 ②取引対象とするコインを選択し、「OK」ボタンをクリックします。

f:id:cocomoc:20181117134540p:plain

 ③注文方法、取引量、利幅(%)API keySecret keyを選択・入力し、「スタート」ボタンをクリックします。なお、利幅(%)は、クロスが発生したときの終値]と[過去24時間加重平均]の差を100%としています。

f:id:cocomoc:20181117134614p:plain

 ④BOTの動作画面は次のとおりで、自動注文が行われるとその状況が「注文履歴」欄に表示されます。

f:id:cocomoc:20181117134709p:plain

 ⑤終了する場合は、右下の「終了」ボタンをクリックします。

  なお、アクティブな注文のキャンセルは、Zaif公式サイトから行ってください。

f:id:cocomoc:20181117134737p:plain

 

仮想通貨の自動売買システム「EMA BOT」の利用方法(コツ、ポイント)

1 仕組み

 次の図は、Zaifサイトのチャートで、EMA CrossとMACDを表示させたものです。

 例えば、売り(ask)をベースに売買する場合では、デッドクロスが発生し「macd値」が条件設定した値以上のときに売り(リミット買い)注文を行います。

 この場合、終値に割増額「SellPlus」を加えた金額で売りに出し、終値に割引額「BuyMinus」を引いた金額でリミット買いに出します。つまり、全ての売買が約定すると、SellPlusとBuyMinusの絶対値の合計×数量が利益となります。

 

f:id:cocomoc:20180916115835p:plain

2 EMA Cross、macd値について

 EMA Crossだけでは、価格水準が分かりずらいため、macd値を補完的に使っています。macd値が正なら売り、macd値が負なら買いのサインになります。

 macd値が小さいと、値幅が小さいため一度に小さい利益しか狙えませんが、注文タイミングは増えます。一方、この値が大きいと、値幅が大きいため一度に大きな利益を狙えますが、注文タイミングは減ります。

 

3 割増額(SellPlus)、割引額(BuyMinus)について

 売りベース(デッドクロス)の際は、これから値が下がるので、割増額は少なめ(又は0)で割引額は多めに設定します。|SellPlus|<|BuyMinus|

 買いベース(ゴールデンクロス)の際は、これから値が上がるので、割増額は多めで割引額は少なめ(又は0)に設定します。|SellPlus|>|BuyMinus|

 

4 その他

 EMA Crossは、MACDに比べ連続上げや連続下げに強いようですが、売買サインが少し遅れるので、その分、利幅が小さくなります。

 

 以上ですが、まずは少ない数量で、過去のデータを参考にしながら、自分にあった条件を見つけ出してください。ご健闘をお祈りしています。

仮想通貨の自動売買システム「EMA BOT R1.0」が完成。Vectorにて公開中

 Vectorさんから公開させていただきました。サンプル版でご確認いただき、気に入りましたらぜひご利用くださいね。

 当サイトにて、利用上のコツ、ポイントなどを紹介していきます。

 

www.vector.co.jp

  本システムはシェアウェアです。

f:id:cocomoc:20180912212948p:plain

 

1 概 要

 本システムは、仮想通貨取引所・販売所ZaifAPIを活用し、テクニカル分析指標EMA Cross(EMA9,EMA26)、MACDを独自に計算し、ゴールデンクロス又はデッドクロスが発生したときに、予め入力した条件で自動売買を繰り返すBOTです。

 仮想通貨取引所・販売所Zaifに、自分の口座を持ち、日本円の入金又は仮想通貨を購入してあることが、このシステムを利用するための前提条件となりますのでご注意ください。

 自動売買は、買い(bid)又は売り(ask)のどちらかをベースに行います。bidの場合は日本円の残金があること、askの場合は該当する仮想通貨を所持していることが必要です。なお、日本円や仮想通貨を所持していない場合は、注文失敗(Success=0)となります。

 各注文にはリミット注文を付け、売戻し又は買戻しを行うようにしていますので、一つの注文で利益を狙うことができます。既に注文が入っている場合は、追加の注文は行いません。

 本システムは、注文情報の取得や売買注文の際に、利用時に入力されたAPIキー(key、secret)をzaif公式サイトへ送付しますので予めご了承ください(API:get_info2、trade)。


2 仕組み

(1)EMA Crossについて

 EMAとは、Exponential Moving Average(指数平滑移動平均)の略で株価などのトレンドを見るためのテクニカル分析指標の1つです。
EMA Crossは、期間の異なる2つの移動平均(短期、長期)の交差点を取引のサインとして捉えるものです。

(2)MACDについて

 MACDとは、Moving Average Convergence Divergence(移動平均収束拡散法)の略で、テクニカル分析指標の1つです。期間の異なる2つの移動平均の差(短期-長期)を示すmacd線と、macd線の移動平均を示すsignal線から構成され、このシステムではmacd線の値を注文判定を補うための条件として使用します。

(3)ゴールデンクロスデッドクロスについて

 短期平均が長期平均を下から上に交差するポイントをゴールデンクロスと言い、相場が下降トレンドから上昇トレンドに推移する時を表します。
 また、短期平均が長期平均を上から下に交差するポイントをデッドクロスと言い、相場が上昇トレンドから下降トレンドに推移する時を表します。

(4)買い(bid)で利益を狙う(6(4):BUY-sell)

 買い注文(リミット売り)を選んだ場合は、ゴールデンクロスが発生し、その時のmacdが条件値(6(6):MACD VALUE)を下回る場合に、リミット付きで注文を行います。
 買値はその時の終値より少し安く設定(6(8))し、売値は少し高く設定(6(7))することで、売値と買値の差で利益を狙います。買値が安すぎたり、売値が高すぎたりすると売買が成立しづらくなるため、注意が必要です。
 なお、口座に日本円を所持している必要があります。

(5)売り(ask)で利益を狙う(6(4):SELL-buy)

 売り注文(リミット買い)を選んだ場合は、デッドクロスが発生し、その時のmacdが条件値(6(6):MACD VALUE)を上回る場合に、リミット付きで注文を行います。
 買値はその時の終値より少し安く設定(6(8))し、売値は少し高く設定(6(7))することで、売値と買値の差で利益を狙います。買値が安すぎたり、売値が高すぎたりすると売買が成立しづらくなるため、注意が必要です。
 なお、口座に該当する仮想通貨を所持している必要があります。

(6)その他

 サーバへのアクセスが集中している場合などは、終値の取得や注文等が通らないことがあります。その場合、エラー終了や注文失敗(Success=0)となるので予めご容赦願います。
 また、注文状況を見たり、自動注文された案件を取り消す場合は、直接、zaif公式サイトにログインし操作してください。


3 準 備

 仮想通貨取引所・販売所Zaifの公式サイトにて次を行います。

Zaifに口座を開設する。
②日本円を入金する。又は仮想通貨を購入(所持)しておく。
APIキー(key、secret)を発行する。権限は"info"と"trade"

注1)secret keyは、他人に漏れないよう注意してください!
注2)不正アクセス防止のため、必ずIPアドレス制限を付けるようにしてください!


4 動作環境

 次の環境にて動作を確認しています。

 Windows 10 home(64bit)
 Windows 7 starter(32bit)


5 実行方法

(1)インストール

 ダウンロードした圧縮ファイルを全て解凍し、適当なフォルダへ保存します。一回解凍すると、次の3つのファイルが現れます。
 emabot.zipは、パスワードを入力して解凍すると、システム本体のemabot.exeが出現します。

 emabot.zip(PW解凍後→ macdbot.exe)
 emabotsmpl.exe(サンプル:売買機能なし)
 README.txt(このファイル)

 emabotsmpl.exeは、売買機能のない試用版です。ご購入の前には、これを使い動作確認してください。

(2)アンインストール

 上記(1)で作成したフォルダごと削除します。

(3)実行方法

 コマンドプロンプトを起動し、上記を保存したフォルダへ移動して、コマンドラインからファイルを実行します。

 エクスプローラなどからも実行できますが、システム終了後に、終値等の推移や注文タイミングなどの経緯を調べるには、コマンドラインから起動した方が便利です。

 例えば、D:\zaif フォルダに保存した場合

 C:\>d:
 D:\>cd zaif
 D:\zaif>emabot.exe


6 利用方法

(1)Select COIN.

 売買したいコインを選びます。
 主要通貨、トークン、COMSAの計16種類から選べます。

(2)Input STOP DATE.

 システムを終了させる日を入力します。
 例えば、7/1~7/4まで動かすなら、"5"を入力します。
 強制終了したい場合は、CTRL+cで止めてください。
 既に成功した注文は残りますが、注文自体も止めたい場合は、zaif公式サイトにログインし取り消してください。

(3)Select TIME BAR.

 時間足(1分足又は1時間足)を選びます。
 34足(#34)から売買するための判定を始めます。
 1分足なら34分後、1時間足なら34時間後となります。

(4)Select BUY-sell(bid) or SELL-buy(ask).

 自動売買のベースとなる注文種類(bid又はask)を選びます。
 各注文には必ずリミットが付くので、
買い注文(リミット売り)なら"BUY-sell(bid)"、
売り注文(リミット買い)なら"SELL-buy(ask)" を選びます。

(5)Input sell and buy AMOUNT.

 売買する仮想通貨の数量(単位×n)を入力します。
 入力できる単位は、通貨により異なります。次の「通貨ごとの数量入力単位」を参考にしてください。
 なお、この単位を間違えると、注文失敗(Success=0)となるので注意してください。

 通貨ごとの数量入力単位(item_unit_step)
 btc :0.0001
 xem :0.1
 mona :1.0
 bch :0.0001
 eth :0.0001
 zaif :0.1
 xcp :0.1
 bitcrystals:0.1
 sjcx :0.1
 fscc :0.0001
 pepecash:0.0001
 cicc :0.0001
 ncxc :0.0001
 jpyz :0.0001
 cms.eth :0.0001
 cms.xem :0.0001

 詳しくは、Zaif公式サイトで確認することができます。
 現物公開API/個別情報/currency_pairs
 https://api.zaif.jp/api/1/currency_pairs/btc_jpy (btc)

(6)Input the MACD VALUE for trade timing.

 ゴールデンクロス又はデッドクロスに加え、注文判定に使うmacd線の値を入力します。クロスが発生した際、この値を超えていれば注文を行います。

 買い注文(bid)ならマイナス値、売り注文(ask)ならプラス値を入力します。この値が小さいほど売買タイミングは増加しますが、その反面、信頼性は低くなると考えられます。

 最適な値は、通貨の種類やその時の取引量などにより異なるため、Zaif公式サイトのチャートで、過去のゴールデンクロス又はデッドクロスの際のmacd線の値を参考にしてください。

(7)Input PLUS MONEY for sell price.(0<=)

 売値を決めるための割増額(単位×n)を入力します。
 売値=終値+割増額 なので、プラス額を入力してください。
 入力できる単位は、通貨により異なります。(8)の「通貨ごとの日本円入力単位」を参考にしてください。
 なお、この単位を間違えると、注文失敗(Success=0)となるので注意してください。

(8)Input MINUS MONEY for buy price.(0>=)

 買値を決めるための割引額(-単位×n)を入力します。
 買値=終値+割引額 なので、マイナス額を入力してください。
 入力できる単位は、通貨により異なります。次の「通貨ごとの日本円入力単位」を参考にしてください。
 なお、この単位を間違えると、注文失敗(Success=0)となるので注意してください。

 通貨ごとの日本円入力単位(aux_unit_step)
 btc :5円
 xem :0.0001円
 mona :0.1円
 bch :5円
 eth :5円
 zaif :0.0001円
 xcp :0.0001円
 bitcrystals:0.0001円
 sjcx :0.0001円
 fscc :0.0001円
 pepecash:0.0001円
 cicc :0.0001円
 ncxc :0.0001円
 jpyz :0.0001円
 cms.eth :0.01円
 cms.xem :0.01円

 詳しくは、Zaif公式サイトで確認することができます。
 現物公開API/個別情報/currency_pairs
 https://api.zaif.jp/api/1/currency_pairs/btc_jpy (btc)

(9)Input YOUR KEY and SECRET KEY.

 APIキー(YOUR KEYとSECRET KEY)を間違えないように入力します。
 繰り返しとなりますが、SECRET KEYは、他人に漏れないよう注意してください。

 なお、これを間違えると途中でエラー終了となります。


7 画面表示

(1)時間足ごとの表示

========================================================
# 1 / btc / StopDate= 31 / Action= bid / Amount= 0.01
Macd= -400 / SellPlus= 30000 / BuyMinus= -20000
--------------------------------------------------------
2018-07-09 20:35:00 / LastPrice= 741390
EMA9 741311 - EMA26 745414 = -4103
Macd 59142.223

# 1 --------------------------- 通番
btc --------------------------- 売買対象の仮想通貨
StopDate= 31 ------------------ システムを終了させる日
Action= bid ------------------- 基本とする売買(bid:買い)
Amount= 0.01 ------------------ 仮想通貨の売買数量
Macd= -400 -------------------- 注文判定のためのmacd
SellPlus= 30000 --------------- 売値を決めるための割増額
BuyMinus= -20000 -------------- 買値を決めるための割引額

2018-07-09 20:35:00 ----------- 終値の取得時間
LastPrice= 741390 ------------- 終値
EMA9 741311 ------------------- 短期の指数平滑移動平均
EMA26 745414 ------------------ 長期の指数平滑移動平均
= -4103 ----------------------- 短期平均と長期平均の差
Macd 59142.223 ---------------- 現在のmacd線の値

(2)注文時の表示

*******************************
Checking your active order.
[get_info2] success -> 1
Active order= 0
*******************************

////////////// BUY-sell BUY-sell BUY-sell //////////////
////////////// BUY-sell BUY-sell BUY-sell //////////////

# 1 [trade] success -> 1
BuyPrice= 721390 / SellPrice(limit)= 771390

////////////// BUY-sell BUY-sell BUY-sell //////////////
////////////// BUY-sell BUY-sell BUY-sell //////////////

[get_info2] success -> 1 ------ API[get_info2]で取得成功
Active order= 0 --------------- アクティブ注文無し
# 1 [trade] success -> 1 ------ API[trade]で注文成功
BuyPrice= 721390 -------------- 買値
SellPrice(limit)= 771390 ------ リミット売値


8 謝辞等

 このシステムをご利用いただき、誠にありがとうございます。
 本格的にご利用いただける場合は、ご送金いただければ幸いです。
 このシステムのバージョンアップや新システム開発に振り向けていきたいと思います。

 また、このシステムを開発するに当たり、分かり易いAPIと丁寧な解説を提供してくださったZaif関係者の皆様に深く感謝申し上げますとともに、御社の益々のご発展を心よりお祈り申し上げます。

 最後になりますが、仮想通貨の益々の発展と、このシステムを利用する皆様のご健勝を祈念し挨拶とさせていただきます。

仮想通貨の自動売買システム「MACD BOT」の利用方法(コツ、ポイント)

1 仕組み

 次の図は、ZaifサイトのチャートでMACDを表示させたものです。

 例えば、売り(ask)をベースに売買する場合では、デッドクロスが発生し「macd値」が条件設定した値以上のときに売り(リミット買い)注文を行います。

 この場合、終値に割増額「SellPlus」を加えた金額で売りに出し、終値に割引額「BuyMinus」を引いた金額でリミット買いに出します。つまり、全ての売買が約定すると、SellPlusとBuyMinusの絶対値の合計×数量が利益となります。

f:id:cocomoc:20180910002140p:plain

 

2 macd値について

 この値が小さいと値幅が小さいため一度に小さい利益しか狙えませんが、注文タイミングは増えます。一方、この値が大きいと値幅が大きいため一度に大きな利益を狙えますが、注文タイミングは減ります。

 

3 割増額(SellPlus)、割引額(BuyMinus)について

 売りベース(デッドクロス)の際は、これから値が下がるので、割増額は少なめ(又は0)で割引額は多めに設定します。|SellPlus|<|BuyMinus|

 買いベース(ゴールデンクロス)の際は、これから値が上がるので、割増額は多めで割引額は少なめ(又は0)に設定します。|SellPlus|>|BuyMinus|

 

4 その他

 MACDは、だましが少ないため人気の指標と言われてますが、連続上げや連続下げに弱いという欠点があります。これについては、macd値を高めに設定したり、1時間足で大局的にみることで、多少回避することができます。

 

 以上ですが、まずは少ない数量で、過去のデータを参考にしながら、自分にあった条件を見つけ出してください。ご健闘をお祈りしています。

仮想通貨の自動売買システム「MACD BOT R1.00」が完成。Vectorにて公開中

 Vectorさんから公開させていただきました。サンプル版でご確認いただき、気に入りましたらぜひご利用くださいね。

 当サイトにて、利用上のコツ、ポイントなどを紹介していきます。

www.vector.co.jp

  本システムはシェアウェアです。

f:id:cocomoc:20180724205315j:plain

1概要

 本システムは、仮想通貨取引所・販売所ZaifAPIを活用し、テクニカル分析指標MACD(macd,signal)を独自に計算し、ゴールデンクロス又はデッドクロスが発生したときに、予め入力した条件で自動売買を繰り返すBOTです。

 仮想通貨取引所・販売所Zaifに、自分の口座を持ち、日本円の入金又は仮想通貨を購入してあることが、このシステムを利用するための前提条件となりますのでご注意ください。

 自動売買は、買い(bid)又は売り(ask)のどちらかをベースに行います。bidの場合は日本円の残金があること、askの場合は該当する仮想通貨を所持していることが必要です。なお、日本円や仮想通貨を所持していない場合は、注文失敗(success=0)となります。

 各注文にはリミット注文を付け、売戻し又は買戻しを行うようにしていますので、一つの注文で利益を狙うことができます。既に注文が入っている場合は、追加の注文は行いません。

 本システムは、注文情報の取得や売買注文の際に、利用時に入力されたAPIキー(key、secret)をzaif公式サイトへ送付しますので予めご了承ください(API:get_info2、trade)。

 なお、APIキー(key、secret)は、他人に漏れないよう注意してください。また、自分のパソコン以外からの不正アクセスを防止するため、必ずIPアドレス制限を付けるようにしてください。

2仕組み

(1)MACDについて

 MACDとは、Moving Average Convergence Divergence(移動平均収束拡散法)の略で、株価などのトレンドを見るためのテクニカル分析指標の1つです。期間の異なる2つの移動平均の差(短期-長期)を示すmacd線と、macd線の移動平均を示すsignal線から構成されます。

(2)ゴールデンクロスデッドクロスについて

 macd線がsignal線を下から上に交差するポイントをゴールデンクロスと言い、相場が下降トレンドから上昇トレンドに推移する時を表します。特にゼロラインより下(マイナス圏)でのクロスを捉えることが大切です。また、macd線がsignal線を上から下に交差するポイントをデッドクロスと言い、相場が上昇トレンドから下降トレンドに推移する時を表します。特にゼロラインより上(プラス圏)でのクロスを捉えることが大切です。

(3)買い(bid)で利益を狙う(6(4):BUY-sell)

 買い注文(リミット売り)を選んだ場合は、マイナス圏でゴールデンクロスが発生し、その時のmacdが条件値(6(5):MACD VALUE)を下回る場合に、リミット付きで注文を行います。買値はその時の終値より少し安く設定し(6(7))、売値は少し高く設定し(6(8))、売値と買値の差で利益を狙います。買値が安すぎたり、売値が高すぎたりすると売買が成立しづらくなるため、注意が必要です。なお、口座に日本円を所持している必要があります。

(4)売り(ask)で利益を狙う(6(4):SELL-buy)

 売り注文(リミット買い)を選んだ場合は、プラス圏でデッドクロスが発生し、その時のmacdが条件値(6(5):MACD VALUE)を上回る場合に、リミット付きで注文を行いま
す。買値はその時の終値より少し安く設定し(6(7))、売値は少し高く設定し(6(8))、売値と買値の差で利益を狙います。買値が安すぎたり、売値が高すぎたりすると売買が成立しづらくなるため、注意が必要です。なお、口座に該当する仮想通貨を所持している必要があります。

(5)その他

 サーバへのアクセスが集中している場合などは、終値の取得や注文等が通らないことがあります。その場合、エラー終了や注文失敗となりますので予めご容赦願います。また、自動注文された案件を取り消す場合は、直接、zaif公式サイトにログインし取り消してください。

3準備

 仮想通貨取引所・販売所Zaifの公式サイトにて次を行います。

Zaifに口座を開設する。
②日本円を入金する。又は仮想通貨を購入(所持)しておく。
APIキー(key、secret)を発行する。権限は"info"と"trade"

注1)secret keyは、他人に漏れないよう注意してください。
注2)不正アクセス防止のため、必ずIPアドレス制限を付けるようにしましょう。

4動作環境

 次の環境にて動作を確認しています。

 Windows 10 home(64bit)
 Windows 7 starter(32bit)

5実行方法

(1)インストール

 ダウンロードした圧縮ファイルを全て解凍し、適当なフォルダへ保存します。一回解凍すると、次の3つのファイルが現れます。macdbot.zipは、パスワードを入力して解凍すると、システム本体のmacdbot.exeが出現します。

 macdbot.zip(PW解凍後→ macdbot.exe)
 macdbotsmpl.exe(サンプル:売買機能なし)
 README.txt

 macdbotsmpl.exeは、売買機能のない無料サンプルです。ご購入の前には、これを使い必ず動作確認してください。

(2)アンインストール

 上記(1)で作成したフォルダごと削除します。

(3)実行方法

 コマンドプロンプトを起動し、上記を保存したフォルダへ移動して、コマンドラインからファイルを実行します。エクスプローラなどからも実行できますが、システム終了後に、終値等の推移や注文タイミングなどの経緯を調べるには、コマンドラインから起動した方が便利です。

 例えば、D:\zaif フォルダに保存した場合

 C:\>d:
 D:\>cd zaif
 D:\zaif>macdbot.exe

6 利用方法

(1)Select COIN.

 売買したいコインを選びます。
 主要通貨、トークン、COMSAの計16種類から選べます。

(2)Select TIME BAR.

 時間足(1分足又は1時間足)を選びます。
 42足(#42)から売買するための判定を始めます。
 1分足なら42分後、1時間足なら42時間後となります。

(3)Input STOP DATE.

 システムを終了させる日を入力します。
 例えば、7/1~7/4まで動かすなら、"5"を入力します。
 強制終了したい場合は、CTRL+cで止めてください。
 既に成功した注文は残りますが、注文自体も止めたい場合は、zaif公式サイトにログインし取り消してください。

(4)Select BUY-sell(bid) or SELL-buy(ask).

 自動売買のベースとなる注文種類(bid又はask)を選びます。
 各注文には必ずリミットが付くので、買い注文(リミット売り)なら"BUY-sell(bid)"、売り注文(リミット買い)なら"SELL-buy(ask)" を選びます。

(5)Input the MACD VALUE for trade timing.

 ゴールデンクロス又はデッドクロスに加え、注文判定に使うMACDの値を入力します。クロスが発生した際、このMACD値(絶対値)を超えていれば注文を行います。買い注文(bid)ならマイナス値、売り注文(ask)ならプラス値を入力します。この値(絶対値)が大きいほど信頼性は高くなりますが、売買のタイミングは少なくなります。

 実際に入力すべき値は、通貨やその時の取引量などにより異なるため、Zaif公式サイトのチャートで、過去のゴールデンクロス又はデッドクロスの際のMACD値を参考にしてください。

(6)Input sell and buy AMOUNT.

 売買する仮想通貨の数量(単位×n)を入力します。
 入力できる単位は、通貨により異なります。次の「通貨ごとの数量入力単位」を参考にしてください。なお、この単位を間違えると、注文失敗(success=0)となるので注意してください。

 通貨ごとの数量入力単位(item_unit_step)
 btc :0.0001
 xem :0.1
 mona :1.0
 bch :0.0001
 eth :0.0001
 zaif :0.1
 xcp :0.1
 bitcrystals:0.1
 sjcx :0.1
 fscc :0.0001
 pepecash:0.0001
 cicc :0.0001
 ncxc :0.0001
 jpyz :0.0001
 cms.eth :0.0001
 cms.xem :0.0001

 詳しくは、Zaif公式サイトで確認することができます。
 現物公開API/個別情報/currency_pairs
 https://api.zaif.jp/api/1/currency_pairs/btc_jpy (btc)

(7)Input minus money for buy price.(0>)

 買値を決めるための割引額(-単位×n)を入力します。
 買値=終値+割引額 なので、マイナス額を入力してください。入力できる単位は、通貨により異なります。(8)の「通貨ごとの日本円入力単位」を参考にしてください。なお、この単位を間違えると、注文失敗(success=0)となるので注意してください。

(8)Input plus money for sell price.(0=<)

 売値を決めるための割増額(単位×n)を入力します。
 売値=終値+割増額 なので、プラス額を入力してください。入力できる単位は、通貨により異なります。次の「通貨ごとの日本円入力単位」を参考にしてください。なお、この単位を間違えると、注文失敗(success=0)となるので注意してください。

 通貨ごとの日本円入力単位(aux_unit_step)
 btc :5円
 xem :0.0001円
 mona :0.1円
 bch :5円
 eth :5円
 zaif :0.0001円
 xcp :0.0001円
 bitcrystals:0.0001円
 sjcx :0.0001円
 fscc :0.0001円
 pepecash:0.0001円
 cicc :0.0001円
 ncxc :0.0001円
 jpyz :0.0001円
 cms.eth :0.01円
 cms.xem :0.01円

 詳しくは、Zaif公式サイトで確認することができます。
 現物公開API/個別情報/currency_pairs
 https://api.zaif.jp/api/1/currency_pairs/btc_jpy (btc)

(9)Input YOUR KEY and SECRET KEY.

 APIキー(YOUR KEYとSECRET KEY)を間違えないように入力します。繰り返しとなりますが、secret keyは、他人に漏れないよう注意してください。なお、これを間違えると途中でエラー終了となります。

7画面表示

(1)時間足ごとの表示

=========================================
# 1 / btc / StopDate= 31 / Action= bid / Macd= -400
Amount= 0.01 / BuyMinus= -20000 / SellPlus= 30000
-------------------------------------------------
2018-07-09 20:35:00 / LastPrice= 741390
Macd 59142.223 - Signal 11828.444 = 47313.777

# 1 ----------------------------- 通番
btc ----------------------------- 売買対象の仮想通貨
StopDate= 31 -------------- システムを終了させる日
Action= bid ------------------ 基本とする売買(bid:買い)
Macd= -400 ----------------- 注文判定のためのMACD
Amount= 0.01 -------------- 仮想通貨の売買数量
BuyMinus= -20000 -------- 買値を決めるための割引額
SellPlus= 30000 ----------- 売値を決めるための割増額
2018-07-09 20:35:00 ----- 終値の取得時間
LastPrice= 741390 -------- 終値
Macd 59142.223 ----------- 現在のMACD
Signal 11828.444 ---------- 現在のSignal値
= 47313.777 ---------------- MacdとSgnalの差

(2)注文時の表示

*******************************
Checking your active order.
[get_info2] success -> 1
Active order= 0
*******************************

////////////// BUY-sell BUY-sell BUY-sell //////////////
////////////// BUY-sell BUY-sell BUY-sell //////////////

# 1 [trade] success -> 1
BuyPrice= 721390 / SellPrice(limit)= 771390

////////////// BUY-sell BUY-sell BUY-sell //////////////
////////////// BUY-sell BUY-sell BUY-sell //////////////

[get_info2] success -> 1 -------- API[get_info2]で取得成功
Active order= 0 ------------------ アクティブ注文無し
# 1 [trade] success -> 1 -------- API[trade]で注文成功
BuyPrice= 721390 ------------- 買値
SellPrice(limit)= 771390 ------ リミット売値

8謝辞等

 このシステムをご利用いただき、誠にありがとうございます。本格的にご利用いただける場合は、ご送金いただければ幸いです。このシステムのバージョンアップ(GUI化、Android版など)に振り向けていきたいと思います。また、このシステムを開発するに当たり、分かり易いAPIと丁寧な解説を提供してくださったZaif関係者の皆様に深く感謝申し上げますとともに、御社の益々のご発展を心よりお祈り申し上げます。

 最後になりますが、仮想通貨の益々の発展と、このシステムを利用する皆様のご健勝を祈念し挨拶とさせていただきます。

LinuxにPythonをインストールする for Linux Mint(Spyder:Python IDE)

Linux Mintを起動し、

メニュー/システム管理/ソフトウェアの管理 を起動します。

f:id:cocomoc:20180513185302p:plain

 

検索で「spyder」と入力し、「Spyder3」をクリックします。

f:id:cocomoc:20180513185459p:plain

 

「インストール」ボタンをクリックし、Linux管理者パスワードを入力するとインストールされます。

f:id:cocomoc:20180513185631p:plain

f:id:cocomoc:20180513190228p:plain

 

メニュー/プログラミング/Spyder3 で起動します。

f:id:cocomoc:20180513190815p:plain

Ubuntuのダウンロード

次の公式サイトへアクセスし、「Ubuntuのダウンロード」をクリックします。

Homepage | Ubuntu Japanese Team

f:id:cocomoc:20180513163138p:plain

 

次に「日本語Remix イメージのダウンロード」をクリックします。

f:id:cocomoc:20180513163341p:plain

 

ここでは、サポート期間の長い「ubuntu-ja-16.04-desktop-amd64.iso」をクリックしてダウンロードを開始します。

f:id:cocomoc:20180513163657p:plain

 

しばらくして、ダウンロードフォルダにISOファイル「ubuntu-ja-16.04-desktop-amd64.iso」が存在すれば、ダウンロードは完了です。

 

Oracle VM Virtual Box上に仮想マシンを作成する

Virtual Boxを起動し、左上の「新規」ボタンをクリックします。

Virtual Box のインストール方法は、次を参照してください。

https://coincoincoin.hatenablog.com/entry/2018/03/23/000738
coincoincoin.hatenablog.com

f:id:cocomoc:20180513164804p:plain

 

「名前」欄に仮想マシンの分かりやすい名称を入力し(ここではUbuntu16.04)、「次へ」をクリックします。

f:id:cocomoc:20180513164942p:plain

 

仮想マシンの「メモリサイズ」を設定し(ここでは2GB)、「次へ」をクリックします。

f:id:cocomoc:20180513165202p:plain

 

「仮想ハードディスクを作成する」を選択し、「作成」をクリックします。

f:id:cocomoc:20180513170525p:plain

 

仮想ハードディスクのファイルタイプを選択し(ここではVDI)、「次へ」をクリックします。

f:id:cocomoc:20180513170818p:plain

 

仮想ハードディスクのサイジング方法を選択し(ここでは可変サイズ)、「次へ」をクリックします。

f:id:cocomoc:20180513171233p:plain

 

仮想ハードディスクの作成場所(ここではデフォルト:Virtualbox VMsフォルダ配下に作成されます)とサイズ(ここでは32GB)を指定し、「作成」をクリックします。

f:id:cocomoc:20180513171458p:plain

 

次のとおり、無事に仮想マシンが作成できました。

f:id:cocomoc:20180513172043p:plain

 

 

仮想環境プラットフォームOracle VM VirtualBox のインストール for Windows

パソコンで仮想環境を実現するOracle VM Virtual Boxのインストール方法を紹介します。Virtual Boxは、様々なOSを仮想マシン上で動作させることができます。

 

次のサイトへアクセスし、「Windows Installer」を押下しダウンロードします。32bit、64bitとも共通です。

Oracle VM VirtualBox - Downloads | Oracle Technology Network | Oracle

 

f:id:cocomoc:20180322234048p:plain

ダウンロードしたファイル「VirtualBox-5.2.8.-121***ーWin.exe」

を実行しインストールを開始します。

 始めの画面で「Next」を押下します。

f:id:cocomoc:20180322235534p:plain

「Next」を押下します。

f:id:cocomoc:20180322235651p:plain

「Next」を押下します。

f:id:cocomoc:20180322235750p:plain

「Yes」を押下します。

f:id:cocomoc:20180322235840p:plain

「Install」を押下しインストールを始めます。

f:id:cocomoc:20180322235920p:plain

最後に「Finish」を押下してインストールを終了します。

f:id:cocomoc:20180323000341p:plain

これで無事にインストールすることができました。

起動画面は次のとおりで、「新規」ボタンから仮想マシンを作成し、別途用意しておいたISOファイルなどからOSのインストールを行います。

f:id:cocomoc:20180323000519p:plain

仮想通貨取引所 Zaif API サンプルプログラム:テクニカル指標 EMA(指数平滑移動平均),MACDを算出(python編)

 pythonで、1分ごとにEMA、MACDを算出するプログラムを作ってみました。無限ループのため、[CTRL]+[c] で終了してください。

import requests
import json
from datetime import datetime
from time import sleep

def get_lastprice():
    response = requests.get("https://api.zaif.jp/api/1/last_price/xem_jpy")
    while response.status_code != 200:
        raise Exception('return status code is {}'.format(response.status_code))
        sleep(2)
        response = requests.get("https://api.zaif.jp/api/1/last_price/xem_jpy")        
    dic = json.loads(response.text)
    prc = dic["last_price"]
    return prc

nw = lp = jd = 0
twsx = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]
mcdn = [0,0,0,0,0,0,0,0,0]

while lp != 99:    # loop out at this day

    nw       = datetime.now()
    lp       = nw.day
    jd       = nw.second
    i = j = k = l = m = n = o = p =0
    sum8 = sum11 = sum25 = summd = 0
    ema9 = ema12 = ema26 = macd = signal = 0

    if jd==0:
       
        twsx[25] = get_lastprice()        

        # cal. 9-ema      
        for i in range(17,25):
            sum8 += twsx[i]
        ema9  = (sum8 +twsx[25]*2) / (9+1)
        
        # cal. 12-ema
        for j in range(14,25):
            sum11 += twsx[j]
        ema12 = (sum11+twsx[25]*2) / (12+1)
        
        # cal. 26-ema
        for k in range(0,25):
            sum25 += twsx[k]
        ema26 = (sum25+twsx[25]*2) / (26+1)
        
        # cal. MACD(macd,signal)
        macd   = mcdn[8]  = ema12 - ema26
        for l in range(0,8):
            summd += mcdn[l]
        signal = (summd+mcdn[8]*2) / (9+1)
            
        # view list for check
        for o in range(0,26):
            print("twsx[",o,"]=",twsx[o])
        for p in range(0,9):
            print("mcdn[",p,"]=",mcdn[p])
        
        # view EMA,MACD
        print("---------------------------------------")
        print("NOW    =",nw)
        print("---------------------------------------")
        print(" 9_EMA =",ema9)
        print("12_EMA =",ema12)
        print("26_EMA =",ema26)
        print("---------------------------------------")
        print("MACD   =",macd)
        print("Signal =",signal)
        print("=======================================")
        
        # shift value
        for m in range(0,25):
            twsx[m] = twsx[m+1]
        for n in range(0,8):
            mcdn[n] = mcdn[n+1]
              
        sleep(60-5)

 実行結果は次のとおりです(9分経過後)。

D:python>python ema_macd_1m.py
twsx[ 0 ]= 0
twsx[ 1 ]= 0
twsx[ 2 ]= 0
twsx[ 3 ]= 0
twsx[ 4 ]= 0
twsx[ 5 ]= 0
twsx[ 6 ]= 0
twsx[ 7 ]= 0
twsx[ 8 ]= 0
twsx[ 9 ]= 0
twsx[ 10 ]= 0
twsx[ 11 ]= 0
twsx[ 12 ]= 0
twsx[ 13 ]= 0
twsx[ 14 ]= 0
twsx[ 15 ]= 0
twsx[ 16 ]= 0
twsx[ 17 ]= 37.8198
twsx[ 18 ]= 37.7504
twsx[ 19 ]= 37.75
twsx[ 20 ]= 37.7001
twsx[ 21 ]= 37.7003
twsx[ 22 ]= 37.7003
twsx[ 23 ]= 37.7003
twsx[ 24 ]= 37.7005
twsx[ 25 ]= 37.702
mcdn[ 0 ]= 3.0169641025641023
mcdn[ 1 ]= 4.519909971509971
mcdn[ 2 ]= 6.025592022792022
mcdn[ 3 ]= 7.527309401709401
mcdn[ 4 ]= 9.031033048433049
mcdn[ 5 ]= 10.534748717948718
mcdn[ 6 ]= 12.038464387464387
mcdn[ 7 ]= 13.54219601139601
mcdn[ 8 ]= 15.046039316239316
---------------------------------------
NOW    = 2018-03-11 14:44:00.000852
---------------------------------------
 9_EMA = 37.72257
12_EMA = 29.017361538461536
26_EMA = 13.97132222222222
---------------------------------------
MACD   = 15.046039316239316
Signal = 9.63282962962963
=======================================