numpyのシンボルの配列と量子化機能

ネット売上高の計算

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

 

おすすめ

転載: www.cnblogs.com/draven123/p/11392021.html