import pandas as pd
import matplotlib.pyplot as plt
import datetime as dt
df = pd.read_csv('data.csv')
df.index = pd.to_datetime(df.index, format='%Y%m%d')
sma20 = df['現金'].rolling(20).mean()
sma60 = df['現金'].rolling(60).mean()
entries = (sma20 > sma60) & (sma20.shift() < sma60.shift())
exits = (sma20 < sma60) & (sma20.shift() > sma60.shift())
df['現金'].plot()
plt.plot(sma20)
plt.plot(sma60)
entries.astype(int).plot(secondary_y=True)
exits.astype(int).plot(secondary_y=True)
plt.show()
2021年2月26日 星期五
美金匯率黃金交叉買點分析
最近台幣走強,順勢來分析一下美金的SMA黃金交叉買點情形。
首先資料來自台灣銀行的3年美金歷史價格。網址如下;https://rate.bot.com.tw/xrt/quote/l3y/USD
程式碼如下:
2021年2月25日 星期四
Python加密貨幣爬蟲實戰
# 套件安裝
pip install finlab_crypto
# 程式碼開始
import finlab_crypto
import matplotlib.pyplot as plt
# 初始化,會產生相關資料夾
finlab_crypto.setup()
# 取得歷史數據,設定時間頻率
ohlcv = finlab_crypto.crawler.get_all_binance('BTCUSDT', '4h')
# 取得收盤價
close = ohlcv.close
# 取出兩條均線
sma20 = close.rolling(20).mean()
sma60 = close.rolling(60).mean()
plt.plot(close)
plt.plot(sma20)
plt.plot(sma60)
plt.show()
2019年9月3日 星期二
新視窗關閉時 更新 主視窗
寫前端網頁常有需求是開啟的新視窗關閉時,主要視窗要重新取得資料。
有一段JavaScript做法如下,只要寫在子視窗:
有一段JavaScript做法如下,只要寫在子視窗:
window.onunload = refreshParent;
function refreshParent() {
window.opener.location.reload();
}
#同廠加映,母視窗開起子視窗的語法
$(function () {
$("#divid").on('click',function(){
var currentRow=$(this).closest("tr");
var col1=currentRow.find("td:eq(0)").text();
var col2=currentRow.find("td:eq(1)").text();
var col3=currentRow.find("td:eq(2)").text();
var col4=currentRow.find("input:eq(0)").val();
// var data=col1+"\n"+col2+"\n"+col3+"\n"+col4;
// alert(data);
$.get("FunctionSnmp.php", {sid: col4, system: 'cctv'},
function(data) {
alert(data);
// $.unblockUI();
});
});
})
2019年8月29日 星期四
sum 運算子的運算元資料類型 nvarchar 無效。
當我們要對SQL中進行運算,如MAX、MIN、SUM,等等。
而當預計算的欄位是NVARCHAR或VARCHAR就會出現類似以下錯誤訊息。
sum 運算子的運算元資料類型 nvarchar 無效。
調整SQL語法如下:
而當預計算的欄位是NVARCHAR或VARCHAR就會出現類似以下錯誤訊息。
sum 運算子的運算元資料類型 nvarchar 無效。
調整SQL語法如下:
SELECT c1,c2,c3,sum(c4) from tb1 group by c1,c2,c3 ##修改如下 SELECT c1,c2,c3,Sum(isnull(cast(c4 as float),0)) from tb1 group by c1,c2,c3
2019年8月26日 星期一
PHP curl 呼叫API用法
curl 是我們常見的Linux指令,主要的功能為利用URL語法在命令列下工作的檔案傳輸工具。
也常用於API的基本驗證,當然還有Postman
而在php軟體開發,呼叫API URL,php本身就提供這樣一個好用的函式庫,操作方式如下。
也常用於API的基本驗證,當然還有Postman
而在php軟體開發,呼叫API URL,php本身就提供這樣一個好用的函式庫,操作方式如下。
$url = "http://127.0.0.1:8080/api";
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'PHP Agent');
$jsonresult = curl_exec($curl_handle);
curl_close($curl_handle);
##取得json,例如json格式{'resultcode':'OK'}
$result = json_decode($jsonresult);
##取得某個json字串或變數
$result->resultcode ###此段取回的結果就是OK字串
2019年8月22日 星期四
this is incompatible with sql_mode=only_full_group_by 解決方式
當MySQL 5.7版本後,如果使用group by指令沒有包含所有查詢的欄位會出現以下錯誤訊息:
但後續有些linux版本把設定拆開,例如ubuntu實際修改位置如下:
this is incompatible with sql_mode=only_full_group_by
最有效的方法為修改my.cnf,常見的路徑在/etc/my.cnf但後續有些linux版本把設定拆開,例如ubuntu實際修改位置如下:
/etc/mysql/mysql.conf.d/mysqld.cnf ####在以下位置加入 [mysqld] sql_mode=IGNORE_SPACE,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
2019年8月20日 星期二
Python pysnmp 簡介
之前在開發Java監控Server需要用到snmp套件是使用snmp4j
在.net(C#)是使用SNMPSharpNet
今天則是記錄Python上找了一下比較方便的套件pysnmp
官方網站如下:http://snmplabs.com/pysnmp/index.html
基本的snmpget、snmpset 操作說明如下
在.net(C#)是使用SNMPSharpNet
今天則是記錄Python上找了一下比較方便的套件pysnmp
官方網站如下:http://snmplabs.com/pysnmp/index.html
基本的snmpget、snmpset 操作說明如下
###套件安裝
pip install pysnmp
###把snmpget包裝成一個方法呼叫
from pysnmp.hlapi import *
from pysnmp.entity.rfc3413.oneliner import cmdgen
from pysnmp.proto import rfc1902
ip = '127.0.0.1'
oid = "1.3.6.1.2.1.2.2.1.8.1"
result = snmpget(ip,oid)
def snmpget(ip,oid):
errorIndication, errorStatus, errorIndex, varBinds = next(
getCmd(SnmpEngine(),
CommunityData('private'),
UdpTransportTarget((ip, 161)),
ContextData(),
ObjectType(ObjectIdentity(oid)))
)
if errorIndication:
print(errorIndication)
elif errorStatus:
print('%s at %s' % (errorStatus.prettyPrint(),
errorIndex and varBinds[int(errorIndex) - 1][0] or '?'))
else:
for varBind in varBinds:
return(str(varBind).split('=')[1])
###snmpset用法,此方法為一次設定兩個OID
from pysnmp.entity.rfc3413.oneliner import cmdgen
from pysnmp.proto import rfc1902
cmdGen = cmdgen.CommandGenerator()
errorIndication, errorStatus, errorIndex, varBinds = cmdGen.setCmd(
cmdgen.CommunityData('private', mpModel=0),
cmdgen.UdpTransportTarget(127.0.0.1, 161)),
('.1.3.6.1.2.1.0.1.1', rfc1902.Integer(1)),
('.1.3.6.1.2.1.0.1.2, rfc1902.Integer(1))
)
若有問題都歡迎討論,謝謝。
訂閱:
文章 (Atom)
CentOS Python 3.7 安裝方式
有些開發的程式在python 3.8的檔案套件不相容,例如pymssql,等。 所以如果不建置虛擬環境的話才特意安裝3.7版本的python 安裝流程如下 # 先進行yum套件的update yum update -y # 安裝相依性套件 yum install gcc o...
-
之前在開發Java監控Server需要用到snmp套件是使用snmp4j 在.net(C#)是使用SNMPSharpNet 今天則是記錄Python上找了一下比較方便的套件pysnmp 官方網站如下: http://snmplabs.com/pysnmp/index.htm...
-
經過多次熱門上市或上櫃的股票公開抽籤過期才發現沒填單,就想要一個自動爬蟲通知的系統。 爬蟲簡易程式碼如下,這個爬蟲可以搭配自動發送Email或是line api或是telgram api import requests import time import pandas a...
-
有些開發的程式在python 3.8的檔案套件不相容,例如pymssql,等。 所以如果不建置虛擬環境的話才特意安裝3.7版本的python 安裝流程如下 # 先進行yum套件的update yum update -y # 安裝相依性套件 yum install gcc o...

