まだ断片的なことしかできないが、データが6日分しかないので仕方ない
とりあえず、日付を与えると散布図と共にある戦略でトレードした時、儲かったか否かを計算するコマンドを作成
まずダメだったとした9/16
supercar.hatenablog.com
バックテスト
$ time ./logxy1 20200916 95 logxy -0.577668 -0.593294 -0.614558 rkk -0.884032 -0.668976 rkkl -1.26687 -1.25616 rkkh 0.338981 0.640358 ave -57 no buy signal 8 -0.585933 real 0m0.758s user 0m0.136s sys 0m0.255s
簡単に説明すると
買いシグナルはなしで売りシグナルが8銘柄に出て平均で0.58933%儲かった(売りなのでマイナス表示で利益
計算に0.758秒かかった という表示
また
9/14だと
$ time ./logxy1 20200914 95 logxy -0.216645 -0.220198 -0.218513 rkk 1.28607 0.836428 rkkl -0.496733 -0.509763 rkkh 1.90105 1.60898 ave -21 11 1.34408 no sell signal real 0m1.079s user 0m0.136s sys 0m0.333s
売りシグナルはなしで、11銘柄に買いシグナルが出て平均で1.34408%儲かった
計算に1.079秒かかった
ということです
まあデータ少ないので当てになるかはわかりません
それに実践では監視銘柄変える予定(7203などは値がさ株なので低予算で買える銘柄に絞る予定)なので・・・
結局pythonはまだ使いこなせてないのでshell scriptとawk を駆使してバックテストしてる
ave=`awk 'NR==1{print $2}' ./logxyave.txt` echo ave $ave if [ $ave -lt -50 ]; then echo none > signal.txt echo no buy signal awk -v para=$ave '{if($2<((para+30)/100)) print $1,$2,$3,$4}' tmplogxy.txt | sort -n -k 2 >tmplogxysellsort.txt cat tmplogxysellsort.txt| tail -8 > tmplogxysell.txt cat tmplogxysell.txt | awk '{if ($4 > -1.5) print $1, $3;else print $1, -1.5}' > sellsignal.txt awk '{s+=$2}END{print NR,s/NR}' sellsignal.txt elif [ $ave -lt -45 ]; then cat tmplogxy.txt | sort -n -k 2 |tee tmplogxysort.txt | head -1 > tmplogxyh.txt cat tmplogxysort.txt | tail -1 >> tmplogxyh.txt cat tmplogxyh.txt | awk '{if ($2>0.5 || $2 < -1.5) print $1, $3}' > signal.txt awk '{s+=$2}END{print NR,s/NR}' signal.txt echo no sell signal echo none > sellsignal.txt else cat tmplogxy.txt | sort -n -k 2 |tee tmplogxysort.txt | head -10 > tmplogxyh.txt cat tmplogxysort.txt | tail -10 >> tmplogxyh.txt cat tmplogxyh.txt | awk '{if ($2>0.5 || $2 < -1.5) print $1, $3}' > signal.txt awk '{s+=$2}END{print NR,s/NR}' signal.txt echo no sell signal echo none > sellsignal.txt fi
実トレードするには発注プログラムをpythonで作る必要があり、来週は間に合わないかも・・・
来週は3日しかデータ取れないけど、それでも同じ戦略で利益が出るようなら買いだけでも実トレードに持っていきたい・・・・