Python 初心者です。
先物自動売買ツールの作成に挑戦しています。
以下のメソッドは売買ロジックのうちの一つです。
あるポジションを持っている状態で、そのポジションの取得価格より、X円安い場合、損切を行います。
また、直近過去の最低値を一度下回り、そのあと、直近過去の最高値をy円上回ったときに、利確を行うというロジックなのですが、
直近過去の最低値を一度下回ったことを確認するpassedvallyをTrueにしたあとの戻り値で落ちてしまいます。
解決方法、または有効なロジックをご教示いただきたいです。
宜しくお願いいたします。
以下、エラーメッセージになります。
Traceback (most recent call last):
File "gajumaru3.py", line 513, in <module>
main()
File "gajumaru3.py", line 467, in main
vallypassed)
File "gajumaru3.py", line 188, in c_logic
return curposition, curcoin, settlementprice, pos_price, pl_state, vallypassed
UnboundLocalError: local variable 'settlementprice' referenced before assignment
Python
1def c_logic(curposition, curprice, curcoin, mountain, vally, pos_price, vallypassed): 2 if curposition == 'C': 3 if curprice <= pos_price - X: 4 settlementprice = settlement_buy(curprice, curcoin); 5 win_lose_flag = win_lose(curposition, curcoin, settlementprice, pos_price); 6 pl_state = calc_pl_state(curposition, curcoin, pos_price, settlementprice); 7 next_position = ctrl_logic(curposition, win_lose_flag); 8 curposition = next_position 9 nextcoin = ctrl_coin_logic(curcoin, win_lose_flag); 10 curcoin = nextcoin 11 pos_price = curprice 12 vallypassed = False 13 return curposition, curcoin, settlementprice, pos_price, pl_state, vallypassed 14 else: 15 pass 16 if vallypassed == False: 17 if curprice <= vally: 18 vallypassed = True 19 settlementprice = 0 20 pl_state = 0 21#ここで落ちる 22 return curposition, curcoin, settlementprice, pos_price, pl_state, vallypassed 23 #利確 24 elif vallypassed == True and curprice >= mountain + y: 25 settlementprice = settlement_buy(curcoin, curprice); 26 win_lose_flag = win_lose(curposition, curcoin, settlementprice, pos_price); 27 pl_state = calc_pl_state(curposition, curcoin, pos_price, settlementprice); 28 nextposition = ctrl_logic(curposition, win_lose_flag); 29 curposition = nextposition 30 nextcoin = ctrl_coin_logic(curcoin, win_lose_flag); 31 curcoin = nextcoin 32 pos_price = curprice 33 vallypassed = False 34 return curposition, curcoin, settlementprice, pos_price, pl_state, vallypassed 35 else: 36 settlementprice = 0 37 pl_state = 0 38 return curposition, curcoin, settlementprice, pos_price, pl_state, vallypassed 39 else: 40 pass
回答2件
あなたの回答
tips
プレビュー