python股票自動 選股 與 止損 止盈 指令碼

qq_20575249發表於2020-12-06


論止損的重要性:

虧10%漲11%回本;

虧20%漲25%回本;

虧30%漲42.86%回本;

虧40%漲66.67%回本;

虧50%漲100%回本;

虧60%漲150%回本;

虧70%漲233.33%回本;

虧80%漲400%回本;

虧90%漲900%回本;

虧100%永別了。

波動性和不可預測性是市場最根本的特徵,這是市場存在的基礎,也是交易中風險產生的原因,這是一個不可改變的特徵。交易中永遠沒有確定性,所有的分析預測僅僅是一種可能性,根據這種可能性而進行的交易自然是不確定的,不確定的行為必須得有措施來控制其風險的擴大,止損就這樣產生了。

止損是人類在交易過程中自然產生的,並非刻意製作,是投資者保護自己的一種本能反應,市場的不確定性造就了止損存在的必要性和重要性。成功的投資者可能有各自不同的交易方式,但止損卻是保障他們獲取成功的共同特徵。世界投資大師索羅斯說過,投資本身沒有風險,失控的投資才有風險。學會止損,千萬別和虧損談戀愛。止損遠比盈利重要,因為任何時候保本都是第一位的,盈利是第二位的,建立合理的止損原則相當有效,謹慎的止損原則的核心在於不讓虧損持續擴大。

為什麼止損如此之難

明白止損的意義固然重要,然而,這並非最終的結果。事實上,投資者設定了止損而沒有執行的例子比比皆是,市場上,被掃地出門的悲劇幾乎每天都在上演。止損為何如此艱難?

原因有三:其一,僥倖的心理作祟。某些投資者儘管也知道趨勢上已經破位,但由於過於猶豫,總是想再看一看、等一等,導致自己錯過止損的大好時機;

其二,價格頻繁的波動會讓投資者猶豫不決,經常性錯誤的止損會給投資者留下揮之不去的記憶,從而動搖投資者下次止損的決心;

其三,執行止損是一件痛苦的事情,是一個血淋淋的過程,是對人性弱點的挑戰和考驗。

事實上,每次交易我們都無法確定是正確狀態還是錯誤狀態,即便盈利了,我們也難以決定是立即出場還是持有觀望,更何況是處於被套狀態下。人性追求貪婪的本能會使每一位投資者不願意少贏幾個點,更不願意多虧幾個點。

什麼是程式化止損

正是由於上述原因,當價格到達止損位時,有的投資者錯失方寸,患得患失,止損位置一改再改;有的投資者臨時變卦,逆勢加倉,企圖孤注一擲,以挽回損失;有的投資者在虧損擴大之後,乾脆採取“鴕鳥”政策,聽之任之。為了避免這些現象,筆者以為可以採取程式化的止損策略。

國際上的期貨交易所通常都會提供止損指令。交易者可以預先設定一個價位,當市場價格達到這個價位時,止損指令立即自動生效。而國內期貨交易所目前還沒有止損指令,但可以藉助先進的期貨交易工具,這是目前幫助投資者嚴格執行止損的一種簡單而有效的方法。

目前,國內有的外匯交易系統可以提供市價止損和限價止損兩種止損指令。市價止損是指市場價格一觸及到預設的止損價位,立刻以市價傳送止損委託;限價止損則是在市場價格一觸及到預設的止損價位時以限價傳送委託。市價止損指令能確保止損成功,而限價止損指令則可以避免在價格不連續時出現不必要的損失,兩者各有利弊。通常,在成交活躍的品種上使用市價止損指令,而在成交不活躍的品種上使用限價止損指令。

這種交易系統有助於投資者養成良好的止損習慣,從而規避市場中的風險,使之最大限度地減少損失,使之化被動為主動,在期貨市場中立於不敗之地。

如何正確理解止損

市場的不確定性和價格的波動性決定了止損常常會是錯誤的。事實上,在每次交易中,我們也搞不清該不該止損,如果止損對了也許會竊喜,止損錯了,則不僅會有資金減少的痛苦,更會有一種被愚弄的痛苦,心靈上的打擊才是投資者最難以承受的痛苦。

因此,理解止損本質上就是如何正確理解錯誤的止損。錯誤的止損我們也應坦然接受,舉個簡單的例子,如果在交易中你的止損都是正確的,那就意味著你的每次交易都是正確的,而你的交易如果都是正確的,那又為什麼要止損呢?所以,止損是一種成本,是尋找獲利機會的成本,是交易獲利所必須付出的代價,這種代價只有大小之分,難有對錯之分,你要獲利,就必須付出代價,包括錯誤止損所造成的代價。

坦然面對錯誤的止損,不要回避,更不必恐懼,只有這樣,才能正瑺地交易下去,並且最終獲利,這就是筆者對止損的理解,包括對錯誤止損的理解。

止損應注意的問題

其一,“凡事預則立,不預則廢”,所有的止損必須在進場之前設定。做期貨投資,必須養成一種良好的習慣,就是在開倉的時候就設定好止損,而在虧損出現時再考慮使用什麼標準常為時已晚。

其二,止損要與趨勢相結合。趨勢有三種:上漲、下跌和盤整。在盤整階段,價格在某一範圍內止損的錯誤性的概率要大,因此,止損的執行要和趨勢相結合。在實踐中,筆者以為盤整可視作看不懂的趨勢,投資者可以休養生息。

其三,選擇交易工具來把握止損點位。這要因人而異,可以是均線、趨勢線、形態及其他工具,但必須是適合自己的,不要因為別人用得好你就盲目拿來用。交易工具的確定非常重要,而運用交易工具的能力則會導致完全不同的交易結果。

總之,期貨交易注重健全的交易策略,其中資金管理可視為其核心,而止損可視為資金管理的靈魂。惟有作好資金管理、嚴格止損,才能細水長流,成為市場的常勝將軍。

這是我網上拷貝過來的,我都懶得寫。

看到這裡的朋友 ,是不是也跟我一樣?覺得囉裡囉唆又長又臭。 你以為我現在才知道止損有多重要嗎。好笑 我是知道做不到, 因為止損多了手抖 下不了手了

我想大多數人跟我是一樣的 設定好的沒能及時止損以致出現大虧 。所以寫了個python指令碼讓電腦去執行止損
話不多說先看效果

在這裡插入圖片描述
在這裡插入圖片描述

一、使用示例

程式碼如下(示例):

from thsauto import ThsAuto
from 電腦版選股 import Get_stock
import time



auto = ThsAuto('C:\\同花順遠航版\\transaction\\xiadan.exe') # 連線客戶端 

def 功能測試():
    auto = ThsAuto('C:\\同花順遠航版\\transaction\\xiadan.exe') # 連線客戶端
    print('可用資金')
    print(auto.get_balance())                               # 獲取當前可用資金
    print('持倉')
    print(auto.get_position())      # 獲取當前持有的股票
    print('賣出')
    print(auto.sell(stock_no='300315', amount=300, price=0))   # 賣出股票
    
    print('買入')
    result = auto.buy(stock_no='300142', amount=100, price=0)    # 買入股票
    print(result)
    for i in ['300142','002007','002555','000876','601216','300482']:
        auto.buy(stock_no=i, amount=200, price=0)

    print('已成交')
    print(auto.get_filled_orders())                                 # 獲取已成交訂單
    
    print('未成交')
    print(auto.get_active_orders())                                 # 獲取未成交訂單
    if result and result['code'] == 0:                                # 如果買入下單成功,嘗試撤單
        print('撤單')
        print(auto.cancel(entrust_no=result['entrust_no']))



def 風控(止損=-100,止盈=300):
    for i in auto.get_position()['data']:
        # print(i)
        print(i['盈虧'])
        if float(i["盈虧"]) <= float(止損) or float(i["盈虧"]) > float(止盈):
            auto.sell(stock_no=i['證券程式碼'], amount=i['可用餘額'], price=i['市價'])
            print('賣出')
def 選股():
    #qes = 'macd金叉,dea>0,量比>2,漲幅<3%'
    qes = '60分鐘macd金叉,漲幅<3%,量比>1'
    # qes = '(成交額/總市值)>5%,成交額>5億,換手率>5%,量比>2,kdj金叉'
    # qes = '連續三天量比>2,成交額>10億,10天漲幅<20%'
    # qes = 'rsi(rsi24值)上穿30,換手率大於3%,漲幅<3%,量比>2'
    # qes = '周平均換手率>10%,上市天數>200天'
    # qes = '基金重倉,基金連續6個季度增倉,上市天數大於500,rsi金叉'
    # qes = '成交額>5億,漲幅<3%,量比>2'
    # qes = '周rsi上穿30,漲幅<3%,量比>3'
    # qes = "rsi上穿70,量比大於2,dea大於0,股價大於60均線,換手率大於3%,漲幅小於5%"
    # qes = "kdj金叉,量比大於3,dea大於0,股價大於60均線,換手率大於3%,漲幅小於5%"
    # qes = "macd上移,量比大於2,dea大於0,股價大於60均線,換手率大於5%,漲幅小於5%"
    data = Get_stock(qes)
    for i in data:
        print(i)
        auto.buy(stock_no=i["程式碼"][:-3], amount=100, price=i["價格"])   
def 定時():
    while True:
        time.sleep(2)
        _time = time.strftime('%H%M%S')
        print(_time)
        if _time == '100100':
            選股()
        if _time == '102500' or _time == '112500' or _time == '132600' or _time == '142500':
            風控()         


if __name__ == '__main__':
    # 定時()
    # 功能測試()
    風控()
    選股()

相關文章