python 現在の日時表示

import datetime # datetimeモジュールのインポート

...

            # today()メソッドで現在日付・時刻のdatetime型データの変数を取得
            d = datetime.datetime.utcnow() + datetime.timedelta(hours=9)
            print(d.strftime("%x %X"))    # 日付と時刻に対応する文字列

BitMEX bot レバレッジの設定とポジションの情報取得

#!/usr/bin/python3
import requests
import ccxt

HIGH = 2
LOW  = 3

LOT_RATE  = 0.7 # ロット(割合)
LEVERAGE = 3    #レバレッジ設定

# ポジション情報取得関数
def position():
  pos = bitmex.private_get_position()[0]
  if pos['currentQty'] > 0:
    side = 'LONG'
  else:
    side = 'SHORT'
  return {'side': side, 'currentQty': round(pos['currentQty']), 'avgEntryPrice': pos['avgEntryPrice']}

#BitMEX操作オブジェクト取得
bitmex = ccxt.bitmex({
  'apiKey': 'ご自分の環境のAPI-KEY',
  'secret': 'ご自分の環境のSecret-KEY',
})

#レバレッジ設定をBitMEXに反映する(設定値を取得するAPIが見つからないため、こちらから設定してしまいます)
bitmex.private_post_position_leverage({"symbol":"XBTUSD", "leverage": str(LEVERAGE)})

#最終価格を取得する
last = bitmex.fetch_ticker('BTC/USD')['last']
#現在の保有BTC総量を取得
total_btc = bitmex.fetch_balance()['BTC']['total']
#前ポジションの数量(USD)取得
pos = position()
current_position_qty = pos['currentQty'] if pos['side'] == 'LONG' else - pos['currentQty'] if pos['side'] == 'SHORT' else 0
#最大ポジション数量(レバレッジ設定×保有BTC総量×Price最終値×ロット割合)!!実際は成行注文をするので、この値より多少前後します!!
max_position_qty = int(LEVERAGE * total_btc * last)
#新ポジションの数量(USD)の作成(最大ポジション数量×ロット割合)
new_position_qty = int(max_position_qty * LOT_RATE)

print("現ポジションUSD: " + str(current_position_qty))
print("最大ポジションUSD: " + str(max_position_qty))
print("新ポジションUSD: " + str(new_position_qty))

AWS Cloud9 で bitmex botサンプル動かすまでの手順メモ

AWS Cloud9 デフォルトのpythonをpython3に変更する

エイリアス書き換え

ec2-user:~/environment $ unalias python
ec2-user:~/environment $ alias python='python3'

さらに左上にある「AWS Cloud9」をクリックし、「Preferences」をクリック
すると、下記Project Settingsが表示されます。下にスクロールすると「Python Support」があり、「Python Version:」を選択出来ますので、Python3を選択

さらにさらに

$ sudo update-alternatives --config python

実行して"2"を選択

python3にccxtインストール

sudo python3 -m pip install ccxt

btc情報取るだけの簡単なサンプル実行

新規ファイル作成

ec2-user:~/environment $ touch tradebot_1.py

実行権限つける

ec2-user:~/environment $ chmod 775 tradebot_1.py

コードを描く

import ccxt
bitmex = ccxt.bitmex({
‘apiKey’:’APIキー‘,
‘secret’:’秘密鍵‘,
})
bitmex.urls[‘api’] = bitmex.urls[‘test’] print(bitmex.fetch_ticker(‘BTC/USD’))

実行

python tradebot_1.py

google wifi環境下でvpn経由のwindowsリモートデスクトップ接続

自宅環境:ドコモ光(ぷらら)
モデム:PR-500MI
家庭内LAN:google wifi x2台

まずPR-500MIにVPNの設定をする。

事前共有鍵をメモ&確認くんでWAN側IPもメモ、Windows側にVPN接続設定する

google wifi を普通にセッティング

google wifi アプリでポート転送設定

まずリモートデスクトップ接続したいPCのDHCP IP予約する
設定>ネットワークの詳細設定>DHCP IP予約

続いてポート転送
設定>ネットワークの詳細設定>ポート転送

TCP & UDPの3389ポートを転送するように設定する

接続

クライアントPCでVPN接続したら、
google wifi アプリの
設定>ネットワークの詳細設定>WAN にあるIPにリモートデスクトップ接続。

MFCで文字列の比較(アルファベット順とか)。CStringListにソートして格納例

CompareStringという関数がある。

CString input_string = "...";

// アルファベット順にソートして格納
POSITION tmp_pos = output_cstringlist.GetHeadPosition();
while( tmp_pos ){
	POSITION bk_tmp_pos = tmp_pos;
	 CString tmp_cstring = output_cstringlist.GetNext(tmp_pos);
	 if( CSTR_GREATER_THAN == CompareString(LOCALE_SYSTEM_DEFAULT,NORM_IGNORECASE,tmp_cstring,tmp_cstring.GetLength(),input_string,input_string.GetLength()) ){
		 output_cstringlist.InsertBefore(bk_tmp_pos,fnm);
		 tmp_pos = bk_tmp_pos; // AddTail()させないように
		 break;
	 }
}
if( tmp_pos == NULL ){
	output_cstringlist.AddTail( fnm );
}