马丁格尔策略

马丁格尔策略
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持续亏损并加码直至见底,则会宣告破产,风险控制一直都是马丁策略使用者一直在改善的部分!

若读者有兴趣制作更多交易策略,可以前往我们的官方网站,里面有提供更多财务、交易等财金资料,来帮助您制作更好的选股策略!

本文仅供参考之用,并不构成要约、招揽或邀请、诱使、任何不论种类或形式之申述或订立任何建议及推荐,读者务请运用个人独立思考能力,自行作出投资决定,如因相关建议招致损失,概与作者无涉。

完整程式码

延伸阅读

相关连结

返回总览页