馬丁格爾策略

馬丁格爾策略
Photo Credits: Unsplash

本文重點概要

  • 文章難度:★☆☆☆☆
  • 介紹在外匯市場常用的交易策略

前言

「馬丁交易策略」是從18世紀開始流行的賭博方式,主要方法為當每次虧損時,下次的下注就加倍,如果下次贏的話,不僅能收回先前的損失,還會獲得第一次下注總額的報酬,聽起來是一個穩賺不賠的策略,但其背後隱含著巨大的風險。

編輯環境及模組需求

本文章使用 Mac OS 並以 Jupyter Notebook 作為編輯器

import tejapi
import pandas as pd
import numpy as np

Note: tejapi 安裝以命令提示字元 (Windows)/終端機 (Mac),輸入 pip install tejapi

tejapi.ApiConfig.api_key = 'Your Key'
tejapi.ApiConfig.ignoretz = True

資料庫使用

  • 跨國資料庫: 資料庫代碼為 ‘GLOBAL/GCURR’,為了取得紐約市場及亞洲市場匯率以下各國之匯率報價,歐元兌換美元,時間為2019至2020
fx = tejapi.get('GLOBAL/GCURR',
                coid = 'EUR',
                mdate={'gte': '2019-01-01', 'lte':'2020-12-31'},
                opts = {'columns':['mdate','tuse2']},
                chinese_column_name = True,
                paginate = True)

外匯保證金 & 損益 算法

交易策略

累積獲利為正時,執行平倉,並買進初始0.01手;若為負,則持續加碼(變成2倍手)買進

Step 1. 設定初始值

account  = 100000     # 10萬美金
lot = 0.01            # 0.01手
lev = 1/500           # 槓桿比例
lot_record = [].      # 倉位紀錄
account_record = []   # 總價值紀錄
cum_profit = 0

Step 2. 執行交易策略

for i in range(len(fx)):
    
    # 第一筆買入
    if i < 1:
        cum_profit -= (100000*lot*lev*fx.loc[i, '原幣兌美元 (美元)'])  
        # 初始買0.01手需要的保證金為歐元,所以按照當時匯率換成美元
        account += cum_profit                                       
        account_record.append(account)
        lot_record.append(lot)
    else:
        # 累計損益,乘以100000是為了換成布數
        cum_profit += (fx.loc[i, '原幣兌美元 (美元)'] - fx.loc[i-1, 
        '原幣兌美元 (美元)'])*100000*lot
        # 帳戶餘額
        account += (fx.loc[i, '原幣兌美元 (美元)'] - fx.loc[i-1, '原幣
        兌美元 (美元)'])*100000*lot
        #如果累計損益獲利,平倉後買入0.01手
        if cum_profit >= 0:       
            #買入0.01手,故重置lot & cum_profit
            lot = 0.01
            cum_profit = -(100000*lot*lev*fx.loc[i, '原幣兌美元 (美
            元)']) 
            account += cum_profit
            account_record.append(account)
            lot_record.append(lot)
        #若累計損益為負,則加碼買進
        else:
            lot = lot *2 
            cum_profit -= (100000*(lot-lot/2)*lev*fx.loc[i, '原幣兌美
            元 (美元)'])  
            account -= (100000*(lot-lot/2)*lev*fx.loc[i, '原幣兌美元 
            (美元)'])
            account_record.append(account)              
            lot_record.append(lot)

Step 3. 檢視績效

fx['價值'] = account_record

結論

我們可以看到收益的曲線,中間都會有一根往下非常大的回撤,此時為線圖下降時的加碼狀態,虧損時也會加倍放大,這就是馬丁策略的風險所在,一2持續虧損並加碼直至見底,則會宣告破產,風險控制一直都是馬丁策略使用者一直在改善的部分!

若讀者有興趣製作更多交易策略,可以前往我們的官方網站,裡面有提供更多財務、交易等財金資料,來幫助您製作更好的選股策略!

本文僅供參考之用,並不構成要約、招攬或邀請、誘使、任何不論種類或形式之申述或訂立任何建議及推薦,讀者務請運用個人獨立思考能力,自行作出投資決定,如因相關建議招致損失,概與作者無涉。

完整程式碼

延伸閱讀

相關連結

返回總覽頁
Procesing