ネット売上高の計算
Key_Function:
np.sign(アレイ)のアレイ内の各要素の符号を返し
np.piecewise(アレイ、条件、返されたリストのリスト):配列要素のインデックス決意条件リストの条件一覧要素、返されたリストに対応するインデックスをとり、戻り値として、戻り値はこれらからなります新しい配列
コード:
インポートNP AS numpyの インポートは、PLTのAS matplotlib.pyplot C、V = np.loadtxt(' BHP.csv '、DELIMITER = ' '、usecolsは=(6、7である)、アンパック= TRUE) #、Cの日終値V毎日のボリュームである'' ' C [93.3 93.72 95.64 94.56 93.93 92.39 92.11 92.36 91.76 93.91 94.6 93.27 94.43 96.02 95.76 94.47 94.34 92.22 88.31 89.59 89.02 86.95 84.88 87.38 88.56 89.59 88.71 90.02 91.26 90.67] 、V [1741900. 2620800. 2461300。 3270900. 2650200. 4667300. 5359800. 7768400. 4799100. 3448300. 4719800. 3898900. 3,727,700.3379400。 2463900. 3590900. 3805000. 3271700. 5507800. 2996800. 3434800. 5008300. 7809799. 3947100. 3809700. 3098200. 3500200. 4285600. 3918800. 3632200.] '' ' #計算毎日の終値差 変化= np.diff( C) プリント(変化する) '' ' [1.92 -1.08 -1.26 0.63 -1.54 -0.28 0.25 2.15 0.69 -1.33 -0.6 1.16 1.59 -0.26 -129 -0.13 -2.12 -3.91 -0.57 -2.07 -2.07 1.28 2.5 1.18 1.03 - 1.31 1.24 -0.59 0.88] '' ' サイン = np.sign(変化する) プリント(サイン) ' '' [1 -1 -1 1 -1 -1 1 -1。1 .. 1。 -1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 1 1 1 1。1. -1。] 「」 ' #アレイ要素を決定することは、条件を満たしています戻り値戻り値は、条件を満たしています 個= np.piecewise(変更、[変更<0、変更> 0]、[-1 ,. 1 ]) 印刷(個) ' '' [1 -1 -1 1 -1。 -1 1 -1 -1 1 1 1 1 -1 -1 -1 -1 -1 -1 -1 -1 1 1.1 。-1。1. 1. -1。] 「」 ' 印刷(np.array_equal(サイン、ピース)) #真 #計算された値OBV OBV値、日量であるが、正と負の終値に依存変化量 を印刷(Vの[1:] * 印) 「」 ' [-2461300 -3270900 2650200. 2620800. 7768400. -4667300 -5359800 .... -4799100 3448300. 4719800. 3727700. 3379400. -2463900 -3898900 .. 。 -3590900。-3805000。-3271700。-5507800。2996800. -3434800。-5008300。 -7809799。 3947100. 3809700. 3098200. -3500200。4285600. 3918800. -3632200。] '' '
取引プロセスシミュレーション
Key_Function:
np.vectorize機能:単一要素ベクトルからの入力パラメータにパイソン、ベクトル化機能、すなわち、に対応する機能マップ
配列の各要素をループの使用を避けます
ndarrayオブジェクトは、条件[]元素濾過を充填することができます
デフmyfunc関数(a、b)は: " 戻るABは> bが、そうでない場合は返す場合+ B " の場合 > B: 戻るABは 他: 返す + B vfunc = np.vectorizeを(myfunc関数) vfunc([ 1、 2、3、4]、2 ) #の配列([3、4、1、2])
コード:
インポートNP AS numpyの インポートは、PLTのAS matplotlib.pyplot O、H、L、C = np.loadtxt(' BHP.csv '、DELIMITER = ' '、usecols =(3,4,5,6)、アンパック= TRUE) #オープン、高、低、近いDEFのcalc_profit(オープン、高、低、近い使用): #始値よりも若干低い価格で購入する (0.999オープン* = floatを買う) #1 日の価格帯IF低<購入< ハイ: リターン - (クローズ買う)/購入は #逆の計算営利日、他: リターン0 # 量子化にnp.vectorize()関数 = np.vectorize(calc_profit)FUNCの #4つの入力配列、に出力アレイ 利益 = FUNC(O、H、L、C) プリント(利益) '' ' [0.00755895 0.0123267 0の0.00154302 0.00780612 0.0021668 -0.01006869 -0.00121617 -0.01774473 0.00568316 -0.00614746 0.00560552 0.00675817 0.00225356 -0.00274807 -0.02015786 0.00762307 -0.00675369 0の-0.00675957 -0.01558377 0.01065112 0.02904986 0.00168882 -0.0098442 0.00540779 0.00376864 -0.00499634 -0.00783465 0.00603003] '' ' real_trades =利益[利益!= 0] #0に等しい要素濾過 プリント(LEN(real_trades)を、" "、ラウンド(100.0 * LEN(real_trades)/ LEN(C)、2)、" %" ) #28 93.33パーセントの #の配列要素対応する分割分割 印刷(ラウンド(np.mean(real_trades)* 100、 2)) #2は有効数字2桁取る表す #0.02 winning_trades =利益[利益> 0] プリント(LEN(winning_trades)、丸(100.0 * lenは(winning_trades)/ LEN(C)、2)、" %" ) 位53.33パーセント16 プリント(2ラウンド(np.mean(winning_trades)* 100 )) #0.72 losing_trades =利益[利益< 0] 印刷(LEN(losing_trades)、丸(100.0 * lenは(losing_trades)/ LEN(C)、2)、" %" ) #12 40.0%の 印字(ラウンド(np.mean(losing_trades)* 100、2 )) #-0.92