私はトレーディング戦略のモデリングに興味があるので、戦略をシミュレートするためにPythonを使用しようとしました。私はこれを最初から書いており、それを実行するときにいくつかの問題があります。私は左の購買力と私が持ってい株式を保存するためにcash
とholding
リストを使用forループの反復でメソッドが間違った値を返す
def strategy(strain, date, cash, holding):
def order(strain, amount, date, cash, holdling):
cash[date]=cash[date-1] - strain[date-1]*amount
holding[date]=holding [date-1] + amount
return
amount = int(cash[0]*0.1/strain[date-1])
cash.append(cash[date-1])
holding.append(holding[date-1])
if (#some strategy) : order(strain, amount, date, cash, holding)
return cash, holding
def main():
cash = [1000000,1000000]
holding = [0,0]
total = []
new = #an array of time series data
day = len(new)
Time = np.arange(2, day-20, 1)
for j in np.arange(2, day-20, 1):
**cash, holding = strategy (new, j, cash, holding)**
count = cash[j-1] + holding[j-1]*new[j-1]
count = count/1000000
total.append(count)
plt.plot(Time, total, 'r', label='return')
if __name__ == "__main__":
main()
。 total
リストを使用してリターンを格納します。私がストラテジメソッドで定義したように、最初にcash
とholding
の新しい要素を前の要素と同じにするように付け加え、注文する信号がトリガされた場合は、メソッドが呼び出され、新しい要素が置き換えられます。しかし、私がコードを実行した後、cash
とtotal
は何らかの形で初期値1000000と1に戻ってしまいます。
cash, holding = strategy (new, j, cash, holding)
に間違いがありますか?あなたは引数を渡すと、それらを修正することなく、変更がcash
は新しい要素で更新された場合でも保持に反映されなかった理由であること、それらを返していなかったし、あなたのorder
機能で
これは、読者がボランティアよりも読んで理解できるコードです。具体的な質問があれば、[最小限の、完全で検証可能な例](https://stackoverflow.com/help/mcve)を提供してください。 – pingul
何も返ってこないという問題があります。 'order'関数 –