簡體   English   中英

用於算法交易的 Python 腳本使用

[英]Python script for algo trading using

尋找有關 Python 外匯交易程序的建議。 基本上我想使用短 sma 和長 sma 交叉來觸發買入多頭或空頭,但只有在它已經超過 go 多頭或低於 go 空頭時才交叉。 第二部分是使用短 sma 穿過中 sma 退出 position。 我遇到的問題是,當短期和中期 SMA 高於或低於長期 SMA 時,它們會不斷觸發買入和賣出。 我不想使用 sma 短線和中線交叉進入任何交易,只是為了退出頭寸,我之前在短期/多頭 SMA 交叉中輸入過這些頭寸。

這個腳本似乎越來越接近我正在尋找的東西。 當它們交叉的確切時間時,它具有短/長信號。 它沒有 sma 短線和中線交叉以退出 position 並且沒有故障保護,因此當它們交叉時不會觸發任何買入或賣出進入交易。 在我進入多頭/空頭 SMA 交叉后,我只希望空頭/中頭交叉退出交易。

df['position'] = df['SMA_15'] > df['SMA_45']
df['pre_position'] = df['position'].shift(1)
df.dropna(inplace=True) # dropping the NaN values
df['crossover'] = np.where(df['position'] == df['pre_position'], False, True)

我可以向您展示一個解決方案,該解決方案僅從重復的每一小串買賣中獲取第一個買入信號,但我相信您可能會喜歡一個名為tulipy的庫。 這使您可以輕松制作技術指標(有關更多功能,請參閱文檔https://tulipindicators.org/ )。 如果您想要其他解決方案,請隨時發表評論,我會在此處添加。

pip install tulipy安裝庫

利用交叉 function。 我們還必須在此處保持列表的長度相同。

import pandas as pd
import numpy as np
import tulipy

def makeListsSameLength(someList, matchThisLengthList):
    #make someList the same length as matchThisLengthList by adding None's to the front
    for i in range(abs(len(matchThisLengthList) - len(someList))): 
        someList = np.insert(someList, 0, None, axis=0) #Push a None to the front of the list
    return someList

df['SMA_15'] = makeListsSameLength(tulipy.sma(df['close'].values, 15), df)
df['SMA_45'] = makeListsSameLength(tulipy.sma(df['close'].values, 45), df)
df['crossover'] = makeListsSameLength(tulipy.crossover(df['SMA_15'].values, df['SMA_45'].values), df)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM