Professional Documents
Culture Documents
外匯套利ii:套利實戰策略與風險掌控 作者:楊宗桓 出版日期:201604
外匯套利ii:套利實戰策略與風險掌控 作者:楊宗桓 出版日期:201604
面m·l
1'[
本書附有附件,
讀者可在服務台 ......'I.,
囉
:'
借用 。
This book comes
with accompanying '—
material(s), which 百 1苜此只科E
·一
.s ?
'
:'· `
矗
',
.
「
•• . .. -· ·-
.-
...
563.23
_- ',',J
···
"
^
U- ` `
.. 1_ i
e香'3
三
..
I
f
c
【···可
,
4634
轡脷叩
l,
港山山川一
L
#、
書
館
Z,[
c
u u
丶
1, ·
_
""
..
'3茄.
詐騙集團吸金的運作模式!
.d'
=
. 8 88
」
8
坩
--
寰宇債劵鼴幣 388
外匯套利 II
套利實戰策略與風險掌控
楊 宗 桓著
附唯讀記镱光碟寸寸 :
述三3.2
寰宇出版股份有限公司
388882s3 1 08124 IN
一一一
推薦序 05
自序 06
口 建立正確外匯交易市場觀悆 ',
1-1 正確之外匯知識 20
1-2 透過外匯名義行使詐騙之各類手法 36
1-4 外匯市場的整體產業人員之利益結構詳細剖析 74
. . 外匯交易平台工具再說明 79
`套息交易策略 99
馬 T格爾策略及變異馬丁格爾策略 123
`反馬丁格爾策略 277
`連動交易策略 297
`三角套利策略 333
疇曰全球資金流交易策略 361
電結論 3%9
401
附圖資料來源說明
推薦序
暢宗桓先生是我十分敬重的實戰型外匯投資理財專家,畢業淤電機工
程博士,多年來著力淤外匯程式化交易硏究 , 獨有一套自己的交易風格。
暢博士偏好淤各類套利理論及方法學,以低風險及低獲利的交易模式 ,
創造長期穩定的正赧酬。
近年來,楊博士為廣大的投資者開設了諍多外匯教學課程,努力不悔
她向投資者傳遞正確的交易方式、投資理念及心態。
除了一般的外匯碁礎課程的培訓 , 暢博士也透過自己的著作、授課丶
演講及部落格等方式,不斷的專注淤推廣外匯程式交易,希望提升國內交
推蘆序
易者的交易水平 , 並且建立一個好的投資環境。
易策略,其中包括 24 小時全自動交易。椅博士五年前的箸作《外匪套利 I 》
深受讀者所喜愛,這次出版《外匯套利 II : 套利實戰策略與風險掌控》以
• 深入淺出的方式呈現,並透過實務經檢的分享引導讀者在最短的時間內進
入外匯交易領域。
本書理論及實務兼具,本人深感榮幸應暢博士之邀作序 , 也相信對淤
鐨硏此領域的投資者有所助益。
Blackwell Global 集困
執行總裁
Michael Chai
_
05
自序
投資者對外匯投資越來越熱咯。壞消息是,比超五年前,外匯詐騙事件依
筆者在第一本書籍出版時已經公開對政府呼籲相關的外匯全融應該要
跟國際同步,因為外匯全融在國際上已經是一個很成熟的「全融產業」,
五年過去了,台灣投資者都進步了,但立法院及政府機構看來逗是原地踏
步。不過台灣人很聰明,自己會想辦法透過各類管道獲取自己想要的資訊,
可惜的是,整個龐大的外匯全融產業的手續費幾乎都被境外的外匯經纪商
賺走,而台灣法規不健全的下場就是「外匯詐騙事件」更多。例如利用「保
譖固定報酬」的宣傳廣告做吸全的行為,因為法規不健全,加上資訊不透
明,行騙者喜歡利用「外匯交易」名義行使詐騙的手段。類似新聞事件裡
的「島勝全融集團吸全」、「 Power 8 吸全」、「外匯青年軍」等等打箸外
匯名義卻行使非法的全融犯罪新聞一直沒有中斷過。這真的是令人惑到遺
憾的事實。所以,對淤外匯投資新手而言,一定要遠離利用廣告行銷口號
來吸引投入資全的團體,尤其是打著「保讒固定赧酬」的商品,幾乎可以
晰言這些團體清一色都是吸全詐騙人員。
-I
《菜根譚》捏的一句名言:「大惡多從柔處伏,哲士須防綿裡針。深
仇當自愛中來,達人宜遠刀頭蜜。」
外匯金融是高度風險的投資,不是遊戲
在外匯市場禋,報酬是「波動」的才是合理的,而「保證固定赧酬」
這個言詞根本就「不存在」淤外匯市場。我們做任何投資,要關注的應該
是「合理」兩個字。「合理」的赧酬,「合理」的風險,與「合理」的利
益分配架構等等之邏輯推論。
事實上,許多讓投資者捅不欲生的詐騙手法,主因還是在淤投資者本
身對淤該項「全融商品」的架構及有經過「合理」分析,只看到了「利益」、
以及誘使你入甕的假造「漥明文件」、與行銷人員三吋不瀾之舌的「保讚」。
自序
「合理」的分析為何重要呢?因為只要經過「理性合理」的分析,那些「偏
離事實」或「可達成性」幾乎等淤零的投資两品,強烈建議可以直接放棄,
因為可能有鬼。
_
07
外匯生意在世界上都是合法的交易生意 , 只不過每個國家的開放幅度
不同而定義上有差距,但再怎麼說,做生意還是要老老實實,更不能利用
資訊不對稱做出傷害投資者的行為。賺錢真的不能建立在讓客戶冒風險 ,
客戶賠光後再找另一批客戶這種 心 態。外匯金融是高度風險的投資, 它 不
是遊戲 !
投資者在進入外匯市場之前 , 先要有正確的外匯市場觀念。外匯零售
陽產其實是大有 人在。
,u 之下瞬間突然赧價叟成 22 : I 的兑換匯率。請看以下三個圄示。
08
USDCHF- 美金瑞郎
,..,'".~
u
7 1,--- 一·
n,lt,..,,,,J',,._/11"1,,ui'
,.,. ,,,
「|
I' 11
,,」 I \;-•'\ i11''\.i-11,.,
1,,.\ r'\_/ r• '\• 1) 戸
.,_,,「.,., 11•·~1,.-,t •,I' ,'I「,,
,........,lh r'l4,.,,.,.,
,,,.....,.•...1
I
丨r1,1
自序
EURCHF- 歐元瑞郎
' '
I
, .'·'`
'' h ` · ' ',~`~ ', '' `, ', ,'''' '. ,·, '', .' . ,.
L
'.I J . `.~, ' I i
I r
_
09
GBPCHF- 英鎊瑞郎
-
''
1
t' . ', I
|
乩
囍
, ,
·
」
____- nn ' "' !
, ' '
j , 1.· r 1L
;
.I
!
1,'
. .
!
~
小
損 。 除了放空瑞耶的策略之外,尤其當時如果有使用連動 「 EURUSD
來度過難開 。 幾乎所有世界的大型銀行,包含花旗銀行、德意志銀行、摩
根銀行等等都虧損數以億計美金,更有許多外區對沖基全在事件發生的同
一天即宣告破產 。 那誆在此事件當中得利呢?當然忒是瑞士央 行。
騰 。 枉費了意懸懸半世心,好一似蕩悠悠三更夢 。 忽喇喇似大廈傾,昏慘
慘似燈將盡 。 呀!一場歡喜忽悲辛 。 歎人世,終難定! 」
「 機 關算 盡太聰明,反 算 了
這真的就是外匯市場的寫照。
外匯市場絕非廣告所標榜的最快致富的途徑
在外匯市場裹待久了,當然也就看過非常多次的巨幅震盪,也就是說
市場上的大風大浪筆者差不多都經歷過了。筆者多位外國朋友們玩了七丶
八年、甚至十年以上的外匯還是依然沒賺到錢,其實個人分析的結果就是
一個字:「貪」。
在外匯市場捏,「不能貪」,這三個字稱之為「三字真言」。也不能
自序
把它當成賭博似的,押大押小胡亂交易一通,那再多的錢都不夠賠。同時,
即使是使用碁本面分析或技術分析其實仍有其極限,常當容易賺個七八次,
但只要一次虧損就把以前的獲利全吐回去。不管是基礎分析也好,技術分
析也罷,只要「交易紀律」及「風險控管」及有做好,一眨眼時間帳戶就
會歸零。某位從事外匯交易投資的友人也因為「貪念」使得原本賺錢的帳
戶旻成鈕額虧損。這位朋友因為「貪念」把自己的資產全部虧光,目前過
署打零工躲債的生活。所以想學外匯的朋友,第一要克服的其寶就是「貪
• 念」,再來才是想辦法没計-個可以「長期穩定獲利」的交易模式。外匯
市場的風險是非當而的,不管是初學者或者是正想要進入這個市場的投資
者,一定要;忍清一個事實,外匯市場絕非廣告所標榜的最快致富的途徑!
相反的,假如你封外匯市場不甚了解,或者以睹徒心態入市,外匯市場其
實是「最快令你破產的途徑」。在外匯交易市場有一定時間經臉的投資者
應該是更能體會「富貴無常」這個詞。
《大乘戒經》:水沫無實,不可損序。富貴無帝,不可久住。
色相如花,須臾變異。
壽如熟果,不可久停,如急流渡船,如朽屋暫住。
11
所以,筆者當俞一直在強調,要致富必須有一套「長期穩定獲利」的
計畫或方法,而不是貪求短期的暴利。時間是無價的,時間所產生的砹利
效果更是「蕪價中的無價」!而想深入學習外匯市場的知識是一場長期作
戰,對淤「專業外匯交易者」而言,「外匯市場」就是一場水無止盡的學習。
封淤想老年時「富而幸福」的所有投資者而言,一個「長期穩定獲利」的「策
咯」及「方法」比你的任何技能可能都還要來的重要。以前,筆者也是跟
很多人一樣,喜歡看個幾篇報導或電視財經名嘴或聳動的理財廣告就跑去
買某個「綦全」或「股票」,、結果當蕾是一段時間過去了,沒賺到錢反倒
哈銀行賺了不少錢。講白一點,其實就是拿錢給碁全經理人及上市公司老
闆去吃香喝辣。現在筆者才比較清楚,其實這都是投介的大忌。現在筆者
比較懂得若要「致富」一定要有一個可以「被實行的計畫」。同時這個計
畫也絕不能架構在「不確定性的風險」之上,有時只要一個「不殯定性的
風險」就能讓你長時問辛苦累積的錢瞬間付諸流水。
的 20 萬元來操作外匯投資,想辦法使每月的獲利達到基本的生活所需。其
他的 80% 資產的 80 萬元都用淤比較安全且較低風險投資。例如,「本國
幣及外國幣定存」、「黃金存摺」、「月配息債券」、「高股息或藍籌股
ETF 」、「住家/商用不動產」等。讓這 20% 的外匯收入僅僅只是你創造「現
,,, 複利的效果比原子彈還驚人
從幾年前開始,「富爸爸、窮爸爸」系列的書籍風靡世界,我跟多數投
資者一樣也拜讀過他的幾本書,內容其實還算不錯,只不過後續出的書一直
重就梠同的理念,有點在「騙讀者花錢買書」的感覺,同時,他談的都是「概
念性」的致富方法與理財觀念,但若要實際上運用,似乎一直找不到着力點。
所以,我也推薦另一本知名理財作家博多· 雪佛 ( Bodo Schafer) 的書,我很
認同在他的書中所提到的「三個水桶理論~、經濟安全、經濟自
由」。我的心得很簡單,利用「富爸爸、窮爸爸」的「概念」,盡力去找「現
全流資產」的「工具」,然後實行「博多雪佛」的「方法」,來實現財務自
由的人生,我相信每個人都可以達到。也就是說,先從「概念上認知」,然
後去尋找「可實行的工具」,透過「操作的方法」,達到自己心中想要的目的。
愛因斯坦曾說,二十世紀最偉大的發明是「誤利」而非他的「相對論」。
自序
的公式相信大家都有算過:
但前提是「每月都必須獲利」。巴菲特成為世界首富,他的操作也只
是「年」報酬 20~30% 的穩定獲利而已,但簡單的原則卻不是每個人都做
得到!絕大部分的投資者都是隨波逐流,看到利多消息就投進去,看到利
空就設出,這其實都是因為沒有自己的計畫,也不清楚到底如何才是真正
能讓自己致富的「關鍵」,所以社會上才會變成中產階级及窮人佔最大比
例的原因。
當聽人說,高獲利意味署高風險,其實就如同「富爸爸」系列作者所
言,「高投利不一定是高風險,沒有知識才是高風險」 ,個人非當贊同!
在外匯市場,低風險也可以是高獲利,就看投資者是否真的懂而已。想利
用外匯賺取金錢並成為富翁,不是很簡單,但也不是難如登天。在外匯裹
90% 的人是虧錢的, 5% 的人不賺不賠,只有 5% 的人賺錢 。所以 ,要賺錢
_
13
決不能人云亦云,還沒有搞清楚策略或擬可獲利的方法就進場,這樣通噹
失敗的機率很高。
多少利潤並不是什麼是重要的,因為獲利就是獲利
外匯市場真是個充芮誘惑的 J也方,要想賺錢就如同「在毒蛇口中取
珠」。所以,「低風險策略且穩定的長期獲利模式」才是真正能在外匯市
場立足的王道。以下是在某外匯論壇 (Forex Forum) 看到的句子,寫的真
好:
To make money as an investor the first thing you need to know is how to
survive. ….. The goal of a successful trader is to gain the ab山ty to survive
any market condition yet still MAKE PROFIT even if the profit is minimal.
How much profit is not what is important because a profit is a profit.
為了成為一個成功的投背者,首先你需要知道的是如何在市場上生存
下來。…..其目標是,一個成功的交易者,是可以在沒有任何市場條件
下,仍然可以獲利而生存下去,即使利潤微乎其微。多少利潤並不是
什麼是重要的,因為獲利就是獲利。
以前閱讀過許多財經名人以及世界上事業財富都很成功的人的傳記以
及相闕書籍。這些書籍的殯對自己在財經上的知識有很大的幫助。然而,
-· 回顧自己,自從專心從事「外匯自動交易」以來的種種過程,歷經了詐咋
多多的挫折,現在回想起來,事實上,要成功且擁有財富,只有一句至理
名言,但我以前卻是一直把這句活當「廢話」而不去深思它所真正內涵以
及其所深刻步及的思維架構,從這個思维架構裡而叟成操作的規則。
記得好久以前,讀過巴菲特的書,內容洋洋灑灑,但並沒那麼重要,
因為都只是在速說,巴菲特之所以成為巴菲特的「過程」。裡面有句;;舌,
我至今一直都沒忘記,但在實務操作上,卻一直及放在心上,也就是說,
我一直把它當成「廢活」看待。有人問巴菲特 : 「為何您投資如此成功,
最重要的核心訣竅是什麼?」巴菲特慎重的回答:「不要虧損」。
是的,就是這四個字,「不要虧損」。的殯像廢話。
尤其在還及歷經這些年來辛苦經營且好好壞壞的經營過程,我一直沒
自序
有屎刻認識到一個世界首富的「誠實之言」。直到猛然醒悟,所有的投資
或投機,尤其是高度槓惑的外匯投資,核心的價值與規則,就是這四個字:
「不要虧損」。
「套利」才是王道
因此本書才會強調說,我們希望利用理論或特殊的策略技巧在外匯交
易市場上來執行「套利」,而非「暴利」或「預測」取向的投資思維。
如果你已經準備好要進入外匯市場,我強烈建氓讀者幾個資產財務控
管原則:
15
1. 不能過度使用借貸投入外匯市場,尤其是使用「個人信貸」、「信
用卡貸款」、「地下錢莊貸款」等等高息貸款,這些支出會嚴重影
零個人操作判斷以及吃掉原本該有的利潤。
3. 不要輕信美麗包裝下的廣告術語。也就是不要一下子就相信外匯老
手所告訴你的一切(包含對筆者也一樣,筆者建;;義你也不要一下子
就太相信筆者,因為筆者也會犯錯),多下功夫去閱讀文章做功課,
以免自己被欺騙都不知道。
以上的這三點原則如果讀者都可以連守,筆者相信讀者在外匯市場存
活下來,甚至賺到生活所需的現全流財富的機率,會比大部分盲目跟從的
投資者高很多。
本書延續上-本《外匯套利 I 》的主要內容,但更為深入且提供更多
實務上的操作說明。本書內容的固襠依然有大部分是藉由 MetaTrader 4 這
套軟體的圖檔來做直接的截圄說明,但此書所使用的是新版本 MT4 Build
600十以上版本。因此筆者由衷感謝 MetaQuotes 公司可以免費提供軟體供
交易者使用以及下載。另外也感謝啁路上的免費外匯論壇提供大量可供參
考的外匯資訊以及參考囹示得以讓本書的內容更為豐富生動。
祈請有緣眾生財如雨下
.日 最後,身為-個程式開發者以及虔誠佛教徒身分,筆者願為所有讀者
跟客戶祈福,誠墊祈望讀者、客戶們在讀了此本書籍之後,都可以財如雨
下,源源不絕。
雨寶陀羅尼經云。「培有善男子。書寫受持。受諸快樂。安穩豐饒。」
聖持世陀鼉尼經云。「芸有人素食梵行。斷食酒肉。日夜恆誦。獲大富實。
又云。蒞人誦持。應先凈心誦八百遍。此陀羅尼。日三時誦。所願必應。
菩蔭加佑。」
佛教的求財咒語《佛說雨寶陀羅尼心咒》:「嗡 . 乏蘇 · 達咧 · 司
乏哈。」
祈願所有的讀者、客戶們投資外匯都可以獲利並日日財如雨下。
自序
17
建立正確外匯交
易市場觀悆
I can calculate the motions of heavenly bodies, but not the madness ofpeople.
我能計算出天體運行的軌跡,卻難以預測人們的瘋狂 。
牛頓
- -<1;~•
示
. ,
蕈」
..
正確之外匯知識
進入外匯市場前的正確態度跟觀悆
敗名裂,走向自我毀威之境 。
前 一 本書籍,《外匯套利 I 》已經利用相當大的篇幅在介紹有
關於外匯市場的基礎知識,這裡反而是要希望建立讀者們在進入外
匯市場之前所該要有的正確觀念 。 正確的外匯觀念沒有那麼艱深困
難,當然更不是吸金詐騙集團行銷的無風險保證獲利的配息商品 。
性之金融衍生性商品。因為市場的波動,所以交易者利用市場波動
所下的多空部位會產生獲利或虧損,因此,在真正的外匯交易市場
裡,不會有「保證固定獲利」這種事情會發生,即使使用的是「套
利理論」,市場的波動當然也可能對績效產生影響,因此不會有「每
月固定配息」的效果出現 。
所有利用外匯名義,對外 宣 稱固定配息來招攬客戶的金融商品
-
幾乎清 一 色全部都是吸金詐騙人員想出來的花樣 。 我們投資者在面
對任何的金融商品時,都要以「合理」的心態面對,要有合理的報
酬,有合理的風險,更應該要有合理的邏輯推論 。
外匯市場跟投資者所熟悉的期貨市場其實都是保證金市場
商提供的槓桿倍率。
3. 外匯市場對於散戶投資者來說,只能透過外匯經紀商下單,
而每 一 家外匯經紀商在同 一 個時間的外匯報價不盡相同。
所以國際貨幣匯率報價有些微差異。
4. 因為外匯市場的高度波動,所以沒有「追繳保證金」這項
正確之外匯知識
規定,當保證率不足,帳戶會直接被斷頭。投資外匯因而
光,就只是帳戶內那些錢虧光,外匯經紀商不會強制要求
投資者再補充繳納保證金。但投資者在虧光帳戶之後再入
金的確是非常受外匯經紀商歡迎的。
5. 外匯市場並非期貨,它是現貨市場。所以不會有像期貨有
到期換約的問題。
6 外匯市場的市場交易量非常龐大,每日國際市場的交易量
高達 6 兆美金以上。以目前來說,除了美國聯準會,幾乎
但是因為外匯市場的高度風險、高度槓桿、眾多龍蛇混雜、詐
等 一層 一層的利益結構,每 一層幾乎心裡只想著如何從「最下 一 層」
_
21
的客戶 (Client) 口袋裡撈錢到自己口袋。這種畸形的心態,以至
於到最後,投資者幾乎都成了投資受害者。在第一本書籍裡就曾一
直強調,一個正確的外匯知識、概念跟投資心態是非常重要的。尤
其是對想進入市場的外匯新手而言,在進入外匯市場之前,先別只
想到如何賺錢,而是先要有完整且正確的外匯知識。這比一切都重
要!!!
交易前的準備工作
因為只要你沒有完整且正確的外匯知識,很容易被欺騙,滿坑
滿谷的外匯詐騙,過去曾經發生,現在正在發生,未來還是一樣不
斷的會繼續發生。原因很簡單,就是投資者的無知與貪婪。剛進入
市場的投資者一般來說對市場了解都不深,認為外匯市場是一個有
賺錢機會的場所,所以連基礎知識都不具備就想進入外匯市場,且
邊溜走。其實,投資者做好交易前的準備比急匆匆地交易更加重要。
沒有充分準備的交易往往只能帶來災難性的後果。做交易也同樣如
此。筆者認為,交易前的準備工作至少應包括以下幾個方面:
基本準備以及學習曲線
基本外匯市場知識的準備是個初步認識和了解外匯市場的過
程,也是進行交易所必不可少的過程,它包括:
1. 學習基本交易理論。
2. 了解常用的平台以及技術工具。
.. 3. 熟悉交易貨幣符號及特性。
4. 掌握市場交易的交易規則。
5. 了解你的外匯經紀商 。
6. 熟悉開戶、交易流程等。
這是一個學習過程,任何人都可以通過一段時間的學習來掌握 ;
既可以通過看書來掌握,也可以通過培訓班來掌握。在這個過程中,
投資者應特別注意的是:不要認為書上的理論和方法完全可以在實
際交易中發揮理想作用,真正的交易遠比書本上寫的更加複雜,不
能以為學完之後就認為財富等著你去「賺取」而迫切地開始交易。
很多人認為學習交易就是看幾本書或者跟一位老師學習幾天就
可以學到交易的秘訣,從而可以賺到很多的錢,這個想法是完全的
錯誤。學習完基本知識只是對市場有了一個基本的初步的認識而已,
正確之外匯知識
但離有效的交易還差得很遠。譬如說,一個馬拉松選手看了很多有
關馬拉松的經典書籍,也找了很好的教練,假若他並不努力地去練
習 ,那麼,也無法成為優秀的馬拉松運動員 。
書本和老師只能告訴我們學習方法 ,但是我們必須要體驗其中
的過程。如果僅僅是通過幾天的學習,就可以達到長期穩定的獲利,
那麼交易也就不會是一個非常具有誘惑力行業。初學者在最初的學
習熟悉階段期間,不要心急,且一定要注意保護自己的原始資本。
因為在這最初的學習熟悉期間,交易者一定會遇到重大的挫折,但
這些挫折並不可怕,因為挫折是投資者最寶貴的經驗。投資者在外
匯市場中活的時間越長,越可能積累非常多的財富。開始交易的幾
年,是我們學習的時間,而學習的過程是一條曲線,它不會是一條
直線。
_
23
模擬交易
進入外匯市場,進行模擬交易是非常重要的。因為這是投資者
在真正進入市場前需要自我練習的重點。模擬交易可說是對投資者
所學習交易知識的一個驗證。也就是說,在投入真實的資金以前,
交易者不僅僅要建立自己的交易模型,也要開始模擬交易。在投資
者不具備交易能力之前,就進場去實單交易 一定會付出慘痛的代價。
所以,多做幾次模擬交易可以減少和緩衝這個痛苦過程。嚴格來講, •
模擬交易是紙上談兵,也可以叫做實習階段,它不可能帶來如同真
實交易般那種刻骨銘心的體會和威覺。
我們常常會聽到外匯投資者的說詞是,很多投資者模擬交易都
獲利,但一進入實單交易就虧損。這包含很多原因,尤其是外匯市
場裡影響損益的除了交易之外,還包含經紀商的問題,但我們至少
在正常的模擬交易當中必須是獲利的。因為投資者必須做的是真實
的模擬交易 : 必須要有真實記錄自己的模擬交易過程,以及驗證自
己的交易理論和紀律。
其實,真正嚴格紀律的模擬交易並不像我們聽說的那樣都賺錢,
只是因為很多人把虧損忘記了或因為對虧損沒戚覺而沒當回事,但
卻把利潤牢牢記在心裡,所以才會給人一種錯覺:模擬交易都賺錢!
投資者所要注意的是,模擬交易的本質是要驗證你所學的知識,而
非模擬單上的利潤。
所以正確的態度必須是以模擬交易當作真實的帳戶來看 必
須當成真正的資金而一絲不苟地進行交易,這樣才會讓投資者在未
來的真實交易中少交學費。很多人開立新的模擬帳戶,都是當作一
.. 種遊戲,能做好就作,做不好重新再開一個新的帳戶,這是 一 種對
自己不負責任的態度。
每當我們學習 一 種新的交易方法,都應該認真學習且誠實面對
這種新的交易方法來進行模擬交易,以體會這種新的交易方法的優
點和缺點。很多交易者學了 一 種新的交易方法以後,開始進行模擬
學習新的交易方法 。 這對增加交易功力沒有太大幫助,反而造成投
資抉擇上的錯亂。改正的態度應該是,把學到的策略放在所對應的
市況上,例如碰到震盪市場必須使用 A 策略、碰到趨勢市場必須改
用 B 策略等等。
實單帳戶的小單量交易
實單帳戶的小單量交易是對模擬交易學習之後的進 一 步考驗。
在這個階段,即使獲利,仍然處於學習階段。實單帳戶的小單量交
易可以減少虧損給你帶來的對市場的恐懼戚,投資者可以最真實地
正確之外匯知識
體驗到外匯市場中發生的各種始料不及的情況,以及這種情況給你
帶來的傷害或意外的驚喜,真實地體會交易的各個環節及可能的交
易障礙,全面了解真實的交易過程,這也是對投資者所學的知識的
真正考驗 。 在這個過程當中,投資者才會切實戚悟到交易理論和技
術工具在交易中的作用究竟如何,以及正確率,這是進行真正交易
前的實際驗證作業 。
通過實單帳戶的小單量交易,交易者 一 定會再次從新認識自我
和實際的外匯市場,這種從新認識是 一 個重要的過程。因為在外匯
市場裡,除了市場因素之外,外匯經紀商因素也是造成交易者盈虧
的因素之 一 ,所以,利用實單帳戶除了可以檢驗己的交易理論是否
正確之外,也可以觀察自己所開戶的外匯經紀商是否是正直且不坑
應該繼續交易 。
_
25
投資者一定會戚覺到外匯市場不像自己最初所認識的那樣,外
匯市場遠比自己最初認識的還要複雜得多。這時,投資者才會真切
地戚受到自己的風險承受能力和市場可能帶來的傷害以及你現實的
利潤目標和市場機會。而到了這個時候,你才可能面對現實,對市
場做出客觀的評判,而不至於掉入暴利的虛幻陷阱中。
交易紀律
外匯市場中沒有專家,只有輸家跟贏家;也沒有老師,如果有
老師,這個老師就是市場本身。沒有人敢說自己是真正的老師,因
為沒有人敢說自己保證能夠在外匯市場中長期穩定獲利。
在高度槓桿的外匯交易中,很重要的一項能力就是自律;因為
不能夠讓你獲利。而一般初學者,如果沒有養成一種良好的自律習
慣,將會給自己在未來的交易中帶來種種困難。所以,剛剛進入外
匯交易這個領域裡,一定要養成非常良好的交易習慣,這種良好的
交易習慣,要在一種交易紀律的情況下來培養。
對於真正的外匯市場不甚理解的人會認為外匯交易的行業是一
個暴利行業,他們認為輕輕鬆鬆地就可以獲得大利 這最大可能的
緣由都是來自於整個外匯市場行銷人員為了獲取自己的佣金,在拉
客戶投資時所散播的超級大謊言,以及部分外匯經紀商的行銷廣告。
喜歡重倉操作的交易者或代操人員在外匯市場的存活時間都不
長,因為下重倉如果發生虧損,將會給帳戶帶來非常大的損失;而
這種損失的也會給心理造成非常大的壓力。實際上,外匯交易和其
在筆者的第一本書籍,《外匯套利 I 》裡,對於外匯交易的風
險已有略作說明,此篇是對於外匯初學者再次的做說明。
外匯市場是全球最大的金融市場,涵蓋的交易品種包括現貨外
匯交易(又稱即期外匯交易)、遠期外匯交易、掉期外匯交易、外
外匯衍生性金融商品交易。而外匯交易主要採用兩種方式:
1. 交易所方式:這種方式有固定的交易場所,如德國、法國、荷
蘭等國的外匯交易所,以及進行外匯期貨交易的芝加哥商品交
易所;這些交易所有固定的營業時間和營業場所。
正確之外匯知識
2. OTC 方式:這種方式是 24 小時運轉,沒有具體的交易場所,
交易雙方靠電話或網路等通訊設備達成交易。以現在的科技而
言,已經再也沒有靠電話達成交易的模式了,幾乎全部都是透
式 --它不同於傳統意義上的市場,並不具有一個中心交易場
所。這種沒有統一場地的外匯交易市場被稱之為「有市無場」。
易帳戶,就是在這種既沒有中央清算系統的監督,也沒有政府
的管制下完成清算和轉移的。
電子交易的興起
早期的外匯交易主要通過電傳、電報和電話等通訊方式來實現;
隨著電腦技術和網路技術的發展,電子交易開始興起,並引發了外
匯交易機制和外匯交易技術的變革。
_
27
2003 年之後, MetaQuota 公司正式推出 Meta Trader 交易平台,
自此,外匯交易透過電腦網路平台下單開始蓬勃發展。過去只對銀
行間交易者開放的實時報價現在通過網路垂手可得,外匯定價變得
更加透明,資訊的傳達更有效率。同時,電子交易也改變了外匯市
場的特性和交易者行為,資訊的光速傳輸使得羊群效應在國際範圍
內瞬間傳遞,加劇了外匯市場的波動。
電子交易主要有兩種模式,一種是服務於機構客戶的 ECN
平常接觸到的外匯保證金經紀商通常採用後一種交易方式。
銀行和機構投資者的 ECN
易而只收取交易佣金,所以他們會盡可能提供給客戶更好的服務。
隨著網路尖端技術的發展,服務於小型銀行、大型投資機構、
球第 一 個中心結算的外匯市場;通過中心結算,將降低交易的信用
門檻和非市場風險,使得更多的中小投資者也能參與其中。
- \
外匯保證金交易的模式:詢價、單一造市商
雖然 ECN 模式較為公平透明,但是這些「真正的」外匯市場
門檻較高,通常只向大交易量和高資產凈值的金融機構開放,所以
個人投資者主要透過外匯保證金或以外匯實際貨幣進行外匯現貨交
易。
由於外匯現貨交易有點差高、單向交易、無槓桿比率等缺點,
有經驗的外匯投資者通常會選擇外匯保證金交易。外匯保證金交易
通常是採用詢價和單一造市商模式。個人投資者面對單一的經紀商
(在台灣通常稱為券商)進行詢價和交易,報價的公正性依賴於經
正確之外匯知識
的交易者進行交易)。客戶所看到的市場報價價格可能並非是市場
的真實價格,並且交易的執行價格由外匯經紀商決定,所以成交價
格常常有利於經紀商。
客戶的單子進入造市商的系統後,首先進行多頭頭寸(也稱為
多頭部位)和空頭頭寸(也稱為空頭部位)之間的內部對沖,然後
分對沖或者乾脆不對沖,這就屬於對賭的範疇。
但是該公司願意承擔了這部分頭寸的市場波動風險,並沒有把這 200
_
29
和客戶「對賭」。在歐美國家的相關法律法規中並沒有硬性規定如
何管控對沖風險,這完全取決於交易商自己的風險控制策略。
如果客戶的單子能及時完全對沖掉,那麼造市商幾乎不用承擔
額外的市場風險,獲得的收益比較穩定。但是現實中造市商一般或
多或少的會進行對賭,這加大了其本身的風險。
這種對沖/對賭模式的存在,意味著在某些特定時段(比如美 .
國重大數據公佈的時候,或者市場價格劇烈波動的時候),你可能
經常性的無法連接到經紀商的交易系統上進行有效迅速的交易,因
為此時經紀商很難在有限成本區間內及時地把市場風險轉嫁出去,
所以乾脆限制客戶下單,或者採用一些其他的方式,這個部分的細
識概述〉。
高風險的 OTC 市場
點對點的交易方式,並且沒有統 一 的清算機構來支援和監管這種交
易於被經紀商所操縱。
由於 OTC 市場本身的運作特點和各國金融法規的進步或落後程
度不同,決定了其受到的監管相當有限;比如內線交易在證券交易
訊等內線消息為自己謀取交易利益並不被視為違法,例如在序文裡
提到的瑞郎暴漲事件裡,世界上所有受到損失的投資人及銀行皆無
.. 法對瑞士央行提出違法訴訟。
缺乏監管的外匯保證金交易
以美國為例,美國對外匯保證金經紀商並沒有真正形成有效的
監管。美國期貨市場監管機構美國商品期貨交易委員會 (Commodity
也賦予了它監管市場仲介機構的權利,如期貨佣金經紀商 (Futures
正確之外匯知識
來在商品交易所交割。 CFTCA 賦予了 CFTC 對期貨合約的專屬管轄
權,但是有關外匯合約的監管沒有給出明確的界定。由於日新月異
對 OTC 外匯衍生品的管轄權只是被限定在期貨和期權產品上,遠期
從以上可以看出,即使美國的金融法律針對期貨業的監管而有
效設立監管,但實際上仍然並未考慮到對外匯現貨交易的監管,因
到有效的保護。
_
31
外匯保證金交易的潛在風險
1. 資金安全
算機構的擔保,客戶用於買賣外匯和約的入金不受任何監管機構保
護,且在破產時不被優先考慮;即便客戶的資金由經紀商存放在擁
有 FDIC 保險的銀行帳戶中,在經紀商破產的情況下客戶的資金也 •
得不到保護。 l
戶」都算不上。根據美國破產法的規定,股票客戶或商品客戶擁有
清算理賠的優先權,所以當經紀商破產時他們保全全部資金的可能
性相當高。但是,由於外匯現貨既不屬於股票也不屬於商品,所以
外匯現貨客戶既不是股票客戶也不是商品客戶。
匯投資者無法在破產清算中享有「客戶」待遇,只能以無擔保債權
人的資格進入破產清算程式 , 這將可能導致血本無歸。
2. 市場風險
外匯市場是 24 小時運轉且沒有漲跌幅限制,波動劇烈的時候在
一 天之內就有可能走完平時幾個月才能達到的波動幅度。外匯的走
勢受眾多因素影響,沒有人能確切地判斷匯率的走勢。在持有部位
全賠光的損失。
3. 高槓桿風險
每種投資都包含風險,但由於外匯保證金交易採用了高資金槓
桿模式,放大了損失的額度。尤其是在使用高槓桿的情況下,即便
出現與你的部位相反的很小變動,都會帶來巨大的損失,甚至包括
所有的開戶資金。所以,用於這種投機性外匯交易的資金必須是風
險性資金;也就是說,這些資金即便全部損失也不會對你的生活和
財務造成明顯影響。
4. 網路交易風險
外匯保證金交易目前主要是通過國際互聯網進行交易。由於互
聯網本身的特性,所以可能出現無法連接到經紀商交易系統的的現
正確之外匯知識
象,在這種情況下,客戶可能無法下單,或無法停損現有的部位,
這將導致無法預料的虧損的出現。經紀商對此是免責的,甚至經紀
商的交易系統出現當機他們也不會承擔責任。
5. 外匯經紀商本身的道德風險
1-4 的相關說明。
經濟新聞對外匯市場波動之影響
在影響外匯市場波動的經濟新聞中,以美國政府公佈的關於每
月或每季度美國經濟統計數據的作用最大,同時,美國聯準會所公
布的升息或降息的訊息也會反映在外匯市場的波動,其主要原因是
美元是外匯市場交易的最重要的貨幣。從經濟統計數據的內容來看,
_
33
按作用大小排列可分為利率變化、就業人數的增減、國民生產總值、
工業生產、對外貿易、通貨膨脹情況等。
這種排列並不是絕對的,例如,美國對外貿易的每季度統計數
曾是最重要的影響美元走勢的數據之一。每當美國經濟數字公佈前
幾天,外匯市場就會出現種種猜測和預測,尤其是非農數據最容易
引起外匯市場的劇烈波動。以下是幾項外匯投資者不得不注意的經
濟數據:
利率政策
在各種經濟數據中,各國關於利率的調整以及政府的貨幣政策
動向無疑是最重要的。對外匯匯率和利率的相互關係,本文不做詳
細介紹,但這裡要強調的是,有時政府雖然沒有任何表示要改變貨
幣政策,但只要市場有這種期待,或者說其他國家都採取了類似的
行動,那麼,外匯市場會繼續存在這 一 政府會改變政策的期待,使
這一國家的貨幣匯率出現大幅度波動。
通常各國央行只要宣布升息或降息,該國對美金報價就會產生
波動,如果是出乎市場預期的數字,則波動更大。在利率部分,以
美國聯準會所公告的利率消息對市場的影響最大 。
美國非農就業人口
美國關於非農業人口就業人數的增減數和失業率是近幾年影響
外匯市場短期波動的重要數據。這組數字由美國勞工部在每月的第
一 個星期五公佈。在外匯市場看來,它是美國宏觀經濟的晴雨錶,
.. 數字本身的好壞預示著美國經濟前景的好壞。因此,在這組數字公
佈前的一 、兩天,只要市場上有任何關於這一數字可能不錯的市場
預期時,美元拋售風就會嘎然而止 。 而公布後的數據若超乎預期,
不管是好或壞,市場波動幾乎都會產生劇烈震盪 。
其他經濟數據
其他一些經濟統計數據對外匯市場也有影響,這些數據包括工
業生產、個人收入、國民生產總值、開工率、庫存率、經濟綜合指
標的先行指數、新住房開工率、汽車銷售數等,但它們與非農業就
業人口數相比,對外匯市場的影響要小得多。除了經濟統計數據之
外,其他關於經濟活動的重大新聞也會對外匯市場產生很大的影響。
外匯價格的變動在很大程度上是外匯市場上的投資者對外匯波
動的期待所呈現出的現象反映,換言之,如果人們期待外匯有某一
個長期的均衡價格,那麼,現貨價格的波動就會朝這個價格的方向
移動。而這種期待是主觀性的東西,它必然會受到客觀經濟環境的
影響。因此,在連續幾天沒有關於經濟活動數據分佈的情況下,有
關國家貨幣當局官員的講話、《華爾街日報》關於外匯市場的有影
正確之外匯知識
響力的 一篇文章、某研究機構或大企業關於外匯走勢的研究報告等,
都可能會在某 一 天造成外匯市場的劇烈波動。這種現象對那些身處
外匯市場以外的人來說,似乎很難理解,為什麼一個官員的講話會
觀期待的因素考慮在內,這種現象就不難解釋了。一個官員的講話
中 一 篇關於外匯的重要文章僅僅是提供了某種信號,給人們的合理
預期起了催化劑的作用,最後導致外匯市場的波動。
外匯套利交易的概悆以及基礎思維
套利思維不像是技術分析,只做漲跌預測,其所偏向的思考以
較屬於演算法或利用數學模型執行可行的套利。有關於外匯套利交
易的概念,本書會在稍後的章節裡會提出大約七種各類套利模式來
詳細說明 。
_
35
電
透過外匯名義行使詐騙之各類
手法
保證保本保息,保證騙你
筆者以前寫過許多篇有關「吸金詐騙模式」一貫的伎倆,不論
在本人的部落格、書籍、甚至臉書上都有提及,但是戚覺怎麼好像
還是無法幫到台灣投資者認清詐騙模式的手法,仍有 一 大堆人對各
類詐騙趨之若鶩,不僅趨之若鶩,還自動幫忙好甲道相報自己去拉
欲哭無淚。為何筆者已經寫過、並很仔細的分析過這麼多次了,台
灣投資者還是喜歡見小利而忽視許多根本就完全不合邏輯的潛在風
險呢?其實也有許多客戶曾經問起筆者,獲利能否「保證」?筆者
當然是無能為力,如果筆者能保證,還這麼辛苦每日寫程式幹什麼
呢?自己關起門來自己保證獲利就好了。很奇怪的是,只要筆者說
無法保證獲利,許多外匯投資客戶就會擺出 一 臉嗤之以鼻的樣子嫌
棄筆者的低能。這類客戶,今日有可能都被市場上的那些保證獲利
的團體、個人、操盤手所燙傷吧。
對於「保證獲利」以及「保本保息」這種名詞,筆者真的無能
為力,筆者所能做到的,最多也只能為筆者的客戶盡力獲利而已。
以「保證獲利」「保本保息」」等等類似的口號來行銷金融商品很
- 早就存在於台灣。「你貪他的利息,他要你的本金。」這句話已經
被多少人警告過,這類吸金事件已經不知被檢調抄過多少次,從早
期「宏源百貨」吸金,到幾年前的「濤京」吸金,到近期的馬勝、
Power 8' 等等真的是不勝枚舉,今日還是有眾多人為了小利而不顧
一切往前衝。
歷史的教訓就是學不會?
1980 年代的鴻源百貨吸金案是台灣史上最大型的集團型經濟犯
罪。 1981 年,沈長聲、劉鐵球、於勇明等人以投資公司名義成立鴻
源機構,所執行的就是後金補前金模式的老鼠會,藉由提供誘人的
「高利率」,非法吸集民間資金將近台幣一千億元。結果鴻源機構
在 1990 年突然宣布倒閉,留下十六萬個受騙的投資受害者與新台幣
九百多餘億元負債的殘局,一時間還造成台灣整個金融體系動盪不
安。而接下來的日子裡,台灣不斷出現拷貝鴻源機構吸金詐騙模式
的團體在行使類似的吸金詐騙手段。
透過外匯名義行使詐騙之各類手法
例如, 2004 年的台中濤京案,吳信宏等人從 2004 年 11 起陸續
成立昇宏、強盛等多家公司紺成濤京集團,並從同年 11 月起對外以
「只有濤京,才能幫你完成淘金夢」等口號招攬客戶投資,並以老
鼠會多層次傳銷作法,由公司業務員向社會大眾以「高利率」招攬
資金。
最近比較知名的兩個吸金詐騙案件是馬勝集團吸金以及 Power
8 。
以下是有關馬勝集團吸金的新聞內容。
「巧勝集圉」铇裁張全素等 人佯稱投資外匯,找理財專家廖泰宇、楊
秀娟與鼉冰樂等人鼓吹民眾掏錢投資,大肆吸全之後將錢拿去買豪宅、名
車、名牌包等名蕡物品,極盡豪奢。新北地檢署今年 5 月底破獲後,調查
認定集固非法吸全的現金加上紅利轉投資的全額高達 13 9 億元,今依違反
_
《銀行法》、洗錢等罪嫌超訴鋹金素等 13 人。
37
超訴指出,島勝集困由張金素擔任總裁、妹妹張牡丹擔任帳房,男子
賈翔傑擔任铇裁特助,並找曾合箸《就是要你變有錢》的廖泰宇、暢秀娟,
外宣稱,馬勝金融集團是美國皇家控股公司的關係企業,專營投資全球外
匯、黃全交易等等,在全台各地舉辦說明餐會,再由集團幹部、講師們遊
說參加說明會的民眾掏錢投資。
錢投資。但巧勝集固成員騙到手後,卻拿這些錢大買豪宅、名車、名牌包
等奢侈品,揮全如土。 2
高雄檢調 l 日宣布破獲一個跨國違法吸金世紀詐騙案,高雄冠宙、台
中銳聚、台北允豪等公司步嫌以跨國投資西班牙足球博彩公司、庚門賭場丶
黃金買賣等專案名義,以資產管理名義,引誘被害人投資 3 百萬到 2 千萬
修安、陳柏諺、鄭翔瑪經檢察官訊問後,向高雄地方法院嵒請勗押獲准,
另有 4 名幹部交保。
用「紐利賡賡廳」專案,招攬民眾投資澳門銀河娛樂渡假城睹場業務,磬
球隊的現場比賽,取得主場冠名權為由,用以取信投資人,磬稱入股 150
以上這類利用「後金補前金」的詐騙吸金手法,筆者以前曾經
寫過跟分析過,市場上都知道有所謂的 18 個月吸金法則,就是前 6
個月,吸金集團一定很慷慨每月高額配息,當到了第一個 6 個月之
透過外匯名義行使詐騙之各類手法
後,投資者已經開始漸漸誤信這是真的,然後開始協助吸金公司拉
客戶,拉親友甚至到處好心幫忙推銷。第二個 6 個月就是吸金集團
大肆擴大招攬生意的時候,滾進來的資金會越來越龐大,到了第三
個 6 個月時,吸金集團開始以各種名義來推遲配息,甚至要求行銷
人員去市場吸取更多投資者的資金。就在第三個 6 個月後的某一天,
.吸金集團把所有資金都匯出並準備脫逃時,吸金公司會突然宣布倒
閉,留下爛攤子給貪求客戶佣金的行銷人員,而吸金首腦從此可能
逍遙法外,或改名換姓,或莫名其妙從地球上消失再也找不到該吸
金機構負責人。
_
址 http : //tw.on.cc/tw/bkn/cnt/news/20151001/bkntw-20151001165208705-1001~04011~001.html
39
是商品,還是詐騙?
這類藉由「外匯」名義行使詐騙花樣的手法,過去層出不窮,
現在依然有許多是正在發生的進行式,筆者相信,未來還是會再次
發生,受害者從來就不會少過,因為人類的貪婪跟無知從來就不曾
中斷過。詐騙的源頭很可惡沒錯,但若沒有一大群搖旗吶喊大力推
銷的行銷業務,這類詐騙也不可能讓如此眾多的人進場。通常為了
客戶的佣金,行銷人員才會如此地肆無忌憚。其實,筆者也收過有 .
讀者私下訊息給我要推銷類似吸金的商品,這真的讓人很搖頭嘆息。
貪婪的人永遠見不到蜜糖裡面的毒藥,筆者對於市場上被詐騙集團
騙取資金而血本無歸的投資者深藕遺棫;也對那些拿詐騙集團的佣
金來拉客戶的行銷人員建議,不要再做這種損人不利己的行為。
現在筆者最戚到傷心的是,詐騙團體每每都利用「外匯」這個
商品來行騙,讓原本正正當當交易外匯行為被汙名化甚至妖魔化。
因為有太多太多只想到利益而不顧客戶資金風險的業務員樂於當詐
騙團體下線,因為業務人員(不管是 IB 還是任何角色)只看到佣金
利益,而風險卻都讓客戶去承擔。這類新聞事件我相信未來還是會
再爆發,會再有人被收押,會再有受害者咬牙切齒咒罵。但,投資
者若不貪它那完全不合理的利息收入,又怎會損失本金呢?真正的
外匯是有「交易」的、有買有賣、有獲利有虧損。在有交易的情況
之下,怎會有「保本保息」這種商品呢?打著「保本保息」文宣的
商品 一 定不是外匯,它只是打著「外匯名義」行使「吸金」的行為,
因為只要有正常買賣,如何保證能夠「保本保息」?況且,「保本
....... 保息」這種文宣恐怕已經觸法,且嚴重欺騙投資者。
.. 所以初進入外匯市場的初學者要有正確觀念,在外匯交易這
個市場裡,不存在保本保息、保證獲利這種金融商品。若有人打著
「保本保息、保證獲利」口號,它不是跟外匯交易有關的商品,不
帳戶完全不交易也可領利息
筆 者曾收到某位讀者的詢問,就是有關於在外匯市場上有某家
外匯經紀商提供 一個很特殊的金融服務,就是客戶只要開戶且入金,
這個有入金金額在裡面的實單帳戶可以完全「不必交易」,而且這
經紀商的確有提供種種能夠說服客戶它是「合法且安全」的資訊.
包含各類的保證、信託、公司合法性等等足以取信於客戶的資料。
透過外匯名義行使詐騙之各類手法
匯外幣存款利息,以及美元短期借貸利率的 一 個表 。
兆豐銀外匯存款利率
.., _,. a,
. - -M
鼻畫西
蛔 ·一
00鹹lOO Ol!IOO 0一蕊 0.2國
=" 。.2500
一月
0 3000
勻
0 5000
六
0 5500 0.7500
-•
0 9000
蕢
lttWI
売矗Jail
....
US I I 0150
"一
。 0200 0 0200 0 0國。 0500 0 0:,00 0 1~ 0 2500 0 JOOO O ~ 0 3600
-·
瀛•uot
'°"'
u這匕
的
••JPVJ
0.3000
00100
0001 。
0 0010
一, 1 函
0 0010
0 0200
0 0010
0 0010
1 2000
0 0200
0 0010
0 0010
I 3000
0 Q20l
0 0010
0 0010
1.!Wl()C)
O 0500
0 oo,o
0 0010
1 酬JOO
0 1000
O 0010
0 0010
1 7000
0 1500
0 0010
0 0010
1 7500
0 2000
0 0010
0 0010
I IIOOO
0 2000
0 0010
0 0020
.,..`
ui..• 00國 00砸 o,soo 01500 o, 洳 03000 0 鹹泗 0.5000 。磁 00000
-
ISCKJ
........
"""'
.嚼"
!ZARI
。 00,0
。 2000
0,函
,0000
0 0010
0 2500
。 0000
2 1000
0 0010
0 2500
0 (l(l(l0
2 7000
0 0010
0~画
0 (l(l(l0
2 1000
0 0010
0 5000
1.4000
• eooo
0 0010
0 e000
1 亟
• eooo
0 0010
0 7000
1 4500
• 3000
0 0010
0 UICI
1~心,
嵋 ,000
0 0010
O 0000
(l(l(l0
4 JOOO
贏~田I 00010 。 0010 0001 。。 0010 00010 00010 00010 00010 000,0
人
0~0 鷉500 0 0500 1 2500 1 鹹 1 蕊 18500 17500
'""
·-
IQ<YJ
-~-賣
惡I
_
41
在這個圖 1-1 裡,我們很明顯可以看到利息最高的是南非幣,
金錢遊戲的共犯結構
我們回到該位讀者的問題,「入金之後不交易」就會有 6% 利息, .
既然上方的圖表明顯的顯示,現今國際體質正常國家的貨幣定從利
高額利息,即使它是存入了該國的銀行,至少得要有「利差」,這
樣經紀商才會有利益。不然外匯經紀商要如何生出錢來配利息給客
戶呢?且外匯經紀商既非銀行也非壽險公司,它只能提供交易平台,
不能提供給客戶任何抵押或非抵押貸款,所以,幾乎很難有借貸利
差類的金融商品可以提供給客戶。除非該家外匯經紀商利用客戶的
入金資金,去做非法地下金融,像非法高利貸或非法洗錢等等。
「入金之後不交易」就會有 6% 利息,筆者很簡單的打個比方,
們說絕對不會動用我們的錢,那放倉庫或保險櫃都可以,反正就是
然也不是很高,因為完全不動用到我們的錢, A 只必須想辦法生出
我們的利息就可以了。天底下有這種事嗎?奇怪的是,還很多人相
信這種事!
..
我們可以嚴肅的來討論這整個共犯結構。最上層是提供利息給
最底層入金客戶的外匯經紀商,假如它是外國的外匯經紀商,那它
就會找當地的總代理來執行這項業務,然後總代理再找區域代理,
區域代理再找下層的業務員來推廣這項業務,然後最後把對外宣稱
的這個利息給客戶。所以,外匯經紀商在發出年息 6% 之前,已經
至少發出三層的佣金給推銷該項金融商品的業務人員。假設最底層
區域代理要不要賺呢?總代理要不要賺呢?然後,最上層的經紀商
要不要賺呢?假設從外匯經紀商開始一直到業務員每一個層級都只
10% 。且外匯經紀商還跟客戶你掛保證喔!
外匯是一種買賈交易,不是金錢遊戲
那也就是說,推廣這項金融商品的外匯經紀商 一 定應能夠「保
透過外匯名義行使詐騙之各類手法
回來看,所有能提供「保證利益」的大概只剩下「定存」,因為完
全沒有交易,所以任何的有交易行為的金融商品都排除了。但最大
息?即使有,也沒有定存價值,因為該國家的貨幣貶值率會更高於
銀行的定存。難道該外匯經紀商是把客戶的錢都存放在這類國家的
銀行嗎?不然如何將如此高額的利息配給客戶呢?除了該外匯經紀
商在當地或國際上做洗錢或放高利貸,或是利用上 一 個章節所說的
「後金補前金」的詐騙手段之外,筆者實在想不出其他的答案。因
為在邏輯上,筆者實在完全找不出 一 絲絲的合理性。
曾經有位讀者客戶跟筆者爭論,「全世界最大的外匯經紀商」
也公然對外做這種類似金融商品的生意,難道這家全世界最大的外
匯經紀商也是吸金嗎?是的,就筆者的認定,這種金融商品本身就
是「吸金」,因為真正的外匯市場不是這樣的。真正的外匯市場是
_
43 .
有交易,有賺有賠,有利潤有風險的。對於這家「全世界最大的外
匯經紀商」為何會推出類似的金融商品 , 筆者只能推理認為它可能
拿吸金來的錢來支付在「瑞郎原爆事件」時慘賠後為了度過難關而
對外借錢的高利貸。因為該全世界最大的外匯經紀商得付月息 10%
但是這跟「外匯交易」一點關係都沒有,這是純粹的 Money
Game 。讀者在投入資金到這類商品想獲取其利息利益之前,應該先
思考其風險性。
球員兼裁判開賭場兼提供賭具
前一陣子台灣有一件相當大的經濟犯罪新聞,引起相當多人注
意的原因是受害者大部分都是年輕人 , 且都是受過教育的知識份子,
卻被一個學歷不高又自稱為「柯博文」的「外匯青年軍」騙的血本
無歸。新聞上指出有的年輕受害者還為了入金參與這個遊戲要求家
長去貸款,結果當然是賠光所有資金。以下是這個新聞內容 :
打著「戰爭遊戲,自動化獲利程式」旗幟在網路號召下單的「外匯青
年軍」,遭檢舉不法吸全數 10 億元,台北地檢署今天上午指揮台北市調處
發動大規模搜索,橫跨北、中、南等處,查扣保時捷、藍寶堅尼等至少 5
輛超跑及多部重型機車,並約談化名「柯博文」的青年軍最高统領吳姓男
子及多名集圉成員到案,預計傍晚陸續移送台北地檢署蝮訊。
- 念及綱軍模式包裝、經營「外匯青年軍」、「戰爭遊戲綱」等 10 多個網站,
還自封最高统帥「柯博文」,宣稱青年軍旗下自 1000 美元入門的指揮官级,
依投入全額沿级起跳,吳男下有 10 餘個軍圍,在全台各」也舉辦投資說明會,
以老鼠會方式吸引年輕又有錢的富家子弟投入,將金錢化為遊戲戰爭方式
l 年就可償還全部本金 。
不僅如此,集圉還以經驗分享、展示超跑、重型機車或出國旅遊等方
式炫富,吸引年輕人投資,但實際投入資金的投資人,最後幾乎都血本氣
歸,吳男等人則將坑設投資人的全額拿去購買豪宅、超跑,受害者多為 2 、
30 歲的年輕人 。 ……
年軍」投資固體,宣稱開發了一套自動化外匯交易程式。透過戰爭遊戲模
式,投資境外外匯保;;登全。至菸投資策略,就用「達摩戰艦」、「神鬼戰
入,因為每找一人還能抽取傭全 。
透過外匯名義行使詐騙之各類手法
只是,一名前幹部級會員曾在網路上爆料,所謂自動化操盤根本是假,
錢全進了吳柏續等創始幹部口袋,用來買瑪莎拉蒂、保時捷等名牌跑車,
貼在臉書社困上炫富,吸引更多懵懂無知年輕人參加。前會員強調,所有
公佈的獲利赧表、要分給「下線」多少傭全,全由高級幹部自行填寫,只
要不斷招募新會員,不斷辦活動,讓會員使用程式,就能「冼」出一堆錢,
簡直和老鼠會及兩樣。 4
有位讀者也曾經與筆者討論這個金融犯罪案例,上面這則新聞
裡被收押的「外匯青年軍」不是有在外匯平台上交易嗎?怎會是詐
騙?這其實是比較複雜的問題。這個團體除了吸金之外,可能真的
有交易,不過我們需要先釐清一些觀念。
_
http : //www.appledaily.eom.tw/realtimene、vs/article/new/20150916/692731/
45
Market Maker 經紀商:跟客戶對賭
我們需要知道,外匯市場裡真正受監管的外匯經紀商是不能以
自己的名義來為客戶做操盤行為,除非它本身也有另一個允許代客
操盤的合法牌照,這在以英國金融法規為基礎的金融法律都是不允
許這樣做的。一般來說,一家合法的外匯經紀商就是很單純的只提
供交易平台給客戶下單,然後服務客戶在下單上的任何問題,外匯
利益之外,還包含客戶在市場上賠掉的錢,不過這都是在「合法」
的法律範圍之內。這是讀者需要知道基本觀念。
而「外匯經紀商」所能做的,就是行銷它們的交易平台,也
就是透過自身公司的業務行銷人員,也拉攏市場上知名的外匯操盤
程式設計商本身不能又具備是外匯經紀商的身分,所以,這兩者不
能有利益對價關係。外匯經紀商僅提供平台及交易服務,外匯操盤
手或程式設計商僅提供代操下單為客操盤服務,兩者必須是 100%
獨立的,這在全世界外匯開放國家的金融法規裡幾乎都有這樣的明
文法令的規範。
客戶的錢賠到經紀商口袋
- 司,也就是說,它本身跟客戶有「利益衝突」的關係時(即當客戶
獲利它會虧損,而當客戶賠錢它才能賺錢的情況之下),若外匯經
紀商本身又拿出「交易程式」來給客戶下單,那根本就是「球員兼
裁判」,開賭場然後教客戶如何賭錢。那客戶簡直就是與虎謀皮,
完全沒有勝算。在與客戶有利益衝突的情況之下,全世界有哪一家
「外匯青年軍」跟此類情況有些類似。筆者並沒有非常清楚「外
匯青年軍」這個團體的犯罪行為細節,它們或許並不明目張膽的吸
匯經紀商」模式來把客戶帳戶的錢「賠」到他們自己的口袋。雖然
交易程式或操盤手無法為客戶獲利時是不能定罪的,也不可能定罪。
(如果這個能定罪,那全世界成千上萬的基金經理人都要入監獄了,
因為賠錢的基金多如牛毛 。 )但是利用交易程式或操盤來讓客戶賠
不僅僅外匯市場,台灣也有知名合法的銀行投顧公司操盤經理人這
透過外匯名義行使詐騙之各類手法
樣做而被收押。
跟單跟到入火坑
曾經有位筆者的舊學員詢問有關「跟單系統」的問題,因為最
___.,,r 一
·--
___/ """-"""'"""'"'
一=
~=:- , _ , , .嶋 -, ~ I - "
----=
~~
_,,,,,,.,-==--
""'囑 1 四 ,一 , ,,_
., 磾
,..,,..
_,,,.
,,. ,. .
N氬 O
~,., *
贓 O
_
47
在外匯市場裡,最知名且最多人提起或使用的跟單系統是一個
是讓程式設計者公開讓投資者「跟單」,透過複雜的轉嫁系統,大
玩三邊遊戲(外匯經紀商、投資者以及程式設計商),最熱門的程
式設計商聽說每個月的收入號稱高達百萬美金;因為全世界有無數
的投資者期望透過這樣的系統幫它或取利益。也因為這樣的服務是
「虧損陷阱」的把戲
嚴格來說,這其實是一個很棒的商業模式,但卻是很容易讓投
資者掉入「虧損陷阱」的把戲。也就是說,這種模式,最賺錢的是
一次的 把投資者當傻瓜。世界上為何有那麼多的投資者甘願投入陷
阱呢?這同樣是投資者看了表面的績效圖而讓貪念蒙蔽了自己理性
的判斷。筆者為何這麼說呢,因為跟單其實有非常多隱藏性風險。
市」時,也就是在價格快速變動的市況下,報價早就跑到天邊去了,
更何況是利用「跟單」系統來下單,不僅延遲過久,資訊也是落後
的資訊。
系統問題與潛在風險
筆者可以很簡單的列幾個問題來請讀者思考有關於跟單系統的
問題跟潛在風險:
單?
2. 跟單系統其實有點像一種黑箱作業,跟單系統不會提供程
透過外匯名義行使詐騙之各類手法
式的設計理念跟進出場邏輯。
投資者~ 的其中一方發生網路中斷現象,若
跟單系統已經出場,不管是獲利還是虧損,但「 Client 端終
端投資者」卻因為沒收到出場信號,這時該怎麼辦?
所以,想投資獲利的終端投資者,若只是看到表面的獲利曲線
就去套上「跟單系統」的信號,在上述技術上的幾個問題不解決之
風險其實是不低的。
_
49
聖杯傳說的謊言:任何市場裡至少有兩種市況
在網路上有許多類似「外匯自動交易研討社」的社團,筆者認
為這是好事。健康良性外匯專業金融知識互相討論並學習是一件很
不錯的事。在筆者的觀念裡,這類的研討社在實質內容的定義上是
必須有內涵性的教學或分享,例如程式策略、下單模式、資金管理
方法、理論架構、指標屬性、各類程式優缺點等等課程。
當免費下載的程式行不通時?
但如果只是到處宣揚該社團所開發出來的自動交易程式 EA 有
為有推銷自己 EA 行為恐怕就不叫「研討社」,而稱之為「外匯自
動交易推銷社」。其實這種行銷方式早在多年前國外就流行過了,
現在台灣流行時,其實是拷貝早期國外的「外匯程式商業推銷模
式」。
這種商業模式完全「零成本」,因為自動交易程式的下載者不
需付出任何開發的心力,只要拿別人的心血就可以滿街叫賣。據筆
者所知,外傳在台灣就有某位在大學教書的老師可能連程式都不太
會寫,但卻多次架設不同網站在吹噓自己的程式有多厲害。筆者擔
心,在外匯市場裡,連學術殿堂的人都這樣了,更何況是一般的唯
利是圖的行銷業務人員?如果連「程式」的交易邏輯都無法對外說
明,卻老是吹噓該 EA 的績效,這其實會誤導投資者對外匯的投資
心態。投資者要小心的是,一般的行銷人員都沒有程式開發技術能
........ 力,當下載來的程式出現問題時,行銷人員最常用的方法就是「再
換另一套程式」,因為他們沒有能力可以即時解決投資者的問題。
其實現今在全世界可以完全免費下載的「自動交易程式」真的
是多如牛毛,筆者手上的免費指標跟免費自動交易程式 EA 就各超
費資源其實非常龐大。最常看到的就是利用回測資訊的圖表來標榜
該程式可以無所不摧,獲利無限。經過這些年來的市場洗禮,尤其
歷經過「瑞郎原爆事件」的投資者都很清楚 , 免費提供下載的自動
交易程式幾乎沒有 一 套可以獲利,同時只靠單一種程式策略是無法
長期存活於外匯市場的。
兩套以上策略才能因應市場萬變
這段期間使用「馬丁格爾策略」或類似馬丁格爾策略,也就是賠錢
透過外匯名義行使詐騙之各類手法
加碼策略,不管是在何時何點位進場,帳戶結局恐怕都不樂觀。相
者所使用的是「反馬丁格爾策略」或類似反馬丁格爾策略,也就是
賺錢加碼策略,那「獲利加碼」的威力將使得投資者大賺數倍甚至
十倍以上的利益 。
EURUSD Daily
-一~-.,- .....
'I
'"''"'V"'~
~ [
·-· 一一. ·-一 曰- - - -一.\竺鬥昱 _
51
EURUSD H4
在這個市況之下,如果投資者使用的「馬丁格爾策略」或類似馬丁
格爾策略,至少每個月一定的利潤應該是跑不掉的。
因此,只靠 一 個策略程式想打敗市場,其實是很天真的思維,
因為市場本身即使最粗分類也分成「震盪市況」跟「趨勢巿況」。
所以,至少最低的市場應對也得要拿出「兩種以上」的「策略」來
對付市場才可能長期存活。
例如,在「震盪巿況」下使用馬丁格爾策略或類似馬丁格爾策
會獲利的。但是,任何商品的市況並非只有震盪,它還有「趨勢」
模型的市況,當市況是處於「趨勢」模型,馬丁格爾策略要嘛就是
一直停損,不然就是帳戶爆倉。所以在趨勢市況之下來說,我們就
.. 必須使用「反馬丁格爾策略」來執行「順勢加碼」的操作,而不可
使用馬丁格爾策略讓帳戶處於溫水煮青蛙般地慢慢邁向死亡的境
地。所以 , 筆者並沒有 100% 同 意並認同真的有某種「聖杯型套 利
似聖杯型套利程式 , 但以目前筆者的智慧還不足達成這個目標。
增加外匯知識強化自身投資技巧
清楚的識破市場的謊言或騙局 :
BabyPips
www.babypips.com
-
透過外匯名義行使詐騙之各類手法
...,~.,•-•mc.t,a
Uli
C 」
18
一 一
-
- .. ... . ....
.
. 西 ' `重 U
•. ·- , ......-
一
....-~_, ............ ,...... ....
鼬"這如-凸山- . . - . . . . . . . . 缸鹹西m, .,,..,,.,.
輯`虹. 缸~-----
-·'·-''·-
ZFXCITI - "
ForexFactory
www.forexfactory.com/forum .php
~-,--
. 記'·=
__
.,..,,
·--,,~·
·~-..
. ,''~'""~
.....
-,~~··~--·-·-
一
""' " .
一·
-
-......
·--· 一·~ ·-.
-~~•-一 ·
,•-n•~·
_
53
Forex-TSD
www.forex-tsd .com/articles
-體國鼬辛盅~. ..i.":'I
--
..... 辛辛r,.~-:.:-:..~--::...."::'::"'"...:.~ 至互;云;;::.-=.·::.."'::.:.."'.:,":::-....--=
巳 •
~
硼回____ ........ .,_..__ .
11n,.,.,.,,,1 F,°"'A<Mfflr Toorw, Mr油•of'ilmm面(印
. . . . . . . . . . . . . . . 荸. .,... 心,. . . . . . . . . . .
--一...
''
...,_心
,. 母國.,.....,, mm ""一一一,..
..-...
r.-. <iARlir州''"情,~+>I·fo,m 伯「`面""面-"
云亡 ....
~, 心""'- ·
. - ...
a,m . . . . . . . _ ...... ., 心一一·-
圖., 啊 ........
仁 「面面.....
蛐-~ 這""""'"叫9 血 w,
11 ... .....面廑面「面,_西-
m m ,.,...-_ .. o,m,.-=·""......_",.,.,,..-,._
... 量 ""'
鼬一·賈,., 一洫屮屮U這
r.-.
户亡? 硒........
m m 一~--·""'·--·可缸·-一叫....
_ _ _ ., 囑`重 ·-
硒
"""'·•., _ . . . ~-,··,, 抨""'"'
N ::.,~:=..'"-":.::."'~=-"""=':::..:,."-= 囯罕=-:::::..=::--.!.."',:.':".:::::..":!:".::.
"'"'這 m 面"而O<itltmrw,HJ一a!H""
I
圖 1-8
I
investopedia
www.,nvestopedia.com/
I 、 II丶1(11'1 Ill I
, ., , ., __缸..... """'"'"= <tt鱸心四·- '心璸,,, __ ,._."'的m
'""品 1...
干.,,.,,心·~''""""'-
, 0 l I
- j -~~
Active Trading
二
Active Traders Tum Bullish on Become a Binary Brol<er
Utilities
R•MO~oh<,Ou~d 一 -Jin,证氥"""· 心
""'""""""""一一``鹹
., .....如「~ 「4 「""-·"
M=•
,.,....,_
OOllioin=M-~ 氐'"'~~ 「Mi"-~
'°""'鳴...... Free Day Trading Chatroom •
Trade「sToolkit
以上是筆者最常造訪的國際外匯網站。如果讀者能靜下心來每
天到這幾個專業的外匯網站逛逛,每天花點時間好好閱讀,不出 一
年,你所學到的專業知識就不可能會讓外匯行銷人員所騙,因為你
-
的外匯相關知識早已經勝過這類外匯行銷人員千百倍了。
/
免費課程 DIV
而筆者本身也有錄製一系列免費的外匯基礎教學放在 YouTube
帶給讀者正確的外匯市場知識 , 跟正確的外匯投資觀念。
以下的網址提供給大家做參考 :
外區課程一一外匯套利交易基礎篇 1/8
https : //www.youtube.com/watch?v = Bc-68Jk33JO
外區課程—一外匝套利交易基礎篇 2/8
https : //www.youtube.com/watch?v = qlNOoFlfNMo
外匯課程 外匯套利交易基礎篇 3 /8
https : //www.youtube.com/watch?v = _fvBldotZeo
透過外匯名義行使詐騙之各類手法
外匯課程—一外匯套利交易基礎篇 4/8
https : //www.youtube.com/watch?v = na6N55WGudEl
外匯諜程—一外匯套利交易基礎篇 5 /8
https : //www.youtube.com/watch?v = 9waD1ZsiWvk
外匯課程一一外匯套利交易基礎篇 6/8
https : //www.youtube.com/watch?v = PuONLFQ_nLQ
外匯課程 外匯套利交易基礎篇 7/8
https : //www.youtube.com/watch?v = Qy6HDcbo01U
外匯課程 外匯套利交易基礎篇 8/8
https : //www.youtube.com/watch?v = 6Rl YNktgXGY
_
55
羣
您對您的外匯經紀商知多少
紹跟分析,本書不針對基礎知識方面在多述贅言。如果讀者對於外
匯經紀商相關的基礎知識不是很了解,請讀者自行參閱筆者的《外
匯套利 I 》書籍裡文章內容。
如何判斷外匯交易公司的正規合法性
本書會稍微介紹一下一家合法外匯經紀商該有的相關資訊,以
及讀者該如何去查證該外匯經紀商是否是真的具有合法性。同時,
筆者建議新進外匯的投資者不要輕信外匯經紀商或外匯經紀代理人
的廣告,在投入實際資金申請開實單帳戶之前,應該先下載你有興
趣經紀商的交易平台,先做觀察;並盡量找英、美、紐澳、瑞士、
日本、香港(英國法),註冊合法的經紀商較佳,其中以英國牌照
最為嚴格。因為資金的安全性也是投資者在選擇外匯交易商的過程
中必須重點考量的要素之一。
以上這幾個國家或地區是對外匯交易商的客戶資金安全,交易
規則監管最嚴格的,有專門的管理法律,所以,希望投資者盡量找
在這幾個國家和地區接受政府金融監管單位監管的交易商來開戶。
..
如果某家外匯經紀商同時具有上述多個國家或地區的合法且受金融
監管執照的公司,那更佳,至少可以顯示該家外匯經紀商並非是開
安心往來 :
1. 該外匯經紀商具有不只一個地區或國家之金融單位金融監
管的業務證明。
2. 該外匯經紀商之上手合作銀行必須是知名全球或當地之大
型銀行。
4 除了交易平台之外,提供完善的客戶後台系統。
6 多國語支援,即時障礙排除 24 小時服務等。
您對您的外匯經紀商知多少
以下是幾個網址供讀者參考。
_,___- c-
英國金融服務授權機構 FSA
www.fsa.gov.uk
1,,,.祈..... ,.... 1 mm
' ·Who=wv?
·What-do
• Aims .... ...,..,..
·The"""°""'
·C..-•
. c..,_,,_,..,FSA
-
As the financial regulat0< for the UK, we use a wide range ol rule-
making , investigatory a面 en缸cement powers to fulfil our statut叩
。bjectives
W•-~•...............
......,,., 山四叫出·-- . . , .....~ ~ - · 血.,........,_
. . . . . . . . . .璽o,r磁阯,叫,.
..........
硒'"'哼...... 富•-k>lheT-,yand,
鹵叫而"諷[油.,,..,_ . . do 國圖..這面""·
`
lllllnlllllllla
上一.. .,..,..... 心 FSA'- I
5
一7
美國聯邦期貨業協會 NFA
區日珥
www.nfa.futures.org
硐[三三,已
-
AboutNFA J 洫 l滷, 1 宓洫>NFAI如tact•咧
Regi>t,.tion Cornphance Elect,on,c F,Hngs tnve,tor Informal叨庫 ""tion / Med;,oon Regula氐,n B,oker I F,rm lnformat;on (BASIC)
News Cente, Swap, lnlormaboo lnloonat面 fo, DCM, and SE斥 NFAManual Fi聶 a Cornplamt Ca,eer, at NFA
-
ru,ea,mo
018-"NFAR町,,可"""'如 ~~m
POoaodCTA,"("'"'"'"°""""'2018) , ~的•Pa蕊丶=d' E面呻 Now (New ORS U~,s)
27/2016-0澶.e,富-痂°'"""""這, •.「0
O..,, IB,, CPO, ond CTA," (H, ,,, "°""""''°
6/2016-NFAla<,«J•,- 一
面,._,..,,,,~」.. 罩~~--rro
匾,一··"=-霍霉lab
投資者對於外匯經紀商的須知
常見虛假宣傳用語
1. 零佣金 , 固定點差
外匯保證金經紀商聲稱不收佣金,但是收取 3 到 5 個點的點差
(spread 匯率的買入價格和賣出價格之間的差額),如果按買賣 l
所謂零佣金只是將佣金變換了一個名字而已 , 潛在用意是誘導客戶
頻繁交易。經紀商通常承諾給客戶固定的點差,但是這樣經紀商就
易活躍程度而變化;比如歐元/美元在通常情況下為 1 個點,但在
某些特定情況下點差可能會放大到 5 個點 , 甚至幾十個點差。正常
實際上就變成虧錢了。這就是為什麼客戶在某些時刻無法登入到交
易系統進行交易的原因之一,因為經紀商無法在有限成本區間內及
時地把市場風險轉嫁出去,所以乾脆限制客戶交易。
2. 不滑點和保證執行停利/停損單
經紀商通常承諾客戶所見到的價格既是可以立即成交的價格,
並且保證執行停利/停損單,正常情況下的確可以實現。但是各級
停利/停損單,也就意味著他們承擔了一定額外風險。當行情波動
劇烈時,風險如果超過了經紀商的承受能力,則可能不能保證原價
成交。
3. 銀行間報價
是真實的外匯市場價格。外匯保證金經紀商通常不夠資格在上面交
您對您的外匯經紀商知多少
易,他們 一 般從某家銀行或某個數據商拿到價格數據,過濾加工後,
然後再報價給客戶,所以客戶從經紀商看到的報價一般都是延遲的。
的點差如果是固定點差,例如,歐元/美元的點差定為 3 點,這樣
的報價顯然不可能是銀行間報價。
4. 隔離賬戶或客戶資金與公司資金完全分離
_
59
但是, NFA 只是對從事期貨交易的交易商要求建立隔離帳戶,
所以外匯保證金經紀商宣稱他們為客戶提供隔離帳戶只是一種宣傳
手段;即使經紀商真的將客戶保證金單獨存管,也可以隨時挪用,
因為沒有任何機構能夠監管這種行為。
5. 受 FDIC 或 SIPC 保護
某些外滙經紀商宣稱在其公司開戶的客戶的資金受到聯邦存款
非在外匯經紀商破產的情況下)為儲戶提供一定額度的補償;並且
FDIC 只對支票賬戶、儲蓄賬戶、存單、退休金賬戶等銀行存款賬戶
進行保險,對共同基金投資、股票、債券、國庫券等其他投資產品
貨交易並不在其保護範圍之列。
整個外匯市場架構,最上層是國際銀行玩的遊戲,那叫
這一層次的集團是真正的球員兼裁判,它們也會進場去做外匯買賣,
-
但最大宗的是,它們提供報價給下游,而這個下遊就是外匯經紀商。
好 一 點又有良心的外匯經紀商會在伺服器上執行直接使用 Best-和 d
戶之間的買或賣,再由外匯經紀商丟單到市場,這就是我們所熟知的
1. 外匯市場的層級
外匯市場的利益結構層級圖
- •
- •
您對您的外匯經紀商知多少
-
[ f~
•
亡竺芒巴 ]
- •
- •
以上這些層級代表的是外匯市場整個架構的商業往來模式。
我們本身,也就是外匯投資者,就是處於整個產業鏈的最低 一 級,
Client 終端投資者。
_
61
2. 避 免有利益衝突的 經紀 商
但是有更多的外匯經紀商其實是不對市場丟單 , 直接承接客戶
資者有「利益衝突」的對賭性質經紀商,因為只要跟客戶產生利益
衝突,在伺服器掌握在外匯經紀商手裡的情況下,終端投資者比較
容易吃悶虧。因為終端投資者無法完全掌握真實的市場情況 , 甚至
連報價 、 連線等等情況都可能因為經紀商為了自我利益保護的關係
而犧牲他的客戶利益。
這種情形在對賭性質經紀商很常發生,所以 一 般投資者在選擇
台系統簡易圖示,這個圖示可以很簡單的讓讀者知道什麼是跟客戶
MT4 交易平台系統簡易圖示
Dealing Center
,-------一--一一一一 1
l
..
I
I
: program .,n ,
十 一-`
1 MOL.4
!'
I I
'
L 一一一-- - 一一一一一--一」
圖 1-12 就是典型的 MT4 架構。圖裡的 D ealing Centre 就是連到
架構圖就知道,「任何一個」終端外匯投資者的下單,其途徑就是
先經過外匯經紀商在送出去外匯市場。但如果你的外匯經紀商是一
因為沒有丟單,所以,客戶所下的單,到經紀商的伺服器就結束了。
所以,這類經紀商跟客戶在面對市場波動時 , 完全是「對賭」的角
色,所以,這類經紀商是跟客戶會有利益衝突關係的。
您對您的外匯經紀商知多少
象最深刻的就是外匯 Market Maker 的行為。為何外匯 Market Maker
的行為會令筆者至今難忘呢?因為外匯 Market Maker 會利用各類
Dirty Trick (骯髒技巧)來令外匯投資者賠錢的手段,在其它的金
融交易市場裡幾乎是不會發生的,但在外匯市場卻被發揮的淋漓盡
致。目前整個外匯市場佔最大量的外匯經紀商型態其實也幾乎都是
蓬勃發展,並大發利市。因此,如果你所開戶的外匯經紀商是一個
後跟它玩梭哈,你不僅得先付出賭金成本,還得防它出老干。
_
63
台灣地下期貨的盤口商的報價公開透明,所有價格來自於台灣證券
交易所的報價,而期貨投資者的角色就是跟你所入金的「期貨盤口
商」對賭,投資者的錢並沒有真正投入台灣期貨市場,當你賠錢的
時候,錢當然就歸期貨盤口商所有,當你賺錢的時候,期貨盤口商
期貨盤口商所有價格來自於台灣證券交易所的報價,跟客戶的關
係只有賭輸跟賭贏的問題,不會有詐賭的現象。但是外匯市場裡的
衝突的,沒有任何一家公司開張的目的是為了賠錢,當客戶獲利時
在上一篇章節裡有提到外匯青年軍詐騙犯罪新聞,筆者就是要
方的交易策略或外匯自動交易軟體時,投資者其實要非常小心。請
ECN 型態的經紀商對投資者提出交易策略或外匯自動交易軟體建議
-
時,因為他們要的是「交易量」,只要客戶越賺錢,才越會交易,
他們才有手續費可以拿,雖然這樣是不被金融法令所允許的,不過
就筆者個人認為至少在「可信度方面」是比較高的。
4. Market Maker 常見的手 法
Market Maker 類經紀商讓客戶賠錢,或讓客戶由獲利變賠錢,
大概會有幾個常見手段:
1. Slippage 滑價:這個最常發生。
卻自己跑出來的單子。
倉單全部去碰停損(因為對賭的關係,客戶的停損,就是
經紀商的停利)。
您對您的外匯經紀商知多少
5. Always Re-Quote 一-重新報價 : 為了讓客戶的成交價成交
在很差的價位,所以經紀商一直不讓客戶成交而重新報價。
滑價 Slippage 之解決方案
避免。但是滑點的頻率以及滑點的大小的確是會影響績效。尤其是
外匯市場,滑點更是常常發生;而不同的經紀商讓終端客戶交易所
產生的滑點也不盡相同。
在 一 個真正有對外丟單的外匯經紀商而言,把客戶的訂單丟出
去產生「滑價」的現象是非常有可能發生的,真正不跟客戶對賭的
經紀商產生滑價是市場造成而非經紀商私下動手腳造成。以前在市
場上曾有某家經紀商對外宣生他們的交易平台是「絕不滑價」,那
其實他已經很明確的告訴他們的終端投資者,客戶的訂單是「絕不
_
65
對外丟單」。說白話一點,也就是說,他們「絕對是跟客戶對賭」
有點好笑。
其實 MT4 平台本身在伺服端是可以「製造滑點」。因為伺服端
可以製造滑點,所以外匯市場上竟然也有「零點差 0 SPREAD 」這
樣的外匯經紀商公司。這都是市場行銷用的噱頭。零點差只要利用
製造滑點的方式,隨隨便便就可以讓客戶付出更高的交易成本。所
引誘投資者投錢進去,再一步一步把客戶口袋裡的交易資金變成自
避開這類問題的方法。
而在程式解決方面,避免太高滑價交易的設計並不困難,如下:
以上是最簡單且最被常拿來使用的方式。而在避開嚴重滑價問
的即時報價的交易點差 (Spread) :
- //+------------------------------------------------------------------+
//I Show Spread Function I
//+------------------------------------------------------------------+
void ShowSpread ()
double spread;
spread = (Ask-Bid) /Pip;
strings = "Spread : "+DoubleToStr (spread, l) +" pips" ;
if (Ob」 ectFind (OBJ_NAME) <O)
{
Ob」 ectCreate (OBJ_NAME, OBJ_LABEL, 0, 0, 0) ;
Ob」 ectSet (OBJ_NAME, OBJPROP_CORNER, I) ;
Ob」 ectSet (OBJ_NAME, OBJPROP_ YDISTANCE, 260) ;
Ob」 ectSet (OBJ_NAME, OBJPROP_XDISTANCE, 10) ;
Ob」 ectSetText (OBJ_NAME, s, 12, "Arial Boid" , Labe!Color) ;
}
Ob」 ectSetText
(OBJ_NAME, s) ;
WindowRedraw () ;
斷線 Disconnection 之解決方案
您對您的外匯經紀商知多少
當家裡網路老是在「市場高潮」時連不上經紀商伺服器?若發
生這個情況,有很大機率跟你的經紀商脫離不了關係。筆者說何為
「市場高潮」, 一 般指的就是重大市場資訊發布的日期或期間。舉
• 商不希望在周五讓交易者入市獲利,所以幾乎可以確定這是 一 家跟
你對賭的 Market Maker 。
續費,投資者的交易越多,它們才會有利潤,投資者的輸贏跟它們
意選在周五斷線。
_
67
但是 Market Maker 可就不一樣了,當市場重大訊息公佈絕對
會讓市場明顯的「偏一邊」,這時 Market Maker 因為跟投資者是對
對於這個問題,投資者怎麼解決?筆者的建議,不要跟這類經
紀商往來。程式只能做簡易的防備,因為交易的伺服器在經紀商手
上,若經紀商真的要搞客戶,功能再強大的程式依然無法改變什麼 。
例如,經紀商若在美國非農數據公布後斷線 4 個小時,那任何程式
都變成廢物,帳戶只能眼睜睜看著「爆倉」或虧損而「無法停損」
的窘境。
-
案例上,發生過兩次類似幽靈單的情況,而兩次都跟外匯經紀商提
出申訴,但都沒有得到很好的答案。以筆者的經驗來看,遇到幽靈
單,經紀商本身不太願意承認,所以很難要求賠償或滿意的答覆 。
我們僅能建議投資者在交易的時候,將您所下的每 一 張單都要加上
註解。類似如下之程式碼:
上面不管是買單還是賣單,每 一 筆送出去所成交的倉位,都會
有註解。當你發現,在你的帳戶在倉單上出現不是你所下單的註解
或註解是空白(通常幽靈單在註解欄位是「空白」),你就能判斷
您對您的外匯經紀商知多少
解,如下圖 1-13 。
。refer Tab
1.39563 / 1.39610
-鼴榊`',一
Attention! The trade will be executed at marlcet conditions, difference with
requested price may be significant!
_,...
_
69
假訊號 Fake Signal 之解決方案
假訊號,或稱之為假報價,這種情況比較會發生在交叉貨幣對,
相互報價,經紀商比較容易做上沖下洗來洗掉客戶的停損部位,這
種惰況幾乎無法對經紀商求償。而在直接貨幣上,通常假訊號比較
不常見,因為全世界各個經紀商在直接貨幣的報價上不會差異太大,
如果某家經紀商在直接貨幣的報價上產生假訊號,很容易被投資者
發現。但交叉貨幣因為交易者少,同時又因為是兩兩直接貨幣的相
互報價產生的價格,所以在市場的快市時,投資者的停損部位容易
被經紀商洗掉。
假訊號的問題無法利用程式規避,同時,終端投資者也無法有
證據證明是經紀商所搞的鬼,筆者的建議通常是盡量減少交易交叉
貨幣對。減少交易交叉貨幣對除了可以規避掉可能被洗掉部位的假
訊號問題之外,又因為交叉貨幣對的點差成本偏高,可以減少交易
的成本支出。
窗,並秀出目前變更後的價格,手動投資者可以自己決定是否要接
受新的進場價格,可以自己按下「確定」或「取消」的選擇按鍵。
但是若是自動交易程式的下單遇到重新報價情況,建議是使用 While
-
迴圈來讓程式可以成交或出場;尤其是出場的部分。以下這段程式
碼,就是用來避免程式交易下單或出場情況招受干擾時的防備。以
Tries = 100;
ticket_sell = O;
Error= O;
while (Tries>O&&ticket_sell< = 0)
case ERR_SERVER_BUSY:
您對您的外匯經紀商知多少
case ERR_NO_CONNECTION:
case ERR_INVALID_PRICE:
case ERR_BROKER_ BUSY :
case ERR TRADE CONTEXT
BUSY:
Tries--;
break;
case ERR INVALID TRADE
VOLUME:
Print ("INVALID_TRADE_
VOLUME error on this pair, Please check order lots") ;
Tries= O;
break;
. .
71
_
break;
case ERR_OFF_QUOTES:
case ERR_INVALID_PRICE:
Sleep ( 5000 ) ;
case ERR_pRICE_CHANGED:
case ERR_REQUOTE:
RefreshRates () ;
Tries--;
continue;
case ERR TRADE TIMEOUT :
case ERR NO ERROR: //ERR NO
ERROR:
Tries = O;
break;
default :
Tries = O;
-
經紀商及各類交易軟體評價參考的網站
如果讀者對於自身所交易的外匯經纪商沒有太多可信或評 比 的
者去搜尋外匯綢友的評價。
ForexPeaceArmy
www.forexpeacearmy.com/ public/forex_broker_reviews
..... J
-- -- - -
. ,.,_,..,_.
lnf=atlon
您對您的外匯經紀商知多少
• , _ . , . mm ... -。
73
ID
外匯市場的整體產業人員之利
益結構詳細剖析
外匯交易市場之產業利益結構
所有金融交易行為、包含保險從業人員都很清楚;一般來說業
務人員的獎金都是相當的高。但是,所有交易行為,因為出錢的人
要承擔風險,所以,最起碼的利益是一定要有所保障或分享;因為
一旦行銷通路商拿走絕大部份的利益,這樣不容易讓終端交易者獲
利。其實,終端交易者有大部份只是想要穩定不錯的利潤,並不會
真的很介意行銷通路商拿走佣金;但如果行銷通路商的佣金比起終
端交易者超過太多,且讓終端交易者根本就無利可圖,這種的商業
模式就無法持久。
外匯金融在國際上已經是一個成熟的金融產業,這個產業已經
紀錄的實單交易帳戶,外匯交易在全世界都是合法的金融交易商品,
只是在台灣因為法令落後,處於金融法規的灰色地帶。整個外匯市
- 一般來說 ,他們提供報價給下游,而這個下遊就是外匯經紀商
或大型對沖基金法人團體,然後進行買賣搓和。接下來才是經紀商
所謂的「對外」指的是對所有外匯投資者客戶做報價,所以,
交易平台上才會產生價格變動,而報價之後,客戶之間的買或賣,
外匯市場的整體產業人員之利益結構詳細剖析
他本身要獲利的利益,所以,他也會有 ASK-BID 的點差利益 (Spread
Profit) 。
在實際清況下,外匯經紀商之下有些是直接的外匯投資者。但有更
多的投資帳戶其實都在外匯經紀商跟外匯投資者之間都會再掛了幾
_
75 .
依靠交易量抽取佣金
例如筆者本身是自動程式開發商,算是在這幾層人員的頂層。
層拿取交易者交易後的利益,類似整個社會的商業經銷層級架構。
所以,這幾層或 一 大層的架構利益,就吸引為數龐大的外匯從業人
員進場撈食。為何這麼吸引人呢?很簡單,銷售人員只要找到客戶,
上有自動交易程式,下有客戶資金,只要客戶交易,這 一 大層的行 .
銷人員都有利益可以拿。也就是從最上層的自動程式開發商到底下
可能只有一兩位客戶的小 IB 都有利益。風險是客戶在承擔,程式是
自動程式開發商所開發,行銷人員只要負責找到有錢的客戶就可以
有源源不絕的交易佣金利益入口袋。
如果客戶虧錢呢?外匯市場的行銷人員通常是把責任全部都推
給自動程式開發商或代操員,然後再去找看有無替代方案,或有無
更好的自動程式開發商。因為,客戶的交易量跟行銷人員的佣金息
息相關,因此,筆者常常被問到問題的第 一 名是:
「每個月交易量可以有多少個 Lot? 」
而不是:
「每個月可以幫客戶賺多少錢?」
為什麼會有這種現象?因為幫客戶賺錢並非行銷人員的主要工
作,有大量的交易量並能從中抽取大額佣金才是大部份外匯市場行
銷人員所考量的重點。也因為這樣的結構,讓整個外匯市場變成了
- 唯利是圖導向,造成整個外匯市場的發展變的很畸形。
資訊不對等衍生的點差
在任何的金融市場,沒有任何一個客戶是希望經紀商、業務以
及理專賺得很爽,而投資者自己卻一直都沒看到獲利。筆者的真實
戚觸是,目前在整個外匯市場裡,因為資訊的不對稱,在架構上,
真的很容易出現經紀商、業務、通路商賺錢,而終端客戶卻是不容
易獲利。客戶可能因為信任、想投資獲利等等因素而願意把錢交給
IB 或業務來執行外匯投資,但久而久之,發現自己帳戶無法獲利,
而自己的 IB 或業務卻喝香吃辣,自己帳戶的手續費支出竟比利潤還
報出給終端交易者的點差。
龘市
~';/'-::'.,_",,
`
Bid Ask High low Time" I
• USDCHF 0.96905 0.96959 54 0.97137 0.96535 21:58:58
場
• GBPUSD 1.44766 1.44833 67 1.45125 1.44099 21.58:58
• USDJPY 111533 111.563 30 111.747 110.817 21:59:41 的
• AUOUSD 0.75996 0 76149 153 0 76790 0 75938 2159:41 整
• USDCAD
曇 AUDCAD
1.30020
0.98842
1.30109
0.98986
89
144
1.30409
0.99580
129215
0.98630
21:58:52
21 59:41 閂
• NZOUSO 0.67977 0.68022 45 0.68719 0.67811 21,sg,41 II 業
• AUOCHF 0.73652 0.73810 158 0.74147 0.73480 2159:41 人
• AUDJPY 84.771 84.908 137 85.337 84.658 2159:41 員
uI~
• EURCAD 1.46535 1.46628 93 1.47109 1.45864 21 58:58 之
卫
• AUDNZD 111770 112022 252 1.12195 111565 21 58:49
• AUDSGD 103029 103424 395 1.03782 1.03029
2158:59
+ CADCHF 0.74碚6 0.74616 130 0 74827 0.74261 21 58:52
,
• CADJPY 85 733 85.810 77 86.262 85.340 21 59:41
• CHFJPY 115 031 115129 98 115365 114.541 21 58 58
• CHFSGD
• EURAUD
<> EURCHF
1.40142
1.48166
1.09214
1.40318
1.48336
1.09270
176
170
56
1.40301
1.48459
1.09461
1.39503
1.47497
1.09042
21 58:58
21:58:52
21:58:58
I 剖
• EURGBP 0.77813 0.77863 50 0.78285 0.77732 21 58 58 析
+ EURJPY 125.696 125.758 62 126.180 125.282 21:58:58
• EURNZD 1.65732 165958 226 166178 164755 21.58:58
• EURSGD 153028 1.53327 299 1.53430 152633 2158:35
1.90278 1.90580 302 1.90711 1.88702 21 58:58
1.88244 1.88390 146 1.88759 1.87334 21.58:58 ..,
77
_
所以,如果讀者是自己直接透過經紀商開戶並自己交易,點差
成本通常就會是經紀商對外公告的點差。但如果讀者是透過經紀商
1. 交易點差沒有增加:這時是因為經紀商將他的原本要從客戶取
紀商當然也有好處,因為經紀商不需要花錢請業務人員做行銷,
2. 交易點差有增加或增加佣金欄位的成本:這通常是因為在經
紀商跟客戶之間又多架上了程式供應商/顧問/代操手 (EA
..
外匯交易平台工
具再說明
子曰: 「 工欲善其事,必先利其器 。」
一 《 論語 · 衛靈公 》 第十五
.. 't
✓
新版 MT 4 Build 600+
重點介紹
交易介面小幅改變
的改變。說老實話,我們長期以來都是跟在老美後面屁股走,忽略
了俄羅斯的軟體工業能力其實也是非常的紮實跟創新,如圖 2-1 。
的,因為有 一 大堆跟單的商業交易下單信號提供給投資者選擇。
新版
MT4
當然,不是只有這樣而已, MetaQuote 公司把原本就是 C 語言
60
空重點介紹
保留字。一些原本在 ANSI C 就有的語法,新版的 MQL4 把它們整
_
81
MT4 Build 600 + New version MQL4
_____,... , '
.,......... "
,.'-...... ~--'''··-
.,',', - ' 嶋·- 一一 ~-L-" ■'•'"'
鼴`"一一'',_
,- ,
' .`' ''一-'`'廎---一,,· 一.
"'-·"-
..,-, --•~TI七--一 , w,.u ''
... ,_L_..,,_'-, 一"' "'•--•~-U-• IO•--.. - - ,, ,.. , 0"• n .o. .. -, """'"''" ,_.,_.,..,,'"'"
.
,
......
~ -」 _;
..
十-一-- · ''~;----,
一「-一......一·一""""'·" · ·· - · --·-·------一_..,_._
, "
·-霾'""
' __ ..., ...__ ... ,. ' ____ __.,_ . . ..,,_,._,
""
.........
言-~ 声声苔5.t't:::SE:1罕苧苧严
··-一 「-·一一止己鹹汜,'" p_ 矗曰三--一·一`. ',一一___ __
·•-·
, ' ' ·" 一.,.,,,.,,,,, .. 一一一·
~-一一一_, 一一'',....,, ,
.,._, '
.一-~~-----rCL,-._ . . . ,.._.
. ^-一一 '
,'''.
___ , ,.
_._ ____ . ,. ___ . ___
一一..UL•O一
__,
研-十-----· 國一一... 一日=~-·
,,
__一一 d
"'''"
.由..這月「 I - ~ - - , , · , 一'十富 ~W -
-~-鼻--
.'"''"""""""'''""""''"""贊`
. . . . , 頃"
'「" - ~-一
..
m=n一
三 1U1
n a• 大1•
'
````下"'""' •一.
.,,.,.,,,_,...,,,,
• 賈貫亮
.,.,
Z 如.-. .. .,., . . .H*
疝 W'6HG10l &U鼴
Hli
砌 ""''n""" au 瓜烹
{l=
.,,.,,w 上,.,,~... ..
,.,.,.,,._
'°'""'
>n,nn;
,o,v,n,
面 wn;
.,,,,,,勺;
`'
加強開發者保護
舊版程式碼無法直接編譯
新版
下 F5• 一 按下 Compi le 按鍵之後,出現許多的錯誤訊息 。 所以 舊 有
MT4
碼編寫上,通常需要做小幅變更 。 Build
600
Blessing 3.9.2 Compiling Error
p -; IM +重 點介紹
'
- `20,»a``1=i ;-
l
I
苣自言
3
P
户
g 〒,
gO
4
[·
。
-- p"
,
ir [
:~-
! J
• "'却五心""'"'"•
m
.h=lhi-i.
二iIl
5m :
~~~~~
..
,' I
· 2' //•
JO
.一一-一-一一一
1/1 ........, • .,_._,. ...
一一一一一一---- ••• 一- •
'1 II• 一一一一一--一-一一 一 一一一一一一--一 -----一-一一一一一-- .一----一---一..... 一-一一一·•
"
'.正·-•trt.., ,,.,.,.~ • ••=•mt Tn<l"\J ,.,u平.• ,
`
.,' `,`
.
_
83
MetaQuota 官方對於新版 MQL4 變更的介紹
就筆者的實際使用及開發新程式的經驗來說,事實上新版本
.. 所提供的說明文件。
ta
使用者必須知道的幾個 MT4
相關知識
MT4 基本架構
MT4 架構圖
Dealing Center
使用者必須知道的幾個
Informational
Environment MT4
Embedded
controls
MT4相關知識
「一一一一一一一一一一一一一一 1
!, Programm
. I
,
I-一一一主
l, MQL4 ,'
, ,
' '
L---------------'
_
85
報價透過 MT4 的伺服器端送到 MT4 的客戶終端,然後再利用 MT4
構,在我們通信軟體工程上有所謂 Request-Acknowledgement—
Confirmation—Accept/Re」 ect 的通信溝通模式。 MT4 的系統架構細
享。此本書因為篇幅的關係,在這個部分上無法做詳細的介紹。
基本畫面簡介
通常一個外匯投資新手在接觸外匯時,最常聽到的交易平台名
公司所開發,在所有外匯交易平台裡,其實它不算是最頂尖或最好
在網路時代大大的成功。筆者建議外匯新手的初入門要進入外匯市
冊(英文版)高達兩千多頁,很少投資者會有時間去研究這個龐然
大物,因為就投資者而言,只要能協助獲利,是不是使用最尖端的
高科技不見得那麼重要,因為利潤比較重要。
..
MT4 安裝後畫面
二
\ p
- -蛐
使用者必須知道的幾個
要功能菜單及設定。
及設定。
示即時市場的商品報價。 MT4相關知識
自動交易程式、指標、客制化指標等。
E
Terminal 終端視窗 (Terminal Window) : 可顯示帳戶之即
時交易以及開倉部位情形、歷史交易情形、預掛單或程式
執行歷史等等功能。
E
Status Bar 狀態 Bar 。
_
87
G. Chart window 線圖視窗 (Chart Window) : 顯示各類商品之
線圖。
重要資訊須知
對於投資者而言,一個投資工具平台所呈現的不是只有圖型, .
還有許多重要的資訊是即時在揭露並更新。 MT4 交易 平 台當然也是
Account Information
O rdtr I Tim, Type Size Sym .. , Price S/ l T/ P Price Com... Swap Pro!~
C- 183 o.o 1291.6 0.00 0.00 . -0.嶋 `
2
E
!!II Trade 丨 Ao:ounl Hosto<y I News I Alo五 I Mailbox I Market I C<心函.. I 巨pe-ts I Jou:nai I
3. Margin 保證金:現金用於打開當前未平倉合約的數量 。
的交易成本的設定跟經紀商的公開對外之預設值可能不同,所以在
Symbol with•. •
-琿:08:24
`
使用者必須知道的幾個
I
Bid Low
' j-
Symbol Ask ' High Time "
~ CAOCHF. ,,
~ CAOJPY. A5_i;lj9 8°7~1 8~llC1 852118 '0:Jl!,·11
• CHFJPY. 116.186 116.268
`
82 116.271 115.712 10:08:19
令 EURAUO. 1.48182 1.48244 62 1.48829 1.48089 10:08:24
~ EURCAO. 14,e1 1 4·1x<J4 >l2 148;.:0ll '41"1記 , ):Jl!,·_)4
苣 踩k Chart
1215.66 1216.18 52 1218.52 1208.18 10:08:19 "
I
_
89
當我們開啟了類似以上「特殊符號 」 帳戶時,我們 登 入了 經 紀
.. •
會.... 邙,..,,
***** """"
88'la
I i -
i-
EVEVEVEVEVEV"EVEV~
-{兄
'主
{m惡 -3 『
-
·
·•~ 富' .. ~ 一·-一`-一·-一·學-· 學琫,檸- --.-·-一·-·這•-- 蛐
......
...,.,.,w;,, 畠"'
0-.. 屈"-·
""''. 一-· 一 "lru氙以'"' ""山"''" 皿•,so,」.
區 ,.._...._.,......,_,.,._«-,w..Ool 如 5一一
...,,, .
•••• 會 磾3這
.,.. .
責 'tro 夤 0 ~一 磾缸鴴
***** 画紅n
會*含*.台*.**"* . 画. ., ,
為何會這樣呢?因為 MT4 設計時,就是將每一個貨幣對以及對
應的時間線圖都當成物件 (Ob」 ect) 。所以, MT4 的終端 (Client 端)
與 MT4 伺服器端 (Server 端)只是傳輸數據資料 (Data) 而已,並
無傳輸任何線圖或圖形。所以我們可以很清楚理解 MT4 的程式為何
如此小,且系統執行起來並沒有非常占空間,所以我們一旦將線圖
越開越多時,電腦系統負載才加大,且記憶體越吃越多,原來每一
個 MT4 的貨幣符號線圖都被定義成 一個物件 (Ob」 ect) 。
int OrderSend (
string symbol, II symbol
使用者必須知道的幾個
int cmd, II operation
double volume, II volume
double price, II price
int slippage, II slippage
double stoploss, II stop loss
double takeprofit, II take profit
string comment= NULL, II comment
int magic = 0, II magic number
MT4相關知識
_
91
MT4 程式回測真正的功能
Strategy Tester
$ \!l"'•'•- , u. 卫 I> ' tt, E、 iB . l!. 比 ~- 0 - 四 - ,, .
v-,.,,> -
,....,._一
`示 st,p
~
. . . ~
'心
這項功能有沒有用呢?
筆者的回答是:「如果是測試程式的『未來績效』,恐怕沒有
多大的參考價值,但如果是用來當成『程式除錯』功能,很有用處」。
「歷史回測績效」真的可代表未來的績效嗎?
- 我們知道,任何的程式做績效回測 一 定要有足夠的歷史數據,
同時,也要有精準的價格資料,但是在外匯市場裡,這種要求,其
實有點奢望。主因在於,每一家的外匯經紀商能提供給你的外匯歷
史資料幾乎都是不完整的。即使是技術開發者,想要拿到以 Tick 為
單位的歷史報價資料都有些困難,因為大部分的經紀商即使有保留
以 Tick 為單位的歷史報價資料,資料的期間都不會太長,三個月或
料」,但是因為每家經紀商的外匯價格在報價上會有些許不同,即
相同。例如,拿 A 經紀商的歷史報價資料去測試程式,然後拿此程
同「回測的績效」呢?
而大部份的投資者所下載的報價資料通常如何呢?通常都只是
使用者必須知道的幾個
其失真的程度真的非常大。在我們工程上有所謂的「量化誤差」
交易程式 EA 的績效,其實是是一個嚴重的迷思。另一個迷思是,
• 執行回測,那也僅僅讓程式吃進「靜態」的歷史報價資料,這跟把
程式直接套用在「動態」激烈變化的市場,其結局依然不同。因為
不同點不僅僅在於「資料」本身而已,同時還牽涉到市場滑點、浮
動點差、網路連線、執行速度、成交位置等等非常多項目的不確定
因素。因此,許多投資者依賴回測績效來採購市場上販售的自動交
易程式,到最後還是虧損收場,其主因就在這裡。因為這種績效回
測的「實際參考價值」真的是有待商榷。
_
93
這項功能對於程式開發人員來說,用處極大,只不過用處並不
支援很差,講難聽一點-- 幾乎沒有太多的除錯功能。一般工程上
怕會讓交易者付上龐大代價。令人更痛苦的是,這種邏輯錯誤當不
出現在「測試的市場清況」之下,很難察覺出來,但當察覺出來時,
損失恐怕已經造成。
勝於無。所以,請所有投資者要認真思考,「歷史回測績效」真的
可代表未來的績效嗎?外匯投資者如果真的認為歷史回測績效真的
就是未來參考的績效,恐怕在實際交易時,期待跟實際會有很大的
落差。
..
at
MT4 Build 600 十之免費交易
系統跟指標
自動交易系統思維
在任何的金融商品的交易平台裡面,自動交易系統是系統設計
者思想、理念的濃縮,是系統設計者思想、理念利用邏輯方式的物
化表現形式。而自動交易系統的設計模式,其所引領的思想在此簡
稱「投資哲學」,是交易系統的靈魂和核心,其表達了系統設計者
對於投機市場的「世界觀」。有了正確的投資哲學是設計交易系統
的前提,將投資哲學運用於市場交易實戰是發現與表達的過程,該 MT4
過程是將「世界觀」轉化為「方法論」的過程。
Build
60
在外匯貨幣市場裡,其所顯現出來的投資哲學比起其他金融市
空之免費交易系統跟指標
場更為明顯;而一個交易系統最基本的品質是應該要具有正確的投
資哲學。一個交易系統的投資哲學如果存在邏輯錯誤和明顯的安全
• 漏洞,那麼投資者應當放棄使用它。交易系統所表達的是一種的思
維性質偏向社會科學的概念,它並非是少數人掌握的真理,它僅僅
是設計者智慧利用邏輯來表達概念的輸出,其都屬於「搏弈論」的
範疇,也就是都存在機率統計以及勝率等等相關概念。
交易系統的穩定性
一個交易系統的穩定性,通俗地講,就是它具有高度穩定的存
活能力和穩定的獲利能力。通常一個交易系統的穩定性具有以下幾
個方面的涵義:
_
95 ,
1. 該交易系統可以生存於各種市場,如股票市場、期貨市場、
外匯市場等等。
2. 該交易系統可以生存於各國市場。
3. 該交易系統可以生存於各種品種。
4. 該交易系統可以生存於各個歷史時期。
5. 該交易系統可以捕獲所有的原始波動。
而一個交易系統的穩定性的度量指標有:勝率、凈利潤、總虧
損、強制平倉盈虧、強制平倉筆數、總交易次數、平均年交易次數、
盈利交易次數、虧損交易次數、單筆最大盈利額、單筆最大虧損額、
盈利交易平均每筆盈利額、虧損交易平均每筆虧損額、盈利交易平
均持有時間、虧損交易平均持有時間、每次交易平均收益率、最大
浮動虧損、平均每筆凈收益等。在上述穩定性度量指標中,「勝率」
和「每次交易平均收益率」最為重要。
如果設計的交易系統在實際運行過程中其收益率概率分佈呈不
規則分佈,那麼這種交易系統是一個不穩定的系統。一旦使用其指
導實際投資必將引起投資業績的不穩定性,其直接表現就是投資業
績大起大落,作為職業投資人來說,這顯然不是我們所要求的 追
求長期持續穩定的獲利是衡量投資人是否專業的判斷標準。而現在
市面上流行的自動交易系統其往往斷章取義,用局部的顯著性代表
了全局的普遍性,誇大投資業績,一旦投資入實單帳戶就會很快暴
露出風險,更有甚者,某些交易系統會讓投資者的帳戶虧損直到歸
- 零才停止。這都不算是穩定的自動交易系統。
MT4 Build 600 十之免費交易系統 EA
2 - 12 。
....,,.._., 一一............
.'-。~... 蛐~mn,.,,_,..,,,,,,,T,_n,,
_,,..._
_ _ .,,_..,_O.U•""'•-•-,__.,._
....囑
......,,......
'°'"'"'
.,
.......一"'-""""'-""'""""• ":>!亟~-_........_.. 呾~ .... ·-g;,,
'°'"''鴯
"'"""
,,.,,,,,,
,•,llMIII
.
.....,,
·--UL.
···"""'" . . . .. _,.._ ..•------,..
d_. .. .,.,. ._,...,•._.....,,. ""
~、 . . """""
..,,,....,,.,_.....,.,.,,_,_的圖, '- . -
電一一,卹 L . 鄘這,.
MT4
, <, <, " <,
.-....---·-c,
-~"'缸"'-·--''..._ 嘈- • • • • ,, .,,,,,,.
` 昞-加~ ""'-'一'"'"''"''-'"""'一 d 面心, . . . . . . . . . . . _ . 一一..., eoo<>< """'-"
. . . .和下
鯽L 懾........... "'...
_,,.._.,_一曰-~·-·'"'一一 "''-+4-••~·迅庄-一"'''~屮·~""""蘸·-----~ ~····
導匾.. ,........
賣
. . . ,,,,
`'"蛐3
如s 唧
Build
· .""'--一
. .. ,,_,""
蠹 ----""國
-
-··--·---·
- .-
, ,d -..•
, , . _, 岫""'-'••汪
.. d治"
, . _ ,_ _ " '""'"'·""
--
氬比"""'•,_•__,_.._,..-'""' "'-•-w晶諴-----·~
-
••••
•.•
. ..•.•
- - • -~tUL
,, '°"""
...,, -
令
""'吟譯
,.,,.,,.
lR鴴 ,rn•
60
0十之免費交易系統跟指標
上面可以很清楚看出, MT4 平台還提供使用者 Rating 排序 。 在
筆 者的第 一 本 書 裡提過,過去整個外匯市場有商人直接將網路下載
於商業目的,例如冒名者向投資者索取佣金等 等這類的信譽風險 。
_
97
資者幫助極大,可以輔助投 資 者判斷市場方向 。 圖 2-13 即是 MT4
.,,.,~=--- •••••
,......_.,
,矗 ...,... _
......平反止咋·-·
......_.,. . .,._
0 . - . 寧- ·
""'""'呼....... ..
...潯·--
~-......
一 . ......
,_. - - -函...
. .- . . -.. ~---°"---"'-- 叩 L _ .....
令會...
.....
•• 令`^
""'"'~
""'懦 m
""'Ol f l
圄鷓
•
.
w..e>.JC~""昌 -Jh> r1-H-
,珈齒面叫 嘀--晒酬`國面·-鳩
的訊h 「 ,.., ,__岬--唧藏h 匾. ,__
濱"""
遑
M ...... 一--~..
一·=-
- •• ___ 正., .,,,<J-J,O已-""'~"'" " "'。氬-
.. """"
•••••
..... 會.. 一"
國山止启
這.,_,,
••••
.• *• * "'""·"
。血,.
. . ,.,,._..,....,.,,.,-,.
這毋... 己
""''這
砌'"""'
• _ , _ , , . , ,,. • ........... _ , . ,_.,.., 圖 ,.,xu tl cc•---cr••、 . .. wcu
• ~,-,o, ..wo.ua,'"'•"'~'-""''-~".._.....,,.m,....,,.,. ,_,,
. ..,_•.,,.,,_, .,,..,,.,,...,a, •••••
-
. `"`罈`函-` 鴯•-.C .L ..ll 」,..,.._ 一==- 直鳳,. 鸕
,.,,.,這
` 一 ~.-.-.10 严
- - - ~ ~ , . . .心
伍,`面心......國..
1比'"''""~-·....... ..,..,..,,..,_, •....,.
邱... 一·如~`'亟硒中心而血,.,,.
由口
..........了 o• :•:·..
• • • • • " "" "
套息交易策略
The market, like the Lord, helps those who help themselves. But unlike the Lord,
the market does not forgive those who know not what they do
交易市場就像上帝一樣,翌助那些自助者 。 但是和上帝不同的是,交易市
場不會原諒那些不知道自己在做什麼的人. 。
一華倫· 巴菲特
示
--~--
J
..
套息交易策略概念及介紹
「套息交易」所產生的蝴蝶效應
2008 年全球金融海嘯發生前,類似於「蝴蝶效應」從亞馬遜流域到
融史上的一個事實。
實際上,套息交易的蝴蝶效應還遠不止於此,最初套息交易只
能跟隨外匯市場的波動變化而被動地獲利,像蝴蝶順應風向拍動翅
力,直接表現就是套息交易的建倉與平倉,往往推動日元走勢出現
顯著的反覆震蕩,甚至不能排除日元劇烈漲跌與套息交易的關係。
從這個角度來看套息交易,此蝴蝶效應可能已經完成了從亞馬
重虧損而離開市場,但套息交易在未來的蝴蝶效應仍然可能繼續演
- 變。在這種效應推動下,外匯市場出現的 一 個顯著不同於歷史傳統
的特點就是 外匯交叉盤越來越受到重視,尤其是日元對歐元、日
元對澳元和日元對加元等交叉盤,其走勢變化甚至要領先於美元直
盤走勢,並使全球外匯市場的結構和空間出現明顯變化;甚至,套
息交易對於推動非美貨幣之間的交叉盤走勢也有顯著影響,這可能
促使全球外匯市場的結構和空間逐漸發生變遷。
正因為套息交易從產生發展到現在的不同層次而顯著的蝴蝶效
應,外匯市場也因此受此影響而展現的一種特殊投資模式的樣貌。
所以,套息交易其實也是全球金融市場演變下的產物。
套息交易的基本概悆
「套息交易」又稱為「息差交易」,顧名思義,就是利用兩種
套息交易策略概念及介紹
利交易」的一種。
在金融市場上的「套利模式及策略」其實非常多種,有些套利
策略必須要了解很深的「數學運算模組」以及「機率統計」,這種
需高深數學的套利策略通常是「國際金融機構」(如大型投資銀行)
會重金禮聘數學專才為他們設計出實際可用的套利模式, 一 般小額
` 資本的投資者比較不容易窺其精隨。如股市,最簡單的就是 ETF 跟
期貨選擇權的套利,如黃金與石油連動的套利。就外匯而言,套利
交易除了「套息交易」之外,其方法跟策略千奇百怪且百家爭鳴,
且套利模式千變萬化,方法非常多,例如有三角套利 (Triangular
除」就知道該如何執行,其中之「套息交易」大抵是世界上最容易
了解且簡單的套利模式。
_
101
「套息交易」所涉及的「息差」,並不限於貨幣與貨幣之間的
「高低利息息差套利」。所有可用於借貸或出售的低利率金融工具,
並將其借貸來的資本用來購買具有更高利率的金融工具均可稱之為
「套息交易」。例如,假設你在台灣銀行借款一百萬元,其貸款利
率是每年 2% 。然後你將此借來的錢,到中國大陸去購貿同等價值
一百萬台幣的中國債券,而假設中國債券年息是 5% 的話,雖然你並
沒有實際出-毛錢,但卻從中套得 5% - 2% = 3% 的年息息差,這
也叫做「套息交易」。
同樣的,在貨幣的操作上就是「借低利息的貨幣」(賣)然後「存
入高利息的貨幣」(買),高利息減低利息的息差就是套來的利潤
來源,不過有個前提,就是從借款到還款這段期間,兩國貨幣的兌
換價值都沒有產生波動才行。以外匯保證金市場來說,套息交易穩
定獲利的息差是迷人的糖果,但瞬間的振幅跌價卻是致命的毒藥 。
我們可以先從前幾年的外匯市場談起。
慘烈的一頁:日圓套息交易史
裡,不得不聊一下轟轟烈烈的「日圓套息交易史」。
在還未發生「次級房貸」及「金融海嘯」之前,全球除了日本
羅斯對她們統稱為「渡邊太太」)不僅拿私房錢還向銀行貸款來投
入外匯市場做「套息交易」。數量龐大的「渡邊太太」和國際投機
客似乎有默契地每天利用日圓來買高息貨幣,以致於使得日圓幾乎
太太」們加上國際投機客的力量把日圓越推越低,以至於當時連歐
洲央行總裁都出面對這些「渡邊太太」們喊話,自此開始「套息交
易」就跟「渡邊太太」產生市場效應上的聯想。而當時引發的套息
交易之蝴蝶效應,對整個國際外匯金融市場產生超乎想像的巨大的
影響,因為這個蝴蝶效應而產生了貨幣不應該出現的相對應價值。
套息交易策略概念及介紹
因為槓桿放大一百倍,所以外匯漲了 16% 是很可怕的一件事,很多
交易者在短短幾天之內就翻了船,被斷頭出場。當時那些只會做套
息交易的日本主婦「渡邊太太」有 一 半以上虧光所有積蓄;而接下
來的金融海嘯,更是令許多做套息交易的投資者血本無歸。所謂「成
也蕭何,敗也蕭何」。
而 一 手將日幣推到低點的「渡邊太太」們,本身卻也是此套息
交易的最大受害者,金融海嘯期間的日本「渡邊太太」們幾乎都是
賠錢收場,造成了很多家庭因此破碎及社會問題。除了「渡邊太太」
們之外,大部分的套息交易者在短短幾天之內就翻了船,被斷頭出
場。所以, 一 般的投資散客即使懂得利用息差來套利,但大部分都
是只看到利潤而忽略了風險,因此 一 但市場反轉很容易被市場洗出
場。
_
103
套息交易的風險控管
做套息交易的人首先要先知道該貨幣的年/月震幅到底是多
大,需要有多少資金在裡面才不會為了賺利息而被市場洗出場,這
些都是需要先做計算的,因為外匯保證金市場跟 一 般實體 一 比 一 的
貨幣買賣不同,外匯保證金是有槓桿倍數的,風險的控管更是需要
小心。因為套息交易是執行賺利息且方向只能漲不能跌(或只能跌 壘
接爆倉了。同時投資者在做套息交易時必須先了解各國貨幣的利息,
家通膨高的貨幣進行交易。而市場上,使用澳幣套息交易也是很熱
門,這些利息差異讀者都可以從查看自己的外匯經紀商的貨幣日息
其實真正的含意是「買英鎊同時賣同等英鎊價值的日圓」。但如我
們執行「賣」的指令時,其實真正的含意是「 賣 英鎊同時買同 等 英
鎊價值的日圓」。這在外匯套息交易的觀念裡面很重要,因為投資
者必須清楚知道他使用哪個貨幣來套哪個貨幣的利息 。 我們來看以
-
二個圖 3-2 是 EUR/JPY• 第 三個圖 3-3 是 GBP/JPY 。
以下是澳幣兌日圓週線圖 :
AUD/JPY 週線圖
以下是歐元兌日圓週線圖 :
套息交易策略概念及介紹
EUR/JPY 週線圖 ----z 二一- z
_
105
以下是英鎊兌日圓週線圖:
GBP/JPY 週線圖
以上這三個圖都明顯顯示套息交易的起漲點約是在 2002 年前
後,在 2007 年達到市場的最高點,然後在 2008 年雷曼兄弟破產事
件開始起跌,全球金融海嘯發生後如高空跳水式狂洩。假設套息投
隔夜利息
基本上外匯保證金交易,是以槓桿放大方式買進與賣出外匯
當你買進一種貨幣時同一時間就是在執行賣出另一種貨幣。例如說:
套息交易策略風險與實務操作方法
美金),存入澳洲銀行(買進澳幣)」。所以會產生你必須付利息
給美國銀行,同時收到澳洲銀行的利息。這就是所謂的「息差」!
跟日本銀行借錢存到澳洲銀行。假設日本的中央銀行的借款利息是
利息」來的高。每家外匯經紀商所提供的息差不見得一致,但是基
本上差距不會很大。
_
107
穩定的套利模式:利用隔夜利息
「隔夜利息」是每天(台北時間)凌晨 3, 4 點的時候計算,也
就是亞洲盤開始,美國盤結束時計算。隔夜利息,其實是每日都有
給息(不論正負)的,但是在外匯市場,週六與週日是沒有交易的。
每年年底的耶誕節期間也有許多外匯經紀商與銀行不交易。因此,
為了要填補不交易日子的利息,通常每週三的利息會多三倍,也就
是說,每周一到周五給利息(付利息),但是每周三(周四的早上
可以看到入帳),必須給(付)三倍的利息,因為此三倍是用來補
周六日沒交易時的利息,所以如果平日利息是 3 美元的話,週竺會
變成 9 美元。因此,也有些套息交易員,只挑週三做套息,其他日
AUD 」,這個時候若可以平倉出場也可以收到不錯的利息收入 。在
外匯交易的應用上,這種策略就叫做「套息交易」。
關於每日的利息,我們可以到各個外匯經紀商的網站去看,
他們每天都會公告貨幣買賣的正負利息。穩定的套息模式,其實比
起銀行定存或某些基金來說,獲利穩定,風險也不一定很高。例
少是 14.6%' 但風險卻是相對上比較低。因為如果該貨幣都是在某
一 幅度中震盪的話,其實使用息差來對沖,風險可以被控制在 一定
的範圍之內。
.. 外匯經紀商貨幣對鎖之「套息套利」
在外匯市場上,當然也有些外匯經紀商是不提供任何息差的。
例如 Marketiva 及 Oanda 等,他們不 喜 歡交易者做息差交易,因為
息差交易通常交易量少,而若沒有交易,他們就賺不到 Spread 的
就可以很穩定的賺利息。然而有讀者曾經提出如下之質疑:
「請問這種不同系統商因為計息方式不同,所產生的無風險套
利環境,應該是一大票人都會知道吧!如果我用 AUD/JPY 10 倍槓
上?只放 10 倍槓桿也不可能在沒有查覺的情況下斷頭。就算是斷頭
的部份,只要馬上平倉也是沒輸……那麼大家為什麼還要在市場上
套息交易策略風險與實務操作方法
沖殺呢?」
這對初學者來說是-個好問題。確實是如此:「如果套息交
易這麼容易又這麼穩定,那大家都賺錢了!」然而實際上,在外匯
市場裡,有時市場的波動是非常大的,而利用兩個不同的經紀商做
鼻 100% 的對沖鎖單,雖然可以鎖住「利息」,但是市場的波動卻是會
讓你嚴重虧損的殺手。
_
109
善用連動關係的交叉貨幣
同時假設市場是處於某一個箱型震盪,這時我們可以快快樂樂收取
利息。假設突然澳洲政府無預警宣布升息,市場突然瘋狂買進澳幣,
一是 AUD/JPY 開始漲多回檔開始回跌。
利息需要「時間累積」,但市場的瞬間漲跌恐怕沒五分鐘就把
辛辛苦苦累積一整年的利息給吃光。所以如果該貨幣振幅很大的話,
很容易某一個帳戶雖然賺錢,但另一個帳戶卻因為嚴重虧損而被斷
頭。所以要執行此種兩個外匯經紀商貨幣對鎖之「套息套利」要特
別小心。這類的兩個經紀商鎖單對沖套息交易要慎選貨幣,若投資
者真的有興趣,可以挑選有「連動關係」的「交叉貨幣」,例如
關係的交叉貨幣振福比較不會像直接貨幣來得直接且巨幅。在不使
用過高的槓桿之下,獲利會比較有保障。
..
實務手動進出場操作
首先,我們在談「套息交易」的實務進出場操作之前,我們先
來看哪些貨幣是值得我們關注來做套息交易的。
一般在我們決定執行「套息交易」之前,我們都須先知道哪個
單」或「賣單」才能套到利息一一當「買單」是正利息收入則執行「買
單」,反之,則執行「賣單」。因此在下單之前,就必須到外匯經
紀商的公開官方網站去査詢當天的利息 (Rollover/Swap) 是多少。
為何需要每天去査看呢?因為每天所公告的利息都是不一樣的值,
同時周三晚上的值又會是平常的三倍之多。了解每天的利息變化也
是「套息交易」投資客所需知道的最基礎功課。
套息交易策略風險與實務操作方法
基礎功課:了解每曰利息變化
我們舉以下兩家外匯經紀商公司的例子來做說明:
理解且一目瞭然。不過讀者需知道,這些利息都是以一個 Lot 為單
_
111
個 Lot 為 - 2.020 Pip• 而執行「賣單」時才是正利息,每一個 Lot 為
+ 1.280 Pip (參考列表 3-1) 。同樣若以 FXDD 的 EUR/AUD 執行「買
單」時是負利息,每一個 Lot 為 - $50.30• 而執行「賣單」時才是正
利息,每 一 個 Lot 為十 $40.03 (參考列表 3 - 2) 。由外匯經紀商公告
的當日列表中,我們就可以來選擇哪些貨幣的「買單」或「賣單」
可以用來執行套息交易。
fo 元 1gn Exchang e
得考慮以「買單」來執行套息的貨幣 :
.. AUD/SGD: +1.17
或「賣單」來執行套息的貨幣:
尸:-[=一
EUR/AUD: + 1.28 Pip
:oOO-;290245ooo175-oooooo-
BUY POSITIONS
-34211
.,..,
-1537
+, -3630
-'--_:- +t ·1155
。 OO
4003
套息交易策略風險與實務操作方法
。 OO
-- .. 一
.757
。 OO
~ -
-- -_ -~
-,.-
·1155
.3 以
-1136
U
:
-1225
.. ..,
三
-2070
ooo-oOO: 。 00
-583
....
S
1268
·-
1118
060
慮以「買單」來執行套息的貨幣 :
AUD/JPY : +$27.65
_
113
AUD/USD : +$27.3
AUD/CAD : +$22.86
或「賣單」來執行套息的貨幣:
EUR/AUD : +$40.03
USD/MXN : +$12.68
USD/TRY: +$11.16
讀者應該已經看出來,這兩家外匯經紀商公司: Alpari UK 與
FXDD 不僅貨幣組有差異,連即使是相同貨幣的利息都是不一樣的。
同時因為每家外匯經紀商公司對於提供貨幣交易的貨幣對以及公司
場套息,還需要考慮該貨幣的點差狀況、交易流量狀況,留意是否
容易產生滑點或重報價格的問題。
手動套息交易策略:相對安全道場點
那「套息交易」是否只要決定貨幣組,並決定到底是該買或該
賣的方向後,就可以隨便進場買多放空呢?如果投資者是以這種心
態來執行套息交易,那投資者跟日本廣大的「渡邊太太」們其實並
沒有什麼不同。因為即使是最簡單的「套息交易」,仍然是需要策
略。
如果讀者想以手動交易方式來執行套息交易,筆者提供以下個
.. 人的簡易方法給讀者參考。執行「手動套息交易」的方法,就一定
得考量市場的高低點來做為「相對安全進場點」,主因是「套息交
易」是單方向的,要嘛就是買,不然就是賣,買就期待能買在相對
低點,而賣則期待能賣在相對高點。這樣的話,市場反向時對帳戶
所影響的風險係數才不至於太高。
l. 首先,打開一個想執行「套息交易」之貨幣的 4 小時線圖或
即可,不用太刻意計較,請見下圖 3 -4 。
套息交易策略風險與實務操作方法
因為 AUD/USD 必須是下「買單」才能套到正利息,因此,我
這兩個指標條件成立時,就可以進場執行手動的「買單」。只有第
一筆進場的「套息交易」需要靠這兩個指標輔助,之後的手動交易
則不再需要任何指標。
100 點,不設停損點。
_
115
」
3 當市場與設定的方向(以 AUD/USD 為例,就是希望市場是漲
的)相反,則每當市場跌價超過 50 點時,則再次手動進場買大
設停損點。
4. 當市場一直處於跌勢,則請一直重複第三項的步驟。因此,當
以上的「手動套息交易」應該是簡單明瞭,即使對初學者而言
應該也不至於太困難。「套息交易」的好處就是當市場與你的倉位
認知,「套息交易」的貨幣在市場反轉時,非常容易產生逃命式瞬
間跌價(或瞬間漲價),這種瞬間逃命波式的價格波動,非常容易
造成來不及反應而爆倉的結果,此風險不可不防。
-
ID
套息交易策略之程式交易方法
在前兩個章節裡已經將「套息交易」的概念、實務操作方式等
做了些篇幅的介紹。從基本概念,到實際做法,指標套用,風險控
管,下單方式等等都已經向讀者說明過了。因為其概念簡單且在實
務上的操作也不難,且套息交易並不需要做複雜的數學模型,即使
是初學者也很快可以上手。
但對於沒有時間坐在電腦桌前盯盤的投資者而言, 一 套可執行
且具備上述幾項原則,如等距下單、風險控管等等功能的「套息交
套息交易策略之程式交易方法
易自動交易程式」就變得很重要。
了解套息貨幣的方向
首先,當我們要使用套息交易時,我們一定要了解套息貨幣的
• 方向,也就是說我們必須知道是「買單」還是「賣單」是正利息。
因為不是使用手動操作,所以,在使用自動交易程式之前,必須先
例如,當我們將「套利自動交易程式」套到貨幣圖表之後,
_
117
Only Long ; 而圖 3-6 是套到 EUR/AUD • 所以在 Common TAB 的
Positions 選擇欄必須選為 Only Short 。 當設定完成以後,「 Meta Trader
4 系統」就會依照使用者的設定來執行「強制性單方向」的開倉允許,
也就是說即使成是邏輯合乎條件,系統也僅會單方向開倉 。
一 """
"""
曰 _ou,,,,殛
I , , 」~I I' !1
wl111h1
/~,iJI~,I' .I ,证o.~~o.!
1
I ""' I •~ 転`
s:
。
tt' Ma e Tr~d: DOWN
c<:urrent Price:0.75869
-
設定單方向的套息交易
接下來,我們要讓程式執行的是「套息交易」令程式自動產生
如本章第二節所描述之手動且有一定點位差距之下單模式,因此必
成以後,「套息交易自動交易程式」就會依照使用者的設定來執行
「單方向的套息交易」。
套息交易策略之程式交易方法
此「套息交易自動交易程式」的功能基本上還是有理論基礎,
.例如進場方式還是得依照程式邏輯條件成立才能進場,在上一篇當
中是建議使用 Stochastic 指標與 Bollinger Band 指標都成立的前提下
才執行下單,目的就是讓進場點位可以處在相對的安全位置。例如
只做買單交易有正利息時,希望可以買在低點,只做賣單交易有正
利息時,希望可以賣在高點,因此程式邏輯啟動就是以 Stochastic
_
119
GridDistance 可以簡單的算出整個風險的數值。其算法如下:
第十層以後(第十一層)終止開倉。所以以上的設定
的最大風險控制為,當市場反向瞬間跌價(或漲價)高達
式」才會停止開倉。這時「套息交易自動交易程式」的總開倉數為
右。
如果市場真的是瞬間反向且讓程式瞬間開到套息交易的第十
層,程式將終止開倉,並等待市場回升,在等待市場回升期間,因
為是單方向的正利息,所以,每日可以賺取息差。而停利點的設定
是每一個開倉部位起算的 100 pips 點利益。因此若全部開滿 10 個部
位,並全部停利出場,則有 0.01 X 100+0.02 X 100+0.03xl00+0.04 X 1
00+0.05 X 100+0.06 X 100+0.07 X 100+0.08 X 100+0.09 X 100+0.1 X 100
..
= 55 Lot/Pips 利益,所以是 550 美金的利益,以帳戶資金為 5000 美
金來計算的話,那就是 11% 的報酬,這是不含每日利息,若加上利
息,利潤報酬可以再增加。
耐心等待,以及避免高槓桿
這種模式交易的特點是,帳戶容易出現高額的浮動虧損,但囚
為每日都有正利息入帳,所以在市場波動期間,對投資者比較不會
產生太大的心理壓力,但因為有可能市場是與下單方向相反的走勢,
因此此類策略都需要時間等待,同時,此策略也不建議使用過高槓
桿,以 20 倍以內的最大槓桿使用率是比較安全的。
套息交易策略之程式交易方法
_
121
馬丁格爾策略及變異馬
丁格爾策略
一阿爾伯特 · 愛因斯坦
噌
`. --- -!'~·
\,
~」
嶋
馬丁格爾策略概念及介紹
基本概念跟機率公式
策略,這個方法其實早在十八世紀發源於法國之後沒多久時間就在
歐洲廣為人知,理論上這種策略絕對不會輸錢 。 這個策略很簡單,
贏 一 次,就可以將前面所虧損的金額全部贏回來並多贏第 一 次所押
的金額。
讓我們用實例來說明,假設我們來到澳門賭場,有 一 個只能押
目前世界上有 一 些賭場是不太歡迎賭徒使用此方法,但懂機率又不
貪的人,常常使用這種方法進賭場去白吃白喝同時順便觀光旅遊。
不過這個方法絕對不是穩贏不賠毫無風險,它的風險在於:有
.. 可能你還未贏到那「押對」的一次,口袋的錢已經虧光 。 比如以上
所以此方法有一句名言 : 如果你有無限的財富,你就永遠不會
因此,我們可以來算一下數學跟機率就可以看到一些有趣的現
馬丁格爾策略概念及介紹
量,以 n 來代表總共能夠虧損的次數。所以你總共虧損 n 次的機率
是 q" 。當你把你口中的籌碼都虧掉了,那表示你總共虧損的金額是 :
n
L B·2i-l = B (2n - 1)
i=l
的利潤為 :
所以,以上面例子來做說明,你會連續虧損 10 次的機率為:
_
125
最怕「不斷一直走趨勢」的市場
然而馬丁格爾策略可以適用於股市/期貨/外匯嗎?基本上是
可以,但天底下沒有白吃的午餐,大部分交易者不喜歡使用這種策
略來交易,原因是口袋不夠深,無法承受連續數次的累計虧損。筆
者也不建議初學者使用此策略做外匯交易,因為如果僅單獨以此理
論來做外匯交易,虧光戶頭裡裏銀子的機率很高。
主因是我們知道此方法是以「機率」來嬴過押「大小」的賭盤,
但在外匯市場裡,我們可以把「大小」看成是「漲跌」嗎?絕對是
不行的。因為賭盤押大或押小,它不是「連續性」,它不具備有「連
纘性」的特質;而外匯或期貨市場卻具備「連續性特質」。比如說,
在賭盤即使虧損也僅僅是押在賭盤上的籌碼,它並不會產生「擴大」
的效應;但是,外匯市場、期貨市場等等,是以「部位」來計算盈虧,
它會隨著市況的漲跌而產生「擴大」的效應。
熟悉外匯的人都知道,市場的「漲跌」不是賭大小的機率問題。
使用馬丁格爾策略其實最怕的就是當你進場做「買」時,市場卻是
一直不斷的下跌,或是當你進場做「賣」時,市場卻是一直不斷的
上漲,這都是時常發生的事。依照馬丁格爾理論,因為到後面會越
押越大,所以虧損到後期非常有可能將戶頭的資金全部虧光,這就
是由於市場連續性「擴大」的效應所產生的結果。所以由此可知,
馬丁格爾理論最適合用於「不斷一直走震盪」的市場,反而最怕「不
斷一直走趨勢」的市場。
外匯操作模式
.. 我們可以來計算一下機率,不管是何種商品,一般的商品交易
大概會有四種市場狀況,就是「盤漲」(震盪上漲)、盤跌(震盪
下跌)、大漲(趨勢上漲)、大跌(趨勢下跌)。我們假設這四種
市況會發生的機率都一樣,所以它們出現的機率就是各佔 25% 。就
外匯市場來說也是一樣有這四種情形。馬丁格爾策略在「盤漲」跟
「盤跌」的市場裡都可以獲利出場,就如同押大小的檯子一樣,開
幾次「大」後開「小」或開幾次「小」後開「大」,使用馬丁格爾
策略都可以獲利出場。但是在市況是大漲(趨勢上漲)或大跌(趨
勢下跌),只要是押錯邊,如趨勢上漲時卻執行馬丁格爾策略的
「賣」,或者趨勢下跌時卻執行馬丁格爾策略的「買」,這時你進
入「對的」市場的機率也是各占一半。所以,使用馬丁格爾策略在
跌」十「大漲」,或下賣單時的市場是「盤漲」十「盤跌」十「大跌」,
場是「大漲」。
馬丁格爾策略概念及介紹
同時,只要一進入「輸的機率」的市場,那帳戶裡所有的錢虧
裡所有的錢都虧光。馬丁格爾策略也被稱之為「金字塔型交易」
因此我們才會說馬丁格爾這種一直押下去的策略可能適合賭
場,但卻不一定適合外匯的貨幣交易。因為在外匯市況裡,某種貨
幣組合走趨勢時,連續漲或連續跌一整年都是很常見,不過,如果
仔細觀察,我們就會發現有些貨幣常常處在震盪趨勢,那就非常適
合馬丁格爾策略。
_
127
適用於長期處於震盪的連動貨幣
因此根據筆者的經驗,馬丁格爾策略要使用在外匯市場,一定
要慎選貨幣之外,也要搭配其他的策略一起使用才不會「被燙到」。
幣比其他的或幣組都易處於「震盪」的市況,而比較不常處於所謂
EURCHF/GBPCHF/EURGBP/AUDNZD
~ -凶_ , 。
從上圖來看,這四組貨幣也是最常被馬丁格爾策略愛好者所使
用的貨幣。然而,使用這四組貨幣下單有一個最大的問題,那就是
..
下單成本相當高。主因是幾乎所有的交叉貨幣的點差成本 (Spread
Cost) 都比直接貨幣高上兩倍或三倍的成本。
馬 T 格爾策略之退場機制
計 畫 ,以下是筆者的 一 些建議供參考 :
程式或策略本身需要有完整且考慮周詳的「資產保護計畫」。
例如,設定當你進入的市場剛好與你的程式是反方向趨勢時,當帳
戶虧損達到多少時可以停損出場。這點非常重要,因為如果不這樣
做,很容易會虧光帳戶裡所有的錢。
程式或策略本身可以在必要時啟動「直接對沖」 (Direct
Hedge) 。直接對沖的目的在規避反方向趨勢時的不斷擴大的虧損,
並且「直接對沖」的開倉數是須經過數學運算過的,此目的不是為
了獲利而是為了縮小虧損出場。
馬丁格爾策略概念及介紹
「每 三 個月不管獲利多少, 一 定要將利潤全部匯回自己口袋」。
保留最原本投入的資金。當所有匯回的利潤已超過原本投入的資金
潤。
這樣的機制,是針對應用馬丁格爾套利策略時,發生反方向長
趨勢市場時的資金保護退場機制。它除了能有效保障利潤之外,也
比較不至於讓自己的資金處於高度風險之中。
_
129
. .I
馬丁格爾策略風險與實務操作
方法
這節文章將討論套利交易的相關數學及機率理論部分的「方法 .
馬丁格爾理論
首先,我們先回顧何謂「馬丁格爾」策略。所謂的馬丁格爾策
一 些錢,這對夫婦發現如果這種情形 一 直下去,不久後他們將會破
產。最後馬丁格爾夫婦決定從此不管馬丁每個月賺多少錢,格爾每
個月至少要留下 一 塊錢,由此衍生出馬丁格爾策略。
乘上兩倍,一直到你的押盤贏 一 次,就可以將前面所虧損的金額全
部贏回來,並多贏第 一 次所押的金額 。
以下是使用數學機率所計算馬丁格爾策略。假設我們以 q 來
你手中的籌碼都虧掉了,那表示你總共虧損的金額是:
n
辶 B-i一 1 = B (2n - 1)
i=l
損了 n 次數,而你所能夠贏到 B 數量的錢,那麼你每一回合能期待
的利潤為:
一次賭注裡面,你所能期待的「利潤」為負值,也就是說其「虧損
的機率」會大於「獲利的機率」。
馬丁格爾策略風險與實務操作方法
若以實例來說明,假設我們拿 6300 元在澳門賭場玩美國輪
交易成本與典型啟發
_
為何這次舉的例子是以美國輪盤而非是押大小?且筆者舉的
131
例子是連續六次虧損而非連續八次虧損、九次虧損或者是十次虧損
呢?這部分跟外匯交易在程式設定上會有些許相關。
輸贏競爭,投資者在外匯市場裡投資,還沒決定勝負之前就必須先
之前的投資成本也必須含在計算裡面。也就是說,外匯投資者在外.
為什麼是「連續六次虧損」?
另外,為何舉「連續六次虧損」為例子呢?因為「連續六次虧
損」是最被賭徒視為「不可能機率」的一個臨界點,這個在心理學
所算出來的機率;然而,如果我們再深入算下去,你會得到一個很
意外的結果。
當我們進場賭 73 次的時候,你會在某個點上「連續六次虧損」
策略來押「美國輪盤」,在押「美國輪盤」 73 次當中有一次會超過
「連續六次虧損」的機率是 50.3% 。但馬丁格爾策略是只要超過「連
續六次虧損」的情形發生 一 次,你就破產。而且,當你押美國輪盤
變成 91.1% 。
但是讀者請注意 一個重要的事項,馬丁格爾策略是只要發生「 一
次」高於你所能承受的最大虧損 , 你就破產;所以你玩越久且連續
性越多次,破產機率就越高。由上面的數學可以清楚知道,為何賭
徒只要進了賭場坐下來長時間與賭場對賭, 一般都是輸光盤纏而回。
而外匯市場或其他金融市場也可以被視為相類似情形 , 因為你是站
場成九輸家的機率相當高。
馬丁格爾策略風險與實務操作方法
那麼,賭客可以在賭場使用馬丁格爾策略嗎?聽說某些賭場可
能一開始就限制你使用馬丁格爾策略,某些賭場雖然允許你使用馬
丁格爾策略但卻限制最多你只能押六次(因為「典型啟發」)。所以,
若這是賭場的潛規則,那我們很清楚知道,賭場其實都知道賭徒所
知道的所有技巧。
凱莉公式
接下來我們來談「凱莉公式」。這個公式的目的是希望以機
率方式來算出最合理的投資金額來讓自己可以在長遠的投資下是個
「投資贏家」。
假設有 一 個押大小賭盤,贏了就贏回所押的錢,輸了則輸去所
_
133
以多少比率的資金來進行投資或押大小的賭盤。公式如下:
bp-q
f* = b
以上公式之:
• b 為賭盤上的淨賠率( 一 般是設賠率為一,就是 b = 1) 。
• p 為賭盤上贏的機率。
• q 為賭盤上輸的機率;它也等於 1-p 。
由上面的公式,我們假設有一個賠率是 l 比 1 (b = 1) 的賭盤,
因為 b = 1• 所以上面的公式就變成:
「 =p-q
bp- q
「= b ,=
- 也就是說,在上面這個賭盤條件下,只要你每次下注是低於你
資產總金額的 20%• 你就可以成為「長期的贏家」。
不過使用「凱莉公式」有 一 個條件,就是當 P 是 一 個負值時,
這個賭盤就變成不適用。
負值。例如,以「美國輪盤」為例,其賠率是 l 比 1' 所以 b = 1 。
就以上面公式套到「美國輪盤」來說,其結果如下所示。
bp-q
「 = b ,=
18 20 1
馬丁格爾策略風險與實務操作方法
「 =p-q= —--=-—
38 38 19
以上的 P 變成負值。
因此若以「凱莉公式」的建議,那就是「不要玩美國輪盤」
因為在這種條件下的賭盤你是無論如何都不可能成為「長期的贏
.家」。
同時「凱莉公式」對連續賭注的每一筆賭注事實上是設為一個
小投資額做建議,它不是產生遞增現象,而是平均分攤的模式,再
依照機率下算出來的結果,以最佳的資金達到長期獲利的效果。
成為長期贏家的資金管理模式
所以假設我們要利用「馬丁格爾」與「凱莉公式」在外匯上操
_
135
作,我們應該如何設計 一 個合適的「資金管理」來讓我們的程式可
以達到「長期的贏家」?
這時我們必須自行在「交易」上的「資金管理」上做很好的資
金保護的設計 。 我們依照前面「馬丁格爾」策略論述裡所談到的「典
型啟發」為「連續六次虧損」;因此,資金的保護設計就是以七次
「連續虧損」為基準。同時在傳統的馬丁格爾策略是以 2 /\n 為乘積,
當
x = lot
y = Multiplier (乘積)
所以
Level I = x
Level2 = xy
Level 3 = x/
Level 4 = xy3
Level 5 = xy4
Level 6 = x/
Level 7 = xy6
當達 到第七階時,就是「連續虧損七次」後所閩的總 Lot 數 為 :
x + xy + xy + xy + xy + xy + xy
由以上公式,當程式設定 為 :
x = 0.01 lot
y = 1.3 ( 乘積 )
所以
-
Level I = 0.01
Level 2 = 0.02
Level 3 = 0.03
Level 4 = 0.04
Level 5 = 0.05
Level 6 = 0.07
Level 7 = 0.09
當達到第七階時,就是「連續虧損七次」後你所開的總 Lot 數為:
0.01 + 0.02 + 0.03 + 0.04 + 0.05 +0.07 + 0.09 = 0.3 I Lot
若以「典型啟發」之「連續六次虧損」為標準,達到第六階時
沖下單層則設為第七層,就是以「典型啟發」理論做為基礎而考量。
馬丁格爾策略風險與 實 務操作方法
接下來就是討論應該設多少資金為我們應該投入的資金才能成
為「長期的贏家」?根據前面的「凱莉公式」說明,我們知道馬丁
格爾策略在任何的金融市場贏率為 75%( 盤漲、盤跌、大漲或大跌),
而輸率為 25% (大漲或大跌),因此我們下注的金額應該為資金總
金額的
bp-q
「 = b ,=
「= p - q = 0.75 - 0.25 = 0.5 = 50%
所以,為了成為「長期的贏家」,我們就必須設每次回合的馬
丁格爾交易資金必須低於「凱莉公式」的資金建議。以上面為例,
若為了達成「長期的贏家」,因為最低資金要求為 3000 美金,也因
137
__ _J
馬丁格爾策略程式交易方法
「馬丁格爾交易模式」跟第三章的「套息交易模式」有點類似, .
但「套息交易模式」只有單 一 方向,即有「正利息」的方向,而「馬
丁格爾交易模式」基本上是不考慮隔日拆款利率的利息,只注重交
易的匯差利益。
程式套用前之市場觀察
在執行馬丁格爾策略程式之前,筆者建議讀者需先對市場做出
略的觀察判斷,再來決定是否使用「馬丁格爾自動交易程式」,因
為馬丁格爾策略是「虧損加碼交易模式」, 一 旦市場走的是反向趨
勢,帳戶很容易因為這種越賠越下重單的模式而賠光帳戶的資金,
因為方向是相反的關係,即使帳戶使用最保守的資金保護也會造成
嚴重且巨幅的虧損 。 因此,「馬丁格爾外匯套利交易模式」只適合
在震盪市況下來執行,這是很重要的前提觀念。
..
EURUSD H1
nm
I 1-
I
·-·
曰..... _., __ .... 這., ___一 u一·-- --·-·· - 一.....
一 -
·-·
這,.一,_., ____嶋·-·---一 u•••=• 一 u這 2 一-·-·-
USDJPY H1
•=~m-,.·~n=m=
. II 巳
馬丁格爾策 略程 式交易 方 法
1'1/ 1
;••. ,__ ,....- -. . . ·--··--··-一 ·n•- u•- u••• ••-••-•••龜- ,. __ ,. __·-·-口--·-·這., ____ _
何指標都很難獲利,因 為 下單之後市場可能就反轉,使用指標預測
下( 端 看是 哪個貨幣 ) ,不 管 「下 單 方向」是對的或錯的, 這 種市
_
139
_J
況都會讓投資者腎上腺素直上飆高兼心跳加快,還兼人天交戰的心
理狀況 一 直不斷的衝撞自身。
「該加碼嗎?」(方向對的投資者會 一 直這樣興奮自問)
「該停損嗎?」(方向錯的投資者會一直這樣悔恨自問)
預測指標,或是馬丁格爾策略?
然後,當決定「加碼」或「停損」時,市場立刻反向迴轉,令「加
碼」者變成倉位虧損,令「停損」者賠在最高點。外匯市場常常老
是這樣在作弄著世界上的投資者。在這種市況之下,不管投資者所
套用的預測指標是如何的精準,如何的料事如神,如何的每押必中,
要在這種快速「上升下降」的市況獲利,看來實屬不易;不僅獲利
不易,甚至還可能被市場打兩巴掌。因此這種市況模型最適合的策
略其實就是馬丁格爾策略。
因此,若我們在這種市場波動模型的線圖使用「預測指標」
不管是趨勢預測、短線預測等等的指標,很容易下單之後就被反轉
的市況所停損出場。所以這種市場,使用「預測指標」的下單策略
非常容易虧錢;但對於這個市場模型,若套用馬丁格爾策略的交易
但若使用「順趨勢加碼」的交易方式,了不起大概就是「不賺
不賠」,因為「線型不夠長」,即使是有「移動停損」 (Trailmg
Stop) 拉保護停損點作為保護,但最後的幾筆「獲利加碼單」則容
.. 易在中途被停損出去,所以整回合下來,「不賺不賠」的機率比較
高,下個小節會介紹一下適合「順趨勢加碼」交易方式的市況模型。
「對的交易策略」套到「對的市況模型」
我們很清楚知道馬丁格爾策略只適合「震盪市場」,一但市場
轉向走「趨勢市場」時,所套用的程式必須要趕快下架,即使停損
也不要讓程式掛在帳戶上面硬凹。因為一但市場走「趨勢市場」,
使用馬丁格爾策略很容易只會讓自己前幾個月來的獲利又被虧損光
光,又再一次做白工的惡性循環。
筆者套用以下的兩個線圖來說明「市場波動模型」要對應到「對
EURUSD H4
''· '
"`' !
馬丁格爾策略程式交易方法
'' "" I '' ' .'d'' ,l·J
!
I
, J` ' -
Il'a,
,JT
` ,'
', '' ~!
'
叱
'L
二一二二
. ` ,. .. ' ·' U
'' `'`' `
' 1,' ,'
'', '
h', i.
t
一一 i
,
`
. ·. - ·u- - . -` - .u-. mu -. . .· - ·· - · - ` · - · - .· ` ·-
l
u u u "t
鷂
g B i g i 8 g mi i
_
141
USDJPYH4
•M •" "M 蠶蛐 U 曰- MM- • MO- P 鱸...鱸•- ■ M- ■ MPa , .. - •--- , . . 鱸. .....嶋·--- ....- ....- ....-·---·---...•~*
以上的這兩個線圖是明顯的趨勢線圖。因此,如果投資者套用
的是馬丁格爾策略,帳戶產生巨幅的浮動虧損或帳戶爆倉的機率很
高。因為一旦程式所下單的方向是錯誤的,馬丁格爾策略只會繼續
再加碼下單,而市況會令帳戶受更大的傷害。這不是程式策略的錯,
也不是市場的問題,而是做為一個在投機市場交易的投資者都需要
知道的一個重要觀念,就是「對的策略」必須套用在「對的市場波
動模型」,這樣獲利的機率就會顯得非常高。
馬丁格爾策略」,那帳戶所獲得的利益將會是非常驚人。這不是「程
式本身」有何了不起之處,只不過是套在合適的市場波動模型那當
.. 然就會獲利。
猜市況,不如挑對適合的貨幣
「對的策略」套用在對的「市場波動模型」,獲利的機率就
高。但問題是,沒有人能知道下一秒市場的走勢,所以幾乎是無法
預估在任何一個時間點的下一刻市場會走震盪還是走趨勢的市況。
在這種情況之下,筆者在本篇前面的章節文章中有提及,馬丁格爾
圖模型:
馬丁格爾策略程式交易方法
以上這四組貨幣對長期以來都是在一定逼間內震盪,這對使用
馬丁格爾策略的投資者來說,風險會比較低。
因為是一定的震盪區間,所以,我們只要將最大可能的震盪匾
間査出來,當投資者套用馬丁格爾策略時,在風險上就會相對低很
多,如圖 4-6 。
_
143
馬丁格爾策略 Excel 風險試算表
47
~
很高的機會可以順利出場。
有返折,這對使甩馬丁格爾策略有很大的優勢。
自動交易程式套用
我們已把馬丁格爾策略的基礎概念、數學公式、風險計算、貨
幣對選擇等等都做了的詳細的介紹,接下來就是自動程式的套用,
- 如圖 4-7 。
馬丁格爾策略自動交易程式
「馬丁格爾策略自動交易程式」在設計上都是參照上面的整套
介紹而設計的,但有幾個重要程式參數是可以給讀者做自行設計時
的參考 。
馬丁格爾策略程式交易方法
AccEquityProtection = 6000, // Equity Protection of Account
TradeWithAccPercent = 100, II Percentage of account want to
trade on this pair
AccStopLossPercent = 30, // Percent of account balance lost before
trading stops
PairStopLossPercent = 20, II Percent of portion for max drawdown
level
StopTradeAfterSLHit = false, II STOP TRADING OR NOT after
Stop Loss is hit
MoneyManagement = true, // Money Management
RiskBetaValue = 0.1 I Adjusts MM base lot RiskBetaValue
MultiplierFromLevelX = 1, // NextLevelMultiplier not used for this
number of levels
NextLevelMultiplier = 2, // NextLevelMultiplier to mcrease
lot size at each level
MaxTradeLevel = 7 II Maximum number of trades to place
BreakEvenLevel =
4· II Close All level, when reaches
this level, doesn't wait for TP to be hit
LongTrendDetect1on = true, // Use higher TF to detect general
trend
145
LongTrendTimePeriod = PERIOD H4;// Timeframe of higher Time Frame
//PERIOD_Ml 1 1 minute.
//PERIOD_M5 5 5 minutes.
//PERIOD_M15 15 15 minutes .
//PERIOD M30 30 30 minutes.
//PERIOD_Hl 60 1 hour.
//PERIOD_H4 240 4 hour.
//PERIOD_D1 1440 Daily.
//PERIOD_Wl 10080 Weekly.
-
變異馬丁格爾策略概念及介紹
基本概悆跟機率公式
在一般學院派制式的「馬丁格爾策略」理論是指在某個賭盤裡,
當每次賭金輸錢時就以 2 的倍數再增加賭金,所以是輸錢加碼,直
到嬴錢為止,每一回合只嬴一個單位的籌碼。馬丁格爾策略的反向
時就以 2 的倍數再增加賭金,所以是贏錢加碼,直到輸錢為止,每
變異馬丁格爾策略概念及介紹
一回合贏全部單位的籌碼。運氣好時很快就可以大撈 一 筆,但這種
模式也非常有可能在一次的賭盤押錯時,所贏來的賭金就會全部虧
光。
接下來我們先解釋有所謂的「變異式之馬丁格爾交易模式」,
. 做法是 一 種「雙邊押注式」的概念,也就是在賭大小的賭盤裡,一
實例說明:雙邊押注式
筆賭盤是輸的,從第二輪開始,我們在「押大」的那 一 邊的賭注以
_
147
3200 ……,直到贏錢為止,但是需要再增加第 一輪的 100 元賭注拿來
「押小」。所以從第二輪開始,投資者必須「兩邊押注」。
再從新開始。第二種情形:假設賭盤開出來的是「小」,則你輸掉
/\n 所增加的賭金,這時你必須從第一輪重新開始 。
的那一邊連續輸了五次,那你會虧損 100+200+400+800+1600 =
3100 元,但因為你從第 二 輪開始是「兩邊押注」,只是「押小」
的那一邊每次都只押 100 元,所以你會獲利 100+ 100+ 100+ 100-100
(最後一次會不賺不賠) = 300 元。這時你的資金餘額會剩下 6300-
, 機率計算以及數學公式
如果我們使用單純的馬丁格爾策略,依照上面的條件,若你全
部的賭資為 6300• 不管你只是押大還是押小,當你連續輸到第六次,
那你就會虧光所有的錢 (100+200+400+800+1600+3200 = 6300) 。
但是若使用「雙邊押注式」的概念,當你連續輸到第六次,那你
種「雙邊押注」變異方式之馬丁格爾策略會讓你在跟賭盤對賭時,
以一種「漸進微幅式」的方式來增加自己的賭資。
實例計算:雙邊押注 變異式之馬丁格爾策略
變異馬丁格爾策略概念及介紹
若使用數學機率計算「雙邊押注~,
的籌碼總量,以 n 來代表總共能夠虧損的次數。所以你總共虧損 n
損的金額是:
n
LB·i-l = B (2n - 1)
i=l
但因為你從第二輪開始「雙邊押注」,所以你的虧損金額將可
損了 n 次數,而你所能夠贏到 B 數量的錢,那麼你每一回合能期待
的利潤為:
_
149
(1 - q叮 ·B - qn·B (2n - 1) = B (I - (2q) 鬥
也因為你從第二輪開始「雙邊押注」,所以每一回合能期待的
而如果以「雙邊押注 變異式之馬丁格爾策略」,則當我們
進場賭後雖然在你「押大小」 73 次當中有一次會超過「連續六次虧
的在 73 次當中有一次會超過「連續六次虧損」,但這時已經可以多
.. 法在 73 次「押大小」的賭盤裡還可以存活下來。
由上面的計算得知,在同樣條件的賭盤機率之下,若以達到「典
型啟發點」(六次連續虧損機率)的虧損金額來比較的話,使用「雙
邊押注_變異式之馬丁格爾策略」可以比「傳統馬丁格爾策略」的
變異式之馬丁格爾策略」似乎比起單純的馬丁格爾策略還來的有勝
算一點 。
外匯操作模式
在外匯操作模式方面,筆者建議投資者挑選的貨幣跟馬丁格爾
策略 一 樣,不建議挑選容易走長趨勢的貨幣來操作,主因也是長趨
勢的市況是 「 馬丁格爾策略」或「雙邊押注—-變異式之馬丁格爾策
略 」 的大敵;容易導致帳戶的浮動虧損急速拉大,以至於碰到帳戶
停損 。
變異馬丁格爾策略概念及介紹
所以, EURCHF (歐元瑞郎)丶 GBPCHF (英鎊瑞郎)丶
連動 (Correlation) 的貨幣。因此,這四組貨幣比其他的或幣組都易
處於「震盪」的市況,而比較不常處於所謂的「趨勢」市況。
_
151
變異馬丁格爾策略風險與實務
操作方法
實務操作及舉例
就「方法論」來說,「變異式馬丁格爾外匯套利交易模式」,
就是一邊會進入「馬丁格爾模式」(例如押大),另一邊卻僅是「一
個固定比例」(例如押小)的賭金,這種方法說起來其實應該都還
算是「馬丁格爾模式」的一種變化應用。
筆者 把這種「變異式馬丁格爾」的方法套用到外匯套利之交易
模式,當進入市場反趨勢時,程式可以因為有另一邊的對沖倉位而
有利潤收入,讓帳戶在即時的市場交易裡可以一直墊高帳戶的資金
餘額,故此策略的好處就是帳戶的風險承受度可以因此而增加 因
為可以逐步墊高當進入「反市場趨勢」時,帳戶可以承受之虧損金
額。但其缺點是,若當市場一直處於狹幅震盪,程式有可能會一直
在做白工,且當市場走趨勢時,「變異式馬丁格爾外匯套利交易模
式」依然會造成大額浮動虧損。
假設我們拿 63 元來到澳門賭場玩賭大小的賭盤,我們每次都從
的 1 開始從新「押大」。假設我們第一筆賭盤是輸的,從第二輪開始,
..
我們在「押大」的那一邊的賭注以 2 的倍數 (2) /\n 增加,也就是:
要投入的金額變成 3 元。這時會發生兩種情形:
1. 假設賭盤開出來的是「大」,則你贏回這次「押大」的 2 元,
到這樣的結果,你就必須從第 一 輪再從新開始。
2. 假設賭盤開出來的是「小」,則你輸掉第一輪及第二輪「押大」
的 1 元及 2 元,但是贏回第二輪「押小」的 1 元。若是得到這
樣的結果,你必須在第三輪時一樣「兩邊押注」。但你在「押
變異馬丁格爾策略風險與實務操作方法
邊真的開「大」而贏回所有以 2 的倍數 (2) An 所增加的賭金,
同時輸掉最後 一 輪「押小」的賭資,就變成不賺也不賠,這時
必須再從第一輪重新開始。在這樣的過程當中,你整體的賭資
金總額。
譬如以上面的例子來說,若你有 63 元,如果你在「押大」的那
從第 二 輪開始是「兩邊押注」,同時在「押小」的那 一 邊每次都押
153
如果我們使用單純的馬丁格爾策略,依照上面的條件,若你全
後一輪會不賺不賠)。所以這種「雙邊押注——變異方式之馬丁格爾
策略」會讓你在跟賭盤對賭時,以一種「漸進微幅式」的方式來增
加自己的賭資。
使用「雙邊押注 變異式之馬丁格爾交易模式」於外匯交易
接下來,我們來看若是以「外匯交易」模式來執行「雙邊押注
變異式之馬丁格爾交易模式」的數學運算:
x = lot
y = Multiplier (乘積)
所以
Level I = x
Level2 = xy
Level 3 = xy2
Level 4 = xy3
Level 5 = xy4
Level 6 = x/
Level 7 = xy6
由以上公式,當設定為
= 0.01 lot
..
x
y=l.3( 乘積)
所以:
Level 1 = 0.01
Level 2 = 0.02
Level 3 = 0.03
Level 4 = 0.04
Level 5 = 0.05
Level 6 = 0.07
Level 7 = 0.09
當達到第七階時,就是「連續虧損七次」後所開的總 Lot 數為
而「外匯交易」的「雙邊押注 變異方式之馬丁格爾」策略
做法就是在第二層(類似賭盤的第二輪)開始就啟動「對沖功能」
(類似賭盤的雙邊押注),當市場使得程式走到第三層時,第二層
的對沖單必須先獲利出場,同時第三層的對沖單必須與「馬丁格爾」
組一同打開。當市場真的走「反向長趨勢」時,帳戶就可以因為從
變異馬丁格爾策略風險與實務操作方法
第二層開始啟動「對沖單」(雙邊押注),這時帳戶的「對沖單」
卻是一直獲利(因為此「對沖單」是市場的趨勢單)。程式「雙邊
押注」的「對沖單」是以「總開倉手數大小」乘以一個乘積,但這
使用「雙邊押注一—變異式於「連續虧損七次」的市場
舉「連續虧損七次」的市場為例:假設這「連續虧損七次」是
買倉,所以這時的市場其實是走跌。因此,我們會執行
0.01 + 0.02 + 0.03 + 0.04 + 0.05 +0.07 + 0.09 = 0.31 Lot (Buy)
如果「對沖單」(雙邊押注)是從第二層開始,那它就必須是
開賣倉。假設每一層賣倉僅開總開倉位大小乘以乘積,假設是 0.5•
點 (Pips)• 所以帳戶的餘額可以從中多獲利了。
_
155
第二層 : Round (( 0.0 I+0.02 ) X 0.5 ) = 0.02 ( Sell ) X ( Take Profit
= l OOPips ) = 2 Pips
第三層 : Round (( 0.0l +0.02+0.03 ) X0.5 = 0.03 ( Sell ) X ( Take
Profit = 1OOPips ) = 3 Pips
第 四層 : Round (( 0.01+0 .02+0.03+0.04 ) X 0.5 = 0.05 ( Sell ) X ( Take
Profit = 1OOPips ) = 5 Pips
第五層 : Round (( 0.01+0.02+0.03+0.04+0.05 ) X 0.5 = 0.08 ( Sell ) X
( Take Profit = I OOPips ) = 8 Pips
第六層 : Round (( 0.01+0.02+0.03+0.04+0.07 ) X 0.5 = 0.11 ( Sell ) X
( Take Profit = 1OOPips ) = 11 历 ps
略 多賺 29 X 10 = 290 美金。
以上的「雙邊押注 變異方式之馬丁格爾」策略是利用實例
來複習上 一 章節的理論說明。
虧錢加碼的策略模式,只不過在操作手段上有些不同 。
但以上這兩種策略與「反馬丁 格 爾」的概念是完全的相反的思
U
維邏輯。 .
策略是每輸-次,贏的機率卻隨著次數而遞增。同時,「反馬丁格
爾」每一回合的贏錢都是全部單位的下注籌碼,但虧錢卻會把贏來
的錢全部都賠掉,而「馬丁格爾」則是每一回合的贏錢僅是一個單
位的下注籌碼,只要最後一次的贏錢就能把前面下注所賠的都賺回
來,並多賺一個單位的錢。
使用數學機率所計算「反馬丁格爾策略」 : 假設我們以 q 來代
表獲利的機率,以 B 來代表賭客口袋中能押大小的籌碼總量,以 n
總獲利的金額是:
n
瓦 B · i-1 = B (2n - 1)
變異馬丁格爾策略風險與實務操作方法
i=l
式子來看就可以很清楚知道,其實若以機率來看,「馬丁格爾」與
「反馬丁格爾策略」就是獲利機率與虧損機率完全顛倒,其他其實
是大同小異。不過「反馬丁格爾策略」在賭盤上面最大的風險就是
如果在最後一次的賭注中賭輸了,將會一次虧光所有贏來資金。以
機率來看,贏越多次,表示越可能一次輸光。所以,「反馬丁格爾
策略」嬴率會隨著贏的次數增加而越來越低,輸的機率會隨著贏的
次數增加而越來越高。
這樣的策略,在股市、期貨、選擇權或其他投機性金融商品,
都非常常見,市場上的說詞應該是稱之為「順勢加碼策略」。在外
匯市場裡, 一 樣有相當多的投資者使用這種策略。「順勢加碼的反
馬丁格爾策略」筆者將在第六章裡做詳細說明。
_
157
變異馬丁格爾策略程式交易方
法
外匯市場的雙邊押注
前面的章節裡已經將此策略的數學模型做了說明:在外匯市場
裡,「雙邊押注」其實就是下對沖單。在程式設計上,「自動交易
程式」的「雙邊押注 變異方式之馬丁格爾」策略做法就是在第二
層(類似賭盤的第二輪)開始就啟動「對沖功能」(類似賭盤的雙
邊押注),當市場使得程式走到第三層時,第二層的對沖單必須先
獲利出場,同時第三層的對沖單必須與「馬丁格爾」組一同打開。
當市場真的走「反向長趨勢」時,帳戶就可以因為從第二層開
始啟動「對沖單」(雙邊押注),這時帳戶的「對沖單」卻是一直
獲利(因為此「對沖單」是市場的趨勢單)。我們有提及,程式「雙
邊押注」的「對沖單」是以「總開倉手數大小」乘以一個乘積,這
以下,我們再複習一下「馬丁格爾」策略方法。在傳統的「馬
所以,以下簡單的數學運算:
-
x = lot
y = Multiplier (乘積)
所以
Level 1 =x
Level2 = xy
Level 3 = xy2
Level4 = xy3
Level 5 = x/
Level 6 = xy5
Level 7 = xy6
當達到第七階時,就是「連續虧損七次」後所開的總 Lot 數為
x + xy + xy2 + xy3 + xy4 + xy + xy
由以上公式,當程式設定為
x = 0.01 lot
y = 1.3 (乘積)
所以
變異馬丁格爾策略程式交易方法
Level 1 = 0.01
Level 2 = 0.02
Level 3 = 0.03
Level 4 = 0.04
Level 5 = 0.05
Level 6 = 0.07
Level 7 = 0.09
當達到第七階時,就是「連續虧損七次」後所開的總 Lot 數為
0.01 + 0.02 + 0.03 + 0.04 + 0.05 +0 .07 + 0.09 = 0.31 Lot
當市場走「反向長趨勢 .J 時
避免市場真的走「反向長趨勢」,因此在「馬丁格爾」策略方
法的程式設定上,即使加入了「不賺不賠出場」功能,以及當「連
續虧損 X 次」時啟動「對沖功能」等等,但是當程式已經達到「反
向長趨勢」第六或七層時,帳戶的虧損已經逐漸加大,而在這段市
場走「反向長趨勢」的時間裡,帳戶裡並沒有額外的獲利來擴大風
_
159
險的承受度,所以常常唯 一 能做的就是祈禱市場反轉(就是賭盤連
續開大之後開小,或連續開小之後開大) 。
而「雙邊押注 變異式之馬丁格爾」策略做法就是在第 二 層
(類似賭盤的第 二 輪)開始就啟動「對沖功能」(類似賭盤的雙邊
押注),當市場使得程式走到第三層時,第 二 層的對沖單必須先獲
市場真的走「反向長趨勢」時,帳戶就可以因為從第 二 層開始啟動
「對沖單」(雙邊押注),雖然「馬丁格爾」組會因為市場走的是「反
向長趨勢」而讓虧損加大,但這時帳戶的「對沖單」卻可以一直獲
利(因為此「對沖單」會變成是市場的趨勢單) 。
舉「連續虧損七次」的市場為例:假設「連續虧損七次」是買倉,
所以這時的市場其實是走跌,因此程式會執行
0.01 + 0.02 + 0.03 + 0.04 + 0.05 +0.07 + 0.09 = 0.31 Lot (Buy)
如果程式的「對沖單」(雙邊押注)是從第 二 層開始,那它就
不會雙邊押注),而最後 一層會與原「馬丁格爾」組的利潤沖銷(第
- 七輪不賺不賠) 。
由以上的說明,讀者可以很清楚的看出「雙邊押注 變異式
之馬丁格爾」策略可以在「反向長趨勢」讓帳戶增加獲利 , 因此可
以使得帳戶的餘額增加,而帳戶餘額增加則帳戶可承受的風險就可
以增加。
這時聰明的者可能就會問,若是市場一直處於狹幅震盪而非走
趨勢線,那「雙邊押注 變異式之馬丁格爾」策略豈不是每次都賺
沖單」(雙邊押注)的層級設在第三層或第四層而非第 二 層,這樣
可以避免當市場在狹幅震盪時程式 一直在做白工。
自動交易程式套用
我們已把雙邊押注 變異式之馬丁格爾策略的基礎概念 、 數
學公式、風險計算、貨幣對選擇等等都做了的詳細的介紹,接下來
變異馬丁格爾策略程式交易方法
就是自動程式的套用,如圖 4-8 。
變異馬丁格爾策略自動交易程式
_.,,,.•
-..
L'~ •~•~•••-~•
·」...
_.,.... 日"''°"'""·--•~--"""""
,.....,,,.~..
一. .
LL. 一:``""
.,一. ,,_''-~,'"
, ,,,"""''·"""""'"
161
在實際的程式設計上,我們必須加入以下幾個參數:
這幾個參數是指,啟動「雙邊押注 變異式之馬丁格爾」策
略,在第幾層時啟動,以及對沖單下單量的乘積 。
..
Blessing 程式
全球下載率最高免費自
動交易軟體
There are only two kinds ofprogramming languages: those people always bitch
about and those nobody uses
世上只有兩類程式語言:那些被人批得一無是處的,以及那些沒人使用的。
Bjarne Stroustrup
示
--~--
...
蕈」
`
Blessing 程式開發
Blessing 程式背景介紹
式 的 開場 白:
I/+--------------------------- +······
//I Blessing 3 v3.9.2 I
//I February l 0, 2011 I
//I Copyright ?2007-2011 , J Talon LLC/FiFtHeLeMeNt I
//I In no event will authors be liable for any damages whatsoever. I
//I Use at your own risk. I
1111
//I This EA is dedicated to Mike McKeough, a member of the Blessing I
//I Development Group, who passed away on Saturday, 31st July 2010. I
//I His contributions to the development of this EA have helped make I
//I it what it is today, and we will miss his enthusiasm, dedication I
//1 and desire to make this the best EA possible. I
//I Rest In Peace. I
//+----------------------------一------一一一一一一一一一一--- ---------------- -一--+
-
熱 血的 程 式 設計 人 士的傑 作 。這 個 是集合群策群力一 起 開發出來的
這群一起努力開發軟體的朋友們。而這群「義工開發人員」稱之為
盡數不盡日子裡的日夜煎熬、絞盡腦力、開發測試等等以牟取更好
效果的開發人員。同時,特別戚謝最原始創作人「柘 fthElement 第五
是包含筆者在內的我們這群程式開發義工團員。
Blessing 的精神
Bless
叫做 FiFtHeLeMeNt 。筆者很早就下載這位 FiFtHeLeMeNt 開發出來
程i
時候,半年內爆倉,運氣差的時候,兩個月就爆倉了。當時有 一 位
式n
開g
開飛機的飛行員,叫做 Jeff' 他對這個 Blessing 非常有興趣,就開
所說的,從戰略角度來看,它們都是馬丁格爾策略,但戰術應用方
_
165
面, EV 增加了相當多的花樣。不過說實在的, EV 雖是商業化的商
怎麼變化,其主體性不會有什麼差異。
4. 「 Blessing 程式」是由一整個團隊所共同開發的。不是由「某一
個人」所開發的。如果硬說是某個人,只能勉強說,「 Blessing •
程式」的「雛型」是一位稱為 FifthElement 所開發出來的。而
有免費公開對外提供給任何一個投資者。
-
Blessing 程式開發團隊成員名單
Bless
幕後貢獻者的故事
程m式g
如果說此「免費軟體 Blessing 」的程式版權 , 最有資格的應該
開發
要提到兩位在公開論壇上的 MQL4 開發者 , 一位是 FifthElement'
MT4 交易軟體放在外匯論壇上供任何人下載使用。他一毛錢都不收,
且樂於分享他的策略給外匯論壇上所有的投資者。當時我們 Blessmg
_
167
的「約克城」,就是英國發動「薔薇戰爭」的所在地。除了以上筆
者所說的這兩位人士以外,其他人比較像是跑龍套,只是設計部份
的程式碼,以及參與討論策略跟程式測試。
超過十種以上各類不同的策略。例如指標預測型程式、馬丁格爾程
式、變異型馬丁格爾程式、反馬丁格爾程式、貨幣連動程式、滾雪
資金流程式等等,開發程式的過程其實是很辛苦的。
都沒有關係,但是這個程式是馬丁格爾策略程式裡面經典中的經典。
本章節就是以共同開發者的角色來就跟讀者分享這個以馬丁格爾策
略模式所設計出來的經典程式。
-
疇
外部參數以及架構說明
常數定義
只要是使用「變數」定義的數字,通通可以反組譯出來。程式開發
者必須防備自己所開發出來的程式被網路上的人利用「反組譯」程
式瞬間破解,所以,常常會利用某個簡單的技巧來讓其他人在「反
組譯」之後依然找不到「某些」重要資訊。當「某些」重要資訊沒
外部參數以及架構說明
有被「反組譯」出來,所以再把它「組譯」就會產生錯誤。在 MT4 裡,
最簡單的方法就是使用 #define 這個宣告。因為 #define 所宣告的會
自動成為「常數」,當「反組譯」去執行逆向工程時, #define 所定
義的數值都會消失而無法被「反組譯」出來。
即使再「直接組譯」也會產生錯誤而使程式無法使用。
#define A 1 //All
#define B 2 //Basket
#define H 3 //Hedge
#define T 4 //Ticket
#define P 5 //Pending
_
169
以上這五項定義就是用來定義該下單的屬性。 Blessing 的架構
利用外部參數的設定,我們可以讓程式在我們所設定的參數下
掛單」其實是尚未成交而整組已經碰到停利點,所以,就必須把「預
合」在 一起計算,所以,我們在定義的時候,就必須做區分 。
外部參數定義:帳戶資金管理
這個部分裡,有幾個重要參數筆者個人覺得是所有「專業 MT4
程式設計師」都應該要有的概念。什麼概念呢? 就是 MT4 帳戶
的「資金管理」設定。
外部參數以及架構說明
重新劃線出來給你看,就因為是每個線圖都是不同的「物件」,所
以,我們在程式設計時,就可以依照「線圖物件」來切割資金。
擬分配」,而不是真的經紀商會幫你做「資金切割」。也就是說,
透過程式設計的「資金管理程式碼」,可以做到帳戶資金的「虛擬
_
171
以上這兩個參數就是用來讓使用者切割資金以及資金保護。預
停損,所以是 MaxDDPercent = 50 。
就是 5000 美金。
接下來的幾個參數
第 一 個參數,就是讓客戶可以下達「出場後不再進場」的指令。
因為 Blessing 是非常有可能整組都是「在倉單」,在帳戶仍有「浮虧」
場後不再進場」的功能,也就是說,當這整組的「在倉單」都出場了,
Blessing 就會自動「停止下單」。
第二個參數,是當我們帳戶的起始資金低於某個資金時,程式
美金時,程式不會動作。這也算是保戶資金的一種方法。
外部參數以及架構說明
易規則再切割 100 倍。也就是說,原本 lLot = 100,000 美金,變成
lLot = 100,000 美分 (1 美金= 100 美分)。
根本就不會把客戶下的單丟到市場的經紀商,說白一點,就是跟
而對於程式的開發來說,只不過是多了這項功能,並不代表程
_
173
外部參數定義:點差及假日管理
MaxSpread = 5; 的意思是用來限制下單時經紀商的「最大點
差差距」,例如在某些「交叉貨幣」的點差其實是很大的,例如
制可以令使用者當套入「點差差距」過大時,程式不下單。這個功
能其實就看使用者自己對於「貨幣對選用」的策略。利用非常簡單
的一行程式如下:
方國家的交易市場都放假時,避免外匯被人為操控,程式不下單。
外匯市場。因為戚恩節開始,西方國家許多金融單位都準備要放長
假了,交易量會大幅萎縮,因為交易量小的關係,不僅「點差」會
- 被放大,市場也容易被「有心的投機團體機構」操縱。據市場傳言,
是這段期間常被「中東資金」的作手呼風喚雨,以至於市場極難預
市場交易量小的時候依然進場。
外部參數定義:程式進場邏輯機制
請看接下來的程式碼:
外部參數以及架構說明
= will trade m reverse
extern int BollingerEntry = O; // 0 = Off, 1 = will base entry on BB, 2 =
will trade m reverse
extern int StochEntry = O; // 0 = Off, 1 = will base entry on Stoch, 2 =
will trade m reverse
extern int MACDEntry = O; // 0 = Off, 1 = will base entry on MACD, 2
= will trade in reverse
這個區段的外部參數是用來控制「程式進場」的一些邏輯機制 。
接下來的這個參數:
_
175
extern int ForceMarketCond = 3,
這是用來讓使用者可以選定程式利用指標進場時的邏輯選項。
F orceMarketCond 就是讓「程式」被使用者「強制」決定只能對市場
強制看漲(= 0) 、強制看跌(= 1) 、強制看震盪(= 2) 、或由
指標自行決定(= 3) 。
跌)。比如說,如果參數設為 0 (強制看漲),即使指標的方向是向
下跌,程式依然不會進場,反之亦然。
輯來做控制。接下來的參數都跟指標有關:
MA
-
CCI
BollingBand
Stochastic
MACD
以上這幾種指標。
正常運作,但若設 2• 就是讓指標成立的時候,反向下單。假如:
部林通道成立但下「反向單」。這樣的邏輯看起來很奇怪,所以,
Blessing 使用 一個「控制閥」:
外部參數以及架構說明
extern boo] UseAnyEntry = false,
來控制指標進場邏輯。
. 立」就會進場。所以,使用者可以控制的變數其實就可以相當的多
樣化。
外部參數定義:格距設定
關聯的,所以,我把它們放在 一 起說明。
_
177
extern string Labe!GS = "Grid Settings : " ,
extern boo!AutoCal =false; // Auto calculation ofTakeProfit and Grid size,
extern double GAF = 1.0; // Widens/Squishes Grid on increments/
decrements of .1
extern int EntryDelay = 2400; // Time Grid in seconds, to avoid opening of
lots of levels in fast market
extern double EntryOffset = 5; // In pips, used in con」 unction with logic to
offset first trade entry
extern bool UseSmartGrid = true; // True = use RSI/MA calculation for
next grid order
者在看程式碼時,讀起來可能會越讀越迷糊,所以,這兩段 一 起說
-
GanaTrader ver PM 的程式碼更是高達 6500 行以上,是 Blessing 程
式碼的 三倍,架構更大,功能更齊全 。 但不 管 是 Blessing 也好, EV
問題還是存在。我們回過來談上面的這個外部參數部分。首先是「格
距」的兩個初始設定:
外部參數以及架構說明
當 AutoCal 這個參數「關閉」的時候,程式「點距」的參考全
部來自於上面所說的第二部分的「停利點距」 (Take Profit) 部分的
外部參數的兩個項目:
依照上面這兩行的設定,也就是說,程式下單的「格距」為:
面的人工設定,直接以「內部程式設定的格距」來做每一個「次層」
的「加倉點距」。
公式如下:
_
179
GridATR = iATR (NULL,0,21,0) 加p,
double iRSI (
string symbol,// symbol
現在所有金融商品的技術分析裡,含股票、期貨、黃金、外匯等等。
它就是簡明用來判斷市場後續發展的「相關強度指標」。
外部參數以及架構說明
我們對外公開釋碼的 Blessing 所使用的是標準 RSI' 不是
而不是「人工訂死」的格距做決定。
接下來談的是以下的這兩個參數:
_
181
extern int EntryDelay = 2400,
extern double EntryOffset = 5,
它們的功能是幹嘛的呢?這裡要談的是比較有關「市場防治」
為了避免在「快市」的價格激烈變動影響程式進場的正確邏輯,
瞬間拉高的太快。
以上這三行碼的設定,它的功能說明就是:
.. 程式「下單」的「格距」為:
25 點加倉 X4 次, 50 點加倉 X4 次,之後全部都是 100 點加倉。
程式停利的「利潤點差」為:
外部參數定義:交易設定
易規範」的設定,例如,最大允許幾層的進單、第幾層不賺不賠出
場、舊單出場模式等等。請看接下來的程式碼 「交易設定」部分:
外部參數以及架構說明
extern string Labe!TS = "Trading Settings : " ,
extern int MaxTrades = 15; II Maximum number of trades to place (stops
placing orders when reaches MaxTrades)
extern int BreakEvenTrade = 12; II Close All level, when reaches this level,
doesn't wait for TP to be hit
extern double BEP!usPips = 2; II Pips added to Break Even Point before BE
closure
extern boo! UseCloseOldest = false; II True = will close the oldest open
trade after CloseTradesLevel is reached
extern int CloseTradesLevel = 5; II will start closing oldest open trade at
this level
extern int MaxCloseTrades = 4; II Maximum number of oldest trades to
close
extern double CloseTPPips = 10; II After Oldest Trades have closed, Forces
Take Profit to BE +I- xx Pips
extern double ForceTPPips = O; II Force Take Profit to BE +I- xx Pips
extern double MinTPPips = O; II Ensure Take Profit is at least BE +I- xx
Pips
_
183
I
第一行裡的 MaxTrades = 15• 很清楚明瞭一看就知道,這個參
數就是限制當 Blessing 程式進場之後,最多允許「幾層」的「在倉
單」。預設值是 15 層。所以,也就是說,當市場與進單的方向是相
反的,例如市場是「往上漲」,但 Blessing 卻是「下賣單」,根據
我們的說明,當下到第 15 層的時候, Blessing 的第一筆單跟第 15 比
單的距離是多遠?
依照上面這兩行的設定,也就是說,程式下單的「格距」為:
那算一下就知道:
第一筆單的位置為 0
..
Blessing 程式 Excel 風險示意圖 -1
外部參數以及架構說明
可怕嗎?我在這裡告訴讀者-個你不得不承認的事實,「馬
丁格爾策略」本來就是這樣。不懂的人還真的以為它是「低風險且
高獲利」呢。所以上面的預設值最大下單可達第 15 層 , 沒錯,但
是那就是「帳戶爆倉」的層。也就是說,假設依照原始設定,你以
10,000 美金就會「爆倉歸零」。有人說,外匯市場不可能瞬間會反
_
185
I
有可能會發生的。所以在我們的第四章裡才會建議,如果使用馬丁
交叉貨幣。
莫非定律:你認為不可能的發生的情況,它就發生給你
看。
BEPlusPips = 2 這個設定。也就是說,所謂的「不賺不賠」可以利
接下來的參數是為了避免太多層的「在倉單」遺留在市場上造
成浮動虧損太過龐大,所以當時就設計了「關舊倉」這樣的功能。
第-個參數是「開關邏輯」,預設值是關閉。如果使用者
CloseTradesLevel = 5) 開始執行「關舊倉」這樣的功能。那程式是
怎麼執行的呢?
.. 就是直接把「第 1 層的在倉單」關閉。當市場繼續反向的時候,
2, 3, 4) 被強制關倉。為了避免「關舊倉」的虧損過大, CloseTPPips
這個參數作為擬補虧損的一些「獲利補償」,它就是讓程式必須至
主要功能是「強制性」的讓程式在「獲利多少點數」之後就出
值 (0) 就可以了。
外部參數定義:對沖設定
外部參數以及架構說明
接下來談的是有關「對沖設定」 (Hedge Settings) 部分的外部
參數。什麼是「對沖設定」呢?也就是當程式進場之後,如果「市
場的方向與「下單倉位」方向相反,為了避免虧損迅速擴大,同時
筆者其實就是當初丟出「對沖設定」想法的那個「始作俑者」。
這段程式架構,筆者算是起草者之一,不過經過這些年來的市場
歷練,筆者也漸漸接受了當初 Blessing 團隊裡「反對派」的想法,
「 Hedge 是沒有太大意義的」。尤其是「直接 Hedge 」,其實只是「延
_
187
Blessing 程式 Excel 風險 示 意圖 -3
計利潤等等。
盈,順利出場。但是通常天底下不會常有此美好的事情發生,因為
市場是波動的,所以,有許多時候,當「對沖單」進場下去的之後,
型」。以下是對沖的三種類型:
外部參數以及架構說明
1. 直接對沖:例如 EURUSD ——一買一賣,就是「直接對沖」。
就是「中性對沖」。
而 Blessing 程式提供了「直接對沖」與「巾性對沖」這兩樣功
能給使用者使用。目的都是為了保護使用者的資金,讓使用者即使
在市場反方向的時候,最差的情況只不過是卡住出不了場,而不會
兩行程式碼:
_
189
當使用者把 HedgeSymbol 這個參數空白不寫的時候,它就是「直
才行,否則程式會出現錯誤,同時不允許下單。
我們接下來看以下四行程式碼:
的設定是:
進場做對沖。又例如:
始進場做對沖。
外部參數以及架構說明
extern double hMaxLossPips = 30,
extern boo! hFixedSL = false,
extern double hTakeProfit = 30,
extern double hReEntryPC = 5,
extern boo! StopTrailAtBE = true,
extern boo! ReduceTrailStop = true,
以上這幾個參數都是用於「對沖單」的「停利設定」、「停損
設定」以及「移動停損設定」。
外部參數定義:出場設定
「出場設定」並非是先前我們有討論過的「停利及格距」設定。這
裡的出場模式設定有兩項,一個稱之為「移動停利」,另一個稱之
_
191
extern string LabelES = "Exit Settings : " ,
extern boo! MaximizeProfit = false; // Tums on TP move and Profit Trailing
Stop Feature
extern double ProfitSet = 70; // Locks in Profit at this percent of Total Profit
Potential
extern double MoveTP = 30; II Moves TP this amount m pips
extern int Tota!Moves = 2; II Number of times you want TP to move before
stopping movement
extern boo! UsePowerOutSL = false; II Transmits a SL in case of internet
loss
extern double POSLPips = 600; II Power Out Stop Loss m pips
extern boo! UseFIFO = false; II
移動停利
要談何謂「移動停利」,請讀者先建立一個觀念:
「反馬丁格爾策略」的交易模式是「停損不停利」,所以可套
護獲利。而相反的,「馬丁格爾策略」的交易模式是「停利不停損」,
模式」來保護獲利。
就是「移動停利」。
大部分的讀者都很清楚什麼是「移動停損」。因為「反馬丁格
爾策略」的交易模式是「停損不停利」,所以其理論就是當我們下
了單之後,會同時下一個停損的位置,但是假設市場真的是往我們
所預期的方向移動,我們為了保護獲利,會把原先的停損位置做調
場回測時,即使是打到停損點,因為已經產生「點位移動」,這個「停
損點」可能是獲利或不賺不賠。這就稱之為「移動停損」。
那什麼是「移動停利」呢?
這是剛好跟「移動停損」相反的概念。因為「馬丁格爾策略」
的交易模式是「停利不停損」,所以其理論就是當我們下了單之後,
會同時下 一 個停利的位置,但是假設市場真的是往我們所預期的方
向移動,我們為了保護獲利,會把原先的停利位置的某個比率鎖定
就「鎖定停利點」,同時當市場繼續往我們要的方向走,每位移「某
個點位」,就「重新鎖定停利點」。但如果市場完全沒回測且直奔「停
執行並出場。這就稱之為「移動停利」。
外部參數以及架構說明
所以「移動停損」跟「移動停利」剛好是相反的執行概念,其
所套用的策略模式剛好是完全相反的策略模式:
馬丁格爾策略 移動停利。
反馬丁格爾策略 移動停損。
以下這四行就是用來設定「移動停利」的外部參數。
_
193
ProfitSet 就是「鎖定停利點位」的比率,例如,停利如果是
MoveTP 就是每次的「位移點數」,用來重設定「鎖定停利點位」,
的次數。
當網路斷線時,而帳戶的虧損達到某個點位,可以強迫關倉出場。
這項功能是為了「美國境內外匯經紀商」所設計的,早在 2010
年至 2011 年期間,美國的金融管制單位因為見到外匯保證金交易的
1. 不准對沖: No Hedge 。
3. 槓桿下降:最多 50 倍槓桿。
因為上述的這三條規範,讓美國的外匯經紀商幾乎玩不下去,
所以紛紛到歐洲,例如英國、塞浦路斯、紐西蘭、澳洲、香港、新
加坡 等 地 去註 冊開 分公司。 因 為這三 條規範 完全 打翻了「外 匯 交 易
被以上 這三 條規範所限制 。
外部參數定義:雜項、警告、線圖圖型設定等
外部參數 以及架構說 明
extern int slip = 99; // Ad」 usts opening and closing orders by "slipping"
this amount
extern int StatsPeriod = 3600; II seconds betwen stats entries - lh by default
extern boo! Statslnitialise = true; II true for backtest - false for fowardllive
to ACCUMULATE equity traces
_
195
第 三 段:「線圖程式之畫面顯示設定」如下:
第四段:「最佳化設定」如下:
在上述第 一 段的「其他雜項設定」裡,比較需拿出來解釋的如:
外部參數以及架構說明
RecoupClosedLoss 的功能是當使用者設定 Hedge 功能時,因
為市場波動的關係,有可能 Hedge 單是虧損出場,這時如果將此參
數設為 true' 則程式對於「整組 Basket 在倉單」的利潤計算,會把
「 Hedge 單」虧損部分都納入計算,使程式出場時至少是「不賺不賠」
Level 是用來調控風險值,是「風險係數」數學計算的一環,不
過,它基本上跟 Multiplier 這個參數有些相關性。我們來看 一 下以下
的公式:
_
197
而 slip 參數就是讓使用者決定 Blessing 程式在下單的時候,最
大容忍的滑點為多少。
Server Cha 巾 Objects Trade Expert Advisors Notifications Email FTP Events Community Signals
巨I Enable
SMTP password:
I 磁定 1 取消
boo! SendMail (
string sub」 ect, // header
string some_text II email text
的 E-Mail 系統寄警告信到使用者的信箱去。這項功能對於忙碌工作
且無法盯看程式狀況的投資者有些幫助。
第三段是「線圖程式之畫面顯示設定」。這個部份的外部設定
與「程式績效」完全沒有關聯,目的是讓使用者在套用 Blessing 程
式時,對於程式來源標籤、程式下單以及在倉單盈虧狀態做顯示。
第四段「最佳化設定」跟「格距」以及「停利」有關。這個部
設定部分其實已經提供給使用者自行調整的功能如下:
IsOptimization ()找出最佳的「格距」以及「停利」數值,我們可
外部參數以及架構說明
把「格距」以及「停利」數值最佳化所套用的數字,其實績效也沒
有變的更好。
_
199
`
主程式各類模組介紹
Blessing 程式架構
Blessing 這個程式架構很龐大,本章節僅針對「程式的架構」
跟「功能模組作」介紹,無法 一- 細部做討論。不過,這樣的說明,
對於想使用此程式的投資者而言已經有很大的幫助。因為此 Blessing
只是函示定義、呼叫、語法有些不同,但基本上是大同小異,有程
式開發經驗跟能力的投資者應該都可以自行更新為新版本 MT4 的語
法,在這方面困難度沒有很高 。
在 Blessing 程式架構上面,筆者大略將其分成以下幾個區塊組
別以方便讀者做査閲,完整的原始程式碼讀者可以透過網路搜尋下
載,或參閲本書的後面附錄。
1. 初始化函式以及移除初始化函式模組
2. 線圖貨幣之資訊收集邏輯模組
3. 允許進出場條件以及資金保護模組
4 資金管理模組
5 市場趨勢判斷及進場邏輯模組
6789
.對沖模組
...
損益計算模組
線圖資訊顯示模組
開倉下單以及關倉出場模組
10. 其他特殊模組
初始化函式以及移除初始化函式模組
這個部分是程式在載入執行邏輯主體前先宣告一些初始變數定
載入的狀況,這樣同等於釋放部分記憶體給系統。
主程式各類模組介紹
以下程式部分是起始函式 init ()
mt m1t ()
{ CS =" Waiting for next tick." , II To display comments while
testing, simply use CS =…. and
Comment (CS) , II it will be displayed by the line at
the end of the start () block
cs= " "
,
FirstRun = true,
AllowTrading = true,
if (EANumber<l) EANumber = I,
if (Testing) EANumber = 0,
Magic = GenerateMagicNumber () ,
hMagic = JenkinsHash (Magic) ,
FileName =" B3 " +Magic+" .dat" ,
if (Debug)
Print ( "Magic Number : "+DTS ( Magic,O)) ,
Print ( "Hedge Number : "+DTS ( hMagic,O)) ,
Print ( "FileName : "+FileName ) ,
Pip= Point,
if ( Digits%2 = = l ) Pip* = 10,
if ( NanoAccount ) AccountType = 10;
else AccountType = 1,
if ( UseHedge )
{ if ( HedgeSymbol = = " " ) HedgeSymbol = Symbol () ,
if ( HedgeSymbol = = Symbol ()) hThisChart = true,
else hThisChart = false ,
hPip = Marketlnfo ( HedgeSymbol,MODE_POINT ) ,
int hDigits = Marketlnfo ( HedgeSymbol,MODE_DIGITS ) ,
if ( hD唧s%2 = = I ) hPip* = I 0,
if ( CheckCorr () >0.9 ) hPosCorr = true,
else if ( CheckCorr () <-0.9 ) hPosCorr = false ,
el se
AllowTrading = false ,
-
UseHedge = false ,
Print ( "The Hedge Symbol you have entered
"+HedgeSymbol+" ) is not closely correlated to "+Symbol ()) ,
}
1f ( StringSubstr ( DDorLevel,O, 1 ) = = " D" II StringSubstr
( DDorLevel,O, 1) = = " d" ) HedgeTypeDD = true;
else 直 StringSubstr ( DDorLevel,0,1) = =" L" II StringSubstr
( DDorLevel,O, 1 ) = = " I" ) HedgeTypeDD = false;
else UseHedge = false ,
if ( HedgeTypeDD )
{ HedgeStart/ = 100,
hDDStart = HedgeStart,
}
StopTradePercent/ = I 00 ,
ProfitSet/ = 100,
EEHoursPC/ = 100,
EELeve!PC/ = 100,
hReEntryPC/ = 100,
PortionPC/ = I 00,
Initia!AB = AccountBalance () ,
主程式各類模組介紹
StopTradeBalance = InitialAB* ( 1-StopTradePercent ) ,
Testing = IsTesting () ,
Visual = IsVisualMode () ,
1f ( Testing ) ID = " B3Test." ,
else ID = DTS ( Magic,O ) +" ." ,
HideTestlndicators ( true ) ,
MinLotSize = Marketlnfo ( Symbol () ,MODE_MINLOT ) ,
if ( MinLotSize>Lot )
{ (
Print ` Lot is less than your brokers minimum lot size " ) ,
AllowTrading = false,
}
LotStep = Marketlnfo ( Symbol () ,MODE_LOTSTEP ) ,
double MinLot = MathMin ( MinLotSize,LotStep ) ,
LotMult = MathMax ( Lot/MinLot,MinLotSize/MinLot ) ,
MinMult = LotMult,
Lot = MinLot,
if ( MinLot<0.01 ) LotDecimal = 3,
else if ( MinLot<O. l ) LotDecimal = 2,
_
203
else if ( MinLot< I ) LotDecimal = I,
else LotDecimal = 0,
囧eHandle = FileOpen ( FileName,FILE_BIN IFILE_READ ) ,
1f ( FileHandle! = -1 )
TbF = FileReadinteger ( FileHandle,LONG_ VALUE ) ,
FileClose ( FileHandle ) ,
Error = GetLastError () ,
if ( OrderSelect ( TbF,SELECT_BY_ TICKET ))
{ if ( OrderCloseTime () = = 0 )
{ OTbF = OrderOpenTime () ,
LbF = OrderLots () ,
LotMult = MathMax ( l ,LbF/MinLot ) ,
PbC = FindClosedPL ( B ) ,
PhC = FindClosedPL ( H ) ,
TradesOpen = true,
if ( Debug ) Print ( FileName+" File
Read: "+TbF+" Lots: "+DTS ( LbF,LotDecimal )) ,
-
" " "+ErrorDescription ( Error )) ;
+Error+
主程式各類模 組介 紹
if ( Debug ) Print ( "趴 git : `+y+
` " [ "+Digit[y,0]+" ," +
Digit[y, l]+" ]" ) ;
}
Labe!Create () ,
dLabels = false;
I!+----------------一---- 十
_
205
1f ( Multiplier< ! ) Multiplier = 1,
II+-----------------------------------------------------------------+
//I Set Grid and TP array
//+-----------------------------------------------------------------+
1f ( !AutoCal )
int GridSet,GridTemp,GridTP,Gridindex,GridLevel,GridError,
ArrayResize ( GridArray,MaxTrades ) ,
if (IsOptimization () &&UseGridOpt )
{ if ( SetArrayl >O)
{ SetCountArray = DTS ( SetArrayl,O ) ,
GridSetArray = DTS ( GridArray 1,0 ) ,
TP_SetArray = DTS ( TPArrayl ,O) ,
1f ( SetArray4>011 ( SetArray3>0&&GridArray4>0 ))
{ if ( SetArray4>0 ) SetCountArray =
SetCountArray+" ," +DTS ( SetArray4,0 ) ;
GridSetArray = GridSetArray+" ," +DTS
( GridArray4,0 ) ,
.. ( TPArray4,0 ) ,
TP_SetArray = TP_SetArray+" ," +DTS
tf ( SetArray4>0&&GridArray5>0 )
{ GridSetArray = GridSetArray+" ," +DTS
( GridArray5 ,0 ) ,
TP _ SetArray = TP_ SetArray+" ," +DTS
( TPArray5 ,0 ) ,
}
while ( Gridlndex<MaxTrades )
{ if ( StringFind ( SetCountArray," ," ) =
= -1 &&Gridlndex = = 0 )
{ GridError = I,
break,
}
else GridSet = StrTolnteger ( StringSubstr
( SetCountArray,0,StringFind ( SetCountArray," ," ) ) ) ;
if ( GridSet>O)
{ SetCountArray = StringSubstr
( SetCountArray,StringFind ( SetCountArray," ," ) + I ) ;
主程式各類模 組介 紹
GridTemp = StrTolnteger ( StringSubstr
( GridSetArray,O,StringFind ( GridSetArray," ," ) ) ) ;
GridSetArray = StringSubstr
( GridSetArray,StringFind ( GridSetArray," ," ) + 1 ) ;
GridTP = StrTolnteger ( StringSubstr ( TP_
SetArray,O,StringFind ( TP SetArray, " ," ) ) ) ,
TP_ SetArray = StringSubstr ( TP_
SetArray,StringFind ( TP SetArray, " ," ) + l ) ;
}
else GridSet = MaxTrades,
if ( GridTemp = = OIIGridTP = = 0 )
{ GridError = 2,
break;
}
for ( GridLevel = Gridlndex;GridLevel< =
MathMin ( Gridlndex+GridSet-1 ,MaxTrades-l ) ;GridLevel++)
{ GridArray[GridLevel,O] = GridTemp,
GridArray[GridLevel, l] = GridTP,
1f ( Debug ) Print ( "GridArray 斗
_
207
( GridLevel+ I ) +" : [ "+GridArray[GridLevel,O]+" , "+GridArray[Grid
Level,1]+" ]" ) ;
Gridlndex = GridLevel,
else
while ( Gridlndex<4 )
{ GridSet = StrTolnteger ( StringSubstr
( SetCountArray,O,StringFind ( SetCountArray," ," ) ) ) ,
SetCountArray = StringSubstr
( SetCountArray,StringFind ( SetCountArray,DTS ( GridSet,O)) + 2 ) ,
if ( Gridlndex = = O&&GridSet< l )
GridError = 1,
break,
-
else if ( Gridlndex = = 3&&GridLevel< =
MaxTrades ) Set4Level = GridLevel,
Gridlndex++,
1f ( GridError = = 1II Set I Level = = 0 )
{ Print ( "Error setting up the Grid Levels. Check that
the SetCountArray has valid numbers, separated by a comma." ) ,
AllowTrading = false ,
!!+- -------------------------+
//I Set holidays array
//+--------------------------- -----------+
if ( UseHolidayShutdown )
{ int HolTemp,NumHols,NumBS,HolCounter,
string Ho!TempStr;
if ( StringFind ( Holidays," ," ,0 ) = = - I ) NumHols = I;
else
{ NumHols = I,
while ( Ho!Temp! = -I )
主程式各類模組介紹
{ Ho!Temp = StringFind
( Holidays," ," ,Ho!Temp+ l ) ;
if ( Ho!Temp! = - I ) NumHols+ = I ,
}
HolTemp = 0,
while ( HolTemp! = -1 )
{ HolTemp = StringFind
( Holidays," /" ,HolTemp+ 1 ) ;
if ( Ho!Temp! = -1 ) umBS+ = I,
}
if ( NumBS! = NumHols*2 )
{ Print ( "Holidays Error, number of back-slashes
( "+NumBS+" ) should be equal to 2* number of Holidays ( "+NumHols+
, and separators should be a
comma. ) ,
AllowTrading = false ,
}
else
_
209
Ho!Temp = 0,
ArrayResize (Ho!Array,NumHols ) ,
while ( Ho!Temp! = -1 )
{ if ( Ho!Temp = = 0 ) Ho!TempStr =
StringTrimLeft (StringTrimRight ( StringSubstr (Holidays,O,StringFind
( Holidays," ," ,Ho!Temp ) ) ) ) ;
else Ho!TempStr = StringTrimLeft
( StringTrimRight ( StringSubstr ( Holidays,Ho!Temp+ 1,
StringFind
( Holidays," ," ,Ho!Temp+ I) -Stringfind
( Holidays," ," ,Ho!Temp ) -1 ) ) ) ;
Ho!Temp = StringFind
( Holidays," ," ,Ho!Temp+ I ) ;
if ( Debug ) Print ( "Holidays - From :
",StringSubstr ( HolTempStr,O,StringFind ( HolTempStr," -" ,0 )) ,"
To:
StringSubstr
( Ho!TempStr,StringFind ( Ho!TempStr," -" ,0 ) + I )) ,
HolArray[HolCounter,0,0] =
StrTolnteger ( StringSubstr ( StringSubstr ( Ho!TempStr,O,StringFind
( HolTempStr," -" ,0 )) ,
StringFind ( StringSubstr
- 0 )) ," I
( HolTempStr,O StringFind ( Ho!TempStr," " " ) + l ));
Ho!Array[Ho!Counter,O, 1] =
StrTolnteger ( StringSubstr ( StringSubstr ( Ho!TempStr,O,StringFind
( Ho!TempStr," -" ,0 )) ,0,
StringFind ( StringSubstr
( HolTempStr,O StringFind ( Ho!TempStr," -" 0 )) ," /" ) ) ) ,
Ho!Array[HolCounter, 1,0] = StrTointeger
( StringSubstr ( StringSubstr ( Ho!TempStr,StringFind ( HolTempStr," -" ,0 )
+ l )'
StringFind ( StringSubstr
( HolTempStr StringFind ( HolTempStr, " -" ,O)+ l ), / ) + ! )) ,
Ho!Array[Ho!Counter, I, I] = StrTointeger
( StringSubstr ( StringSubstr ( HolTempStr,StringFind ( HolTempStr," -" ,0 )
+ I ) ,0,
StringFind ( StringSubstr
( HolTempStr,StringFind ( HolTempStr," -" 0 ) + I ) ," /" )))'
Ho!Counter+ = 1,
}
II+------------------------------------------ 十
主程式各類模組介紹
Email[l] = MathMax ( MathM111
(EmailDD2 ,MaxDDPercent-1 ) ,0 ) / 100;
Email[2] = MathMax ( Math Min
( EmailDD3 MaxDDPercent-1 ), 0 ) / 100;
ArraySort ( Email,WHOLE_ARRAY,O,MODE_ASCEND ) ,
for ( int z = O;z< = 2;z++)
{ for ( y = O;y< = 2;y++)
{ if ( Email[y] = = 0 )
{ Email[y] = Email[y+ 1],
Ernail[y+ l] = 0,
}
if ( Debug ) Print (
..Email [ ..+ ( z+ I ) +" ] :
"+Email[z] ) ,
}
II+-----------------------------------------------------------------+
Ill Set SmartGrid parameters
_
211
//+-----------------------------------------------------------------+
if ( UseSmartGrid )
ArrayResize ( RSI,RSl_period+RSI_MA_period ) ,
ArraySetAsSeries ( RSI,true ) ,
I/+-------------------- ----------------+
111 lmtiahze
. . . Statistics
//+-------------------- ------------------+
StatFile = Symbol () +" -" +Period () +" -" +EANumber+" .
csv" ,
1f ( StatsPeriod>O) Stats ( TimeCurrent () ,Statslnitialise,false,Accoun
tBalance () *PortionPC,O) ;
return ( 0 ) ,
mt deinit ()
switch ( UninitializeReason ())
case REASON_REMOVE:
case REASON_ CHART CLOSE :
case REASON_CHARTCHANGE:
if ( CpT>O) while ( CpT>O) CpT- = ExitTrades
( P,displayColorLoss," Blessing Removed" ) ;
Globa!VariablesDeleteAII ( ID ) ,
case REASON_RECOMPILE:
case REASON_pARAMETERS:
case REASON_ACCOUNT:
if ( !Testing ) LabelDelete () ,
Comment (``")
return ( 0 ) ,
線圖貨幣之資訊收集邏輯模組
這個部分是程式進場前的資訊收集,例如,貨幣對的點值 (P 甲
Value) 、線圖是否已經存在在倉單、對沖的在倉單、計算以下單的
買單或賣單數量,以及是否有預掛單等等。同時,也會計算「停利
場的模式,同時,馬丁格爾理論是停利而不停損,所以,程式設計
//+-----------------------------------------------------------------+
//I Count Open Orders, Lots and Totals I
II+ --------------------------------------------+
主程式各類模組介紹
PipValue = Marketinfo (Symbol () ,MODE_TICKVALUE) I
Marketlnfo (Symbol () ,MODE_TICKSIZE) *Pip;
柘 pVal2 = PipValue/Pip;
StopLevel = Marketinfo (Symbol () ,MODE_STOPLEVEL) *Point,
for (y = O;y<OrdersTotal () ;y++)
{ if (!OrderSelect (y,SELECT_BY]OS,MODE_TRADES))
continue;
int Type = OrderType () ,
if (OrderMagicNumber () = = hMagic)
{ Ph+ = OrderProfit () ,
BCh+ = OrderSwap () +OrderCommission () ,
BEh+ = OrderLots () *OrderOpenPrice () ,
if (OrderOpenTime () <OThOIIOThO = = 0)
{ OThO = OrderOpenTime () ,
ThO = OrderTicket () ,
OPhO = OrderOpenPrice () ;
}
if (Type== OP_BUY)
_
213
ChB++,
LhB+ = OrderLots () ,
contmue,
1f ( OrderMagicNumber () ! = Magic!!OrderSymbol () 1 =
Symbol ()) contmue·
if ( OrderTakeProfit () >O) ModifyOrder ( OrderOpenPnce
() ,OrderStopLoss ()) ;
if ( Type<= OP_SELL )
{ Pb+ = OrderProfit () ;
BCb+ = OrderSwap () +OrderComm1ss1on () ;
BEb+ = OrderLots () *OrderOpenPrice () ,
if ( OrderOpenTime () > = OTbL )
{ OTbL = OrderOpenTime () ,
OPbL = OrderOpenPrice () ,
}
if ( OrderOpenTime () <OTbF!!TbF = = 0 )
{ OTbF = OrderOpenTime () ,
TbF = OrderTicket () ,
LbF = OrderLots () ,
1f ( OrderOpenTime () <OTbOIIOTbO = = 0 )
{ OTbO = OrderOpenTime () ,
TbO = OrderTicket () ,
OPbO = OrderOpenPrice () ,
1f ( UsePowerOutSL&&
( POSLPips>O&&OrderStopLoss () = = 0 ) II ( POSLP1ps = =
O&&OrderStopLoss () >O)) SetPOSL = true;
11111111 if ( Type == OP_BUY )
{ CbB++
LbB+ = OrderLots () ,
contmue,
}
el se
{
CbS++,
LbS+ = OrderLots () ,
continue;
}
l se
e{
if ( Type == OP BUYLIMIT )
{ CpBL++,
OPpBL = OrderOpenPrice () ,
continue,
}
else if ( Type = = OP_ SELLLIMIT )
{ CpSL++,
主程式各類模組介紹
OPpSL = OrderOpenPrice () ,
continue;
}
else if ( Type = = OP_ BUYSTOP ) CpBS++,
else CpSS++,
}
CbT = CbB+CbS ,
LbT = LbB+LbS ,
Pb = ND ( Pb+BCb,2 ) ,
ChT = ChB+ChS ,
LhT = LhB+LhS ,
Ph = ND ( Ph+BCh,2 ) ,
CpT = CpBL+CpSL+CpBS+CpSS ,
BCa = BCb+BCh,
//+-----------------------------------------------------------------+
//J Calculate Min/Max Profit and Break Even Points
_
215
II+-----------------------------------------------------------------+
if (LbT>O)
{ BEb = ND ( BEblLbT,Digits ) ;
if ( BCa<O) BEb- = ND ( BCalPip Val21 ( LbB-LbS ) ,Digits ) ,
if ( Pb>PbMaxllPbMax = = 0 ) PbMax = Pb,
if ( Pb<PbMinl!PbMin = = 0 ) PbMin = Pb,
if ( !TradesOpen )
{ FileHandle = FileOpen ( FileName,FILE_
BINIFILE_WRlTE ) ;
1f ( FileHandle>-1 )
File Writelnteger ( FileHandle,TbF ) ,
FileC!ose ( FileHandle ) ,
TradesOpen = true,
if ( Debug ) Print ( FileName+" File
Written : "+TbF ) ,
}
else if ( TradesOpen )
TPb = 0,
PbMax = 0,
PbMin = 0,
OTbF = 0,
TbF = 0,
LbF = 0,
PbC = 0,
PhC = 0,
PaC = 0,
ClosedPips = 0,
CbC = 0,
CaL = 0,
if ( HedgeTypeDD ) hDDStart = HedgeStart;
else hLv!Start = HedgeStart;
Emai!Count = 0,
Emai!Sent = 0,
FileHandle = FileOpen ( FileName,FILE_BINIFILE_
READ ),
if (FileHandle>-1)
囧eClose (FileHandle) ,
Error = GetLastError () ,
FileDelete (FileName) ,
Error = GetLastError () ,
if (Error = = ERR NO ERROR )
if (Debug) Print (FileName+" File
"
Deleted) ,
TradesOpen = false,
.
else Print ("Error deletmg file :
..+FileName+"
..+Error+" .. +ErrorDescription (Error)) ;
}
else TradesOpen = false,
1f (LhT>O)
主程式各類模組介紹
{ BEh = ND (BEh/LhT,Digits) ,
if (Ph>PhMaxllPhMax = = 0) PhMax = Ph,
if (Ph<PhMinllPhMin = = 0) PhMin = Ph,
else
PhMax = 0,
PhMin = 0,
SLh = 0,
允許進出場條件及資金保護模組
這個功能是為了不管市場如何的波動 、帳戶的賺賠,當帳戶本身的
資金淨值低於某一個水位時,程式啟動執行強制關倉的功能 。在外
匯市場,因為市場波動是非常劇烈的,資金的淨值保護是在資金管
_
217
理面上很重要的 一 環 。 尤 其 當使用者使用的是「只 停 利卻不停損」
之間帳戶歸零 。
//+-----------------------------------------------------------------+
//I Check if trading is allowed
//+-----------------------------------------------------------------+
if ( CbT = = O&&ChT = = O&&ShutDown )
if ( CpT>O)
{ ExitTrades (P,displayColorLoss," Bless mg 1s
shutting down") ;
return,
1f ( AllowTrading )
{ Print ( "Blessing has ShutDown. Set ShutDown =
'false'to continue trading" ) ;
if ( PlaySounds ) PlaySound ( AlertSound ) ,
AllowTrading = false,
1f ( UseEmail&&EmailCount<4&&!Testing )
{ SendMail ( "Blessing EA" ," Blessing has shut
down on `` +Symbol () +" ..+TF+
` . Trading has been suspended
To resume trading, set ShutDown to false." ) ;
Error = GetLastError () ,
if ( Error>O) Print ( `Error sending Email :
"+Error+" "+ErrorDescription ( Error )) ;
else Emai!Count = 4,
1f ( !AllowTrading )
{ static bool LDelete ,
if ( !LDelete )
LDelete = true,
Labe!Delete () ,
if ( Ob」 ectFind ( "B3LStop" ) = = -1 )
CreateLabel ( "83LStop" ," Trading has been stopped on this pair." , I 0,0
,0,3,displayColorLoss ) ;
if ( Ob」 ectFind ( "83LExpt" ) = = - I )
CreateLabel ( "83LExpt" ," Check the Experts tab for the reason why." ,
I 0,0,0,6,displayColorLoss ) ;
主程式各類模組介紹
I/+-----------------------------------------------------------------+
//I Calculate Drawdown and Equity Protection
//+ ---------一-------一一一- -----------------+
double PortionBalance = ND ( AccountBalance () *PortionPC,2 ) ,
if ( Pb+Ph<O) DrawDownPC = - ( Pb+Ph ) !PortionBalance,
if ( DrawDownPC> = MaxDDPercent/100 )
{ ExitTrades ( A,displayColorLoss," Equity Stop Loss
Reached" ) ;
if ( PlaySounds ) PlaySound ( AlertSound ) ,
return ,
}
,f ( - ( Pb+Ph ) >MaxDD ) MaxDD = - ( Pb+Ph ) ,
MaxDDPer = MathMax ( MaxDDPer,DrawDownPC* I 00 ) ,
if ( StatsPeriod>O) Stats ( TimeCurrent () ,false,TimeCurrent () <Ne
xtStats,PortionBa lance,Pb+Ph ) ;
//+-----------------------------------------------------------------+
//I Calculate Stop Trade Percent I
/!+--一------一一----------------------------------------------------- +
_
219
double StepAB = lnitialAB* ( l+StopTradePercent ) ,
double StepSTB = AccountBalance () * ( 1-StopTradePercent ) ,
double NextISTB = StepAB* ( 1-StopTradePercent ) ,
if ( StepSTB>NextISTB )
{ InitialAB = StepAB ,
StopTradeBalance = StepSTB,
else 面 ( !ShutDown&&!RecoupClosedLoss )
ShutDown = true,
if ( PlaySounds ) PlaySound ( AlertSound ) ,
Print ( "Portion Balance dropped below stop trade
percent" ) ,
return ( 0 ) ,
資金管理模組
都 可以做適 當 的 調整 , 這跟部分主要是考慮到不同投資者對 風 險忍
受度 的不同所 設 的 資金管理模 式 。
//+-----------------------------------------------------------------+
//I Money Management and Lot size coding
I!+-----------------------------------------------------------------+
if ( UseMM )
{ if (CbT>O)
{ if ( GlobalVariableCheck ( ID+" LotMult" ))
LotMult = GlobalVariableGet ( ID+" LotMutt" ) ;
if ( LbF ! = LotSize ( Lots[O] *LotMult ))
{ LotMult = LbF/Lots[O],
GlobalVariableSet
( ID+" LotMult" ,LotMult ) ,
Print ( ` LotMult reset to "+DTS
( LotMult,O)) ;
}
if ( CbT = = 0)
{ double Contracts,Factor,Lots1ze,
Contracts = PortionBalance/ 10000,
主程式各類模組 介 紹
if ( Multiplier< = l ) Factor = Level,
else Factor = ( MathPow ( Multiplier,Level ) -
Multiplier ) / ( Multiplier-I ) ;
Lotsize = LAF* AccountType*Contracts/
( I +Factor ) ,
LotMult = MathMax ( MathFloor ( Lotsize/
Lot ) ,MinMult ) ,
Globa!VariableSet ( ID+" LotMult" ,LotMult ) ;
}
I/+-----------------------------------------------------------------+
//I Check Lot Size Funtion 丨
II+-----------------------------------------------------------------+
double LotSi ze ( double Lot )
{ Lot = ND ( Lot,LotDecimal ) ,
Lot = MathMin ( Lot,Marketlnfo ( Symbol () ,MODE_
MAXLOT )) ;
Lot = MathMax ( Lot,MinLotSize ) ,
return ( Lot ) ,
_
221
市場趨勢判斷及進場邏輯模組
這個部分是程式在下單前必須透過指標先判斷市場方向。雖然
此程式是馬丁格爾策略,但針對市場的對的方向性下單也很重要,
此模組提供了兩大部分的趨勢判斷。首先是長趨勢的判斷,再由長
趨勢的判斷下做進場條件判斷。例如在長趨勢的判斷是看漲時,進
場條件即使賣單條件成立,程式也不會下單,反之亦然。這就是常
II+-----------------------------------------------------------------+
Ill C aIculation of Trend Direct10n
II+ 十
mt Trend,
double ima_O = iMA (Symbol () ,O,MAPeriod,O,MODE_
EMA,PRICE_ CLOSE,O) ;
1f (ForceMarketCond = = 3)
1f (和 d>ima_O+MADistance) Trend= 0,
else if (Ask<ima_O-MADistance) Trend= 1,
else Trend = 2,
//+----------------------------------------------------------------+
//I CCI of 5M,15M,30M,1H for Market Condition and Order Entry
II+--------------------------------------------------------------- -十
if (CCIEntry>O)
{ double cci_ 0 I = iCCI (Symbol () ,PERIOD_
- M5,CCIPeriod,PRICE_ CLOSE,O) ;
double cci_02 = iCCI (Symbol () ,PERIOD_
Ml 5,CCIPeriod,PRICE_CLOSE,O) ;
double cci_03 = iCCI (Symbol () ,PERIOD_
M30,CCIPeriod,PRICE_CLOSE,O) ,
double cci_ 04 = iCCI ( Symbol () ,PERIOD_
H l ,CCIPeriod,PRICE_ CLOSE,O) ;
double cci_ ll = iCCI ( Symbol () ,PERIOD_
MS,CCIPeriod,PRICE_CLOSE,l ) ;
double cci_ 12 = iCCI ( Symbol () ,PERIOD_
MIS,CCIPeriod,PRICE_CLOSE, l ) ;
double cci_ 13 = iCCI ( Symbol () ,PERIOD_
M30,CCIPeriod,PRICE_CLOSE,l ) ;
double cci_ 14 = iCCI ( Symbol () ,PERIOD_
HI ,CCIPeriod,PRICE_ CLOSE, I ) ;
}
if ( CCIEntry>O&&CbT = = O&&CpT<2 )
{ if ( cci l l>O&&cci 12>0&&cci 13>0&&cci 14>0&&cci 01
>O&&cci 02>0&&cci 03>0&&cci 04>0 )
{ if ( ForceMarketCond = = 3 ) Trend = 0,
if ( CCIEntry = = I)
{ if ( ForceMarketCond! = I&&
( UseAnyEntryl/ IndEntry = 0丨/ ( !UseAnyEntry&&lndEntry>O&&Buy
主程式各類模組 介 紹
=
Me ) ) ) BuyMe = true ;
else BuyMe = false,
if ( !UseAnyEntry&&IndEntry>O&&Sell
Me&& ( !B3Traditional / ( B3Traditional&&Trend! = 2 ) ) ) SellMe =
false ;
}
else if ( CCIEntry = = 2)
{ if ( ForceMarketCond! = O&&
( UseAnyEntryi lndEntry = = O, ( !UseAnyEntry&&IndEntry>O&&Sell
Me ) ) ) SellMe = true ;
else SellMe = false,
if ( !UseAnyEntry&&lndEntry>O&&Buy
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) BuyMe =
false ;
}
else 」 f ( cc 」 ll <O&&cc 」 12 <0&&cci 13<0&&cci 14<0&&cc
」 0 I <O&&cci 02<0&&cci 03 <0&&cc 」 04 <0 )
{ if ( ForceMarketCond = = 3 ) Trend = I,
_
223
1f ( CCIEntry = = I)
{ if ( ForceMarketCond! = O&&
( UseAnyEntrylllndEntry = = 0丨丨 ( !UseAnyEntry&&lndEntry>O&&Sell
Me ) ) ) SellMe = true;
else SellMe = false ,
if ( !UseAnyEntry&&lndEntry>O&&Buy
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) BuyMe =
false;
else if ( CCIEntry = = 2 )
{ if ( ForceMarketCond! = l&&
( UseAnyEntryl llndEntry = = 011 ( !UseAnyEntry&&IndEntry>O&&Buy
Me ) ) ) BuyMe = true;
else BuyMe = false,
if ( !UseAnyEntry&&JndEntry>O&&Sell
Me&& (!B3Traditional ll ( B3Traditional&&Trend! = 2 ) ) ) SellMe =
false ;
else if ( !UseAnyEntry&&lndEntry>O)
{ BuyMe = false,
Sel!Me = false ,
//+----一-- ----------------------- 十
-
SMA,PRICE_ OPEN,O) ;
double stddev = iStdDev ( Symbol () ,O,BollPeriod,O,MODE_
SMA,PRICE_OPEN,O) ;
double bup = ma+ ( BollDeviation*stddev ) ,
double bdn = ma- ( Bol!Deviation*stddev ) ,
double bux = bup+Bol!Distance,
double bdx = bdn-BollDistance,
if ( Ask<bdx )
{ if ( BollingerEntry = = I)
{ if ( ForceMarketCond! = I &&
( UseAnyEntryllindEntry = = OIi ( !UseAnyEntry&&IndEntry>O&&Buy
Me ) ) ) Buy Me = true;
else BuyMe = false ,
if ( !UseAnyEntry&&IndEntry>O&&Sell
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) SellMe =
false;
}
else if ( BollingerEntry = = 2)
{ if ( ForceMarketCond! = O&&
( UseAnyEntryllindEntry = = OIi ( !UseAnyEntry&&IndEntry>O&&Sell
Me ) ) ) SellMe = true;
else SellMe = false ,
主程式各類模 組 介紹
if ( !UseAnyEntry&&lndEntry>O&&Buy
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) BuyMe =
false ;
}
else if ( Bid>bux )
{ if ( BollingerEntry = = 1)
{ if ( ForceMarketCond! = O&&
( UseAnyEntrylllndEntry = = OIi ( !UseAnyEntry&&lndEntry>O&&Sell
Me ) ) ) Sel!Me = true;
else SellMe = false,
if ( !UseAnyEntry&&IndEntry>O&&Buy
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) BuyMe =
false;
}
else if ( BollingerEntry = = 2)
{ if ( ForceMarketCond! = l&&
( UseAnyEntrylllndEntry = = 0丨I ( !UseAnyEntry&&IndEntry>O&&Buy
Me ) ) ) BuyMe = true;
else BuyMe = false ;
_
225
1f ( !UseAnyEntry&&IndEntry>O&&Sell
Me&& ( !B3Traditionalll ( B3Trad」tional&&Trend! = 2 ) ) ) SellMe =
false;
else if ( !UseAnyEntry&&IndEntry>O)
{ BuyMe = false,
SellMe = false ,
II+ --------------------------------+
//I Stochastic Indicator for Order Entry
II+ ------------ +
if ( StochEntry>O&&CbT = = O&&CpT<2 )
{ int zoneBUY = BuySellStochZone,
int zoneSELL = 100-BuySellStochZone,
double stoc_O = iStochastic ( NULL,O,KPeriod,DPeriod,Slow1
ng,MODE_LWMA,1,0,1 ) ;
double stoc_ 1 = iStochastic ( NULL,O,KPeriod,DPeriod,Slow1
ng,MODE_LWMA, l , 1, 1) ;
if ( stoc _ O<zoneBUY &&stoc_ 1<zoneBUY )
if ( StochEntry = = l )
{ if ( ForceMarketCond! = !&&
( UseAnyEntrylllndEntry = = OIi ( !UseAnyEntry&&lndEntry>O&&Buy
Me ) ) ) BuyMe = true;
else BuyMe = false ,
if ( !UseAnyEntry&&IndEntry>O&&Sell
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) SellMe =
false;
else if ( StochEntry = = 2)
{ if ( ForceMarketCond! = O&&
,,,,,, ( UseAnyEntrylllndEntry = = OIi ( !UseAnyEntry&&lndEntry>O&&Sell
Me ) ) ) SellMe = true;
else Sel!Me = false,
if (!UseAnyEntry&&IndEntry>O&&Buy
Me&& (!B3Traditionalll (B3Traditional&&Trend! = 2))) BuyMe =
false;
}
else if (stoc_ O>zoneSELL&&stoc_ l>zoneSELL)
{ if (StochEntry = = I)
{ if (ForceMarketCond! = O&&
(UseAnyEntryllindEntry = = OIi (!UseAnyEntry&&IndEntry>O&&Sell
Me))) SellMe = true;
else SellMe = false,
if (!UseAnyEntry&&lndEntry>O&&Buy
Me&& (!B3Traditionalll (B3Traditional&&Trend! = 2))) BuyMe =
false;
}
else if (StochEntry = = 2)
{ if (ForceMarketCond! = I&&
(UseAnyEntrylllndEntry = = OIi (!UseAnyEntry&&IndEntry>O&&Buy
主程式各類模組介紹
Me))) BuyMe = true;
else BuyMe = false,
if (!UseAnyEntry&&IndEntry>O&&Sell
Me&& (!B3 Traditional II (B3 Traditional&&Trend ! = 2))) SellMe =
false;
}
else if (!UseAnyEntry&&lndEntry>O)
{ BuyMe = false,
SellMe = false,
}
if (IndEntry>O) IndicatorUsed = IndicatorUsed+UAE,
IndEntry++;
IndicatorUsed = IndicatorUsed+" Stoch ``
,
II+----------------------------------------------------------------+
//I MACD Indicator for Order Entry I
_
II+----------------------------------------------------------------+
227
1f ( MACDEntry>O&&CbT = = O&&CpT<2 )
{ double MACDm = iMACD ( NULL,MACD_TF,FastPeriod,Sl
owPeriod,Signa!Period,MACDPrice,0,0 ) ;
double MACDs = iMACD ( NULL,MACD_TF,FastPeriod,Sl
owPeriod,SignalPeriod,MACDPrice, 1,0 ) ;
if ( MACDm>MACDs )
{ if ( MACDEntry = = 1)
{ if ( ForceMarketCond! = l&&
( UseAnyEntrylllndEntry = = OIi ( !UseAnyEntry&&IndEntry>O&&Buy
Me ) ) ) Buy Me = true;
else BuyMe = false,
if ( !UseAnyEntry&&IndEntry>O&&Sell
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) SellMe =
false;
else if ( MACDEntry = = 2)
{ if ( ForceMarketCond! = O&&
( UseAnyEntrylllndEntry = = OIi ( !UseAnyEntry&&lndEntry>O&&Sell
Me ) ) ) SellMe = true;
else SellMe = false ,
if ( !UseAnyEntry&&lndEntry>O&&Buy
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) BuyMe =
false ;
else if ( MACDm<MACDs )
if ( MACDEntry = = I)
{ if ( ForceMarketCond! = O&&
( UseAnyEntryllindEntry = = 011 ( !UseAnyEntry&&IndEntry>O&&Sell
Me ) ) ) SellMe = true;
else SellMe = false,
if ( !UseAnyEntry&&IndEntry>O&&Buy
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) BuyMe =
false;
else if ( MACDEntry = = 2)
{ if ( ForceMarketCond! = 1&&
,,,,,, ( UseAnyEntryll lndEntry = = OIi ( !UseAnyEntry&&lndEntry>O&&Buy
Me ) ) ) Buy Me = true;
else BuyMe = false ,
if ( !UseAnyEntry&&IndEntry>O&&Sell
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) SellMe =
false;
}
else if ( !UseAnyEntry&&IndEntry>O)
{ BuyMe = false ,
SellMe = false ,
}
if ( IndEntry>O) IndicatorUsed = lndicatorUsed+UAE,
IndEntry++,
IndicatorUsed = IndicatorUsed+" MACD ``
,
}
//+ ---一一一一 一-------一- + << This must
be the first Entry check
叭 Moving Average Indicator for Order Entry I « Add
your own Indicator Entry checks
主程式各類模組介紹
//+---------------------- + < < after the
Moving Average Entry
if ( MAEntry>O&&CbT = = O&&CpT<2 )
{ if ( Bid>ima O+MADistance&& ( !B3Traditional
( B3Traditional&&Trend! = 2 ) ) )
{ if ( MAEntry = = 1)
{ if ( ForceMarketCond ! = 1&&
( UseAnyEntrylllndEntry = = OIi ( !UseAnyEntry&&IndEntry>O&&Buy
Me ) ) ) Buy Me = true;
else BuyMe = false,
if ( !UseAnyEntry&&IndEntry>O&&Sell
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) SellMe =
false ;
}
else if ( MAEntry = = 2)
{ if ( ForceMarketCond ! = O&&
( UseAnyEntrylllndEntry = = OIi ( !UseAnyEntry&&IndEntry>O&&Sell
Me ) ) ) SellMe = true;
else Sel!Me = false ,
if ( !UseAnyEntry&&IndEntry>O&&Buy
_
229
」
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) BuyMe =
false;
else if ( MAEntry = = 2)
{ if ( ForceMarketCond! = l&&
( UseAnyEntrylllndEntry = = 011 ( !UseAnyEntry&&IndEntry>O&&Buy
Me ) ) ) BuyMe = true;
else BuyMe = false ,
if ( !UseAnyEntry&&IndEntry>O&&Sell
Me&& ( !B3Traditionalll ( B3Traditional&&Trend! = 2 ) ) ) SellMe =
false;
else if ( B3Traditional&&Trend = = 2 )
{ if ( ForceMarketCond! = l&&
( UseAnyEntrylllndEntry = = OIi ( !UseAnyEntry&&lndEntry>O&&Buy
Me ) ) ) Buy Me = true;
if ( ForceMarketCond! = O&&
( UseAnyEntrylllndEntry = = 011 ( !UseAnyEntry&&lndEntry>O&&Sell
Me ) ) ) SellMe = true;
}
else
-
BuyMe = false ,
Se!IMe = false,
主程式各類模組介紹
}
I/+-------------------- --- --------------------+
//I Trade Selection Logic I
II+-----------------------------------------------------------------+
OrderLot = LotSize ( Lots[StrTolnteger ( DTS ( MathMm
( CbT+CbC,MaxTrades-1 ) ,0 )) ]*LotMult ) ;
if ( CbT = = O&&CpT<2&&!FirstRun )
{ if ( B3Traditional )
{ if ( BuyMe )
{ if ( CpBS = = O&&CpSL = = O&&
(( Trend! = 2IIMAEntry = = 0 ) II ( Trend = = 2&&MAEntry = = I )))
{ Entry = g2-MathMod ( Ask,g2)
+EntryOffset;
1f ( Entry>StopLevel )
{ Ticket = SendOrder
( Symbol () ,OP_ BUYSTOP,OrderLot,Entry,O,Magic,CLR_NONE ) ;
if ( Ticket>O )
{ if ( Debug )
Print ( "Indicator Entry - ( ` ` " ) BuyStop MC =
+IndicatorUsed+
"+Trend ) ;
_
231 ,
CpBS++,
1f (SellMe )
{ if ( CpSL = = O&&CpBS = = O&&
(( Trend! = 2IIMAEntry = = O) 11 ( Trend = = 2&&MAEntry = = 2 )))
{ Entry = g2-MathMod ( Bid,g2 ) -
EntryOffset,
1f ( Entry>StopLevel )
{ Ticket = SendOrder
( Symbol () ,OP_SELLLIMIT,OrderLot,Entry,0,Magic,CLR_NONE ),
if ( Ticket>O&&Debug )
Print ("Indicator Entry - ( "+IndicatorUsed+" ) SellLimit MC =
"+Trend ) ;
+EntryOffset,
{ Entry = MathMod ( Bid,g2 )
1f ( Entry>StopLevel )
{ Ticket = SendOrder
( Symbol () ,OP_SELLSTOP,OrderLot,-Entry,0,Magic,CLR_NONE ) ;
if ( Ticket>O&&Debug )
" +lndicatorUsed+,, ) SellStop MC =
Print ( "Indicator Entry -
"+Trend ) ;
}
e{
se
1f ( BuyMe )
{ Ticket = SendOrder ( Symbol () ,OP_BU
Y,OrderLot,O,slip,Magic,Blue ) ;
if ( Ticket>O&&Debug ) Print ( ``Indicator
Entry - " +IndicatorUsed+" ) Buy" ) ;
}
else if ( SellMe )
{ Ticket = SendOrder ( Symbol () ,OP_ SE
主程式各類模組介紹
LL,OrderLot, O ,slip ,Magic ,d 」 splayColorLoss ) ;
if ( Ticket>O&&Debug ) Print ( "Indicator
Entry - ` ` " ) Sell" ) ;
+IndicatorUsed+
}
}
if ( Ticket>O) return ,
}
else if ( TimeCurrent () -EntryDelay>OTbL&&CbT+CbC<MaxTrades
&&!FirstRun )
{ if ( UseSmartGrid )
{ if ( RSI[!]! = iRSI ( NULL,RSI_TF,RSI_
Period,RSI_Price, l ))
for ( y = O;y<RSl_period+RSI_MA_
Period ;y++) RSI[y] = iRSI ( NULL,RSI_TF,RSI_Period,RSI_price,y ) ,
else RSI[O] = iRSI ( NULL,RSI_TF,RSI_
Period,RSI_price,O) ,
RSI_MA = iMAOnArray ( RSI,O,RSI_MA_
Period,O,RSI_MA_Method,O) ;
}
if ( CbB>O)
_
233
{ if ( OPbL>Ask ) Entry = OPbL- ( MathRound
(( OPbL-Ask ) /g2 ) + 1 ) *g2;
else Entry = OPbL-g2,
if ( UseSmartGrid )
if ( Ask<OPbL-g2&&RSI[O]>RSI_MA )
{ Ticket = SendOrder ( Symbol
() ,OP_BUY,OrderLot,0,slip,Magic,Blue ) ;
if ( Ticket>O&&Debug ) Print
( "SmartGrid Buy RSI : "+RSI[O] +" > MA: "+RSI_MA ) ;
}
else if ( CpBL = = 0 )
{ if ( Ask-Entry>StopLevel )
{ Ticket = SendOrder ( Symbol
() ,OP_BUYLIMIT,OrderLot,Entry-Ask,O,Magic,SkyBlue ) ;
1f ( Ticket>O&&Debug ) Print
( "BuyLimit grid" ) ,
-
else if ( CbS>O)
{ if ( Bid>OPbL ) Entry = OPbL+ ( MathRound
(( -OPbL+Bid ) /g2 ) + I ) *g2;
else Entry = OPbL+g2 ,
1f ( UseSmartGrid )
{ if ( Bid>OPbL+g2&&RSI[O]<RSI_MA )
{ Ticket = SendOrder ( Symbol
() ,OP_SELL,OrderLot,O,slip,Magic,displayColorLoss ) ;
if ( Ticket>O&&Debug ) Print
"SmartGrid Sell RSI : "+RSI[O] +" < MA: "+RSI_MA ) ;
}
}
else if ( CpSL = = 0)
{ if ( Entry-B 心StopLevel )
{ Ticket = SendOrder ( Symbol
() ,OP_ SELLLIMIT,OrderLot,Entry-Bid,O,Magic,Coral ) ;
if ( Ticket>O&&Debug ) Print
( "SellLimit grid" ),
}
else if ( CpSL = = l&&OPpSL-
Entry>g2/2&&Entry-Bid>StopLevel )
主程式各類模組介紹
{ for ( y = OrdersTotal () -1 ;y> = O;y-- )
{ if ( !OrderSelect ( y,SELECT_
BY_ POS ,MODE_TRADES )) continue;
if ( OrderMagicNumber () '
= Magic JJOrderSymbol () ! = Symbol () IIOrderType () ! = OP_
SELLLIMIT ) continue;
Success = ModifyOrder
(Entry,O,Coral ) ,
1f ( Success&&Debug ) Pnnt
"Mod Sel!Limit Entry" ) ,
}
}
}
if ( Ticket>O) return,
_
235
對沖模組
這個部分是當投資者啟動「程式對沖」機制之後,對沖功能就
開始做反向單的下單邏輯機制。因為「對沖單」是屬於另一個群組,
它主要是為了彌補使用馬丁格爾策略下過大的浮動虧損損失,所以
有一個計算連動係數的涵式。
//+----------------------------------- ----------+
//I Hedge Trades Set-Up and Monitoring
//+-----------------------------------------------------------------+
if (UseHedge&&CbT>O)
{ if (ChT>O&&!hActive) hActive = true,
int hLevel = CbT+CbC,
if (HedgeTypeDD)
{ if (hDDStart = = O&&ChT>O) hDDStart =
MathMax (HedgeStart,DrawDownPC+hReEntryPC) ;
if (hDDStart>HedgeStart&&hDDStart>DrawDownP
C+hReEntryPC) hDDStart = DrawDownPC+hReEntryPC;
}
if (!hActive)
{ if (!hThisChart&& (hPosCorr&&CheckCorr ()
<0.9ll!hPosCorr&&CheckCorr () >-0.9 ))
{ if (Ob」 ectFind ("B3LhCor") = = -1)
CreateLabel ("B3LhCor" ," The
correlation with the hedge pair has dropped below 90%." ,0,0,190,10,displa
yColorLoss) ;
}
if (( CbB>O&&hPosCorr ) II
( CbS>O&&!hPosCorr ))
{ Ticket = SendOrder
( HedgeSymbol,OP _ SELL,OrderLot,O,slip,hMagic,Maroon ) ;
主程式各類模 組介 紹
if ( Ticket>O )
{ if ( hMaxLossPips>O)
SLh = h和 d+hMaxLossP1ps ,
1f ( Debug ) Print
"Hedge Sell : Stoploss @ "+DTS ( SLh,Digits )) ;
}
}
if ( Ticket>O )
{ hActive = true,
if ( HedgeTypeDD ) hDDStart+
= hReEntryPC,
hLvlStart = hLevel+ 1,
return;
}
else if ( hActive )
{ if ( HedgeTypeDD&&hDDStart>Hedge
Start&&hDDStart<DrawDownPC+hReEntryPC ) hDDStart =
Draw DownPC+hReEntryPC ;
_
237
1f (hLvlStart == 0)
{ if (HedgeTypeDD) hLvlStart = hLevel+ 1,
else hLvlStart = MathMax
(HedgeStart,hLevel+ 1) ,
}
if (hLevel> = hLvlStart)
{ OrderLot = LotSize (Lots[CbT+CbC-
l]*LotMult*hLotMult) ;
1f (OrderLot>O&& (CbB>O&&!hPosCorr)
II (CbS>O&&hPosCorr))
{ Ticket = SendOrder
(HedgeSymbol,OP_ BUY,OrderLot,O,slip,hMagic,MidnightBlue) ,
if (Ticket>O&&Debug) Print
("Hedge Buy") ,
1f (OrderLot>O&& (CbB>O&&hPosCorr)
11 (CbS>O&&!hPosCorr))
{ Ticket = SendOrder
(HedgeSymbol,OP_ SELL,OrderLot,O,slip,hMagic,Maroon) ;
if (Ticket>O&&Debug) Print
("Hedge Sell") ,
1f (Ticket>O)
{ hLv!Start = hLevel+ 1,
return,
y = 0,
if (hMaxLossPips>O)
{ if (ChB>O)
if (hFixedSL)
if (SLh = = 0) SLh
= hAsk-hMaxLossP1ps,
- {
else
if(SLh==OII
(SLh<BEh&&SLh<hAsk-hMaxLossPips)) SLh = hAsk-hMaxLossP1ps,
else if
(StopTrailAtBE&&hAsk-hMaxLossPips> = BEh) SLh = BEh,
else if (SLh> =
BEh&& !StopTrailAtBE)
{ if
(!ReduceTrailStop) SLh = MathMax (SLh,hAsk-hMaxLossPips) ,
else SLh =
MathMax (SLh,hAsk-MathMax (StopLevel,hMaxLossPips* (1- (hAsk-
hMaxLossPips-BEh) / (hMaxLossPips*2)))) ;
}
}
if (h和 d< = SLh) y =
ExitTrades (H,DarkViolet," Hedge Stop Loss") ;
}
else if (ChS>O)
{ if (hFixedSL)
{ if (SLh = = 0) SLh
= hBid+hMaxLossPtps,
}
主程式各類模紐介紹
else
{ if (SLh == 011 (SLh>
BEh&&SLh>hBid+hMaxLossPips)) SLh = h和d+hMaxLossPips;
else if (StopTrai!AtBE
&&hBid+hMaxLossP」ps< = BEh) SLh = BEh,
else if (SLh< =
BEh&&! StopTrai!AtBE)
{ if
(!ReduceTrailStop) SLh = MathMin (SLh,hBid+hMaxLossPips) ,
else SLh =
MathMin (SLh,h和 d+MathMax (StopLevel,hMaxLossPips* (1- (BEh-
h和 d-hMaxLossPips) / (hMaxLossPips*2)))) ;
}
}
if (hAsk> = SLh) y =
ExitTrades (H,DarkViolet," Hedge Stop Loss") ;
}
}
if (y = = O&&hTakeProfit>O)
_
239
1f (ChB >O&&Bid>OPhO+hTakeProfit) y
= ExitTrades (T,DarkViolet," Hedge Take Profit reached" ,ThO) ;
if (ChS>O&&Ask<OPhO-hTakeProfit ) y
= ExitTrades (T,DarkViolet," Hedge Take Profit reached" ,ThO) ;
}
if (y>O)
{ PhC = FindClosedPL (H) ,
hActive = false,
return,
II+-----------------------------------------------------------------+
Ill Find Hedge Profit
II+------------------- 十
1f (Type = = H&&OrderMagicNumber ()
= = hMagic) ClosedProfit+ = OrderProfit () +OrderSwap ()
+OrderComm1ss10n () ;
- return (ClosedProfit) ,
//+------------ -------------------------+
//I Check C orrelat1on I
//+-----------------------------------------------------------------+
double CheckCorr ()
{ double BaseDiff,HedgeDiff,BasePow,HedgePow,Mult,
for (y = CorrPeriod-1 ;y> = O;y--)
{ BaseDiff= iClose (Symbol () ,1440,y) -iMA (Symbol
() ,1440,CorrPeriod,O,MODE_SMA,PRJCE_CLOSE,y) ;
HedgeDiff = iClose (Hedge Symbol, 1440,y) -iMA (HedgeS
ymbol, 1440,CorrPeriod,O,MODE_ SMA,PRJCE_ CLOSE,y) ;
Mult+ = BaseDiff*HedgeDiff;
BasePow+ = MathPow (BaseDiff,2) ,
HedgePow+ = MathPow (HedgeDiff,2) ,
}
if (BasePow*HedgePow>O) return (Mult/MathSqrt
(BasePow*HedgePow)) ;
}
損益計算模組
主程式各類模組介紹
前面有提到線圖的「停利點位 Take Profit 」及「不賺不賠點位
Break Even 」資訊收集程式的部分,而這個模組就是真正在市場波動
時即時計算利潤以及即時的調整停利點位。調整停利點位或不賺不
賠點位是因為只要程式多下一個層級,整個出場點就會不同,在上
一 章節裡有提到,馬丁格爾策略使用的是整組的移動停利模式,所
` 以程式必須即時不斷的做點位的調整,同時,若對沖單機制有被啟
動的話,對沖單的停利點也必須即時計算出點位。
II+-----------------------------------------------------------------+
Ill Calculate Take Profit 丨
II+-----------------------------------------------------------------+
static double BCaL,BEbL,
if (CbT>O&& (TPb = = OIICbT+ChT! = CaLIIBEbL! = BEbllBCa1
= BCaLIIFirstRun))
`
{ string sCalcTP =" Set New TP : ,
double NewTP,BasePips,
_
241
CaL = CbT+ChT;
BCaL = BCa,
BEbL = BEb,
BasePips = ND ( Lot*LotMult*GridTP* ( CbT+CbC ) I
( LbB-LbS ) ,Digits ) ;
if ( CbB>O)
{ if ( ForceTPPips>O)
{ NewTP = BEb+ForceTPP1ps,
sCalcTP = sCalcTP+" +Force TP "
else if ( CbC>O&&CloseTPPips>O)
{ NewTP = BEb+CloseTPP1ps,
sCalcTP = sCalcTP+" +Close TP "
else if ( BEb+BasePips>OPbL+tp2 )
{ NewTP = BEb+BasePips,
sCalcTP = sCalcTP+" +Base TP : "
else
NewTP = OPbL+tp2 ,
sCalcTP = sCalcTP+" +Grid TP :
if ( MinTPPips>O)
{ N ewTP = MathMax
( NewTP,BEb+MinTPPips ) ;
sCalcTP = sCalcTP+" >Minimum TP: "
NewTP+ = MoveTP*Moves,
if ( BreakEvenTrade>O&&CbT+CbC> =
BreakEvenTrade )
NewTP = BEb+BEPlusP1ps,
sCalcTP = sCalcTP+" >BreakEven
1f ( BCa<O)
{ NewTP- = ND ( BCa/P」p Val2/ ( LbB-
LbS ) , D 」gits ) ,
sCalcTP = sCalcTP+" +BC:
}
sCalcTP = (sCalcTP+" Buy : TakeProfit : ``)
,
}
else if (CbS>O)
{ if (ForceTPPips>O)
{ NewTP = BEb-ForceTPP1ps,
sCalcTP = sCalcTP+" -Force TP ``
,
}
else if (CbC>O&&CloseTPPips>O)
{ NewTP = BEb-CloseTPP1ps,
sCalcTP = sCalcTP+" -Close TP ``
,
}
else if (BEb+BasePips<OPbL-tp2)
{ NewTP = BEb+BasePips,
sCalcTP = sCalcTP+" -Base TP :
}e{
主程式各類模組介紹
l
se
NewTP = OPbL-tp2,
"
sCalcTP = sCalcTP+" -Grid TP: ,
}
if (MinTPPips>O)
{ NewTP = MathMin (NewTP,BEb-
MinTPPips) ,
`
sCalcTP = sCalcTP+" >Minimum TP : ,
}
NewTP- = MoveTP*Moves,
if (BreakEvenTrade>O&&CbT+CbC> =
BreakEvenTrade)
NewTP = BEb-BEPlusP1ps,
sCalcTP = sCalcTP+" >BreakEven ``
,
}
if (BCa<O)
{ NewTP- = ND (BCa/PipVal2/ (LbB-
LbS) ,Digits) ,
`
sCalcTP = sCalcTP+" -BC: ,
_
243
sCalcTP = ( sCalcTP+" Sell : TakeProfit : ") ,
ProfitPips = TargetPips/P1p ,
ProfitPot = ND ( TargetPips*PipVal2*MathAbs ( LbB-LbS ) ,2 ) ,
if ( CbB>O) PbPips = ND (( 和 d-BEb ) /Pip, 1) ,
if ( CbS>O) PbPips = ND (( BEb-Ask ) /Pip,l ) ,
II+-----------------------------------------------------------------+
//I Maximize Profit with Moving TP and setting Trailing Profit Stop I
II+ ------------------------------------+
if ( MaximizeProfit )
if ( CbT = = 0 )
{ SLbL = 0,
Moves = 0,
SLb = 0,
1f ( CbT>O)
{ if ( PbPips<O&&SLb>O) SLb = 0,
if ( SLb>O&&PbPips< = SLb )
{ ExitTrades ( A,displayColorProfit," Profit
Trailing Stop Reached ( "+DTS ( ProfitSet*l00,2 ) +" %) " ) ;
return,
if ( ProfitPips>O)
{ double TPbMP = ND
( ProfitPips*ProfitSet,Digits ) ;
if (( PbPips+PhPips )
>ProfitPips*ProfitSet ) SLb = ND ( ProfitPips*ProfitSet,Digits ) ,
}
1f ( SLb>O&&SLb>SLbL&&MoveTP>O&&TotalMo
ves>Moves )
TPb = 0,
Moves++,
if ( Debug ) Print ( `` MoveTP" ) ,
SLbL = SLb,
if ( PlaySounds ) PlaySound ( AlertSound ) ,
return,
}
if ( CbT>O&& ( PbPips+PhPips ) > = ProfitPips&& ( ProfitPips>OII
( UseEarlyExit&&EEpc<O) ) )
{ ExitTrades ( A,displayColorProfit," Profit Target Reached" ) ,
return ,
}
I!+-------------------一一一一一一一一一一一-------------- 十
主程式各類模 組介 紹
II+-----------------------------------------------------------------+
double nLots = LbB-LbS+LhB-LhS ,
double hAsk = Marketlnfo ( HedgeSymbol,MODE_ASK ) ,
double hBid = Marketlnfo ( HedgeSymbol,MODE_BID ) ,
if ( hActive>O)
{ double TPa,PhP1ps,
if ( nLots! = O&&hThisChart )
{ BEa = ND ( ( ( BEb*LbT-BEh*LhT ) I ( LbT-
LhT)) ,Digits ) ;
1f ( nLots>O) TPa = ND ( BEa+ TargetPips,Digits ) ,
else TPa = ND ( BEa-TargetPips,Digits ) ,
}
if ( ChB>O) PhP 」ps = ND (( hBid-BEh ) /hPip, I ) ,
if ( ChS>O) PhPips = ND (( BEh-hAsk ) /hPip,1 ),
}
II+-----------------------------------------------------------------+
//I Hedge/Basket/ClosedTrades Profit Management
II+-------------------------------------------- 十
_
245
double Pa = Pb,
Pac = PbC+PhC,
if (hActive&&ChT = = 0)
{ PhC = FindClosedPL (H) ,
hActive = false,
return,
if (LbT>O)
{ if (PbC>OII (PbC<O&&RecoupClosedLoss))
Pa+= PbC,
BEb- = ND (PbC/PipVal2/ (LbB-LbS) ,Digits) ,
1f (PhC>OII (PhC<O&&RecoupClosedLoss ) )
{ Pa+= PhC
BEb- = ND (PhC/Pip Val2/ (LbB-LbS) , Digits) ,
線圖資訊顯示模組
這個模組是線圖的資訊顯示模組,這個部分的程式即使不使用,
完全不會影響程式績效。這個程式模組的目的是讓投資者可以透過
線圖畫面清楚看到目前該線圖的下單情況以及損益狀況。同時,也
顯示了設計團隊的 Logo 、市場趨勢方向、指標方向等等圖像。這個
部分的程式只是錦上添花功能,若投資者不想看到這些訊息的顯示,
II+-----------------------------------------------------------------+
Ill External Script Code
II+ --------------------------------+
if ((Testing&& Visual) ll!Testing)
{ if (displayOverlay)
color Colour,
mt dDigits,
Ob」 SetTxt ("B3VTime" ,TimeToStr (TimeCurrent
() ,TIME_SECONDS)) ;
DrawLabel ("B3VSTAm" ,lnitialAccountMultiPor
tion, 167,2,displayColorLoss) ;
if (UseHolidayShutdown)
{ Ob」 SetTxt ("B3VHolF" ,TimeToStr
(Ho!First,TIME_DATE)) ;
Ob」 SetTxt ("B3VHo!T" ,TimeToStr
(HolLast,TIME DATE)) ,
}
DrawLabel ("B3VPBai" ,PortionBalance,167) ,
if (DrawDownPC>0.4) Colour = displayColorLoss,
else 面 (DrawDownPC>0.3) Colour= Orange,
else 面 (DrawDownPC>0.2) Colour = Yellow,
else if (DrawDownPC>O. l) Colour =
displayColorProfit;
else Colour= displayColor,
主程式各類模組介紹
DrawLabel ("B3VDrDn" ,DrawDownPC*l00,315
,2,Colour) ,
if (UseHedge&&HedgeTypeDD) Ob」 SetTxt
("B3VhDDm" ,DTS (hDDStart* 100,2)) ;
else if (UseHedge&&!HedgeTypeDD)
{ Draw Label
("B3VhLvi" ,CbT+CbC,318,0) ;
Ob」 SetTxt ("B3VhLvT" ,DTS
(hLvlStart,O)) ,
_
247
1f ( UseEarlyExit&&EEpc< l )
{ if ( Ob」 ectFind ( `` B3SEEPr" ) = = -1 )
CreateLabel ( "B3SEEPr" ," / ' ,0,0,220,12 ) ;
if ( Ob」 ectFind ( "B3VEEPr" ) = = -1 )
CreateLabel ( "B3VEEPr" ," " ,0,0,229, 12 ) ;
Ob」 SetTxt ( "B3VEEPr" ,DTS
( ProfitPips*PipValue*MathAbs ( LbB-LbS ) ,2 )) ;
}
else
Ob」 Del (
..B3SEEPr" )
Ob」 Del ( `` B3VEEPr" )
1f ( SLb>O)
{ if ( CbB>O) Draw Label
( "B3VPrSL" ,BEb+SLb*Pip,190 ) ;
else if ( CbS>O) Draw Label
( "B3VPrSL" ,BEb-SLb*Pip, 190 ) ;
}
else Draw Label ( "B3VPrSL" ,0, 190 ) ,
if ( Pb>= 0 )
{ DrawLabel ( "B3VPnPL" ,Pb,190,2,displ
ayColorProfit ) ,
Ob」 SetTxt ( "B3VPPip" ,DTS ( PbPips, 1
) ,O,displayColorProfit ) ,
Ob」 Set ( "B3VPPip" ,229 ) ,
else
{ Ob」 SetTxt ( "B3VPnPL" ,DTS
( Pb,2 ) ,O,displayColorLoss ) ;
dD珺its = Digit[ ArrayBsearch ( D1g1t,-
Pb,WHOLE_ARRAY,O,MODE_ASCEND ) , l];
Ob」 Set ( "B3 VPnPL" , l 86-dDigits*7 ) ,
Ob」 SetTxt ( "B3VPPip" ,DTS
( PbPips, 1) ,O,displayColorLoss ) ;
Ob」 Set ( "B3VPPip" ,225 ) ,
}
if (PbMin<O) Ob」 Set ("B3VPLMn" ,225) ,
else Ob」 Set ("B3VPLMn" ,229) ,
Ob」 SetTxt ("B3VPLMn" ,DTS
(PbMin,2) ,O,displayColorLoss) ;
if (CbT+CbC<BreakEvenTrade) Colour =
displayColor;
else if (CbT+CbC<MaxTrades) Colour = Orange,
else Colour = d」 splayColorLoss,
if (CbB>O)
{ Ob」 SetTxt ( `B3LType" "
, Buy : " ) ;
DrawLabel
主程式各類模組介紹
("B3VOpen" ,CbB,207,0,Colour) ,
}
else if (CbS>O)
{ Ob」 SetTxt ( "B3LType" ," Sell : " ) ,
DrawLabel
"B3VOpen" ,CbS,207,0,Colour) ;
}
else
Ob」 SetTxt ("B3LType" ," " ) ,
Ob」 SetTxt ("B3VOpen" ,DTS
(0,0) ,O,Colour) ,
Ob」 Set ( "B3V0pen" ,207) ,
}
Ob」 SetTxt ("B3 VLots" ,DTS (LbT,2)) ,
Ob」 SetTxt ("B3VMove" ,DTS (Moves,O)) ,
Draw Label ("B3VMxDD" ,MaxDD,107) ,
Draw Label ("B3VDDPC" ,MaxDDPer,229) ,
if (Trend = = 0)
{ Ob」 SetTxt ( `B3LTmd " "
, Trend 1s
_
249
UP" , I O,displayColorProfit) ,
if (Ob」 ectFind ("B3ATrnd") = = -1)
CreateLabel ("B3ATrnd" ," " ,0,0,160,20,displayColorProfit," Wingdin
gs") ;
Ob」 ectSetText ("B3ATrnd" ," ?,displayF
ontSize+9," Wingdings" ,displayColorProfit) ;
Ob」 Set ("B3ATrnd" ,160) ,
Ob」 ectSet ("B3ATrnd" ,OBJPROP_ YDI
STANCE,displayYcord+displaySpacing*20) ;
}
else if (Trend = = 1)
{ Ob」 SetTxt ("B3LTrnd" ," Trend 1s
DOWN" , 1O,displayColorLoss) ;
if (Ob」 ectFind ("B3ATrnd") = = -1)
CreateLabel ("B3ATrnd" ," " ,0,0,210,20,displayColorLoss," WingDin
gs") ;
Ob」 ectSetText ("B3ATrnd" ," ?,displayF
ontSize+9," Wingdings" ,displayColorLoss) ;
Ob」 Set ("B3ATrnd" ,210) ,
Ob」 ectSet ("B3ATrnd" ,OBJPROP_ YDI
STANCE,displayYcord+displaySpacing*20+5) ;
}
else if (Trend== 2)
{ Ob」 SetTxt ("B3LTrnd" ," Trend 1s
Ranging" , 1O,Orange) ;
Ob」 Del ( `B3ATrnd")
1f (PaC! = 0)
{ if (Ob」 ectFind ("B3LCIPL") = = -I)
CreateLabel ("B3LCIPL" ," Closed P/L" ,0,0,312, 11) ;
if (Ob」 ectFind ("B3VCIPL") = = - I)
CreateLabel ("B3VCIPL" ," " ,0,0,327,12) ;
if (PaC> = 0) DrawLabel ("B3VCIPL
" ,PaC,327,2,displayColorProfit) ;
-
else
{ Ob」 SetTxt ("B3VCIPL" ,DTS
(PaC,2) ,O,displayColorLoss) ;
dDigits = Digit[ArrayBsearch
( Digit,-PaC,WHOLE_A邸AY,O ,MODE_ASCEND ) , !] ,
Ob」 Set ( "B3VCIPL" ,323-
dDigits*7 ) ,
}
se
e{
Ob」 Del ( "B3LCIPL" ) ,
Ob」 Del ( "B3VCIPL" ) ,
}
if ( hActive )
{ if ( Ob」 ectFind ( "B3LHdge" ) = = -1 )
CreateLabel ( "B3LHdge" ," Hedge" ,0,0,323,13 ) ;
if ( Ob」 ectFind ("B3VhPro" ) = = -1 )
CreateLabel ( "B3VbPro" ," " ,0,0,312,14 ) ;
if ( Pb> = 0 ) Draw Label ( "B3VhPro" ,
Ph,312,2,displayColorProfit ) ,
else
{ ObjSetTxt ( "B3VhPro" ,DTS
主程式各類模組介 紹
( Ph,2 ) ,O,displayColorLoss ) ;
dDigits = Digit[ArrayBsearch
( Digit,-Ph,WHOLE_ARRAY,O,MODE_ASCEND ) ,1] ;
Ob」 Set ("B3VhPro" ,308-
dDigits*7 ) ,
}
if ( Ob」 ectFind ( "B3VhPMx" ) = = -1 )
CreateLabel ( "B3VhPMx" ," " ,0,0,312, 15 ) ;
if ( PhMax> = 0 ) Draw Label ( "B3VhP
Mx" ,PhMax,312,2,displayColorProfit ) ;
else
{ Ob」 SetTxt ( "B3VhPMx" ,DTS
( PhMax,2 ) ,O,displayColorLoss ) ,
dDigits = Digit[ArrayBsearch
( Digit,-PhMax,WHOLE_ARRAY,O,MODE_ASCEND ) ,1] ;
Ob」 Set ( "B3VhPMx" ,308-
dDigits*7 ) ,
}
if ( Ob」 ectFind ( "B3ShPro" ) = = -1 )
CreateLabel ( "B3ShPro" ," /" ,0,0,342, 15 ) ;
_
251
1f ( Ob」 ectFind ( "B3VhPMn" ) = = -1 )
CreateLabel ( "B3VhPMn" ," " ,0,0,351 , 15,displayColorLoss ) ;
1f ( PhMin<O) Ob」 Set
( "B3VhPMn" ,347 ) ,
else Ob」 Set ( "B3VhPMn" ,351 ) ,
Ob」 SetTxt ( "B3VhPMn" ,DTS
( PhMin,2 ) ,0,displayColorLoss ) ;
if ( Ob」 ectFind ( "B3LhTyp" ) = = -1 )
CreateLabel ( "B3LhTyp" ," " ,0,0,292,16 ) ;
if ( Ob」 ectFind ( "B3Vh0pn" ) = = -1 )
CreateLabel ( "B3Vh0pn" ," " ,0,0,329,16 ) ;
if ( ChB>O)
{ Ob」 SetTxt
( "B3LhTyp" ," Buy : " ) ;
DrawLabel
( "B3Vh0pn" ,ChB,329,0 ) ,
}
else if ( ChS>O)
{ Ob」 SetTxt
` B3LhTyp " ," Sell : " ) ;
DrawLabel
"B3Vh0pn" ,ChS,329,0 ) ,
}
else
嗚 SetTxt ( "B3LhTyp" ," " ) ,
Ob」 SetTxt ( !33Vh0pn" ,DTS
( 0,0 )) ,
Ob」 Set ( "B3Vh0pn" ,329 ) ,
}
if ( Ob」 ectFind ( "B3Sh0pn" ) = = -1 )
CreateLabel ( "B3Sh0pn" ," /" ,0,0,342,16 ) ;
if ( Ob」 ectFind ( "B3VhLot" ) = = -1 )
CreateLabel ( "B3YhLot" ," " ,0,0,351 ,16 ) ;
Ob」 SetTxt ( "B3VhLot" ,DTS ( LhT,2 )) ,
- else
Ob」Del ( "B3LHdge" ) ,
Ob」Del ( "B3VhPro" ) ;
Ob」Del ( "B3VhPMx" ) ,
Ob」 Del ( "B3ShPro" ) ,
呣 Del ( "B3VhPMn" ) ,
Ob」 Del ( "B3LhTyp" ) ,
Ob」 Del ( "B3Vh0pn" ) ,
Ob」 Del ( "B3Sh0pn" ) ,
Ob」Del ( "B3VhLot" ) ,
}
if ( display Lines )
{ if ( BEb>O)
{ if ( Ob」 ectFind ( "B3LBELn"
= = -1 ) CreateLine ( "B3LBELn" ,DodgerBlue,1 ,0 ) ;
ObjectMove
"B3LBELn" ,0,Time[l] ,BEb ) ,
}
else Ob」Del ( "B3LBELn" ),
if ( TPa>O)
{ if ( Ob」 ectFind ( "B3LTPLn" )
主程式各類模組介紹
= = -1 ) CreateLme ( "B3LTPLn" ,Gold ,1,0 ) ;
Ob」 ectMove
"B3LTPLn" ,O,Time[l],TPa ) ,
}
else if ( TPb>O&&nLots! = 0 )
{ if ( Ob」 ectFind ( "B3LTPLn" )
== -1 ) CreateLme ( "B3LTPLn" ,Gold, 1,0 ) ;
Ob」 ectMove
"B3LTPLn" ,O,Time[l],TPb ) ,
}
else Ob」 Del ( "B3LTPLn" ) ,
if ( hActive&&BEa>O)
{ if ( Ob」 ectFind ( "B3LNBEL" )
= = -1 ) CreateLme ( "B3LNBEL" ,Crimson, 1,0 ) ;
Ob」 ectMove
( "B3LNBEL" ,O,Time[l] ,BEa ) ,
}
else Ob」 Del ( "B3LNBEL" ) ,
if ( SLb>OIITPbMP>O)
_
253
double
TSLine, TSBEPoint,TSbSL,
1f ( Ob」 ectFind ( "B3LTSLn" )
= = -1 ) CreateLine ( "B3LTSLn" ,Gold,1,3 ) ;
if ( BEa>O) TSBEPoint = BEa,
else TSBEPoint = BEb,
if ( SLb>O) TSbSL = SLb,
else TSbSL = TPbMP ,
if ( nLots>O) TSLine = ND
( TSBEPoint+ TSbSL *Pip,Digits ) ,
else if ( nLots<O) TSLine = ND
( TSBEPoint-TSbSL *Pip,Digits ) ,
Ob」 ectMove
( "B3LTSLn" ,O,Time[l],TSLine ) ,
}
else Ob」 Del ( "B3LTSLn" ) ,
if ( hThisChart&&BEh>O)
{ if ( Ob」 ectFind ( "B3LhBEL" )
= = -1 ) CreateLine ( "B3LhBEL" ,SlateBlue, 1,0 ) ;
ObjectMove
"B3LhBEL" ,O,Time[l] ,BEh ) ,
}
else Ob」 Del ( "B3LhBEL" ) ,
if ( hThisChart&&SLh>O)
{ if ( Ob」 ectFind ( "B3LhSLL" )
= = -1 ) CreateLine ( "B3LhSLL" ,SlateBlue,1,3 ) ;
ObjectMove
"B3LhSLL" ,O,Time[l],SLh ) ,
}
else Ob」 Del ( "B3LhSLL" ) ,
else
Ob」Del ( "B3LBELn" ) ,
-
Ob」 Del ( "B3LTPLn" ) ,
Ob」Del ( "B3LTSLn" ) ;
Ob」 Del ( "B3LhBEL" ) ,
Ob」Del ( "B3LhSLL" ) ,
ObjDel ( "B3LNBEL" ),
}
if ( CCIEntry&&displayCCI )
{ if ( cci_Ol >O&&cci_ ll >O) Ob」 ectSetText
( "B3VCm05" ,"啁splayFontSize+6," Wingdings" ,displayColorProfit ) ,
else if ( cci_Ol <O&&cci 11 <O)
Ob」 ectSetText ( "B3VCm05" ,"啁splayFontSize+6,"- Wingdings" ,d1sp
layColorLoss ) ;
else Ob」 ectSetText ( "B3VCm05" ," ?,d1
splayFontSize+6," Wingdings" ,Orange ) ;
if ( cci_02>0&&cci_ l2>0 ) Ob」 ectSetText
( "B3VCm!5" ," ?,displayFontSize+6," Wingdings" ,displayColorProfit ),
else if ( cci_ 02<0&&cci 12<0 )
Ob」 ectSetText ( "B3VCml5" ," ?, displayFontS」ze+6了 Wingdings" ,d1sp
layColorLoss ) ;
else Ob」 ectSetText ( "B3VCml5" ," ? , d 」
splayFontSize+6," Wingdings" ,Orange ) ;
if ( cc」 03 >0&&cci 13>0 ) Ob」 ectSetText
,;
( "B3VCm30" ,"噚splayFontSize+6 , Wingdings ,d」splayColorProfit ),
主程式各類模組 介 紹
else if ( cci_03 <0&&cci 13<0 )
Ob」 ectSetText ( "B3VCm30" ," ?,displayFontSize+6, Wingdings" ,d1sp
layColorLoss ) ;
else Ob」 ectSetText ( "B3VCm30" ," ?,d1
splayFontSize+6," Wingdings" ,Orange ) ;
if ( cci 04>0&&cci 14>0 ) Ob」 ectSetText
-;;
( "B3VCm60" ," ?, displayFontSize+6了'Wingdings ,displayColorProfit ),
else if ( cci_04<0&&cci 14<0 )
Ob」 ectSetText ( "B3VCm60" ," ? , displayFontSize+6了 Wingdings" ,d1sp
layColorLoss ) ;
else Ob」 ectSetText ( "B3VCm60" ," ?,d1
splayFontSize+6," Wingdings" ,Orange ) ;
}
if ( Debug )
{ strmg dSpace,
for ( y = O;y< = 175 ;y++) dSpace =
dSpace+"
string dMess =" " Ticket
\n\n" +dSpace+
Magic Type Lots OpenPrice Costs Profit Potential" ;
for ( y = O;y<OrdersTotal () ;y++)
_
{ if ( !OrderSelect ( y,SELECT
255
BY_POS,MODE_TRADES) ) continue,
if ( OrderMagicNumber () ' =
Magic&&OrderMagicNumber () ! = hMagic ) continue;
dMess = ( dMess+" \
n" +dSpace+" "+OrderTicket () +" "+DTS ( OrderMagicNumber () ,0 )
+" " +OrderType ()) ;
dMess = ( dMess+" "+DTS
( OrderLots () ,LotDecimal ) +" "+DTS ( OrderOpenPrice () ,Digits )) ,
dMess = ( dMess+" "+DTS
( OrderSwap () +OrderCommission () ,2 ) ) ;
dMess = ( dMess+" "+DTS
( OrderProfit () +OrderSwap () +OrderCommission () ,2 )) ;
if ( OrderMagicNumber () ' =
Magic) continue,
1f ( OrderType () = = OP_
BUY) dMess = ( dMess+" "+DTS ( OrderLots () * ( TPb-
OrderOpenPrice ()) *PipVal2+0rderSwap () +OrderCommission () ,2 )) ,
if ( OrderType () = = OP_
SELL ) dMess = ( dMess+" "+DTS ( OrderLots () * ( OrderOpenPrice
() -TPb ) *Pip Val2+0rderSwap () +OrderCommission () ,2 )) ;
}
1f ( !dLabels )
dLabels = true ,
CreateLabel ( "B3LPipV" ," Pip
Value " ,0,2,0,0 ) ,
CreateLabel
( "B3VPip V" ," " ,0,2, 100,0 ) ,
CreateLabel
( "B3LDig 「 , " Digits Value" ,0,2,0, 1 ) ;
CreateLabel
..
" ,0,2, 100,1 ) ,
( "B3VDig1·" ,
Ob」 SetTxt ( "B3VD 面 ,DTS
(Digits,0 )) ,
CreateLabel ( "B3LPoin" ," Point
Value " ,0,2,0,2 ) ,
CreateLabel
-
( "B3VPoin" ," " ,0,2, I 00,2 ) ,
Ob」 SetTxt ( "B3VPoin" ,DTS
( Point,Digits )) ,
CreateLabel
( "B3LSprd" ," Spread Value" ,0,2,0,3 ) ;
CreateLabel
("B3VSprd.. ,
" ",0,2, I 00,3) ,
CreateLabel ("B3LBid" ," B 」d
Value " ,0,2,0,4) ,
CreateLabel
`` B3V和 d ""
, " ,0,2, I 00,4) ,
CreateLabel ("B3LAsk" ," Ask
Value " ,0,2,0,5) ,
CreateLabel
` B3VAsk" ,
" ",0,2,100,5) ,
CreateLabel ("B3LLotP" ," Lot
Step" ,0,2,200,0) ;
`` B3VLotP
. ," ..,0,2,300,0) ,
,
CreateLabel
主程式各類模組介紹
Ob」 SetTxt ("B3VLotX" ,DTS
(Marketlnfo (Symbol () ,MODE_MAXLOT) ,0)) ;
CreateLabel ("B3LLotN" ," Lot
Min" ,0,2,200,2) ,
CreateLabel
" B3VLotN , "",0,2,300,2) ,
Ob」 SetTxt ("B3VLotN" ,DTS
(Marketlnfo (Symbol () ,MODE_MINLOT) ,LotDecimal)) ;
CreateLabel ("B3LLotD" ," Lot
Decimal ,0,2,200,3) ,
CreateLabel
("B3VLotD " , " ",0,2,300,3) ,
Ob」 SetTxt ( "B3VLotD" ,DTS
(LotDecimal,O)) ,
CreateLabel
("83LAccT" ," Account Type" ,0,2,200,4) ;
CreateLabel
"83VAccT" ," " ,0,2,300,4) ,
ObjSetTxt ( "B3VAccT" ,DTS
(AccountType,O)) ,
_
CreateLabel
257
("B3LPnts" ," Pip" ,0,2,200,5) ,
CreateLabel
("B3VPnts
...., ..,0,2,300,5) ,
Ob」 SetTxt ("B3VPnts" ,DTS
(Pip,Digits)) ;
CreateLabel ("B3LTicV" ," Tick
Value" ,0,2,400,0) ;
CreateLabel
("B3VTicV" ," " ,0,2,500,0) ,
CreateLabel ("B3LTicS" ," Tick
Size" ,0,2,400, 1) ,
CreateLabel
("B3VTicS " ," " ,0,2,500, 1) ,
Ob」 SetTxt ("B3VTicS" ,DTS
(Marketlnfo (Symbol () ,MODE_TICKSIZE) ,Digits)) ;
CreateLabel ("B3LLev" ," Le
verage" ,0,2,400,2) ,
CreateLabel
" tt tt
("B3VLev , ,0,2,500,2) ,
Ob」 SetTxt ("B3VLev" ,DTS
(AccountLeverage () ,0) +" " ) ;
:1
CreateLabel ("B3LSGTF" ," S
martGrid" ,0,2,400,3) ,
1f (U seSmartGrid) CreateLabel
" B3VSGTF " , True" ,0,2,500,3) ,
else CreateLabel
"B3VSGTF" ," False" ,0,2,500,3) ;
CreateLabel
"B3LCOTF" ," Close Oldest" ,0,2,400,4) ;
if (UseCloseO!dest) CreateLabel
"B3VCOTF" ," True" ,0,2,500,4) ;
else CreateLabel
("B3VCOTF" ," False" ,0,2,500,4) ;
Create Label
("B3LUHTF" ," Hedge" ,0,2,400,5) ;
if (U seHedge&&HedgeTypeDD)
-
CreateLabel ("B3VUHTF" ," Draw Down" ,0,2,500,5) ;
else if
(UseHedge&&!HedgeTypeDD) CreateLabel
("B3VUHTF" ," Level" ,0,2,500,5) ;
else CreateLabel
("B3VUHTF", " " ,0,2,500,5) ;
False
}
Ob」 SetTxt ( "B3VPipV" ,DTS
(PipValue,2)) ,
Ob」 SetTxt ( "B3VSprd" ,DTS (Ask-
Bid,Digits)) ,
ObjSetTxt ( "B3VBid" ,DTS
(和d,Digits)) ,
Ob」 SetTxt ( "B3VAsk" ,DTS
(Ask,Digits)) ,
Ob」 SetTxt ("B3VTicV" ,DTS (Marketlnfo
(Symbol () ,MODE~TICKVALUE) ,Digits)) ;
}
開倉下單以及關倉出場模組
主程式各類模組介紹
式本身就提供了下單函式 OrderSend ()、修改訂單 OrderModify ()、
主要原因是以上這些函式是 一 次性執行的指令,然而在外匯市
場裡,常常發生下單或關倉不成功的現象,原因有很多,有經紀商
因素、市場因素、網路因素等等。因為下單以及關倉這類指令牽涉
到的是白花花的銀子,所以,當下單不成功或關倉不成功都會影響
上述那些不穩定因素之下都還是能限單以及出場成功。
//+--- ----------------------------------+
//I Open Order Funtion I
II+ -------------------------------------+
int SendOrder (string OSymbol,int OCmd,double OLot,double
_
OPrice,double OS!ip,int OMagic,color OColor = CLR~NONE)
259
mt Ticket,
int retryTimes = 5,i = 0,
int OType = MathMod ( OCmd,2 ) ,
double OrderPrice,
if ( AccountFreeMarginCheck ( OSymbol,OType,OLot ) < = 0 ) return
( -1 ) ;
if ( Marketlnfo ( OSymbol,MODE_SPREAD ) *Point!Pip>MaxSpread )
return ( -1 ) ;
while ( i<5 )
计= I,
while (IsTradeContextBusy ()) Sleep ( 100 ) ,
if (IsStopped ()) return ( -1 ) ;
if ( OType = = 0 ) OrderPrice = ND ( Marketlnfo
( OSymbol,MODE_ASK ) +OPrice,Marketlnfo ( OSymbol,MODE_
DIGITS )) ;
else OrderPrice = ND ( Marketlnfo ( OSymbol,MODE_
BID ) +OPrice,Marketlnfo ( OSymbol,MODE_DIGITS )) ;
Ticket = OrderSend ( OSymbol,OCmd,OLot,OrderPrice,OShp
,0,0,TradeComment,OMagic,O,OColor ) ;
if ( Ticket<O)
{ Error = GetLastError () ,
if ( Error! = 0 ) Print ( "Error opening order :
"+Error+" "+ErrorDescription ( Error )
+" Symbol : "+OSymbol
+" TradeOP : "+OCmd
+" OType : "+OType
Ask: +Marketlnfo
( 0S yrnbol,MODE_ASK )
+ Bid: +Marketlnfo ( OSymbol,MODE
BID )
+" OPrice : "+DTS ( OPrice,Digits )
+" Price : "+DTS ( OrderPrice,Digits )
+" Lots : "+DTS ( OLot,2 )
),
switch ( Error )
case ERR_OFF_QUOTES:
case ERR INVALID PRICE :
Sleep ( 5000 ) ,
case ERR PRICE CHANGED :
case ERR_REQUOTE :
RefreshRates () ,
case ERR SERVER BUSY :
case ERR NO CONNECTION :
case ERR_INVALID_pRlCE:
case ERR BROKER BUSY :
case ERR TRADE CONTEXT BUSY :
i++,
break,
case 149 : //ERR TRADE HEDGE
PROHIBITED :
UseHedge = false,
if (Debug) Print ( "Hedge
trades are not allowed on this pair") ,
1 = retryTimes,
break,
default :
主程式各類模組介紹
1 = retryTimes,
}e,
se
` 1f (PlaySounds) PlaySound (AlertSound) ,
break,
}
return (Ticket) ,
//+-----------------------------------------------------------------+
//1 Modify Order Function
//+------一一一一一一一一一一-一一一一一一 ------------------+
boo! ModifyOrder (double OrderOP,double OrderSL,color Color= CLR_
NONE)
{ boo! Success = false,
int retryTimes = 5,i = 0,
_
261
while ( 」<5&&!Success )
i+ = 1,
while (lsTradeContextBusy ()) Sleep ( 100 ) ,
if ( IsStopped ()) return ( -1 ) ,
Success = OrderMod」fy ( OrderTicket
() ,OrderOP,OrderSL,0,0,Color ) ;
if ( !Success )
Error = GetLastError () ,
1f ( Error>O) Print ( " Error Mod」fying
Order: " ,OrderTicket () ," , " ,Error," : " +ErrorDescnpt1on ( Error ) ," ,
Ask:" ,Ask,
` Bid: " Bid " OrderPnce :
",OrderOP," StopLevel : ",StopLevel," , SL : ",OrderSL," , OSL :
`` ,OrderStopLoss ()) ;
- default :
i+ = I,
break,
1 = retryTimes,
break,
}
else break,
}
return ( Success ) ,
II+------------------------------------------------ 十
Ill Exit Trade Function - Type : All Basket Hedge Ticket Pendmg
II+------------------------------------------------- +
int ExitTrades ( int Type,color Color,string Reason,int OTicket = 0 )
{ static int OTicketNo,
boo! Success,
int Tries,Closed,CloseCount,
int CloseTrades[,2],
double OPrice,
主程式各類模組 介 紹
strings,
ca = Type,
if ( Type == T )
{ if (OTicket = = 0 ) OTicket = OTicketNo,
else OTicketNo = OTicket,
}
for ( y = OrdersTotal () -1 ;y> = O;y-- )
{ if ( !OrderSelect ( y,SELECT_BY_POS,MODE_TRADES ))
continue;
1f ( Type = = B&&OrderMagicNumber () ! = Magic )
continue,
else if ( Type = = H&&OrderMagicNumber () 1 =
hMagic ) continue;
else if ( Type = = A&&OrderMagicNumber () ' =
Magic&&OrderMagicNumber () ! = hMagic ) continue;
else if ( Type = = T &&OrderTicket () ! = OTicket )
continue,
else if ( Type = = P&& ( OrderMagicNumber () ' =
MagicllOrderType () < = OP_ SELL )) continue;
ArrayResize ( CloseTrades,CloseCount+ 1 ) ,
_
263
CloseTrades[CloseCount,O] = OrderOpenTime () ,
CloseTrades[CloseCount, I] = OrderTicket () ,
CloseCount++;
1f (CloseCount>O)
{ if (!UseFIFO) ArraySort (CloseTrades,WHOLE_
ARRAY,O,MODE_DESCEND) ;
else if (CloseCount! = ArraySort (CloseTrades)) Print
("Error sorting CloseTrades Array") ;
for (y = O;y<CloseCount;y++)
{ if (!OrderSelect (CloseTrades[y,1],SELECT_BY_
TICKET)) continue;
while (IsTradeContextBusy ()) Sleep (100) ,
if (IsStopped ()) return (-1) ;
if (!OrderSelect (CloseTrades[y,l],SELECT_BY _
TICKET)) continue;
if (OrderType () >OP_SELL) Success =
OrderDelete (OrderTicket () ,Color) ;
else
{ if (OrderType () = = OP_BUY)
OP rice = ND (Marketlnfo (OrderSymbol () ,MODE_BID) ,Marketinfo
(OrderSymbol () ,MODE_DIGITS)) ;
else OPrice = ND (Marketlnfo
(OrderSymbol () ,MODE_ASK) ,Marketlnfo (OrderSymbol () ,MODE_
DIGITS)) ;
Success = OrderClose (OrderTicket
() ,OrderLots () ,OPrice,slip,Color) ;
}
1f (Success) Closed++,
else
{ Error = GetLastError () ;Print ("Order
",OrderTicket () ," failed to close. Error : " ,ErrorDescription (Error)) ,
switch (Error)
{ case ERR NO ERROR :
case ERR_NO_RESULT:
-
Success = true,
break,
case ERR_OFF _QUOTES :
case ERR INVALID PRICE :
Sleep (5000) ,
case ERR_pRICE_CHANGED:
case ERR_REQUOTE:
RefreshRates () ,
case ERR_SERVER_BUSY :
case ERR_NO_CONNECTION:
case ERR_BROKER_BUSY:
case ERR_TRADE_CONTEXT_
BUSY:
Print ("Try : "十
(Tries+ 1) +" of 5 : Order ",OrderTicket () ," failed to close
Error : " ,ErrorDescription (Error)) ;
Tries++,
break,
case ERR_TRADE_TIMEOUT:
default :
Print ("Try : `十
(Tries+ 1) +" of 5 : Order ",OrderTicket () ," failed to close. Fatal
Error : " ,ErrorDescription (Error)) ;
主程式各類模組介紹
Tries = 5,
ca= 0,
break,
}
if (Closed = = CloseCount) ca = 0,
}
else ca= 0,
if (Closed>O)
{ if (Closed! = I) s =" s" ;
. " +s+ " because
Print ("Closed "+Closed+" pos1t10n
`` ,Reason) ;
_
· 265
其他特殊模組
以下的特殊功能模組都是比較獨立的小區塊。例如,「關掉早
期單」功能、「自動格距計算」功能、「留倉時間到期出場」功能丶
「緊急手動關倉」功能、「假日停止交易」功能、「斷網關倉」功能、
II+-----------------------------------------------------------------+
//I Close oldest open trade after CloseTradesLevel reached
I!+---------- --------------------------------+
if (UseC!oseOldest&&CbT> = CloseTradesLevel&&CbC<MaxCloseT
rades)
{ if ((TPb>O) && ((CbB>O&&OPbO>TPb) II
(CbS>O&&OPbO<TPb)))
{ y = ExitTrades (T,DarkViolet," Close Oldest
Trade" ,TbO);
1f (y = = 1)
{ OrderSelect (TbO,SELECT BY
TICKET) ,
PbC+ = OrderProfit () +OrderSwap ()
+OrderCommission () ,
ca= 0,
CbC++,
return,
I/+-----------------------------------------------------------------+
//I ATR for Auto Grid Calculation and Grid Set Block
II+ --------------------------------+
if (AutoCal)
{ double GridTP,
-
double GridATR = iATR (NULL,0,21,0) !Pip;
if ((CbT+CbC>Set4Level) &&Set4Level>O)
{ g2 = GridATR*l2; //GS*2*2*2*1.5
tp2 = GridATR * 18; IIGS*2*2*2*1.5* 1.5
else if (( CbT +CbC>Set3Level) &&Set3Level>O)
{ g2 = GridATR*8; //GS*2*2*2
tp2 = GridATR * 12; //GS*2*2*2* 1.5
else
g2 = GridATR,
tp2 = GridATR *2,
主程式各類模組介紹
GridTP = GridATR *2,
else
y = MathMax ( MathMin ( CbT+CbC,MaxTrades ) -1 ,0 ) ,
g2 = GridArray[y,O],
tp2 = GridArray[y,1] ,
GridTP = GridArray[0,1] ,
g2 = ND ( g2*GAF*Pip,Digits ) ,
tp2 = ND ( tp2*GAF*Pip,Digits ) ,
GridTP = ND ( GridTP*GAF*Pip,Digits ) ;
十
II+-----------------------------------------
II[ Calculate Early Exit Percentage
II+-----------------------------------------------------------------+
if ( UseEarlyExit&&CbT>O)
{ double EEpc,EEopt,EEStartTime,EEPoint,BEe,TPe,
if ( EEFirstTrade ) EEopt = OTbF;
else EEopt = OTbL,
if ( DayOfWeek () <TimeDayOfWeek ( EEopt ))
_
267
EEStartTime = 2*24*3600,
EEStartTime+ = EEopt+EEStartHours*3600,
if (EEHoursPC>O&&TimeCurrent () > = EEStartTime)
EEpc = EEHoursPC* (TimeCurrent () -EEStartTime) /3600;
if (EELevelPC>O&& (CbT+CbC) > = EEStartLevel)
EEpc+ = EELevelPC* (CbT+CbC-EEStartLevel+ I) ;
EEpc = 1-EEpc,
if (!EEAllowLoss&&EEpc<O) EEpc = 0,
ProfitPips* = EEpc,
if (displayOverlay&&displayLines&& (!hActivell
(hActive&&hThisChart)) && (!Testingll (Testing&& Visual))
&&EEpc<l
&& (CbT+CbC+ChT>EECountllEETime! =
Time[O]) && (EEHoursPC>O&&EEopt+EEStartHours*3600<Time[O]) I 丨
(EELevelPC>O&&CbT+CbC> = EEStartLevel))
{ EETime = Time[O],
EECount = CbT+CbC+ChT;
if (BEa>O)
{ BEe = BEa,
TPe = TPa,
else
BEe = BEb,
TPe = TPb,
- RAY,false) ,
Ob」 ectSet ("B3LEELn" ,OBJPROP_
主程式各類模組 介 紹
PRICEl,EEPoint+2*Pip ) ;
Ob」 ectSet ( "B3VEELn" ,OBJPROP _
TIMEl,Time[l] ) ,
}
else if (( 庫splayLines ll EEpc = = 1 11 ( !EEAllowLoss&&EEpc
= = O) 11 ( EEHoursPC>O&&EEopt+EEStartHours*3600> =
Time[O] ) ) )
{ Ob」 Del ( "B3LEELn" ) ;
Ob」 Del ( "B3VEELn" ) ,
}
e se
{
EETime = 0,
EECount = 0,
Ob」 Del ( "B3LEELn" ) ,
Ob」 Del ( "B3VEELn" ) ,
}
!!+-----------------------------------------------------------------+
_
269
//I Check ca, Breakeven Trades and Emergency Close All
//+-----------------------------------------------------------------+
switch (ca)
{ case B : if (CbT = = O&&CpT = = 0) ca = O;break;
case H : if (ChT = = 0) ca = O;break,
case A : if (CbT = = O&&CpT = = O&&ChT = = 0) ca
= O;break,
case P : if (CpT = = 0) ca = O;break,
case T : break,
default : break,
1f (ca>O)
{ ExitTrades (ca,displayColorLoss," Close All ("+DTS (ca,O)
+") " ) .
return,
tf (CbT = = O&&ChT>O)
{ ExitTrades (H,displayColorLoss," Basket Closed") ,
return,
1f (EmergencyC!oseAII)
{ ExitTrades (A,displayColorLoss," Emergency Close All
"
Trades) ;
EmergencyCloseAII = false,
return,
I!+--- ---------------------------------------+
//f Check Holiday Shutdown
//+------ ----------------------------+
if (UseHolidayShutdown)
{ datetime HolStart HolEnd
if (HolShutDown>O&&TimeCurrent () > =
-
HolLast&&HolLast>O)
{ Print ("Blessing has resumed after the holidays
From: "+TimeToStr (Ho!First,TIME_DATE) +" To: "+TimeToStr
(HolLast,TIME_DATE)) ;
HolShutDown = 0,
Labe!Delete () ,
LabelCreate () ,
if (PlaySounds) PlaySound (AlertSound) ,
}
else if ((HolShutDown = = O&&TimeCurrent () > =
HolLast) IIHo!First = = 0)
{ for (y = O;y<ArraySize (Ho!Array) ;y++)
{ if (HolArray[y,O,O]>HolArray[y, 1,0])
{ Ho!First = StrToTime (DTS
(Year () -1,0) +" " +HolArray[y,0,0]+" ." +HolArray[y,0,1]) ;
HolLast = StrToTime (Year ()
十
主程式各類模組介紹
}
HolFirst = StrToTime (Year ()
十
HolArray[y,1,0]+"
HolArray[y,1,1]+" 23 : 59 : 59") ,
else HolLast = StrToTime (Year ()
十
_
271
HolEnd = Ho!Last,
HolFirst = HolStart,
Ho!Last = Ho!End,
return,
Ho!ShutDown = 2,
Ob」 Del ( "B3LC!os" ) ,
else if ( Ho]ShutDown = = 1)
{ if ( Ob」 ectFind ( "B3LC!os" ) = = -1 )
CreateLabel ( "B3LClos" ," " ,5,0,0,23 ,displayColorLoss ) ;
Ob」 SetTxt ( "B3LClos" ," Blessing will shutdown
for the holidays when this basket closes" ,5 ) ;
1f ( HolShutDown = = 2)
LabelDelete () ,
if ( PlaySounds ) PlaySound ( AlertSound ) ,
HolShutDown = 3,
1f ( Ho!ShutDown = = 3 )
if ( Ob」 ectFind ( "B3LStop" ) = = -1 )
CreateLabel ( "83LStop" ," Trading has
been stopped on this pair for the holidays." , 10,0,0,3,displayColorLoss ) ;
1f ( Ob」 ectFind ( `` B3LResm" ) = = -1 )
CreateLabel ( "B3LResm" ," Blessmg
will resume trading after "+TimeToStr ( Ho!Last,TIME_DATE )
+" ." ,10,0,0,9,displayColorLoss ) ;
return,
}
II+-----------------------------------------------------------------+
Ill Power Out Stop Loss Protect10n I
II+-----------------------------------------------------------------+
if ( SetPOSL )
{ if ( UsePowerOutSL&&POSLPips>O)
{ double POSL = MathMin ( PortionBalance*
( MaxDDPercent+ 1) 11OO!Pip Val2/LbT,POSLPips ) ;
SLbB = ND ( BEb-POSL,Digits ) ,
SLbS = ND ( BEb+POSL,Digits ) ,
}e{
se
主程式各類模 組介 紹
SLbB = 0,
SLbS = 0,
}
for ( y = O;y<OrdersTotal () ;y++)
{ if ( !OrderSelect ( y,SELECT_BY _pOS,MODE_
TRADES )) continue;
if ( OrderMagicNumber () ! = MagicllOrderSymbol
() ! = Symbol () IIOrderType () >OP_ SELL ) continue;
if ( OrderType () = = OP_ BUY&&OrderStopLoss
() ! = SLbB )
Success = ModifyOrder ( OrderOpenPrice
() ,SLbB,Purple ) ,
1f ( Debug&&Success ) Print ( "Order :
"+OrderTicket () +" Sync POSL Buy" ) ;
}
else 面 ( OrderType () = = OP~
SELL&&OrderStopLoss () ! = SLbS )
{ Success = ModifyOrder ( OrderOpenPrice
() ,SLbS,Purple ) ,
1f ( Debug&&Success ) Print ( "Order:
_
273
.. +OrderTicket () +" Sync POSL Sell" ) ,
}
II+-----------------------------------------------------------------+
Ill Check DD% and send Email
II+-----------------------------------------------------------------+
if (( UseEmailff PlaySounds ) &&!Testing )
{ if ( Emai!Count<2&&Email[Emai!Count]>O&&DrawDownPC
>Email[Emai!Count] )
{ if ( UseEmail ) SendMail
( "Blessing EA" ," Blessing has exceeded a drawdown of
`` +Email[Emai!Count]*lOO+ % on `` +Symbol () " "+TF ),
if ( PlaySounds ) PlaySound ( AlertSound ) ;
Error = GetLastError () ;
if ( Error>O) Print ( "Email DD : "+DTS
( DrawDownPC* 100,2 ) +" Error : "+Error+" "+ErrorDescription
( Error )) ;
else
{ if ( UseEmail&&Debug ) Print
( `` DrawDown Email sent on +Symbol () +" " +TF+ "DD: "+DTS
( DrawDownPC*l00,2 )) ;
Emai!Sent = TimeCurrent () ,
Email Count++;
else if ( Emai!Count>O&&Emai!Count<3&&DrawDownPC<
Email[Emai!Count]&&TimeCurrent () >Emai!Sent+Emai!Hours*3600 )
Email Count--;
if ( Emergency Warning )
{ if ( Ob」 ectFind ( "B3LC!os" ) = = -1 )
CreateLabel ( "B3LC!os" ," " ,5,0,0,23 ,displayColorLoss ) ;
Ob」 SetTxt ( "B3LClos" ," WA邸ING:
-
EmergencyCloseAII is set to TRUE" ,5,displayColorLoss ) ;
}
else if ( ShutDown )
if ( Ob」 ectFind ( "B3LClos" ) = = -1 )
CreateLabel ( "B3LClos" ," " ,5,0,0,23 ,displayColorLoss ) ,
ObjSetTxt ( "B3LClos" " , Blessing will stop
trading when this basket closes ." ,5,displayColorLoss ) ;
}
else if ( HolShutDown! = 1 ) ObjDel ( "B3LClos" ) ,
}
FirstRun = false ,
Comment ( CS,dMess ) ,
return ( 0 ) ,
II+-----------------------------------------------------------------+
//I Magic Number Generator I
II+--- ----------------------------------------+
mt GenerateMagicNumber ()
{ if ( EANumber>99 ) return (EANumber ) ,
主程式各類模組介紹
return ( JenkinsHash ( EANumber+" " +Symbol () +" " +Period
())) ;
}
_
275
反馬丁格爾策略
硒 is like a snowball. The important thing is finding wet snow and a really long hill
人生就像雪球 。 重要的是要找到濕的雪,和一道長長的山坡 。
一 華倫 · 巴菲特
示
,.. ~··
.
't
~」
反馬丁格爾策略概念及介紹
基本概念及比較
在一般學院派制式的「馬丁格爾策略」理論是指在某個賭盤裡,
當每次賭金輸錢時就以 2 的倍數再增加賭金,直到贏錢為止。而所
謂的「反馬丁格爾策略」有兩種解釋,一是在某個賭盤裡,當每次
賭金贏錢時就以 2 的倍數再增加賭金,運氣好時很快就可以大撈 一
筆,但這種模式也非常有可能在一次的賭盤押錯時就會將所贏來的
賭金全部虧光。另一解釋為,在某個賭盤裡,當每次賭金輸錢時就
滾雪球似的反馬丁格爾策略
前幾年有一本震撼的財經暢銷書中文版在市場上開始銷售,書
名就就做《雪球 : 巴菲特傳》,這本書至今依然是市場財經書籍類
的暢銷書。我們這章節的文章,不是要談巴菲特傳,而是要談類似
滾雪球概念的「反馬丁格爾策略」。
「反馬丁格爾策略」跟「馬丁格爾策略」其實都是一種「賭博
策略」,但是「反馬丁格爾策略」跟「馬丁格爾策略」不管是在概
念上還是在實際的操作都是完全相反。有關於馬丁格爾理論的相關
文章,請讀者自行第四章節的文章。在這章節文章中,我們將焦點
放在「反馬丁格爾策略」,以及其一樣利用「機率」特性來獲取利益。
因此,我們再複習 一 下這兩種策略簡單的區別。
所謂「馬丁格爾策略」是在某個賭盤裡,當每次賭金「輸錢」
時就以 2 的倍數再增加賭金,直到贏錢為止。而所謂的「反馬丁格
爾策略」,則是在某個賭盤裡,當每次賭金「贏錢」時就以 2 的倍
數再增加賭金,若 一 直贏,就再加倍賭注。其實「反馬丁格爾策略」
目乘上兩倍, 一 直到你所「設定贏的次數」達到,就再從頭押盤。
如果在未達「設定贏的次數」就輸掉了 , 就從頭開始,就是再從第
一 次所押的金額從新開始押注。
舉例來說,假設在一個公平賭大小的賭盤,開大與開小都是
反馬丁格爾策略概念及介紹
因此,以機率來算,如果連贏四次的機率 6.25%• 也就是說連輸四
次的機率 一樣也只有 6.25% 。依照「反馬丁格爾策略」的操作方法,
擇使用的是反馬丁格爾策略,因此,每贏一次都以 2 的倍數遞增。
4 元」或「贏到 15 元」 。 那我們再來看其他的機率點,連續贏 三 次
掉 3 元」或「贏到 7 元」 。
但是若每次都未達到連贏四次就虧損,例如目標是連贏四次才
_
279
會從頭押注,若當只贏一次兩次或只贏三次就翻盤,這時就會呈現
虧損如:
+1 - 2 = -I
(第二次翻盤)
+1+2-4( 第三次翻盤) = -I
+1+2+4-8( 第四次翻盤) = -1
由虧損的計算可以很清楚得知,不管所設定的贏的「目標
次數」是第幾次,在其押注的過程當中,只要是未達到「目標次
數」的押注,都是以「失敗」來算,而每一次的失敗,都是虧損
「第一次押注之金額」。若以上面的賭金 63 元為例,以「反馬
丁格爾策略」的操作方法來操作,要全部輸光賭注,你必須是
字說明就是,拿 63 元到賭場與莊家對賭,使用「反馬丁格爾策略」
來的操作,你要「輸光賭金」就必須讓莊家連開 63 次(或讓你「連
續失敗」 63 次)與你押注相反的賭盤,就機率來說,它是一百萬兆
次 (1 的後面 19 個 0) 才會發生一次。
馬丁格爾策略跟反馬丁格爾策略的比較
但是反觀單純的「馬丁格爾策略」理論來算的話, 63 元只能讓
的話,當我們與莊家對賭 73 次之中,在某個點上「連續六次虧損」
-
X (1-0.0078125) /\67 = 0.582025'1-0.582025 = 41.7%) 。當你
「押大小」 150 次當中有一次會超過「連續六次虧損」的機率則是
理論看起來 比 「反馬丁格爾策略」風險更高。
性 :
「馬丁格爾策略」與「反馬丁格爾策略」比較表
虧損時加碼 獲利時加碼
在第二次進場之後的平均價格成本會高 在第二次進場之後的平均價格成本會低
於目前市場價格 於目前市場價格
小額短期獲利後會有大額虧損可能 小額短期虧損後會有大額獲利可能
潛在無限虧損之可能性 潛在無限獲利之可能性
無停損倉位,帳戶虧損後加碼再進場 有停損倉位,帳戶虧損後不會加碼進場
反馬丁格爾策略概念及介紹
浮動虧損會造成整個帳戶資金調度困難
浮動利益會幫助整個帳戶資金調度寬鬆
度問題
個別的缺點,「反馬丁格爾策略」當然也不例外。
策略上差異性
「馬丁格爾策略」的基本概念就是利用「機率」的方法來達到
自己的勝算越來越高 , 然後依照「典型啟發」理論「連續六次機率」
的一個臨界點,來讓自己在市場上處於不敗之 地 。但是重點就是只
能挑「長期震盪」的貨幣市場 , 否則很容易賠光資金。相反的 , 「反
要贏一次就再雙倍下注 , 則自己的「勝算機率」反而是越來越低的。
_
281
所以重點在於只能挑會走「波段走勢」的趨勢市場,而且必須順著
市場的趨勢走。因此這兩種策略在觀念、理論跟實務的做法上是剛
好完全相反。所以「反馬丁格爾」策略的重點就是必須找出正確的
「趨勢市場」,正確的找出趨勢之後,順著這個趨勢一直加碼直到
趨勢結束或獲利達到滿足點。概念很簡單,但要實際的執行起來卻
是異常的困難。
進入對的趨勢,卻難以獲利?
首先,我們該如何得知市場的「趨勢」已經被觸發並開始往上
或往下走?再者,即使我們見到了趨勢走向,但我們如何得知趨勢
目前是剛開始、走到中間、還是已經快要結束了。利用各類指標來
「看圖說故事」每個人都會也都看得懂,因為那是在看一個「歷史
圖」,但對於一個「未來圖」卻是沒有人可以說的準的。這就是為
何即使是一個可以在外匯市場存活下來的交易者,他一樣無法準確
預測未來的市場走勢。
再者,即使該交易者真的可以利用高超的技術指標,或辛苦努
力的追蹤閱讀任何一條重大的財經即時新聞,他一樣無法「控制市
場」未來的波動及走向。對市場的預測越多,僅會讓市場對自己交
易的打擊越多;因為市場不會因為你是一國之尊還是販夫走卒就會
手下留情。外匯市場非常不同於股票期貨或選擇權,因為極少有所
謂的內線交易存在,而且即使一個國家的中央銀行進場干預或操縱,
到頭來,虧損最嚴重的反倒是該國的央行。我們可以看近期的日本
央行以及瑞士央行的窘狀就會清楚明瞭。
- 在繼續深談「反馬丁格爾」策略之前,我們先談一下外匯市場
的真實現象。在外匯市場裡,大約有至少八成的交易者在進場交易
時是進入一個「對的方向」市場,也就是說除非有特殊目的不然很
少有交易者是跟市場反方向做進場交易的。但是,即使是八成的交
錢。為何會產生這種現象呢?主要有兩大因素 : 第 一 就是有非常多
的外匯交易者喜歡利用高度槓桿來交易外匯以其能短期內迅速獲取
大額利潤,即使真的獲取 一 些利益,通常這只能說是因為幸運。但
人不可能永遠都很幸運,三個月可以獲利,但 一 年以上的交易可能
就會把獲利全部都虧光;第 二 就是很少人知道如何在進場之後以科
學方法來管理獲利。所以交易外匯並非在玩遊戲,它是真正跟金錢
盈虧有關的金融交易。
如何在趨勢中穩定獲利
反馬丁格爾策略概念及介紹
天在翻盤,任何貨幣利用 一 個 4 小時線就可以清楚看出貨幣走勢的
現象 。 貨幣市場的走勢 一 般就是緩步的「漲勢」、「跌勢」或「平
盤震盪」。我們要的就是市場的「漲勢」或「跌勢」,當我們掌握
了趨勢的走向,依照「反馬丁格爾策略」的做法,只要進入的是對
的「市場方向」,只要獲利就「緩步加碼」。只要市場方向沒有變,
這個「緩步加碼」到最後會變成 一個巨大的利益 。
雪球(成本),我們在同一個時間將 雪 球往下推,我們假設其中的
兩個雪球在開始往下滾的時候就碰到大石塊被撞壞了(停損),另
外 一 個跑到半山腰卻被樹木擋住不動了(不賺不賠),只有 一 個雪
時,它已經變成 一 個巨無霸的雪球。而這個雪球已經變成當初 雪 球
大小的十倍或百倍大小(獲利)。若依照這個假設,只要有 1/4 個
雪球順利達到目的地, 3 /4 的「虧損」或「做白工」並不會影響整體
_
283
的獲利結果。然而,這個山坡的長度到底應該選多長的長度才容易
讓雪球由山上一直滾到山下順利收成。這個就沒有一個絕對的答案。
我們如果還是以「典型啟發」理論「連續六次機率」的一個臨
界點,那表示我們在 一 個順勢的市場中只要連續六次的同方向進場
都是獲利,那我們就是順利把雪球從山上滾到山下並取得甜美的利
潤。而每一次的下一階開倉應該比上一階還要多出多少的開倉大小
呢?在傳統的「馬丁格爾」以及「反馬丁格爾」策略都是以 2/\n 為
乘積,但實際做法上 2/\n 的遞增操作模式在外匯市場是極為高風險。
我們認為這個遞增的乘機應與程式的「馬丁格爾策略」一致,就是
簡單的數學運算來解釋:
所以
Level I = x
Level2 = xy
Level 3 = xy2
Level 4 = xy3
Level 5 = xy4
Level 6 = xy5
由以上公式,當我們 設定程式為
x = 0.01 lot
y=l.3 ( 乘積)
所以
Level 1 = 0.01
Level 2 = 0.02
Level 3 = 0.03
Level 4 = 0.04
Level 5 = 0.05
Level 6 = 0.07
當 你達到第六階時,就是「連續獲利六次」後你所開的總 Lot 數為
開到第六層,且第六層也要達到設定的點距,這個例子是 89 點,所
以其獲利為
反馬丁格爾策略概念及介紹
= 47.12Pips 。 47.12 Pips= $471.2
= 21.4% 的正績效。
讀到這裡,讀者也不要興奮得太早,因為我們還沒談到「風險」
的問題。「反馬丁格爾策略」的最大難度在於趨勢的確立,就是因
算風險。沒有經過「風險計算」就進場,在筆者眼中 一 直是名符其
實的「賭徒」而非在做「交易」
一 個很簡單的結論就是,在外匯市場裡,運用反馬丁格爾策略
能獲利的主因是進入一個趨勢的市場,而馬丁格爾策略則是最愛進
入 一 個震盪的市場 。 所以,不管是馬丁格爾策略還是反馬丁格爾策
略,只要在對的市場使用對的理論,這兩者方法其實都是可以達到
穩定獲利的效果 。
_
285
CD
反馬丁格爾策略風險與實務操
作方法
「滾雪球」概悆的「理論基礎」
金融交易的任何策略應該都是離不開紙上作業的「理論階段」,
一個好的策略在實際執行前如果已經先在「理論的基礎」上驗證過,
那真正放到市場上交易時,就不會有太多令人戚到意外的事會發生。
因此,我們先再來複習一下所謂的「反馬丁格爾策略」的簡單
機率計算。在某個賭盤裡,當每次賭金「贏錢」時就以 2 的倍數再
增加賭金,若一直贏,就一再的加倍賭注。就機率而言,你不可能
一直贏下去,所以你就必須事先設定一個「連續贏錢的次數」。只
要-達到這個「連續贏錢的次數」就再從頭來。因此「反馬丁格爾
策略」在概念上是很簡單的,就是在一個押大或押小的賭盤裡,一
直不斷的只押某一單邊(如押大或押小),每贏錢一次,就把贏錢
的數目乘上兩倍,一直到你達到了所設定之「贏的次數」,就再從
頭開始押盤。如果在未達「設定贏的次數」就輸掉了,當然也得從
頭開始,就是再從第一次所押的金額從新開始押注。
這會產生一個有趣的現象,因為依照「反馬丁格爾策略」的操
作方法,只要押注一輸錢,不管是幾次,都必須從第一次的押金再
開始起算。因此使用「反馬丁格爾策略」在輸錢時是以「重複第 一
筆押注」的輸錢方式在虧損,但是贏錢時卻以「倍數遞增押注」的
贏錢方式在獲利。
舉例來說,在一個賭大小的賭盤,開大與開小都是 50% 的機率,
「贏的次數」先設定為三次,我們暫且稱這個為「一局」,而每一
局」,你可以得到的報酬是
n 代表你第一次押注的賭資。所以你可以拿到賭場對你的賠率
是「 一 賠七」的賠率。轉成白話來說就是,你在一個只有 12.5% 勝
算的賭盤裡跟賭場對賭,而它對你的賠率是 1 : 7 。在你還沒碰到贏
盤的 12 . 5% 機率之前,你自己對賭場的賠率是 1 : 1 。同樣,假設你
反馬丁格爾策略風險與實務操作方法
所設定的「 一 局」是「連續贏四次的次數」,那每「 一 局」可以贏
所以是 1 : 15 的賠率。在還未達到「連續贏四次的次數」就失敗,
. 也稱之為「 一局」,因為你必須從頭開始押注。
從 100 元開始押注,我們選擇使用的是「反馬丁格爾策略」,所設
但是若每次都未達到連贏四次就虧損,例如只贏一次、兩次、或只
贏 三 次就翻盤虧損,這時就會呈現的虧損如下:
_
28 7
+100 -200 (第二次翻盤) = - 100
+100+200-400 (第三次翻盤) = - 100
+100+200+400-800 (第四次翻盤) = - 100
這個由機率所算出來的數字來看,使用「反馬丁格爾策略」到
賭場來的操作,你要「輸光賭金」看起來似乎是不太容易。所以若
以「反馬丁格爾策略」跟賭場對賭,你設定每「 一 局」贏的機率是
提到,使用「反馬丁格爾策略」在輸錢時是以「重複第 一 筆押注」
的輸錢方式在虧損,但是贏錢時卻以「倍數遞增押注」的贏錢方式
在獲利。看起來好像還蠻迷人的。
概念搞清楚了以後,我們希望將「反馬丁格爾策略」應用到外
匯市場來操作。在外匯市場裡的市場情況就只是「漲」、「跌」、
「盤整」,而「盤整」又分成「盤整向上」跟「盤整向下」。基本
上的金融市場大抵都只有這四種市況。在我們不做任何預測或對市
場的判斷之前,我們要使用「反馬丁格爾」策略的話,一般僅會希
望進場的市況是「漲」或是「跌」,而且必須是「漲」時做「多單」,
而「跌」時做「空單」。所以成功跟著趨勢下單的機率僅有 25%•
的押注市場會「漲」或是會「跌」與我們原本的賭大小的「 50% vs
一個進場的時間點上,在市價的上下方各下一個「買單」及「賣單」。
讓不管市場是「漲」、「跌」、「盤整向上」還是「盤整向下」,
外匯操作實務
反馬丁格爾策略風險與實務操作方法
現在假設我們在即時外匯市場裡,同時在市價的上方執行一
才妾下來我們設計一個規則,不管市場未來走向是會碰到「定點買單」
到這個「定點買單」或「定點賣單」,我們立刻就在該成交價的上
下方又在設定一個「定點買單」以及一個「定點賣單」,而它的點
距一樣維持為 d 的點距距離。
假設在第一個「定點單」成交之後,如果是「定點買單」成交,
則它的下一個 d 點點距的上方則是第二次再進場的「定點買單」'
而它是獲利的,但我們暫時不執行停利的動作。延續上面的假設,
_
289
當第一個「定點買單」成交之後,市場卻是向下,則它的下 一 個 d
點點距的下方,則是第一次的停損點的「定點賣單」。所以假設我
們要依前面所設計的「連續四次獲利」的「反馬丁格爾策略」,我
目。如果未達「連續四次獲利」我們 一樣把它歸類成「失敗」出場。
會呈現的虧損如下:
所以依照上面這個規則,我們就輕易的將「反馬丁格爾」策略
直接的應用到外匯市場來操作。
雖然以「理論」計算起來,只要有 一 次的「反馬丁格爾」從頭
到尾走完,也就是將雪球從山上順利滾下來,其獲利的倍數相當驚
人。但是在外匯市場非常有可能的情形是它 一 直在盤整震盪,在還
沒有順利將小雪球滾成大雪堆之前,帳戶已經是虧損累累。所以類
似「賭博模式」的「盲目下單」,對我們來說並不是一個最佳使用「反
馬丁格爾」策略的方法。因此,我們要找出 一 個方法是至少能有 一
定程度的準確性,再用此方法來進入「趨勢市場」。當然,趨勢判
斷用的技術指標多如牛毛,這隨著個人的喜好不同而各有忠實的擁
護者,不過我個人不喜歡使用「預測性」指標來預測市場的未來,
所以我所使用的方法與市場上大多數人的方法有極大的差距。
風險概略介紹
Reward 。因為我們無法每次的趨勢預測都神準無比,所以虧損的風
反馬丁格爾策略風險與實務操作方法
險 (Risk) 必須先算出來。
老是碰到 6% 的停損出場。如何設計一個至少進場三次就可以將雪
球從山上一直滾到山下,真的不是一件簡單的習題。
291
就如前篇文章所言,這個判斷趨勢用的方法或指標最低的程度
將在下一章節裡來為讀者介紹。
-
疇
反馬丁格爾策略程式交易方法
趨勢確立重要性
在本書一開始筆者就提過,所有的金融市場不會只有一種市況,
即使最粗略的劃分,也分成「震盪市況」跟「趨勢市況」。我們在
前面的章節裡也都有提及,「震盪市況」適合的策略是「馬丁格爾
策略」,即賠錢加碼策略,而它是停利不停損。而「趨勢市況」適
合的策略是「反馬丁格爾策略」,即賺錢加碼策略,而它是停損不
停利。因為「反馬丁格爾策略」是停損不停利,同時它僅適合在「趨
反馬丁格爾策略程式交易方法
勢市況」套用此策略,所以趨勢的確立在使用此策略變得非常重要。
為何趨勢的確立在使用此策略變得非常重要?因為若是在震盪
市況下使用此策略,有可能會一直反覆的停損。這對交易帳戶來說,
會讓帳戶投資資金水位在真正趨勢來臨之前因為停損而不斷的下
· 降。那我們怎麼知道接下來的市況是震盪還是趨勢呢?這的確是 一
件很困難精準判斷的事 。 為了避免在震盪市況下下單,筆者想到的
方法僅有兩種: 一 是採用判斷市場方向趨勢的指標;二是將線圖的
時間框架 (Time Frame) 拉大到至少 4 小時線。
通常在「馬丁格爾策略」的線圖時間框架都是以 l 小時線作
為指標進場判斷的線圖。但「反馬丁格爾策略」建議至少是 4 小時
線,甚至是日線作為指標進場判斷的線圖。目的就是讓我們在趨勢
沒有確立之前,不會讓程式進入市場做買賣,這樣可以減少趨勢誤
_
293
判被停損出場的機率。以下圖 6-1 即是套用 MACD 指標的 4 小時線
EURUSD 線圖。
`_
二
''
.'u, ' h ', ,
1
'I "r
·
」
· . ,, ,, ',,,
.
」
.".'1' '1 1' '' , 1
「
, '.·
.''
1.
1,
IJ
.', '' '
L I
程式移動停損
使用「反馬丁格爾」策略,不管是在手動上或在程式上,都要
設定「移動停損」來保護獲利。因為趨勢的確立並不是很容易,假
設在趨勢沒有確立之時,每一筆單設定「移動停損」至少可以保護
既有的利益。在程式設計上如下的實例程式碼:
- {
1f (TrailingStop>O)
{
1f (OrderOpenPrice () -Ask> =
(TrailingStop+Pips) *Point)
if (OrderStopLoss () >
(Ask+Point*TrailingStop))
{
OrderModify (OrderTicket
() ,OrderOpenPrice () ,Ask+Point*TrailingStop,OrderClosePnce
() -TakeProfit*Point-TrailingStop*Point,800,Purple) ;
return (0) ,
tf (OrderType () = = OP_BUY)
{
反馬丁格爾策略程式交易方法
1f (TrailingStop>O)
{
if (B 吐 OrderOpenPrice () > =
(TrailingStop+Pips) *Point)
{
tf (OrderStopLoss () < (B 吐
Point*TrailingStop))
OrderModify (OrderTicket
() ,OrderOpenPrice () ,和 d-Point*TrailingStop,OrderClosePrice () +Ta
keProfit*Point+ TrailingStop*Point,800,Yellow) ;
return (0) ,
_
295
反馬丁格 爾 策略之移動停損機制
1) 8ffl Jll400.IMII><>l0•• 100 NIJ41 畑蛔。 Jll◄fBDl<B-0119 螂 -XO.CO 0.00 3 缸I.CO 0..t.d.i ftl 严 l◄ I寧]
a 砌. 唧'-"'-"'""嶋邙 邙 I.OJ""'定 I 9'這
00 唧'-"'-"''""' " "
941g 靄 .,ro_m o.m 頊D.CD Gu.a T_.1 ft1" filll.6.0.141 硒
a 砌叩,.,,.,.,,,11 .n tro , __, ... 蛔 :El也心血119 殫邛) O 血 l 血0 如圧甂 1fU 關:.6.0 1'4171sIJ
a砌 •
Jll a,.04 <Bms> •ll I.OJ 紅珥.I 靈 0 0 :Ill ◄-"'以 O 泅` 9413 -nm run .s 紅呻 Ona ladtl f t l RV 60 1417
a 茹 Jll◄D叩IIBISOJ•• 100 ,..玄 1 引 19 0 0 Jll心, .. .,.,..,, 94,44 .3((1。 0.00 .S Dl)_Q) 0...t.don ""RW.6 0. 1417
a磾 Jll◄.00.041B mll ..n ,,,, 紅I 9421 ...。 Jl14-"'D4<B哼11 唧印]日血 1 蜘m C...l_.1 "'RM氐1.141汨)
i) ""' ""'"'"''"凶刃 .. ,,,,,..珥 I - ... 。 汪心,以 (B>'}.ll 9421 ,3Q血血) 4 細.00 Gu.a.T...,,.1 ftl RM.6.0J◄I徊
a 國7... Jll4.00D41B..., ..n I.ID,_.珥.I 94U O O :"1•.0,"41B"3-"' 9MO .xom 血 ` 輯)/JJ a-.fa,,i,u 輯, RM.6.0.1417
Q 逗面也ID41B"33' 丑 100 紅珥 I 亟蛔 0 牢"'°'°'"':,; 9431 ...X0.00 0 00 •
I«:Q_(J) Gu.a Tlllllu f t l Rlil6D 1 171d]
....
(4 ... al14.1Jl.DIOl4'<15 祉 IDJ ""'珥 I 磾 0 0 2ll4J».1)1013"'2 ""6 -30洫血 -3«D.lll a-,....,_ ..伍01'17
l4 " " · J)t4_a,.040,血吐 IDJ - -• 9<泌 0 0 >ll4J».Dla>J001 - ,立四血 -<00.00 _ _ _ ...._...,1
「一 22-ID r,..;,-om O.Jilul.O.GI WfilJn,dO.ID 22 重 .
圖 6 - 2 即是程式產生「移動停損」的點位時之利潤保護。 S/L 欄
位出現紅色背景色,其就是「停損」點被市場所碰觸,但 Profit 欄位
卻是有利潤的,這就是「移動停損」的點位時之利潤保護。
-
連動交易策略
The birds wishes it were a cloud; the clouds wishes it were a bird.
鳥兒希望成為一朵白雲,白雲卻希望成為一隻飛鳥 。
泰戈爾
... ",.-
~
..
.
..
連動交易策略概念及介紹
貨幣連動基本概悆
有關外匯之套利理論,不僅僅在大型投資銀行的專業投資操
盤手有精確的數學模組在執行套利,連像我們這種名不見經傳的
小咖在外匯市場裡也 一 樣希望有自己的套利理論。因為沒有動輒
十億百億美金的資金,所以,我喜歡稱這種套利叫做「庶民套利理
論」。而在「庶民套利理論」之中,之前篇幅已經介紹了「套息交
易」、「馬丁格爾策略」、「反馬丁格爾策略」等。其中的「套息交易」
風靡於日本的「渡邊太太」們。而「馬丁格爾策略」在許多的國際
資深外匯投資者之間是視其如洪水猛獸,主要是單純的「馬丁格爾
驅勢時,帳戶若無足夠的資金,爆倉的機率會變的相當高,是一種
所以,馬丁格爾策略不能只拿其理論就套到市場上交易,必須
設有資金保護機制、慎選貨幣(例如找多震盪而少趨勢的貨幣),
以及長趨勢之出場策略等。同時「反馬丁格爾策略」必須套用在趨
勢市況且下的方向要對才有獲利機會,否則很容易被市場巴來巴去,
在震盪市況下,「反馬丁格爾策略」很容易下多單也虧損下空單也
-
虧損。這在我先前的文章中都已經說明過了。
接下來本章節要談的就是「連動套利」 (Correlation
Arbitrage) 。
連動套利
外匯市場中的某些特定貨幣是有極高的連動性,該連動的程度
茂」的方式來深入探討貨幣的連動以及其特性可以帶給我們哪些有
利的套利規則 。
我們首先來看以下幾個圖,這些圖示最近市場交易日期的 4 小
時線圖。
• '"蛔內""1rY''"'·\·•01 户 ., ·」 芒
--
•""."1,.,..,,.'\,.,_ , .•,,,; .,·•~,1.」
r,•,•.,.、J 三
連 動 交易策 略概 念及介紹
,I•
Ih•· ,,,. .•,,.... I屮
ltlln~!~H鹵- • 鬮佩·庫驢簣瑋繡嶋債 ll 隕氥鸕囯讀嶋彙臼論鼴鸕 m鴯.這`鬮鼴.懾論一".一,-一,-一,一鷗囑,1 一_,s一鱸鸕 11• 佩嶋這一瓦嶋'龕"'囑` '
~ "c,
一I
• IIIOC頂「汛矗 -,..-11.重鸕num:,
lp·,'l-1,.1 II丨 -• I
\ ,1., ,\ ui.-c·「,、,•.,豆一'-,.,,.,,r1,,,.•,.,,.,.1k,,~-IK—户',一1七一 繭蝨
三
, ,,M 甲. ··-,,~·.·:c.- .. 一…0 , M 一,··-…•- DM•=••-••-•--'* 一,--·-- "*氏____ , _____
_
299
,CHF/JPY
EUR/JPY
(lID:n
J IIaiER遹
\ D嗪 B)\DJ
,GBP/USD
ililiiiiliiii
.1iiiEUR/USD
(~Ji
\泄卧—'湘嚻\泄锄)
'I
\ :計.
'
3
I
'r
`
-
S7
_
r53·n - 一
.
口[[二
u
.."
-F-
',-,
- F
lk
5.
fJ
偏
;·
博
5C
奲
涼
澋
GBP/USD
`USD/CHF
(:?,€~\
I湘 卧\擧 iRB)
泄卧
1[1
n-I I
且, '
] ' I 『
I
[
I !l
I ii
\£::
口訐'!
二~
] :'
; 1~
`
AUD/USD-NZD/USD (溴幣/美金一紐幣/美金)
連動交易策略概念及介紹
` 由上面的幾個圖來看,讀者是不是覺得該「兩兩貨幣組」根本
就像極了連體嬰?但是國際外匯市場裡並不是每組貨幣都可以成雙
成對,高度連結的貨幣組其實也僅有幾組而已。其實世界上的八大
交易貨幣中,其中僅以歐元-瑞士法郎、英鎊—瑞士法郎、歐元—
英鎊以及澳幣—紐幣的連動性最高且持續性最久。其他貨幣當然可
能會有短期的連動,例如瑞士法郎—日幣也經常出現連動的情形,
不過一但產生市場主背離段時,日幣與瑞土法郎卻又變成幾乎不連
動。因此本文章及後續討論的方法皆以歐元—瑞士法郎、英鎊—瑞
士法郎、歐元一英鎊以及澳幣—紐幣這四組為案例。
_
301
由上面的六個圖示,雖然本文使用的是 4 小時線,但已經可以
看出其高度連動性的端倪。如果我們使用更長 一 點的線圖,例如日
線或週線,那你會發現以上所提及的連動貨幣如歐元—瑞士法郎或
下圖 7 - 7 就是使用該網站的連動分析工具所顯現出來的連動表
(Correlation Table) 。
三璽l 貨幣連動分析表
HOWly
。..,
..
AUDUID 49 』 02 .... 鴣8 -&1.7 100.0 包1 83.2
利用石油、黃金與外匯貨幣之間的關聯性作外匯套利
前文中已經點出在國際貨幣市場裡,以歐元—瑞士法郎、英鎊
-瑞士法郎、歐元—英鎊以及澳幣—紐幣的連動性最高。這幾組的
然而,執行「連動套利」唯一的風險就是該兩兩連動貨幣的國
家政策「徹底改變」。例如,瑞士央行決定不再與歐洲貨幣有連動
關係,紐西蘭央行決定不再與澳幣連動,或這經濟體發生重大經濟
事件(歐債危機時因希臘債信問題的歐元眨值,讓 EUR/CHF-直下
跌而非震盪)等。這個是唯一且是最大的隱藏性風險。不過,一般
西方成熟國家的貨幣政策比較不會輕易改變,因為改變貨幣政策會
連動交易策略概念及介紹
牽動非常複雜的政經關係,同時即使貨幣政策改變,也會因為「地
緣」的關係,不可能一點連動也沒有。所以,通常的現象是該兩兩
貨幣產生背離達到一定程度後,會開始收斂。因此依照該兩兩貨幣
連動的「背離一收斂」特性,以一買一賣的方式來做「連動套利」
幾乎變成「外匯套利一族」的基本常識。就理論而言,以兩兩連動
貨幣執行一買一賣的套利並且風險對沖的方法,因為很接近「直接
套作法。
除了貨幣連動之外,黃金、石油、與美金這金三角關係也會有
一些連動現象,不過,近幾年國際金融局勢動盪不安,整體連動現
象其實已經脫鉤。所有投資者都知道,美金與黃金跟石油都有連動,
做外匯有趣的地方就是當知道某個貨幣狂漲或狂眨時,世界上必有
_
303
一 重大經濟議題發生(例如希臘危機造成歐元狂跌)。而若觀察黃
金石油與貨幣之間的經濟議題,以下的議題可以給讀者做參考。
當黃金跟石油突然狂漲,請問哪個貨幣可以進場投資?哪個貨
幣可以放空?
最常見的答案是加碼澳幣與加幣,並放空美金。理由其實很簡
單,因為澳洲跟加拿大有龐大自然資源跟礦場,所以會有連動關係。 筆
而石油以美金計價而且又是反向連動,所以放空美金。但除了該買
澳幣與加幣這兩個貨幣外還有嗎?當然有,比如紐幣 。 為何是紐幣
經跌破每桶 40 美元的報價,我們可以同時去看澳幣、加幣跟紐幣的
線形,幾乎快像是自由落體式的貶值。同時這個時候的美金在圈際
市場算是 一 枝獨秀的超強貨幣,這就是黃金、石油與美金的價格連
動現象同時影響到國際原物料大國的貨幣報價情況。
連動係數、標準差及皮爾森相關係數
觀念有了之後,我們繼續來一起學習關於用在「兩兩貨幣連動
讀者若是手動操作,下一個章節會介紹手動連動交易的工具操作,
但自動交易部分,我們需先介紹連動交易的數學公式 。
.. 連動
「連動」概念在我們日常生活中是非常有用的,例如當天氣變
冷的時候,保暖的衣物在市場上會很好賣(所以是正向連動),而
泳衣短褲等會變得不好賣(所以是負向連動)。例如國際原油價格
上漲時,我們知道要趕快去加油,因為可能國內的油價會立刻調升
兩個變數之間的一種「關係程度」,其彼此變動之「關係程度」用
例如在外匯市場裡,在-個時間軸上的任何一個時間點,當
連動交易策略概念及介紹
AUD/USD 跌 l 點 (1 Pip) 而 NZD/USD 也同時跟著跌 l 點,這稱
為「完美正相關連動」。又例如在外匯市場裡,在一個時間軸上的
連動」貨幣當例子。
度的正相關連動」。
_
305
_J
澳幣與紐幣「高度正相關連動」
, 山以心·""'
•1110鼴,-~~1115~圖,`
. . ....
, ' I'-
,.事!II UM.a l9M 鸝!II u.-. 富`.`.'".啊5 口·富,喊鸝量``富!II 4 一富'罈一- ,_血嶋氬富'員贓鸝'u•- 濤--口鬮圖囑禱.._,_. 11-l嶋
"' l::i"
I"""'°·°"' I""' ~ ~
圖 歐元與瑞郎「高度負相關連動」
,
常「高度的負相關連動」 。
那如果兩個貨幣完全不「連動」呢?那就是其兩組貨幣是完全
獨立的,所以其「連動係數」為 0 。但是在真實的外匯市場 , 所有貨
幣都會呈現連動的現象,只是不同貨幣之間連動程度有高低差別,
因此在外匯市場裡任何貨幣與貨幣之間的「連動係數」不會等於 0 。
關係以「圖像」來表示,見圖 7-10 。
圖象化「連動關係」
Y
r
變項
變項
'
。
。
。
X 變項 X 變泊
連動交易策略概念及介紹
上面第 一 個圖是「正向連動關係」 ( P os iti ve Correlation
Relation) 、第 二 個圖式「負向連動關係」 (Negative Correlat10n
Relation) 、第 三 個圖是「無連動關係」 (no Correlation
Re lation)
連動係數
複習過「連動」概念之後,我們來談在隨機程序 ( Random
是用來衡量兩個變數相對於其相互獨立的距離 。 我們不要管書籍上
面艱深難懂的解釋,我們只要知道「連動係數」實質的意義是指「連
_
307
皮爾森連動係數
一般在機率統計相關的書籍會把「連動係數」以 p 或 r 來表示。
而在符號區別上,通常是指:
p =總體連動係數
r= 樣本連動係數
在外匯市場裡,我們要探討的都是「某段區間的連動關係」,
連動係數」 r 。最常見也簡單好用的「連動係數」是皮爾森連動係數
標準差
上面這個公式表示兩個區間的獨立隨機變數 X 和 y (例如
-
上「獨立隨機變數」 Y 減掉此段區間 Y 的平均值 µY 。
有了上面的這個公式以後,我們就可以很容易的利用 MQL4 的
程式來算出 X 貨幣和 Y 貨幣的「連動係數」 pX, y 。在上面的公式
以上的公式有了,函式也有了,所以當我們算出「連動係數」
連動交易策略概念及介紹
pX, y 的值以後,我們就可以定義以多少為一個「發散跟收斂」的
門檻值 (Threshold)• 我們再以此門檻值 (Threshold) 來決定「發散」
時進場,「收斂」時出場的時間點。透過數學公式以及 MetaTrader
MQL 語 言所提供的函式,我們就可以解決在自動交易上連動交易的
進出場的適當點位來執行連動套利。
_
309
ID
連動交易策略風險與實務操作
方法
在本節文章中,筆者將介紹幾種以連動套利概念衍生出來的實.
務操作方法。首先,我們再來複習一下什麼叫做「連動」。「連動」
(Continuous) 變數之間的一種「關係程度」,其彼此變動之「關係
假設其兩變數之間的「變動之關係程度」為丑 (+100%)' 這
稱為「完美正相關連動」。例如在外匯市場裡,在一個時誾軸上的
跌 1 點,這稱為「完美正相關連動」。
相反的,假設其兩變數之間的「變動之關係程度」為 -1
(-100%)• 這稱為「完美負相關連動」。例如在外匯市場裡,
- 連動。不過有幾組貨幣其實是呈現「高度的連動」,一般的定義是
我們就稱其兩組貨幣擁有「高度的連動」的特性。所以,我舉以下
兩組常見的「高度連動」貨幣當例子 。
4 小時線圖以及日線圖 。 讀者可以很清晰的辨識出來澳幣與紐幣真的
是非常「高度的正相關連動」
澳幣與紐幣「高度正相關連動」
,.. ,-... - .
-······· -· 「.. ..., ' . . ,...., •.~ '·· ·- .., ~
尸三::.::'.~=·:;::~:這二.一1二;.二:::~~·::::二.二二1二
連動交易策略風險與賈務操作方法
_
311
而圖 7-12 則為歐元美金 (EURUSD) 與美金瑞郎 (USDCHF)
的 4 小時線圖以及日線圖。讀者可以很清晰的辨識出來歐元與瑞郎
真的是非常「高度的負相關連動」。
那如果兩個貨幣完全不「連動」呢?那就是其兩組貨幣是完全
別,所以在外匯市場的貨幣與貨幣之間的「連動係數」不會等於 0 。
依照我們所闡述的貨幣連動概念,以下是幾種利用連動特性來執行
手動下單的方法:
利用連動性手動下單的幾個方法:
參考模擬帳戶市場變化的連動套利
第一種方法是,首先中請並使用一個「模擬帳戶」將 EURUSD
在任何一個時間的點上,同-個時間都買 1 個基數,例如
常簡單也非常單純的使用手動方式執行連動套利方法。對於懶的學
一 大堆數學公式或技術指標的交 易 者而言,這種套利模式不僅風險
較低,同時長期獲利的機會也相對較高 。
一二 ll
-n
·=·-.::;,,-一一一一一一一一----一-一一·一·-·一…竺
6
Murry Math 是由 一位 T. Henning Murrey 的數學家所提出當成連動套利進出場的基點。
_
313
USDCHF 使用 Murry-Math Line 指 標
...鹹
這個實務例子是以套到利潤就跑的方式來執行,所以使用 5 分
在等待的期間,帳戶就會呈現一組獲利一組虧損。一直等到當任何
的市場反轉信號已經出現,這時就將獲利的那 一 組貨幣獲利關倉,
同時在虧損的那 一 方貨幣進場買入倉位,此時帳戶會剩下兩個同貨
..
Spieler Hedge 方法
第 三 種方法是在外匯論壇裡非常有名的方法,這是由 一 位名字
叫做 Spieler 的「避險基金經理人」所提出的方法。他的方法簡單說
EURUSD-USDCHF 發散系數
連動交易策略風險與實務操作方法
_
315
以下圖 7-16: AUDUSD-NZDUSD 使用 Netural Hedge (上半圖)
以及 Correlation (下半圖)指標
AUDUSD-NZDUSD 發散系數
二 一
一5Ul
打開 EURUSD 、 USDCHF 跟 EURCHF• 或 AUDUSD 、 NZDUSD
跟 AUDNZD 這三種貨幣視窗。使用 1 小時或 4 小時線均可。然後
Point)
EURUSD 跟 USDCHF 。
幣在市場上並不等值,所以通常不會是 1 : 1 的買或賣。一般建議
EURCHF 反向漲回(或跌回)原本起跌點(或起漲點)後,就可以
點反而繼續跌或繼續漲時該怎麼辦?
依照 Spieler 的建議就是進入類似「價格平均化模式」,就是當
連動交易策略風險與賈務操作方法
當第一次進場時是 EUR/USD (Buy) : 0.1 lot• USD/CHF (Buy) :
0.13 lot• 當賬戶虧損達 $25 ($1000X2.5%)• 再加開 EUR/USD
(Buy) : O. llot• USD/CHF (Buy) : 0.13lot• 依此類推。
以上這三個方法都是基於這些的連動貨幣是處於會「一直連動
的假設」。
但如果當該兩個連動之經濟體的貨幣不產生連動時,這種套利
模式會產生市場背離虧損。例如希臘危機造成歐元貶值,而瑞士法
_
317
Arbitrage) 倉位的投資者都會被「套住」,且無法獲利出場。
不過,幸運的是即使是希臘危機造成歐元貶值,市場還是有一
股力量把背離的部分在短短的一兩個月的時間裡全部拉回來。所以,
以筆者的觀察,歷史上一直連動的貨幣把把它們突然變成不連動,
恐怕也不是一件簡單的事。
「買強空弱」交易技巧
最後介紹利用連動特性下單的手動方式為「買強空弱」下單方
法。
對 EURUSD 下「賣單」的話,表示美金走強而歐元走弱,所以如果
EUR/GBP 呈現「跌勢」,那表示不僅美金走強,歐元也正在走弱。
判斷的做法就剛好跟上述的相反。
-
利用「相關連動」特性來交易歐元美金 (EURUSD)
I I\ ..,~-~\.,''''\
連動交易策略風險與實務操作方法
郎 (GBPCHF) 、歐元英鎊 (EURGBP) 這四組貨幣使用 4 小時線
圖複雜化 。
假設這 三 組都是呈現「漲勢」,那表示目前的英鎊是走強,最
常多,且獲利機率也很高。當然,出場點就看個人喜好,例如停損
_
319
j
停利或當力道弱化(如 EURGBP 開始反轉)等都是出場的訊號 。 若
我們要下「賣單」的話,判斷的做法就剛好跟上述的相反。
必須要呈現「漲勢」,這表示目前的日圓是走弱。假設 GBPJPY 、
「跌勢」,那表示不僅英鎊走強,日圓也正在走弱。這時你就可以
進場「買」 GBPJPY 。若我們要下賣單的話,判斷的做法就剛好跟上
述的相反。
利用「相關連動」特性來交易英鎊日圓 (GBPJPY)
連動交易策略風險與實務操作方法
以上這四種方法就是利用貨幣的「連動特性」,將「貨幣」當
成「指標」來使交易風險最小化的 一 種做法,有興趣的讀者不彷自
己試試看。不過,「兩兩連動貨幣」並非永遠一直連動不會改變。「連
動特性」是有可能在幾種狀態時產生改變。例如央行的財政貨幣政
策變更,或該國之重要經濟命脈產品價格變化(例如黃金礦物或食
.品原料),或政治上的因素(例如政黨輪替等),或全球「投機情
緒」,或重大經濟事件(例如歐債危機)等等。以上這些情況都有
可能讓原本的「兩兩連動貨幣」產生持續性的不連動,這時「連動
套利模式」就會產生此兩個貨幣的「發散風險」。所以,讀者對「連
動套利模式」的風險情形也需要有 一 些基礎認識才行。
_
321
.,
連動交易策略程式交易方法
前兩章節有關連動套利的文章中,已經將「連動套利」的概念
及一些知名的做法都做了一些說明。相信看了前兩章節的讀者應該
都對連動套利至少掌握一定程度以上的理解及認知。前兩章節中的
第一節文章談的是概念,第二節文章談的是實務的做法。不過前兩
章節文章的方法都是手動且需要盯盤的方式,所需要付出的精砷跟
時間成本較高。筆者除了一直強調套利研究之外,我們也 一 直在深
入「策略程式化」的工作。目的就是希望讓電腦來幫我們執行我們
的策略,而非 24 小時一直盯盤。為了交易卻犧牲生活品質及身體健
康,這種盯盤交易的事情從來就不在筆者的考量之內。當然筆者也
不擅長這種身心煎熬的交易方式,同時,筆者更不願意過這種毫無
意義且非正常人式的生活,因為與其焚膏晷地為了在市場上獲利不
得不每天死守著電腦螢幕,不如花些時間到社會上當義工,這對筆
者或許多人來說這樣的生命應該是比較有意義 一 點。因此所要談的
是「連動策略自動交易」之方法,這個部分可以提供給讀者做為自
動交易的參考。
兩兩貨幣連動假設
- 基於連動貨幣是處於會「一直連動的假設」。但是如果在前述文章
歐元—英鎊以及澳幣—紐幣的連動產生 一 定幅度的市場背離(也就
是有很大的幅度的不連動),這時 , 連動套利模式會產生嚴重的市
場背離虧損。因此在自動交易程式上的做法我們建議是結合「馬丁
格爾理論」套用在「連動套利」理論之中。也就是說 , 將「馬丁格
爾階層式開倉模式」與「連動套利」之理論概念合在 一 起,如此 一
來,帳戶對於市場所產生的背離現象的「市場背離虧損」承受度可
以大大提高;同時,因為所採取的是「馬丁格爾階層式開倉模式」,
因此市場背離之後的收斂幅度不用太大就可以完全獲利出場。
「一買一賣」鎖住風險
筆者的做法是將「兩兩連動之貨幣」在一開始就以「 一 買一賣」
的方式來鎖住風險,當市場不如預期且開始加大發散背離時,啟動
「馬丁格爾階層式開倉模式」 一 直到市場產生某幅度的收斂即可獲
連動交易策略程式交易方法
市場大幅波動,帳戶的浮動虧損都可以被鎖定在 一 定的範圍之內,
因此風險相對而言低很多。而這個「自動交易連動套利」程式的方
法就是利用某些「兩兩貨幣」長久以來「發散 收斂」特性所開發
出來的程式 。 「兩兩貨幣」會產生「連動特性」應該是跟政經及地
緣有相當大的關係,也因為「兩兩貨幣」的連動特性,使得即使發
生短期不連動,這「兩兩貨幣」的中央銀行還是會在某個大家都在
睡覺的時間把「不連動」的部分在幾個小時內給拉回來 。 例如讀者
可以去査閱希臘危機時的歐元與瑞士法郎就是一個很好的例子 , 這
是 一 個很有趣的現象。
因為我們要利用「兩兩連動貨幣」之「連動特性」並進場套利,
因此程式 一 定會要求是哪個貨幣與哪個貨幣來執行「連動套利」,
因此設計這類程式的使用者必須要有一定程度的貨幣連動基礎知
識 。 例如假設筆者隨便問 一 個問題,像歐元是跟哪些貨幣有高度連
_
動?你必須很清楚知道是瑞士法郎與英鎊。又例如假設筆者再問 一
323
個問題,像澳幣是跟哪些貨幣有高度連動?答案是紐幣 。 所以使用
此程式的使用者必須非常清楚並能快速給出答案,這樣在程式的設
計跟使用上就不會發生任何問題。因此我們來看以下八組「兩兩連
動貨幣」的清形。
且淘汰不適用的連動貨幣組。因為是模擬單測試,所以筆者建議以
美金為「一組貨幣」的最低金額要求,所以八組連動貨幣至少需要
的,而且以下這八組連動貨幣對只是提供參考,真正在實單操做時,
筆者建議最多不要超過 三組,就是挑出做合適組別,同時控制風險。
連動貨幣對如下:
- 以上這八組的「兩兩連動貨幣」 左 邊筆者稱為「基礎貨幣」或
的貨幣高。而「連動套利」因為使用的是「兩兩連動之貨幣」在開
倉時就以「 一 買一賣」的方式來交易,又因為同時開倉的「兩兩連
一個步驟 就是判別「基礎貨幣」的發散方向,以及其「強度」。
如此 一 來,「兩兩連動貨幣」以「 一 買 一 賣」方式的開倉才比較容
易在開倉後不久就可以獲利出場。如果,很不幸的進場之後卻變成
虧損,那程式將進入大家都很熟悉的「馬丁格爾模式」。
程式上的下單模式
連動交易策略程式交易方法
上面我們有提到為了風險考量,若要使用「自動交易連動套利」
數學運算會像這樣
y = Multiplier (乘積)
但是因為是兩兩連動貨幣開倉方式,所以程式將會執行
Level 1 = Wx + Cx
Level 2 = Wxy + Cxy
Level 3 = Wxy2 + Cxy2
Leve14 = Wxy互 Cxy3
Level 5 = Wxy4 + Cxy4
_
325
Level 6 = Wxy5 + Cxy5
當你達到第六階時,你所開的總 Lot 數為
(x + xy + xy2 + xy + x/ + xy勺 X2
由以上公式,當我們設定程式為
x = 0.03 lot
y=l.3( 乘積)
所以
當你逹到第六階時,你所開的總 Lot 數為
0.03 + 0.03 + 0.06 + 0.06 + 0.09 + 0.09 + 0.12 + 0.12 + 0.16 + 0. 16 + 0.21 +
0.21 = 1.34 Lot
定的範圍,通常會產生收斂。所以,以程式要開到第六層以上若跟
「馬丁格爾套利」比,雖然可能還是會發生,但機率低相當的多 。
的發散真的達到第六層,那它有可能發散點數是多少?
若我們以程式的階層設定是 1, 2, 3, 5, 8• 然後其所對照的「層
-
距點數」是 55, 89, 144, 233 。所以,要讓程式開到第六層,那「兩
兩貨幣」的發散必須達到
連動關係已經完全打破了,這只有在非常重大的經濟事件或此兩個
國家發生戰爭才有可能讓此長期「兩兩連動」貨幣變成不連動貨幣。
例如發生的歐債危機曾經有 一 度歐元與瑞士法郎產生高點距的發
所以,我們認為原本「兩兩貨幣」的連動關係要突然變成不連動,
事實上並不是一件很容易發生的事。
用上面所述的設定,那帳戶到底可能會虧損多少錢呢?虧損多少錢
連動交易策略程式交易方法
Weighted 貨幣應該是虧損,而 Correlated 貨幣應該是獲利。如圖 7-20
所示是單 一 貨幣,乘積為 1.3 時之虧損金額
_
327
同時,因為目前市場即時價格裡,歐元:美金是 1: 1.09051• 美金:
是 -126.26 美金,但實際的「浮動虧損值」卻有可能大大超過這個理
論值 。 主要原因是市場在發散的狀態,有可能會造成兩兩貨幣都呈
例如,假設我們想執行更保守操作,但卻非常想使用連動套利策略,
那應該怎麼執行呢?如果我們是保守投資者,且我們資金有限,只
有 1,000 美金,這時我們在風險控管上面就必須非常小心,所以,我
們的設定必須改變。
首先,我們 一 樣假設市場最大可能發散的點距會達到第六層,
手數也不能以乘積的方式來遞增。所以,第 一 層起始的開倉交易我
如下:
0.0 I + 0.0 I + 0.02 + 0.02 + 0.03 + 0.03 + 0.04 + 0.04 + 0.05 + 0.05 + 0.06 +
0.06 = 0.42 Lot
•
_ SI
5 5
縐鹽醫醫醫區登磷一
四噩0
__噩噩0醫
_0
噩13
0
碑
_9
8一
1
_
紐
_1龔
-
1
蠶0
6綫繒匱矗3
4
1籮 0
龘90囍
連動交易策略程式交易方法
3磊
一10
碩
_0
8
7
_4四
1
_
立
290-021
_
329
點距是 1830 pips 。所以當「兩兩連動貨幣」之 EURUSD-USDCHF
發散達到 1830 pips 時,帳戶「浮動虧損理論值」會達到
機率真的不是很高。
程式套用的時間框架及出場模式
筆者原先一直認為這個程式的獲利應該是很低才對(因為是兩
兩「叩生對沖」的關係),後來筆者仔細去觀察這些貨幣的線圖,
發現了一個很有趣的現象。假設我們使用日線圖,將此「兩兩連貨
幣動」拿出來比對,其線型幾乎是「一個模子」出來的。若再以 4
小時線圖來看,將此「兩兩連貨幣動」一比對,其線型變成僅是「雙
胞胎」而非是「一個模子」,因為它們之間的差異已經開始顯現。
再以 1 小時線圖來看,將此「兩兩連貨幣動」一比對,其線型更是
變成僅像「兄弟」而非是「雙胞胎」,因為它們之間的差異已經開
始明顯,同時有許多地方其實是發散而不連動的。因為此程式是用 l
小時線圖為時間框架,所以程式因為這種「發散 —收斂」特性在 1
小時線非常明顯,所以常常會在「發散」時進場,而「收斂」時獲
利出場。因此「兩兩連貨幣動」交易策略建議套用在 l 小時線的時
間框架上執行。
- 接下來談一下程式的獲利出場策略。因為連動貨幣是兩兩進場,
所以當然也是兩兩出場。程式除了原本的獲利連結出場方法之外,
我們建議加入了「 三 步驟停利出場策略」。
也就是說,當「自動交易」的獲利出場程式是當市場達到停利
點時,「整組的兩兩連動貨幣」倉位全部停利並關倉出場。而所謂
的「 三 步驟停利出場策略」是只要達到 一 定程度的獲利,就先關掉
一 部分的倉位,先落袋為安。方法很簡單,就是當此「兩兩連動貨
避免高風險套用
連動交易策略程式交易方法
近日的歐元、英鎊都跟瑞士法郎曾經發生過嚴重「背離」(發
策略容易因為兩兩貨幣對產生發散結果而造成非常嚴重的虧損。瑞
鼻事件」,這其實是比歐債危機時還嚴重的黑天鵝事件。可見瑞士法
郎 (CHF) 當避險貨幣的模式,要越來越小心。未來歐洲區貨幣的
相互連動現象(歐元、英鎊、瑞郎),有可能會被完全的打破。讀
者在外匯市場上一定要有 一 個心理準備,那就是:「外匯市場裡任
何事都是有可能會發生的」。所以讀者在套用此策略時,要小心並
保守操作使用才不至於浮虧嚴重擴大且收斂不回來,而這種現象在
未來國際貨幣市場上當然也是有可能常常發生。
_
331
三角套利策略
我漸漸能意會到,深刻並不等淤接近事實。
一村上春樹,《揶威的森林》
噌
... 、~ ~.•
\,
., ✓
CD
三角套利策略概念及介紹
三角套利基本概悆
眼中極為重要的套利知識以及交易策略,因為這種三角的「買—買
我們知道所有商業的核心概念來自於「等值交換」 我們一
生當中的所有食衣住行等都跟「等值交換」這樣的簡單商業概念有
..
關。例如,一盒雞蛋超市賣你 33 元新台幣,而一元美金也 一 樣賣你
33 元新台幣,而新台幣一塊錢可能讓你買到一顆糖果 這就是一
種「等值交換」。這裡還有一個很重要的基礎,那就是人們必須「相
信」這樣的「價值」是合理且願意接受的。例如在台北信義計畫區
裡的豪宅可以一坪新台幣兩百萬元成交 , 但這個「新台幣兩百萬元」
的價值在雲林縣海邊的偏遠鄉下地方已經可以買到一個三樓透天的
房子,這就是人們所「相信」的「價值」。但是這個由人們所「相信」
的「價值」是會隨著市場的波動而產生變化,所以它事實上會一直
隨著不同的時間點而產生不同的價值一就因為「價值」會隨著不同
的時間點產生變化,在交易當中才會產生「利潤」。
由這個簡單的概念來衍生到「貨幣的價值」可以很清楚知道,
任何一個貨幣不僅其「價值」會隨著不同的市場時間點產生變化,
它還必須有另一個貨幣來與它做「價值比較」。因此,在整個國際
角套利策略概念及介紹
是報價貨幣。我們以 2016 年 1 月 17 日的 EUR/USD 的交易牌價為
換」價格呢?這就是「三角關係的等值交換」。
我們使用簡單的數學來說明所謂的「三角關係等值交換」商業
模式系統。假設我們有三個變數:
..ab
_
335
• C
• alb= 2.5
• b/c = 2
如果我們將以上之 a, b, c 套在貨幣上,例如:
• a= EUR
• b = USD
• c = CHF
這三個變數之間的 a/b 、 b/c 與 c/a 之兩兩關係為
• alb= EUR八J SD
• b/c = USD/CHF
• c/a = CHF/EUR
的交易牌價為例:
EUR叩 SD = 1.09106
USD/CHF = 1.00308
EUR/CHF = 1.09454
- 而其產生的實際市場的「 三角關係等值交換」為
AUD/USD = 0.68731
NZD/USD = 0.63958
AUD/NZD = 1.07442
而其產生的實際市場的「三角關係等值交換」為
讀者是不是發現其「三角關係等值交換」在實際外匯貨幣市場
竟然不等於理論值的 l 。
三角套利策略概念及介紹
以上的例子不管是大於 1 (> 1) 還是小於 1 (1<)• 它就是不會
_
337
我們以上面的 EUR/USD 、 USD/CHF 及 EUR/CHF 做例子:
EUR/USD = 1. 09106
USD/CHF = 1.00308
但是市場的實際報價卻是
EUR/CHF = 1.09454
AUD/USD = 0.68731
NZD/USD = 0.63958
但是市場的實際報價卻是
AUD/NZD = 1.07442
外匯市場報價與理論值就產生了:
當然,若以上面兩組三角貨幣的「市場無效性」報價差距是完
全無法進場去執行「三角套利」。理由很簡單,就是「三角套利」
是同步進場去交易三個貨幣組的倉位,假設每個貨幣組的開倉成本
無利潤可言。因此「市場無效性」的報價差距必須高過交易成本,
那執行「三角套利」的利潤才有可能是確定的。
而這種「市場無效性」的報價差距高過交易成本的市況,通常
三角套利策略概念及介紹
必須藉由「等待」來讓市場發生,在快市的情況下比較容易發生此
類的報價誤差。
「三角套利」理論
介紹更細部的「三角套利」,同時也會以國際八大貨幣 (EUR 、
接下來我們要談一下其相關的理論,也就是以市場波動時的「市
篇文章的重點。
_
339
份,這裡我們將僅拿 EUR/USD 、 USD/CHF 、 EUR/CHF 以及 EUR/
角套利」的理論可行性即可,其他的「 三 角貨幣組合」所依據的理
論方法就是「依此類推」,筆者相信這對讀者而言,不會有太大的
是利用市場波動時的「市場無效性」,或是所謂的三種貨幣兌換機
BGI 公司的貨幣牌價表
就是「銀行」或是「你的經紀商」跟你買賣貨幣時他們的「買入」
價格,所以永遠是比較低的價格。因此我們下單時若是想下「賣單」
出」價格就是「銀行」或是「你的經紀商」的「買入」價格)。而
「 Ask 」是「銀行」或是「你的經紀商」跟你買賣貨幣時他們的「賣
出」價格,所以永遠是比較高的價格。因此我們下單時若是想下「買
單」時,不管市場如何波動,一定是以「和 d 」的價格成交(因為你
的「買入」價格就是「銀行」或是「你的經紀商」的「賣出」價格)。
談以上這個外匯交易的基礎知識是因為「三角套利」所牽涉到的是
易成本」的問題。
三角套利策略概念及 介紹
有一筆歐元 (EUR) 的資金 Xi• 假設我們將此筆資金 (Xi) 全部
• 而這個簡單的換匯手法,其實就是「三角套利」概念的精隨。
但是還是老話一句:「天下沒有白吃的午餐」,通常繞了這麼
圈以後的資金 Xf 比你原本的資金趴還少,除了匯差之外,另外最
大的問題就是換匯的「交易成本」。
價為例:
_
341
EUR/USD = 1.09106 (Bid)
USD/CHF = 1.00308 (Bid)
EUR/CHF = 1.09492 (Ask)
「 Ask 」)為
又例如我們以實際市場的「三角關係等值交換」的「 Ask 」
而其最終交換匯率後的結果為
(就是你對銀行或經紀商執行「賣出」-「賣出」_「買入」),或
入」_「賣出」),其結果都是以虧損收場。那既然都是虧損,還研
究什麼呢?事實上,以上這些算出來虧損的現象其實才是「正常的
市場現象」。但我們所要的並不是這樣正常報價的市場,我們要的
是「報價錯誤」的「非正常市場現象」
的關係,我們就可以從中套取低風險的利益。
數學公式及可行性報告
三角套利策略概念及介紹
我們若定義這個「 Bid 」_「和 d 」-「 Ask 」或「 Ask 」_「 Ask 」
「 Bid 」為 r Ct)· 則
當 r (t)>l 時,就是一個「三角套利」的進場機會點。
_
343
r ( t ) = ( EUR/USDBid ( t )) X ( USD/CHF和d ( t )) X (1/ ( EUR/
CHFAsk ( t ) ) )
r ( t ) = ( EUR/USDBid ( t )) X ( USD/JPYBid ( t )) X ( 1/ (EUR/
JPYAsk ( t ) ) )
>USD->EUR• 則
r ( t ) = ( 1/ ( EUR/USDAsk ( t ) ) ) X ( 1/ ( USD/CHFAsk ( t ) ) )
X ( EUR/CHFBid ( t ))
r ( t ) = ( 1/ ( EUR/USDAsk ( t ) ) ) X ( 1/ ( USD/JPYAsk ( t ) ) )
X ( EUR/JPYBid ( t ))
既然公式已經可以這麼清楚的推論出來,那麼接下來就是到底
r (t)>l 的機會有多少,都發生在何時,發生後會持續多久等等,
這些都是決定「 三 角套利」的可行性以及可獲利性的關鍵 。
1.0004
,....
0.9988
- 10/04/05 10/05/05
Time
10106105 10/07/05
產生「錯誤定價」的機會次數
,,:
JPY CHF
1500 1500
~ !i
n• 一一一一一一一一一一一一一一一一一一一一一·
8 12
Hour
16 20 。 。 4 8 Ho1u2r 16 20
'
.̀ .
II)
0
C 4
12
6
01 11111111111111
.·Cl)
- ·.
囹-6
~ffi
8
4
6
2
nl 1111111111111111111111
8 12
Hour
16 20
。 4 8 12
Hour
16 20
角套利策略概念及介紹
鬪 8-2 及圖 8-3 是由英國牛津大學 (University of Oxford) 所統
定價」所持績的時間最長,平均從「發生到結束」的平均時間約為 3-7
秒,然而其發生的頻率卻不高。但在是左上圖的日圓或右上圖的瑞
其發生的頻率卻相當高。
_
345
避開「短時效性」的市場
由以上的統計資訊可以傳達一個清楚的訊息給我們,如果我們
要執行「三角套利」策略一定要避開有「市場無效性」的機會但卻
「短時效性」的市場。因為「短時效性」的「市場無效性」會讓我
們的「三角套利」進場的時間點剛好就是「錯誤定價」改成「正確
定價」的時間點,這只會徒增我們的交易成本而已。
如果我們專注於美洲盤結束 亞洲盤還未開始的台北時間
麼就理論來說,一個月一個「三角套利」貨幣組就可以套出 20X 10
= 200 pips 的利潤 。
如果這些理論上的推演都可以使其在實務上成真,那真正「低
風險」且「長期穩定獲利」的「外匯套利自動交易程式」就真的可
以達成,不過理論的情況在實際市場的套用上無法完全適用,主因
就是理論只是數學及機率統計推演,但在實際市場上,市況的變動
卻是常常無法掌控的,所以在實際市況上,還有許多難題必續克服,
例如瞬間交易成本拉高或滑點等等都會令此理論無法達成獲利的目
標。
三角套利策略風險與實務操作
方法
三角套利討論
由上節的文章介紹中知道,「三角套利」是利用市場波動時的
「市場無效性」,或是所謂的三種貨幣兌換機制之間的「不平衡外
市場無效性/不平衡外匯市場
-一角套利策略風險與實務操作方法
要利用這種「市場無效性」的套利,除了市場的報價誤差以及
交易成本之外,有時或多或少與各別經紀商也有相當大的關係。因
為我們所要交易的外匯保證金市場其實是由外匯交易者透過外匯經
紀商的「報價系統」來進行買賣,而每一家的外匯經紀商對於外匯
市場的價格反應在任何的一個時間點上會有些微差異,其會造成差
異的原因是每一家的外匯經紀商所合作的外匯價格報價銀行不一定
會相同。
因此,在某一個時間點上, A 外匯經紀商若產生「市場無效性」
的「錯誤定價」現象,在 B 外匯經紀商卻不一定會發生。所以在觀
念上要清楚知道,要使用「三角套利」策略來執行「幾乎確定」的
利潤要非常有耐心的等待。同時,這種方式的套利僅能使用電腦程
式即時反應,因為「三角套利」的機會每次維持數秒到數分鐘左右,
_
347
通常很快就會消失,以人工下單操作的方式是很難達到該有的套利
效果。
錯誤定價
除此之外,就算我們使用的是即時反應的「自動交易程式」,
也無法「保證」進場後可以套到我們所期待的「錯誤定價利潤」。
我們舉個例來說 。 我們都知道市面上幾乎所有的「外匯交易平台」 翬
的「 三 角套利」會變成毫無利益可言。所以我們要認清「 三 角套利」
但它卻是 一 種可說是「比較確定」的利潤。
有關於「錯誤定價」,我們再舉一個簡單的例子 。 假設我們有
三 組貨幣:加幣 (CAD) 、美元 (USD) 和澳幣 (AUD)• 當我們
CAD/USDXAUD/CAD = AUD/USD
做套利 。 實務上的做法以及概念其實並不困難,也就是所有「 三 角
套利」都是假設在「錯誤定價」之後,市場會恢復成「正確定價」,
因此當「錯誤定價」的貨幣報價高於理論值,表示它會跌價以符合
「正確定價」的價格。同樣的,當「錯誤定價」的貨幣報價低於理
論值,表示它會漲價以符合「正確定價」的價格 。 所以當「錯誤定
價」的貨幣報價高於理論值時,我們「賣」這個「錯誤定價」的貨幣,
當它跌回「正確定價」的價格時就是獲利出場點。當「錯誤定價」
的貨幣報價低於理論值時,我們「買」這個「錯誤定價」的貨幣,
當它漲回「正確定價」的價格時就是獲利出場點。但是讀者不要興
奮的太早,「天下真的沒有白吃的午餐」,事情其實並沒有沒有想
像中的簡單 。
角套利策略風險與實務操作方法
要執行「 三 角套利」是否可獲利的最大可能問題點在於「點差
耐心等候
因此,這種套利模式的另 一 個缺點是要「耐心等待」,因為這
種機會不是時常會出現,最常出現的時間點大都落在「交易時區」
變更的前後 l 小時,例如亞洲盤轉到歐洲盤,歐洲盤轉到美洲盤,
的優點是風險低且「獲利比較穩定」 。
_
349
三角貨幣對組合
接下來,我們想談到底有多少組貨幣可以組成「三角套利」,
-
BGI 公司公告之可交易貨幣組
rsM~ymEU
arket~RWUaStDch, ILS0,03 Bid Ask High Low Time A
1.12139 1.12162
'
23 1.12586 1.11871 11:50:00
• USDCHF 0.97056 0.97085 29 0.97261 0.96872 11:49:59
<> GBPUSD 1.42669 1.42695 26 1.43959 1.42525 11:49:59
<> USDJPY 111.589 111.614 25 112.187 111.373 11c49c59
• AUDUSD 0.75897 0.75926 29 0.76195 0.75500 11:49:59
• USDCAD 1.30654 1.30698 44 1.31341 1 30520 11:49:59
令 AUDCAD 0.99173 0.99219 46 0.99518 0.98997 11:50:00
• NZDUSD 0.67411 0.67459 48 0.67743 0.67193 11:50:00
• AUDCHF 0.73665 0.73708 43 0.73869 0.73362 11:50:00
令 AUDJPY 84.698 84.741 43 85.421 84.114 11:50:00
令 EURCAD 1.46529 1.46578 49 1.47201 1.46347 11:49:59
• AUDNZD 1.12545 1.12596 51 1.12699 1.11887 11:50:00
<> AUDSGD 1.03265 1.03337 72 1.03496 1.02941 11:50:00
• CADCHF 0.74260 0.74308 48 0 74358 0.73985 11-49:59
令 CADJPY 85.381 85.427 46 85.885 84.785 11:49:59
• CHFJPY 114.950 114.992 42 115.704 114.527 11:49:59
-~
• CHFSGD 1.40156 1.40231 75 1.40641 139927 11:49:59
• EURAUD 1.47717 147766 49 1.48496 1.47411 11:49:59
令 EURCHF 1.08855 1.08884 29 1.09128 1.08738 11:50:00
• EURJPY
+ EURNZD
令 EURSGD
• GBPAUD
一-
125.147
1.66281
1.52570
1.87933
125.179
1.66346
1.52656
1.87989
32
65
86
56
126260
1.66837
1.53306
1.89917
124.668
1.65822
1.52379
1.87843
11:50:00
11:50:00
11:49:45
11:50:00
• GBPCAD 1.86425 1.86480 55 1.88173 1.86415 11:49:59
• GBPCHF 1.38476 1.38528 52 1.39587 1.38476 11:49:59
令 GBPJPY 159.220 159.257 37 161.481 158.817 11:50:00
令 GBPSGD 11:49:59
11:49:59 "
若要完全把所有可組成三角套利的貨幣組別都組起來,那可能高達
一
執行三角套利,根本是不可能的。以下是已經經過篩檢的三角貨幣
_
351
CHFJPY EURJPY EURCHF
CHFJPY GBPJPY GBPCHF
EURAUD AUDCAD EURCAD
EURAUD AUDCHF EURCHF
EURAUD AUDJPY EURJPY
EURAUD AUDNZD EURNZD
EURAUD AUDUSD EURUSD
EURAUD GBPAUD EURGBP
EURCAD AUDCAD EURAUD
EURCAD CADJPY EURJPY
EURCAD GBPCAD EURCAD
EURCAD USDCAD EURUSD
EURCHF AUDCHF EURAUD
EURCHF CHFJPY EURJPY
EURCHF GBPCHF EURGBP
EURCHF USDCHF EURUSD
EURGBP GBPAUD EURAUD
EURGBP GBPCAD EURCAD
EURGBP GBPCHF EURCHF
EURGBP GBPJPY EURJPY
EURGBP GBPNZD EURNZD
EURGBP GBPUSD EURUSD
EURJPY AUDJPY EURAUD
EURJPY CADJPY EURCAD
EURJPY CHFJPY EURCHF
一
EURJPY GBPJPY EURGBP
EURJPY NZDJPY EURNZD
EURJPY USDJPY EURUSD
EURNZD AUDNZD EURAUD
EURNZD GBPNZD EURGBP
EURNZD NZDJPY EURJPY
EURNZD NZDUSD EURUSD
EURUSD AUDUSD EURAUD
EURUSD GBPUSD GBPUSD
EURUSD NZDUSD EURNZD
EURUSD USDCAD EURCAD
EURUSD USDCHF EURCHF
EURUSD USDJPY EURJPY
EURUSD USDNOK EURNOK
GBPAUD AUDCAD GBPCAD
GBPAUD AUDCHF GBPCHF =
GBPAUD AUDJPY GBPJPY
GBPAUD AUDNZD GBPNZD
GBPAUD AUDUSD GBPUSD
GBPAUD EURAUD EURGBP
GBPCAD AUDCAD GBPAUD
GBPCAD CADJPY GBPJPY
GBPCAD EURCAD EURGBP
GBPCAD USDCAD GBPUSD
GBPCHF AUDCHF GBPAUD
GBPCHF CHFJPY GBPCHF
GBPCHF EURCHF EURGBP
GBPCHF USDCHF GBPUSD
GBPJPY AUDJPY GBPAUD
_
353
GBPJPY CADJPY GBPCAD
GBPJPY CHFJPY GBPCHF
GBPJPY EURJPY EURGBP
GBPJPY NZDJPY GBPNZD
GBPJPY USDJPY GBPUSD
GBPNZD AUDNZD GBPAUD
GBPNZD EURNZD EURGBP
GBPNZD NZDJPY GBPJPY
GBPNZD NZDUSD GBPUSD
GBPUSD AUDUSD GBPAUD
GBPUSD EURUSD EURGBP
GBPUSD NZDUSD GBPNZD
GBPUSD USDCAD GBPCAD
GBPUSD USDCHF GBPCHF
GBPUSD USDJPY GBPJPY
NZDJPY AUDJPY AUDNZD
NZDJPY EURJPY EURNZD
NZDJPY GBPJPY GBPNZD
NZDJPY USDJPY NZDUSD
NZDUSD AUDUSD AUDNZD
NZDUSD EURUSD EURNZD
NZDUSD GBPUSD GBPNZD
NZDUSD USDJPY NZDJPY
USDCAD AUDCAD AUDUSD
--
USDCAD CADJPY USDJPY
USDCAD EURCAD EURUSD
USDCAD GBPCAD GBPUSD
USDCHF AUDCHF AUDUSD
USDCHF CHFJPY USDCHF
USDCHF EURCHF EURUSD
USDCHF GBPCHF GBPUSD
USDJPY AUDJPY AUDUSD
-~.-一--一- -- -
為何我們需要列出這麼多三角貨幣組合呢?因為前面已經說
過,任何一個單一獨立的「三角貨幣組」可執行「三角套利」的機
會不會時常出現,既是如此,如果我們有-個程式可以在每一個
角套利策略風險與實務操作方法
Tick 來時就「掃瞄」以上這 118 組「三角貨幣組」的可交易可能性,
如此一來,交易機會應該可以大幅增加。理想的作法是希望可以在
這些「三角貨幣組」出現「市場無效性」的「錯誤定價」時進場,
並在很短的時間內即可獲利出場。不過在實務的程式設計上,要達
到這樣的目標可不是一件簡單的事。下一篇文章我們將探討「三角
_
355
三角套利策略程式交易方法
三角套利的困難處
在前篇的文章當中,我有提到過,「三角套利」在外匯市場上
屬於「理論上可行」,但是「實際上不可行」的策略,尤其當投資
主因在於我們都是獨立的「個別投資者」,我們的「角色不對」
場價差利益」有很大的困難,主因是交易成本以及滑點等不可預測
的問題,所以實際上在執行面真的是不簡單。為什麼呢?首先,我
們必須了解,即使投資者是在一個公正公開對外丟單 STP/ECN 模式
裡所談的「外匯經紀商」是指專門針對「零售市場」報價的經紀商;
最後一層才是我們這類獨立的個別投資者。
當整個架構一層層下來的時候,最初產生價差是在「最上層」,
-
然後遞延到「外匯經紀商」,再遞延到個別投資者的「終端平台」,
不僅己經產生相當多的「時間差」,另外令人更沮喪的是 MT4 後台
系統都是將「最差的價格」往外報給投資者,最好的價格留給「經
紀商本身」。
最後 一 項因素是,雖然 MT4 的系統架構都是以 Tick 為基準,
這 三 個因素加起來,使得「 三 角套利」變成不可行。因為原先鎖住
尚有經紀商索取的「交易點差」、「市場滑點」等等問題。對 一 個
僅僅是要套取微薄「市場無效性」的「三角套利」來說,光這幾項
市場因素就足以打敗「學者的理論」。
FPI 理論
在 8 -1 章節裡提的「 三 角套利」簡單的理論是目前市場上大眾
角 套利策略程式交易方法
Inefficiency' 也就是利用市場的「報價無效性」進場做「 三 角套利」。
簡單的數學架構如下:
權重貨幣 : wSymbol
交叉貨幣: CrossedSymbol
三 角貨幣 : TriangularSymbol
_
357
FPI 的公式如下:
因此在程式設計時的簡單宣告就是
II===== GetFPIValue
string Sl = wSymbol; II ` `"
EURUSD
string S2 = CrossedSymbol; II "EURGBP"
string S3 = TriangularSymbol; II "GBPUSD"
double S l _EU = Marketlnfo (SI ,MODE_BID) ,
double S2_EG = Marketlnfo (S2,MODE_BID) ;
double S3_GU = Marketlnfo (S3,MODE_BID) ,
double FPI = S2_EG * S3_GU * (1/Sl_EU) ,
II+ 十
int start ()
-
mt counted_bars = IndicatorCounted () ,
inti= O;
return (0) ,
}
I!+------------------------ ---------------+
角套利策略程式交易方法
II -一-----------------------------------------//
II FPI - Fract10nal
. Product Ineffic1ency EA II
I/ ------------------------------------------------------------------------一一---//
extern double Tota!Profit = 50,
extern double LoFPI = 0.9991,
extern double HiFPI = 1.0009,
extern mt Lot = 1.0;
mt start ()
{
int TO = OrdersTotal () ;
string Sl = "
EURUSD,, ;
string S2 = " EURGBP " ,
string S3 = " ,
` GBPUSD·
359
double EG = Marketlnfo ( S2,MODE_BID ) ,
double GU = Marketlnfo ( S3 ,MODE_BID ) ,
double FPJ = EG * GU * ( 1/EU ) ,
1f (( FPI<LoFPI ) && ( TO == 0 ))
{
OrderSend ( S l ,OP_ SELL, Lot, Marketlnfo ( SI ,MODE_ BID ) , 2,
NULL, NULL, "FPI" , magic, NULL, FireBrick ) ;
OrderSend ( S2,0P_BUY, Lot, Marketlnfo ( S2 ,MODE_ASK ) , 2,
NULL, NULL, "FPI" , magic, NULL, LimeGreen ) ;
OrderSend ( S3,0P_ BUY, Lot, Marketlnfo ( S3 ,MODE_ASK ) , 2,
NULL, NULL, "FPI" , magic, NULL, LimeGreen ) ;
return ( 0 ) ,
-
}
全球資金流交易
策略
亞倫 · 葛林斯潘
、~.-
示
一-
. .
. ..
`
全球資金流交易策略概念及
介紹
概悆介紹
我們這章節文章將討論「全球資金流」的現象,以及如何利用
這種現象來交易以獲取利益;甚至更進一步設計一套套利方法,來
取得長期穩定獲利的目標。
其實所有人類的經濟活動,包括消費、投資、匯款、借貸等等一樣
有所謂的巨觀與微觀。也就是說,當我們在執行經濟活動時,通常
不太能仔細觀察金錢的「實體流向」,也就是常常弄不清楚現金流
的實體進出現象;不過大抵能算出哪些錢消費在哪些項目之上,所
以我們說這是屬於比較微觀經濟統計的部分。當我們將相同的經濟
計算方法擴大到整個國家時,藉由國家的經濟統計數據,可以觀察
到這個厰家的經濟活動行為狀況,這是屬於比較巨觀經濟統計的部
分。如果,我們把這種觀察再擴大到全世界,對全球的「錢財流向」
的視野將會更清楚明瞭;也就是說,當你是站在一個巨人的肩膀上,
你所能看得的距離與可以觀察到的現象將比平常人更深入且清楚。
簡單的例子,比如說我們可以觀察螞蟻昆蟲其非常細微的行為,
但是如果換做我們是螞蟻昆蟲,我們卻無法觀察到自己很細微又全
.. 面的經濟活動。所以,當我們可以觀察「全球資金流」的資金流向
現象時,是不是就類似以一種巨觀的角度來觀察全世界人類資金的
流向以及其經濟行為呢?談起這種「全球資金流」的流向的現象真
的是 一 項非常有趣的經驗。
筆者本身並非是經濟系或金融相關科系背景,不過這個「全球
他的外匯交易利益應該是不低。各位讀者如果想讀這位 TraderlOl 大
幾年它的模式並不是真的那麼賺錢,雖然聽說有商業公司找他合作,
以他的方法來開發「自動交易程式」,不過筆者很懷疑其可執行性。
因為 TraderlOl 大師的方法必須以模擬帳戶當成參考基準,如何將模
擬帳戶進場訊號轉到真實帳戶去,真的是很深的學問。
模擬帳戶實驗
全球資金流交易策略概念及介紹
讓我們來做 一 個實驗,請讀者在任何 一 個「外匯交易平台」開
一個「模擬帳戶」,然後依照以下的貨幣組合開倉。
GBP/USD
EUR/GBP
GBP/CHF
CHF/JPY
AUD/JPY
EUR/JPY
USD/CHF
_
363
」
以上 貨 幣 請 都開「 賣」倉 , 請 全部開 O. lLot 。 接下來,將以下
貨 幣都開「買 」 倉, 一 樣 全部 都開 O. lLot 。
CAD/JPY
AUD/USD
USD/JPY
EUR/USD
EUR/CHF
GBP/JPY
USD/CAD
開 倉 後如 圖 9-1 所示。
在模擬帳戶開「七組貨幣做買」以及「七組貨幣做賣」
-
buy 0 . 10 eurusd 1.42975
!
! r-·--一-
buy
buy
r-
0 . 10
0.10
- ,彎. -'-- • ~a
eurchf
cadjpy
- ud-u-sd
1.60042
99.4 2
'buy 0.10 0.81905
當全部都開完倉之後,因為開倉成本,所以帳戶一定是先虧損
大」,或是由「虧損最大」排到「獲利最大」,這都沒有關係。排
列的目的僅是讓自己知道全球資金流向,讓自己方便判斷該「下買
單」還是「下賣單」(如圖 9-2) 。
1nnn~nun
~!!一
3 一-···.. .。
,...
」一-··-- ,.。
,.,.=
_,
IQ_,
:.- _m.,.,, _,,.,, "'•• - ~。
ll•心""'"'""""
~- .. .• --
._••
; -— -·-- .. .. -
33 一..,.....
一 面m••• --n-i' ....
氰
..
_,, .., ~
3一
il"""" ...... ,,
.. •• -
....
..。.
pu pu ......
,m
..
,`
全球資金流交易策略概念及介紹
-- -
3 一""""""
c.•-
a - ~ =,, .. •• -·-
辛w ••,,
- - ..。. .-
.. `嶋
磾
·鸕
-
....,
.
a 一 訌這.. ..。.
蛐.......... .. ....,_,,._
鬮``.一~""'~" ......
U品
不管過多久的時間,帳戶就是一直維持在虧損某個範圍之間。這個
時候,開始會出現一個非常有趣的現象,你可以明顯看見開買倉或
開賣倉的貨幣是賺錢還是賠錢,有時買倉都是賺錢而賣倉都是賠錢,
有時是買倉都是賠錢而賣倉都是賺錢。不管哪些貨幣是賺,哪些貨
幣是賠,帳戶的虧損金額卻一直不會擴大但也沒有縮小多少,這就
是一種資金平衡。接下來我們開始觀察,開倉部位哪些是獲利而哪
_
365
,`,." `7 .e.` .2.U . ' § 7e
.二
.嘈
`卜
·電
'
p 9 9 BU 9119 9 9 U I!BBn~nn~
,' ••
g Ct'-
gnR gu2 g`
g
g
8oc`n-
g
JHj.UU!l 日 HU§
,`
•••• a-
悪壹母震 R嚥墀孟幗贏·胭壹震 RI
•• `
已
汛 m
自一
e
u~BB i ll邑 ~n~ i~:iHu11Hn~~ "
,'
l
,' ,'
g.'
,' ',
ng
gg
geo
g·0
~1 ! ! 1; m1111; , , 1
a`"」[.
.。
皂」,
J」
U」"'"'一
I I I I II DI ! 1 1
礙螂 I
•i ! i
wm
g
alt ! ! I§I II i§i ! ! !
赳靈 odA茹
ti !; BBB
日 0
-卡
, ! BB ggg;
k嚀
z
`紺血幗贓齷鏃贓嚻 v~98~
11: ! § ~11 JO;~~i: A ll 呂!圉 ~H I !~U~: !H~B : .邑`'呈 ~n
l,```.`
,.'.°,
l`._,`.,
`,.°,
1·°, ,,I
l 1`
nt`
·1-`
L1蝨疽稟Ilued槨謚
ffHHH IJPH H
! : :: :H:~ •:::: :!' .. ., ••.,
, , , ,, '
'
....••--_.~
J 11 1 11 1 ,1 / II'''H ~
_店
t
g.
1::::u:: :u=:
』 HIUUIUIUI ;
三
iii iii ii i iii i;
二佃!」
6幗g贓
` 磾嶧嶧彞智 ``
在圖 9-3 中,讀者可以清楚看出已經有相當多開「買倉」是呈
買倉」的方向走呢?「沒錯!答對了。」在這個時候,我們通常需
要等待,等待什麼呢?一等待一個市場是往「確定是開買倉」的方
利力道增強,且賣倉的虧損力道也增強。
由圖 9-4 我們知道了當開「買倉」的七組貨幣都一個一個開始
賺錢,而開「賣倉」的七組貨幣也都一個一個開始賠錢,這時全部
14 組貨幣執行「買倉」部位的信號已經出現。以上都是在「模擬帳
戶」中觀察資金流現象,當信號確定以後,這時,我們進場在實單
全球資金流交易策略概念及介紹
由圖 9-5 可以明顯看出,全球資金流的確是往「開買倉」的方
向走。由上面的例子來看,從買的信號確認,到進場「買」然後呈
現獲利其實還沒超過 3 個小時。
同樣的,如果全球資金流的確是往「開賣倉」的方向走,你就
場「買」或「賣」。所以獲利速度非常的快速;獲利快速虧損當然
也一樣快速,這是相對的。因此執行此種交易必須嚴格設定停利和
停損,因為一次是開 14 組貨幣,以免當「資金流」反向時一下子就
產生高額虧損。利用這種多達 14 組貨幣開倉判斷多空的方式,有經
驗的人就會常常可以看到「全球貨幣」走向。若搭配即時的財經消
息,再看看這 14 組貨幣的開倉結果,讓人會覺得全球金錢的移動就
如潮水一般的流動,非常精采且有趣。
_
367
這種交易模式也被稱之為「 Basket Trading 」。不過這種交易模
式並不是被所有的投資專家定義歸類於「套利分析」,它雖然有類
似套利的可能模式,但卻有「非套利模式」的高風險。
全球資金流策略之對沖貨幣對
我們都知道,市場的波動不會簡單的依照「數學計算」讓投資
者稱心如願,因為那幾乎是不可能的。「全球資金流」策略必須把幀
14 個貨幣(雙邊各七組)的價格波動都收納進來,然後做市場判
斷,看市場是偏向哪一邊,一次全部買多或全部賣空。若要設計成
為程式,其難度是相當高的,且這個程式的難度不會比我們第五章
所以在國際外匯論壇上有一位自稱是在大學任教數學的網友發表一
所以就這個策略來說,我們其實可以將其視為一個連動現象,
.. 也就是「全球資金流」裡的「所有 14 組貨幣」當成-個單位與
EURJPY 這個貨幣對當成一種「正向連動」的關係。如此一來,以「貨
幣對沖」概念來避險的交易方式就可以依照此方式執行。
疇
全球資金流交易策略風險與實
務操作方法
在前一節的文章裡,已經將「全球資金流」的現象做了一個簡
單的說明。筆者的建議是,觀念清楚最重要,其它的就是盡量將複
雜的事情簡單化;只要觀念清楚,策略的利益及風險都可以用科學
方法來量化,只要能夠量化利潤與風險,交易就會變成一件愉悅的
事情,而非每日戰戰兢兢面對不可知的市場在賭博。所以在交易的
世界裡,我們的處事原則就是盡量「策略簡單化並程式化」,並將
最大風險與利潤都能計算出來,這樣對我們一般的投資者來說就是
全球資金流交易策略風險與實務操作方法
日日是好日,夜夜是好眠的日子。
使用 Script 程式代替手動下單
我們再先重複一下有關於「全球資金流套利」上一節的重點。
首先,打開與你實單交易同一個「外匯經紀商」的「模擬單帳戶」;
這個「模擬帳戶」是一個當你要進場做實單交易時的一個很重要的
參考基準。所以,你當然也可以把這個「模擬單帳戶」當成是類似
一個「指標」(筆者稱它為「帳戶指標」)。當此「帳戶指標」告
訴你要進場開買倉時,你就到你的實單帳戶去開買倉,當「帳戶指
標」告訴你要進場開賣倉時,你就到你的實單帳戶去開賣倉;所以
非常簡單。但何時開買單,何時開賣單,其實才是此「帳戶指標」
的重點所在。
-
369
你開啟與你實單交易是同一個「外匯經紀商」的「模擬單帳戶」
如下:
1. GBPUSD
2. EURGBP
3. GBPCHF
4. CHFJPY
5. AUDJPY
6. EURJPY
7. USDCHF
8. CADJPY
9. AUDUSD
10. USDJPY
11. EURUSD
12. EURCHF
13. GBPJPY
14. USDCAD
體貨幣對趨勢的方向參考)。
.. 一次要開這麼多組貨幣又是買又是賣豈不累死人?沒錯,所以
mt start ()
{
OrderSend ("GBPUSD" ,OP_ SELL, Lot, Marketlnfo
("GBPUSD" ,MODE_ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("EURGBP" ,OP_SELL, Lot, Marketlnfo
("EURGBP" ,MODE_ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("GBPCHF" ,OP_SELL, Lot, Marketlnfo
("GBPCHF" ,MODE_ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
全球資金流交易策略風險與實務操作方法
OrderSend ("CHFJPY" ,OP_SELL, Lot, Marketlnfo ("CHFJPY" ,MODE_
ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE) ;
OrderSend ("AUDJPY" ,OP_SELL, Lot, Marketlnfo
("AUDJPY" ,MODE_ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("EURJPY" ,OP_SELL, Lot, Marketlnfo
("EURJPY" ,MODE_ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("USDCHF" ,OP_SELL, Lot, Marketlnfo
("USDCHF" ,MODE_ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("CADJPY" ,OP_BUY, Lot, Marketlnfo ("CADJPY" ,MODE_
BID) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE) ;
OrderSend ("AUDUSD" ,OP_BUY, Lot, Marketlnfo
("AUDUSD" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("USDJPY" ,OP_BUY, Lot, Marketlnfo ("uSDJPY" ,MODE_
BID) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE) ;
OrderSend ("EURUSD" ,OP_BUY, Lot, Marketlnfo
("EURUSD" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
_
371
NONE),
OrderSend ("EURCHF" ,OP _BUY, Lot, Marketlnfo
("EURCHF" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("GBPJPY" ,OP_BUY, Lot, Marketlnfo ("GBPJPY" ,MODE_
BID), 2, NULL, NULL, NULL, 0, 0, CLR_NONE);
OrderSend ("USDCAD" ,OP_BUY, Lot, Marketlnfo
("USDCAD" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
return (0) ,
當以上這 14 組貨幣的七組買倉及七組賣倉都開倉完畢之後,第
利最高的貨幣組排在最上面或讓獲利最高的貨幣組排在最下面都可
以,這是可以依照個人喜好來決定。
剛開始時,這 14 組貨幣匯呈現無規則排列,你完全不需要去理
會它,就把這個模擬帳戶擺個幾小時到一天的時間,這時你就會發
現 一 些市場的規則性似乎開始呈現出來。
假設我們讓獲利最高的貨幣組排在最上面,而虧損最高的貨幣
組排在最下面,這時我們必須要注意當買的七組貨幣是在排序的前
七個(就是買倉都是獲利的意思),而賣的七組貨幣是在排序的後
七個(就是賣倉都是虧損的意思),通常這是買的訊號;反之則是
position)• 以及其他更細微的買賣點進場策略,這個部分在下 一 節
裡作介紹。
- 接下來當「模擬單帳戶」的這個「帳戶指標」出現買倉信號時,
全球資金流交易策略風險與實務操 作方法
ASK ), 2, NULL, NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ( "EURJPY" ,OP_BUY, Lot, Marketlnfo ( "EURJPY" ,MODE_
ASK ), 2, NULL, NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ( "USDCHF" ,OP_BUY, Lot, Marketlnfo
( "USDCHF" ,MOD見ASK ), 2, NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "CADJPY" ,OP_BUY, Lot, Marketlnfo ("CADJPY" ,MODE_
BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ( "AUDUSD" ,OP_BUY, Lot, Marketlnfo
( "AUDUSD" ,MODE_BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "USDJPY" ,OP_BUY, Lot, Marketlnfo ( "USDJPY" ,MODE_
BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ( "EURUSD" ,OP_BUY, Lot, Marketlnfo
( "EURUSD" , MOD見BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE );
OrderSend ( "EURCHF" ,OP_BUY, Lot, Marketlnfo
( "EURCHF" ,MODE_BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "GBPJPY" ,OP_BUY, Lot, Marketlnfo ( "GBPJPY" ,MODE_
_
373
BID) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE) ,
OrderSend ("USDCAD" ,OP _BUY, Lot, Marketinfo
("USDCAD" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
return (0) ,
同樣若市場是反向的,當「模擬單帳戶」的這個「帳戶指標」 幀
的倉位;這是在「實單帳戶」下執行。如下所示。
- NONE);
OrderSend ("EURJPY" ,OP_SELL, Lot, Marketlnfo
("EURJPY" ,MODE_ASK), 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("USDCHF" ,0 見SELL, Lot, Marketinfo
("USDCHF" ,MODE ASK), 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("CADJPY" ,OP_SELL, Lot, Marketinfo
("CADJPY" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
'ONE);
OrderSend ("AUDUSD" ,OP _SELL, Lot, Marketlnfo
("AUDUSD" ,MOD見BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("USDJPY" ,OP SELL, Lot, Marketlnfo
("USDJPY" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("EURUSD" ,OP_SELL, Lot, Marketlnfo
("EURUSD" ,MODE_BID) , 2 、 NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("EURCHF" ,OP SELL, Lot, Marketlnfo
("EURCHF" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("GBPJPY" ,OP_SELL, Lot, Marketlnfo ("GBPJPY" ,MODE_
BID) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE) ;
全球資金流交易策略風險與實務操作方法
OrderSend ("USDCAD" ,OP_SELL, Lot, Marketlnfo
("USDCAD" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR
NONE);
return (0) ,
因為這種策略時是趨勢策略 ,有市場方向性,因此必須嚴格設定「停
利點」以及「停損點」。所以,以下兩個「自動交易程式」必須附
在這 1 4 組貨幣裡的任何兩組貨幣,來執行「停利」以及「停損」
以下是達到停利點後關倉之程式。
_
375
for (i = OrdersTotal () -1 ;i> = O;i一-)
{
OrderSelect (i, SELECT_BY_pOS) ,
int type = OrderType () ,
boo! result = false,
switch (type)
{
//Close opened long posit10ns
case OP_ BUY :
result=
OrderClose (OrderTicket () ,OrderLots () ,Mar-
ketinfo (OrderSymbol () ,MODE_BID) ,Slippage,Pink) ;
break;
//Close opened short positions
case OP_ SELL :
result=
OrderClose (OrderTicket () ,OrderLots () ,Mar-
ketlnfo (OrderSymbol () ,MODE_ASK) ,Slippage,Pink) ;
break,
return (0) ,
以下是達到停損點後關倉之程式。
..
int start () {
if (AccountProfit () < = Stop_Loss_To_Close Trades)
全球資金流交易策略風險與實務操
}
if ( result = = false ) Sleep ( 3000 ) ,
return ( 0 ) , 作方法
377
。
全球資金流交易策略程式交易
方法
在上節文章裡,我們除了對「全球資金流交易」方法做了 一 個 .
簡單的說明之外,也提供了程式實做方面的介紹。此「全球資金流
交易」在國際外匯論壇上稱此種交易方法為「 Basket Trading 」。不
過因為「馬丁格爾策略」的開倉方式也稱為「 Basket 」,為了不造成
混淆,筆者比較喜歡稱此種方法為「全球資金流交易」。此「全球
資金流交易」方法對很多外匯交易者而言其實還算很陌生,有必要
將此方法的細節部分再做說明,雖然此「全球資金流交易」的開倉
策略操作細節
首先,打開與你「實單交易」同一個「外匯經紀商」的「模擬
單帳戶」 這個「模擬單帳戶」是一個當你要進場做實單交易時的
一 個很重要的參考基準。所以,使用者必須把這個「模擬單帳戶」
當成是 一 個「指標」,我們稱它為「帳戶指標」。當此「帳戶指標」
告訴你應該要進場「開買倉」時,你就到你的「實單帳戶」去開買倉,
而當「帳戶指標」告訴你應該要進場「開賣倉」時,你就到你的「實
單帳戶」去開賣倉。所以非常簡單。至於何時開買單,何時開賣單,
是此「帳戶指標」的重點所在,所以這篇文章會做更詳盡的說明 。
當讀者開啟與「實單交易」是同 一個「外匯經紀商」的「模擬單帳戶」
..
後,我們必須 一 次開倉 14 組貨幣組,其中七組貨幣開賣倉,另外七
組貨幣開買倉。通常我們以 O.lLot (1 Lot 或 0.01 Lot 也都可以)來
當成「帳戶指標」的排序觀察。
各開七組賣/買倉
第一個步驟:一次開倉 14 組貨幣組,其中七組貨幣開賣倉,另
外七組貨幣開買倉。
先開以下七個貨幣組的賣倉:
l23567
GBPUSD
EURGBP
.GBPCHF
....
4
CHFJPY
AUDJPY
EURJPY
全球資金流交易策略程式交易方法
USDCHF
同時又再開以下七個貨幣組的買倉:
89
··
CADJPY
AUDUSD
10. USDJPY
11. EURUSD
12. EURCHF
13. GBPJPY
14. USDCAD
-
379
extern double Lot = 0.1 ,
//+--------- ------------------------+
//I script program start function
II+------------------------------------------------------------------+
int start ()
{
OrderSend ( "GBPUSD" ,OP_ SELL, Lot, Marketlnfo
( "GBPUSD" ,MODE_ASK ), 2, NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "EURGBP" ,OP_ SELL, Lot, Marketlnfo
( "EURGBP" ,MODE_ASK ), 2, NULL, NULL, NULL, 0, 0, CLR_
NONE );
OrderSend ( "GBPCHF" ,OP_ SELL, Lot, Marketlnfo
( "GBPCHF" ,MODE_ASK ) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "CHFJPY" ,OP_SELL, Lot, Marketlnfo ( "CHFJPY" ,MODE_
ASK ) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ( "AUDJPY" ,OP_SELL, Lot, Marketlnfo
( "AUDJPY" ,MODE_ASK ) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "EURJPY" ,OP_ SELL, Lot, Marketlnfo
( "EURJPY" ,MODE_ASK ) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE );
OrderSend ( "USDCHF" ,OP_SELL, Lot, Marketlnfo
( "USDCHF" ,MODE_ASK ), 2, NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "CADJPY" ,OP_BUY, Lot, Marketlnfo ( "CADJPY" ,MODE_
BID ), 2, NULL, NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ( "AUDUSD" ,OP_BUY, Lot, Marketlnfo
( "AUDUSD" ,MODE_BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE );
OrderSend ( "USDJPY" ,OP_BUY, Lot, Marketlnfo ( "USDJPY" ,MODE_
BID ) , 2, NULL,NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ("EURUSD" ,OP_BUY, Lot, Marketlnfo
( "EURUSD" ,MODE_BID ), 2, NULL, NULL, NULL, 0, 0, CLR_
NONE );
OrderSend ( "EURCHF" ,OP_BUY, Lot, Marketlnfo
一
( "EURCHF" ,MODE_BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "GBPJPY" ,OP_BUY, Lot, Marketlnfo ( "GBPJPY" ,MODE_
BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE) ;
OrderSend ("USDCAD" ,OP _BUY, Lot, Marketlnfo
("USDCAD" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
return (0) ,
當以上這 14 組貨幣的七組買倉及七組賣倉都開倉完畢之後,讀
者需要再檢查看看,看看是否有漏掉的貨幣組,如果有漏掉的貨幣
組就必須趕快補齊所缺的貨幣組。主要原因是這 14 組貨幣其實就是
用獨利來排序
建議讓獲利最高的貨幣組排在最上面然後讓虧損最高的貨幣組
全球資金流交易策略程式交易方法
排在最下面。當剛開始以上這 14 組貨幣在開完倉位後, 一 般會先呈
現無規則排列。你可以暫時不去理會它,先讓此「模擬單帳戶」的
貨幣組自行排列且擺著差不多一天的時間,擺放 一 天之後此「模擬
單帳戶」將開始呈現市場的規則性出來。其就如同是混濁的水經過
一 定時間沉澱之後所產生的沉澱現象。如果市場的排序狀態就如同
我們所期待的「獲利最高的七組賣倉貨幣組」排在最上面,而「虧
損最高的七組買倉貨幣組」排在最下面,我們稱這種排序叫做「理
_
381
Sell EURJPY 200
Sell USDCHF 100
Buy CADJPY -100
Buy AUDUSD -200
Buy USDJPY -300
Buy EURUSD -400
Buy EURCHF -500
Buy GBPJPY -600
Buy USDCAD -700 <—錨點
以上這種排列方式,如賣倉全部聚集在前七組(賣倉獲利),
而買倉全部聚集在後七組(買倉虧損),或買倉全部聚集在前七組
(買倉獲利),而賣倉全部聚集在後七組(賣倉虧損),我們都稱
這種排序方式叫做「理想排序」;而上面的第一個位置與最後一個
觀察錨點變化
第三個步驟:要觀察第一個位置與最後一個位置貨幣的跳動,
就是觀察「錨點」的變化。
變成虧損的位置(由上往下數在第八個位置以下),或是「下錨點」
- 由最下面的「虧損錨點」跳到變成獲利的位置(由上往下數在第七
個位置以上),這就是一個進場的訊號。
當「下錨點」由最下面的「虧損錨點」跳到第四個位置(由上
往下數),而「上錨點」以由最上面的「獲利錨點」跳到第八個位
成獲利,那就表示市場將往全部都開買倉的方向走,這時我們在實
單的帳戶裡就要一次將以上這 14 組貨幣全部都開買倉。
除此之外,你也可以判斷因為「上錨點」是開賣倉 (Sell)• 其
由獲利轉成虧損,那同樣是表示市場將往全部都開買倉的方向走(因
為開賣倉將會變成虧損)。以上是假設開賣倉的七組貨幣均是獲利,
而開買倉的七組貨幣均是虧損。但是它也有可能是顛倒,就是開買
倉的七組貨幣均是獲利,而開賣倉的七組貨幣均是虧損,如以下所
示。
全球資金流交易策略程式交易方法
Buy AUDUSD 600
Buy USDJPY 500
Buy EURUSD 400
Buy EURCHF 300
Buy GBPJPY 200
Buy USDCAD 100
Sell GBPUSD -100
Sell EURGBP -200
Sell GBPCHF -300
Sell CHFJPY -400
Sell AUDJPY -500
Sell EURJPY -600
Sell USDCHF -700 <—錨點
_
383
不管買與賣的各七組貨幣是如何排列,基本上可以歸納成幾點
規則:
假設最下面的七組貨幣是開買倉,而當「下錨點」開始一直往
上跑到前七個位置(由上往下數)以上,在實單帳戶就要開 14 組貨
幣的「買倉」。
假設最下面的七組貨幣是開買倉,而這七組貨幣的任何一個貨.
幣跑到「上錨點」,在實單帳戶就要開 14 組貨幣的「買倉」。
假設當最下面的七組貨幣是開賣倉,而當「下錨點」開始一直
往上跑到前七個位置(由上往下數)以上,在實單帳戶就要開 14 組
貨幣的「賣倉」。
假設最下面的七組貨幣是開賣倉,而這七組貨幣的任何一個貨
幣跑到「上錨點」,在實單帳戶就要開 14 組貨幣的「賣倉」。
以上 三步驟是最基本判斷開買倉或開賣倉之交易方法。不過還
是有一些細節要注意,例如「帳戶指標」需要每個星期都重設一遍,
建議是星期日晚上睡覺前重開模擬帳戶的「帳戶指標」。除此之外
關於「帳戶指標」的觀察時間,建議是在每天不同時區的外匯開盤
時間點前後來觀察此「帳戶指標」即可,不必時時刻刻緊盯電腦螢
幕。尤其是當美國重要經濟數據公告後,波動是最明顯,常常會有
明確的方向可以執行買倉或賣倉。進場的時機點在上面的說明已經
清楚描述,接下來談出場點。
..
出場點
這種交易方法的出場點是比較簡單的 就是設停利、停損以
及市場「方向頂點」訊號。停利是以 1000 點的獲利為目標(所以每
個貨幣組的獲利目標是 1000/14
= 71 pips)• 停損是以 700 點為底
線(所以每個貨幣組的虧損底線是 700/14 = 50 pips) 。同時,市場
「方向頂點」訊號 一 出現也是關倉的出場點。
市場「方向頂點」訊號就是當「帳戶指標」全部的七個賣倉貨
幣組及買倉貨幣組位置全部對調完成,也就是說原本在最下面的七
組貨幣全部跑到最上面,這就是市場「方向頂點」的訊號出現。此
時不管實單帳戶是賺或賠,都要出場,以免市場方向反轉變成停損
出場。
或「 14 組賣倉」的動作,這是在「實單帳戶」下執行,如下所示:
全球資金流交易策略程式交易方法
extern double Lot = 0.1 ;II 每次每組貨幣開 0.1 Lot
+------------------------------------------------------------------+
//1 script program start function!
!/+-----一一------ ---------- --- ----- -----------+
int start ()
{
//14 Buy
OrdcrSend ("GBPUSD" ,OP_ BUY, Lot, Marketlnfo
("GBPUSD" ,MODE ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("EURGBP" ,OP_BUY, Lot, Marketlnfo
("EURGBP" ,MODE_ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("GBPCHF" ,OP _BUY, Lot, Marketlnfo
("GBPCHF" ,MODE-ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_
ONE);
OrderSend ("CHFJPY" ,OP _BUY, Lot, Marketlnfo ("CHFJPY" ,MODE_
ASK) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE) ;
OrderScnd ("AUDJPY" ,OP _BUY, Lot, Marketlnfo ("AUDJPY" ,MODE_
ASK) , 2, NULL. NULL, NULL, 0, 0, CLR_NONE) ;
_
385
OrderSend ( "EURJPY" ,OP_BUY, Lot, Marketlnfo ( "EURJPY" ,MODE_
ASK ), 2, NULL, NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ( "USDCHF" ,OP_BUY, Lot, Marketlnfo
( "USDCHF" ,MODE_ASK ), 2, NULL, NULL, NULL, 0, 0, CLR_
NONE );
OrderSend ( "CADJPY" ,OP_BUY, Lot, Marketlnfo ( "CADJPY" ,MODE_
BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ( "AUDUSD" ,OP_ BUY, Lot, Marketlnfo
( "AUDUSD" ,MODE_BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "USDJPY" ,OP_BUY, Lot, Marketlnfo ( "USDJPY" ,MODE_
BID ), 2, NULL, NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ( "EURUSD" ,OP_BUY, Lot, Marketlnfo
( "EURUSD" ,MODE_BID ), 2, NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "EURCHF" ,OP_ BUY, Lot, Marketlnfo
( "EURCHF" ,MODE_BID ) , 2 , NULL, NULL, NULL, 0, 0, CLR_
NONE ) ;
OrderSend ( "GBPJPY" ,OP_BUY, Lot, Marketlnfo ( "GBPJPY" ,MODE_
BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE ) ;
OrderSend ( "USDCAD" ,OP_BUY, Lot, Marketlnfo
( "USDCAD" ,MODE_BID ) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE );
return ( 0 ) ,
// 14 Sell
全球資金流交易策略程式交易方法
OrderSend ("AUDUSD" ,OP_SELL, Lot, Marketlnfo
("AUDUSD" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("USDJPY" ,OP_SELL, Lot, Marketlnfo
("USDJPY" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("EURUSD" ,OP_SELL, Lot, Marketlnfo
("EURUSD" ,MODE_BID), 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("EURCHF" ,OP_SELL, Lot, Marketlnfo
("EURCHF" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
OrderSend ("GBPJPY" ,OP_SELL, Lot, Marketlnfo ("GBPJPY" ,MODE_
BID) , 2, NULL, NULL, NULL, 0, 0, CLR_NONE) ;
OrderSend ("USDCAD" ,OP_SELL, Lot, Marketlnfo
("USDCAD" ,MODE_BID) , 2, NULL, NULL, NULL, 0, 0, CLR_
NONE);
return (0) ,
_
387
擺盪現象產生的現金流
筆者相信有許多聰明的讀者讀到這裡應該也歸納出這 14 組貨
幣的七組買與七組賣其實就是在做「對沖」。以這各七組貨幣開買
倉及賣倉,因為是「對沖」,所以事實上是變成完全沒有買也沒有
不是就可以直接將其看成「一種貨幣」在流動? 因此筆者把這種
貨幣稱為「全球資金流」。
當這種「全球資金流」在產生擺盪的時候,例如,我在某個 AB
時間點進場,在這 14 組貨幣轉換成 BA 的時間點之前,其實已經賺
-
`
論
±E
良藥苦口,忠言逆耳 。
非分之收獲,陷溺之根源 。
—《 菜根譚》
..... ~~-
` `
-`
.
. ..~-~」
...
遠離詐騙
前一陣子曾與經紀商聊起目前外匯市場的現況,令筆者咸到驚
訝的市場情況是 台灣的「外匯市場」早已被包裝完美的「吸金公
司」給攻占,筆者還因為不知道某家在台灣大力吸金且知名的「吸
吸金公司多到令人吃驚。但是「外匯市場」真的這麼容易嗎?我稍
微搜尋 一 下,竟然還有人鼓吹說,「拿錢自己在外匯操作賺不了錢,
交給這類公司穩定拿利息就可以舒服過日子」。這個邏輯真的是漏
洞百出,胡說八道。投資者自己非常清楚外匯市場的波動性、不可
預測性、高槓桿性、以及市場藏污納垢的桌面下規則,但卻「自我
麻醉」的相信,某家吸金公司的績效是絕對真實又不會騙人的?但
是可以令投資者相信的基礎在哪裡?只因為他們在網站說「兩個月
惡性循環?
市場不存在一種叫做「不變的績效」
四個月、一年或一年半內都是這種績效。更何況「兩個月績效可以
達 88% 」是「高度風險性」的「押注性投資」,第三個月連本金都
賠光也是有可能。例如有時候國際外匯市場都沒有波動,難道該家
公司是砷,可以「無中生有」一般的生出績效出來?市場沒有波動,
不要說是「套利程式」無法獲利,連「賭大賭小」的「賭徒式押注」
-
者呢?最令人擔心的是台灣人把詐騙當成神來拜。
接下來的漏洞,有多少投資者真的要求看該吸金公司的「實單
績效」?或者說,真的實際看過該公司的「實單績效」。筆者所說
的不是報表,而是該公司能夠提出「實單帳號」以及「唯讀密碼」
供投資者觀察?筆者找不到相關的資訊,但曾經遇過 一 個「真實案
例」。有 一 位讀者拿者某家吸金公司的「報表」得意的秀給我看,
說該公司績效如何好如何好云云。但是一看,報表上的商品報價竟
礎的外匯知識都不具備,就 一 股腦的相信「造假的報表」,還在筆
者面前大力稱讚該公司多厲害,這真的是一件很危險的事。另外,
連國際知名的「外匯績效」網站的公告內容其實也是可以「造假」
的,因為真的有軟體可以提供給使用者自己敲貨幣報價以及自己敲
績效 。 這不是「外匯績效」網站的錯,而是利用第 三 方驗證模式來
騙取信任的騙徒的問題。
舒服過日子的是「吸金」公司,不會是投資者
結論
再者,「……交給這類公司穩定拿利息就可以舒服過日子」這
句話嚴重的漏洞:
2. 帳戶是投資者自己在銀行的委託或信託帳號嗎?
3. 當錢拿不回來,誰擔保?有銀行擔保嗎?
4. 既然該公司的獲利如此之驚人,何不透過合法管道,「正
大光明吸金」,例如申請 一 檔「對沖基金」,合法銷售,
5. 這類公司的合法性如何?
_
391
筆者有花時間去看一下這類吸金公司的網站,許多吸金公司都
是邀情投資者「 18 個月內」不得領回。其實這類「吸金公司」都是
有受過訓練的,知道一般的「吸金理論」是利用「後金補前金」的
模式來提供利息給客戶,而這「 18 個月理論」是發表在一篇金融論
文,利用吸金綁「 18 個月」來讓後面入金的「入金額」發利息給前
面入金的投資者。當越滾越大的時候,只要這個泡泡沒破,就 一 直
吸金下去,直到要破之前 6 個月,公司會以迅雷不及掩耳的速度消
失在地球上。然後,吸金公司的高層人員就拿著大筆吸來的金錢「舒·
服過日子」。其實這就是典型吸金公司的模式,幾乎是千篇一律。
商品或手法或許不同,但核心的詐騙模式都是大同小異的。其
客戶的利息,難道吸金公司不須給業務、行銷、行政、網站、會計
等等的成本?同時他還跟你說可以「保證」。 一 個很簡單的問題,
世界上有哪種投資可以「穩定保證獲利」超過或達成年績效 96%?
如果這世間上根本就不可能存在這種可以「穩定保證獲利」超過或
司是真的,華爾街的超級大金主們會手捧大把大把的美金跪求該公
司讓他加入,或甚至會協助該公司成立基金來合法吸金 。 如果該公
司是真的,有必要設計出「直銷模式」的一代 一 代獎金來拉客戶投
入資金嗎?錢自己賺就好了,何必一代 一 代的發下去?筆者也希望
讀者能夠清楚,如果你本身也是協助「吸金公司」吸金的一個小小
拉客戶的業務員,筆者誠心建議不要再為了賺取吸金公司給的「佣
金」而非常有可能會犧牲掉客戶的「本金」,到頭來恐怕會什麼都
沒有,因為吸金公司早就遠走高飛了,而你也只不過是被利用的 一
- 顆棋子罷了 。
「保證獲利」、「保證入息%」等於「保證詐騙」
自從「鴻源百貨吸金」案之後,幾乎每年都有大大小小的吸金
詐騙案陸續發生 。 受害者年年都有,但是,很奇怪,直到今天,依
把投資跟宗教連在一起,利用投資者的善良來吸金,恐怕是最令人
防不勝防的。再更久約五、六年前,在台中有家「濤京公司」,號
稱「保證月息 2% 」,一樣爆掉,負責人被起訴,受害者當然是血本
無歸。筆者知道目前這個外匯市場上依然存在這種「保證配息」、
「保證獲利」的吸金模式。只要人性的貪念不變,這類的吸金公司
就會 一 直不斷的包裝成大同小異的商品來欺騙投資者 。
結論
不想變成受害者的話,就要謹記……
1. 不要聽信任何「保證獲利」、「保證入息%」的商品 。 除非是
銀行的定存,否則,有哪種投資是可以用「保證」這兩個字?
使用「保證」這兩個字恐怕就已經觸法,奇怪的是,投資者 一
聽到「保證」兩個字,就會捧著大把鈔票要投資。許多「配息
商品」頂多提供給投資者「配息率」這樣的用語,「保證配息
幾%」這種廣告,難道投資者都沒有風險意識去思考其合理性
嗎?
2. 不要相信把錢放在 一 個不是你「個人名義」的帳戶。市場上隨
便一個阿貓阿狗公開個帳戶,然後要大家把錢匯進去,大家願
意嗎?大家願意把錢匯進去只因為看到廣告或業務跟你說,每
個月可收到多少的利息,就只是這樣的說詞就心甘情願把錢交
給陌生人?如果連這麼簡單的邏輯大家都無法分辨,那投資能
賺到錢無論如何筆者都不會相信 。
_
393
3. 親朋好友秀出利息收入然後要拉你進場,他的「利益收入」可
能超出你的想像。吸金的商業模式就是「老鼠會」,它利用人
性的貪念,讓業務去拉客戶,再讓客戶去拉他的客戶, 一 層一
層下去。當然,吸金公司必須要付利益給幫他拉客戶的業務才
行。所以市場上幾乎很多家類似「吸金商業模式」的公司提供
給業務的獎金,幾乎是客戶所能取得利益的雨倍以上,甚至更
多。舉例來說,某家提供給客戶「保證入息 6% 」時,它提供給
為「人性的貪念」可以幫「吸金公司」吸取更多的資金。
4. 18 個月理論的觀察:據研究,「吸金公司」為了要取信於投資者,
通常會「正常配息」一段時間,然後讓更多的投資者帶來更多
或消失的無影無蹤,或來不及落跑爆掉或被抓。這就是所謂的
「吸金 18 個月理論」。
筆者希望所有的投資者都能理性地看待你所要投資的商品。「保
證獲利」這種的廣告言詞已經明顯違法,自己隨便就相信違法的金
融商品,其實很容易受傷。同時,千萬不要把錢投入不是你個人帳
戶的公司或陌生人帳戶裡,因為很可能會一去不返。「吸金公司」
很會設計各類五花八門,形形色色的「高額獲利金融商品」,但是,
有很大的可能性就是,這類的公司在設計商品時,時時刻刻在想如
何能騙取到客戶的本金,然後他又可以在事件爆發之後,能逍遙法
外。
..
免費下載的「自動交易程式」也會有陷阱
另外,在外匯市場裡,下載完全免費的「自動交易程式」,然
後改個名字就開始「自吹自擂」招募客戶,甚至名字改 一 下,再包
裝 一下就來販賣的「銷售團體」非常多。
貨幣」僅會「微幅震盪」的特性,進場做「高賣低買」,當績效不
錯的時候, 一大堆的「經紀商」因為賠得很慘(因為跟客戶對做),
就開始在亞洲盤時間把歐系「交叉貨幣」的點差大幅拉高。然而到
錢。很簡單,經紀商又不是笨蛋,客戶搞什麼鬼,牽涉到「經紀商
結論
自身利益」,很快就會拿出反制的辦法。「 FAPTurbo 軟體」是那 三
個美國年輕人開發的嗎?其中 一 個美國籍印度人還自稱是自己數學
天才。後來發現,原來最早開發出此軟體跟交易概念的是 一 個俄國
人,同時,那是一個免費的軟體,程式碼可以自行修改。
拿別人開發的軟體出來招募客人,雖然比吸金的團體善良,但
軟體」說的好像是自己開發的 一 樣,明明就是別人的東西,包裝 一
下,就說自己是耗費多少時光開發出來、績效多麼驚人、自己是數
學程式天才、外匯將才、投機高人等等謊言,其實很容易被戳破。
一 起開發的人員之 一 ,因為它本身本來就是「免費軟體」,本來就
就沒有任何限制,也應該不會有法律侵權的問題。筆者個人對於網
-
395
路上任何人拿 Blessing 來修改成他自己的交易軟體,本來就持開放
的態度。但如果把本來就是免費提供下載使用的軟體,公開說那是
他花了多少時光自己開發的,就會有嚴重的道德瑕疵,甚至有詐騙
的嫌疑。筆者其實不樂見原本的出發點是為了公益的出發心,放到
網路後,卻被利用變成私人團體來坑殺散戶,撈取自身利益的工具。
穩定求利
筆者 一 直很關心台灣人的投資思維。其實台灣人整體來說,投
機思維並不高。根據數據統計,佔最大比例的台灣投資者其實比較
喜歡穩定的獲利;而對於高度風險的投資商品,就比例來說,所佔
的比例並不會太高。這不是筆者的主觀判定,而是客觀的數據。
佔多數比例的台灣投資客喜歡固定收益
以上這個數據是根據「台灣投信投顧公會」刊登在財經報紙上
的新聞數據。而我們再來看另外 一 家國外的私人基金投顧在台灣做
的投資人投資行為調查報告,相關數據真的很接近。例如該私人機
構針對台灣投資人所做的問卷調查報告指出,台灣投資者約有 58%
.. 報告 一 般的誤差值都是在十/- 3% 以內的數據來連結真實的情況,剛
好跟「台灣投信投顧公會」所公布的「海外基金」投資類別數據很
吻合。就是台灣資金投資海外基金種額裡有將近 55% 的資金是投資
在「固定收益型」基金,也就是所謂的各類型的債卷基金,如一般
債卷、高收益債、新興市場債等等。
低資產族群容易進入投機市場
以上的客觀事實,跟筆者自己的經驗主觀值也是有相當大的吻
合性質。大部分高資產又低調的台灣投資人,對於較高風險波動係
數的商品,並不是那麼喜好,反而喜好高度波動風險的台灣投資族
群,都是比較屬於收入金字塔中低底部的族群。我們從心理角度來
看,似乎也反映出世界上絕大部分窮人的心態。因為大部分低資產
族群的投資者,就是想趕快翻身,用最快的速度讓自己跟家人過好
日子,因此,投機的思維就油然而生。但絕大部分的投資者進入「投
機市場」之後,賠掉資金的比例卻比獲取利益的比例要高出很多。
結論
這個比例通常不是 7/3 比例,更不是 6/4 比例,而是將近 9/1 比例的
現象。也就是說,低資產族群的投資者進入「投機型金融商品市場」
(如 :有槓桿、保證金制度的市場)之後,有將近九成比率的投資
者是賠錢,只有一成比率的投資者是賺錢。
那當然也間接造成貧富差距更加拉大,「貧者更貧,而富者更
疊 富」的現象。這現象不是只在台灣會發生,舉世皆然,光是靠政府
的禍利、稅捐政策其實只能解決非常有限的問題。因為問題還是發
生在窮人自己本身,因為有相當大比例的窮人不會有利用「資產增
值」來改善生活的思維,但卻有相當大比例的窮人想靠一夜致富的
賭博模式來改善生活。
-
397
為什麼? 富者越富、貧者越貧
發生。這個公式就是:
中文的意思就是「資產報酬率」>「經濟成長率」。
簡單的分析就是有錢人拿錢買資產,而窮人拿錢買生活所需,
當時間一拉長,即使國家的經濟有成長,但是生活用品、各類貨品
的通膨也會隨之增加,窮人因為沒有資產的增長,所以,收入只能
用來養家。因此,即使經濟增長了,但通膨卻吃掉所有經濟增長的
利益,例如,調薪的薪資增長卻被經濟增長所帶來的通膨給吃掉。
然而,有錢人卻因為長期投入資產增長的投資,在經濟增長的同時,
其資產也同步增值。在此-消跟一長之間,再加上時間這個可怕的
催化劑,十年、 二 十年、三十年之後,窮人跟有錢人的資產差距就
變得天壤之別。
世界上的政府機構解決貧富差距的方法不出「富人加稅」、「窮
本的方法。「貧富差距」不會因為簡單的稅制或福利政策就可以解
決;光靠「富人加稅」、「窮人減稅」、「擴大福利支出政策」等
等,還是無法解決問題。很有名的舉例就是曾有經濟學家提出,我
.. 們即使把全世界的錢都統 一 收集起來,然後再平均分配給所有的人,
不出幾年光景,世界依然會恢復貧富不均的原狀。
筆者的想法認為,解決之道在於「教育」。要教育窮人有投資
資產的觀念。因為富人之所以成為富人,以及窮人之所以成為窮人,
很大的差距是在思維模式的不同。
把收益變成資產
我們再回頭思維上面的統計數據。台灣投資者有將近 58% 在投
實非常符合我們一直要達成的「套利」的投資思維。那就是:
1. 每月至少 1% 以上的帳戶增長。
結論
其實筆者也是非常希望讓外匯投資的模式可以達到類似「固定
收益型基金」的收益跟風險波動值,但又比「固定收益型基金」的
收入高。然後再讓客戶利用這每個月的「帳戶增長」,每個月定期
不定額去「投資資產」。
唯有這種模式的「系統架構」,或許才能有效解決「貧富不均」
` 的問題。
為客戶賺錢才是金融服務業之道
他做一次專訪,文章內容太長,我就不一一描述,但最令我印象深
刻的是這句話:
「我最喜歡做的事就是,每天早上 5 : 30 起床,然後快樂的為
客戶賺錢。」
399
他的動機是「只要能為客戶賺錢」,他就戚到很快樂。跟我們
從事金融相關的行業應該以「為客戶賺錢為樂」,而不是不顧客戶
風險只以「撈取客戶佣金為樂」。尤其是外匯保證金這個行業,若
能以「為客戶賺錢為樂」作為動機,這才是長久的生意 , 我希望能
與所有從事這個行業的從業人員分享這樣的理念 。
-
附圖資料來源說明
附岡資料來源說明
圖 1-9: 圖表來源 Forex-TSD : http : www.forex-tsd.com/forum.php?act =
showfree
_
401
圖 2-3 : 圖表來源 MetaQuotes MT4
附 圖資 料 來源說 明
圖 6-2: 圖表來源 MetaQuotes MT4 Terminal Window
-
403
圖 7-13: 圖表來源 MetaQuotes MT 4 Chart Window
圖 8-2: 圖表來源「錯誤定價」發生時間點
圖 8-3: 圖表來源「錯誤定價」機會次數
-
/-~-L--,
圭氫
_
405
406
407
408
>>> .罈讚驪璽·
圄
亀
i~卫柱餠戇!鼴
/
\['`」厙U
.....
... --:---:-;:.城至祈改版
•• ••• 丨 図 esf y·G>t.r' profession. Trade your advantage.
• • •••• f泗閼帶關,~嶧庫, ,: :
強幟上線
專屬達人專區、財金主題企劃
多種全新服務將陸續強檔上線
1>0 @
外匯 股票 投資 式
、~ 「
図:cm囯 {"•
J-ia,111
m 商城 I( 丶k 「 .Hr;P
......
... ,. 對'"'"'
...··-·· ··-··
"""'"'...
"""'"'
i~ -罈
寰宇PJ.t 金網回&回
r~ —一 里曰
技術允析 I
至曰
名
名
分網檐 書璧 定價 分纇號 書號 定償
l234567897 414243444546474849505152535455565758596061
波浪理論與動量分析 F003 320 統計套利 F263 480
股票 K 線戰法 FOSS 600 探金實戰 · 波浪理論(系列 1 ) F266 400
市場互動技術分析 F060 500 主控技術分析使用手冊 F271 500
陰線陽線 F061 600 費波納奇法則 F273 400
股票成交當量分析 F070 300 點睛技術分析一心法篇 F283 500
動能指標 F091 450 」線正字圖 · 線圖大革命 F291 450
技術分析&選擇權策略 F097 380 強力陰陽線(完整版) F300 650
史瓦格期貨技術分析(上) F105 580 買進訊號 F305 380
史瓦格期貨技術分析(下) Fl06 400 賣出訊號 F306 380
0l
1l2 3
lllll4 56l2
lll
市場韻律與時效分析 F11 9 480 囹退理論 F310 480
完全技術分析手冊 F137 460 機械化交易新解:技術指標進化論 F3 1 3 480
金融市場技術分析(上) F155 420 技術分析精論(上) F314 450
金融市場技術分析(下) Fl56 420 技術分析精論(下) F315 450
網路當沖交易 F160 300 趨勢交易 F323 420
股價型態總覽(上) Fl62 500 艾略特波浪理論新創見 F332 420
股價型態總覽(下) F163 500 量價關係操作要訣 F333 550
包寧傑帶狀操作法 Fl79 330 精準獲利囹泉戰技(第二版) F334 550
89O
陰腸線詳解 Fl87 280 短線投機養成教育 F337 550
技術分析選股絕活 Fl88 240 XQ洩天機 F342 450
2
主控戰略K線 Fl90 350 當沖交易大全(第二版) F343 400
22
主控戰略開盤法 F194 380 擊敗控盤者 F348 420
狙擊手操作法 F199 380 圖解 B-Band指標 F351 480
23
反向操作致富 F204 260 多空操作秘笈 F353 460
22
4
掌握台股大趨勢 F206 300 主控戰略型態學 F361 480
56
` 主控戰略移動平均線 F207 350 買在起漲點 F362 450
2
主控戰略成交量 F213 450 賣在起跌點 F363 450
7
22
盤勢判讀技巧 F215 450 酒田戰法—圖解80招台股實證 F366 380
89O
巨波投資法 F216 480 跨市交易思維-l\miJ!Jfil/J5HMirifill F367 550
2333
20招成功交易策略 F218 360 襁不停的力量—黃綠紅海撈操作法 F368 480
主控戰略即時盤態 F221 420 股市放空獲利術—歐尼爾教賺全圖解 F369 380
l34567
技術分析 · 靈活一點 F224 280 賣出的藝術—賣出時機與放空技巧 F373 600
2
多空對沖交易策略 F225 450 新操作生涯不是夢 F375 600
3333
線形玄機 F227 360 新操作生涯不是夢-皋習指向 F376 280
墨菲論市場互動分析 F229 460 亞當理論 F377 250
主控戰略波浪理論 F233 360 趨向指標操作要訣 F379 360
股價趨勢技銜分析一一典藏版(上) F243 600 甘氏理論(第二版)型態-價格-時間 F383 500
333
股價趨勢技術分析一典藏版(下) F244 600 雙動能投資—高報酬低風險策略 F387 360
89O
量價進化論 F254 350
技術分析首部曲 F257 420
4
股票短線ox戰術(第 3 版) F261 480
I 智慧投資 I
垂直
里曰
名
分纇號 書聾 定償 ; 分頲璧 書號 躒
股市大亨
'
l2345678910H12131415161718192021222324252627282930
F013 280' 31 華爾街怪傑巴魯克傳 F292 500
新股市大亨 F014 280 32 交易者的 101 堂心理訓練課 F294 500
新金融怪傑(上) F022 280 33 兩岸股市大探索(上) F301 450
新金融怪傑(下) F023 280 34 兩岸股市大探索(下) F302 350
金融煉金術 F032 600 35 專業投機原理 I F303 480
智慧型股票投資人 F046 500 36 專業投機原理 11 F304 400
瘋狂、恐慌與崩盤 F056 450 37 探金實戰 · 李佛摩手稿解密(系列 3) F308 480
股票作手回憶錄(經典版) F062 380 38 證券分析第六增訂版(上冊) F316 700
超級強勢股 F076 420'' 39 證券分析第六增訂版(下冊) F317 700
非常潛力股 F099 360 40 探金實戰 · 李佛摩資金情緒管理(系列4) F3J9. 350
約翰 · 奈夫談設資 Fl44 400 41 探金實戰 · 李佛摩 18堂課 ( 系列5) F325 250
與操盤嬴家共舞 Fl74 300 42 交易贏家的21 週全紀錄 F330 460
掌握股票群眾心理 Fl84 350 43 量子盤感 F339 480
掌握巴菲特選股絕技 F189 390 44 探金實戰·作手談股市內幕 ( 系列6 ) F345 380
高勝算操盤(上) Fl96 320 45 柏格頭投資指南 F346 500
高勝算操盤(下) F197 270 46 股票作手回憶錄-註解版(上冊) F349 600
透視避險基金 F209 440 47 股票作手回憶錄 -註解版(下冊) F350 600
倪德厚夫的投機術(上) F239 300 48 探金實戰·作手從錯中學習 F354 380
倪德厚夫的投機術(下) F240 300 49 趨勢誡律 F355 420
圖風勢一股票交易心法 F242 300 50 投資悍客 F356 400
從躺椅上操作:交易心理學 F247 550 51 王力群談股市心理學 F358 420
華爾街傳奇·我的生存之道 F248 280 52 新世紀金融怪傑(上冊) F359 450
金融投資理論史 F252 600 53 新世紀金融怪傑(下冊) F360 450
華爾街一九 o- F264 300 54 金融怪傑(全新修訂版)(上冊) F371 350
費雪 · 布萊克回憶錄 F265 480 55 金融怪傑(全新修訂版)(下冊) F372 350
歐尼爾投資的24堂課 F268 300 56 股票作手回憶錄(完整版) F374 650
探金實戰 · 李佛摩投機技巧(系列2) F274 320 57 超越大盤的獲利公式 F380 300
金融風暴求勝術 F278 400
交易 · 創造自己的聖盃(第二版) F282 600
索羅斯傳奇 F290 450
1 共同基金 I
IIII1IIIIIII
聿囯
聿n
名
分頹號 書號 定價 分纇號 書展 定價
l2 420300350
456
柏格談共同基金 Fl78 理財贏家 16 問 F318 280
基金趨勢戰略 F272 共同基金必勝法則-十年典藏版(上) F326 420
3
定期定值投資策略 共同基金必勝法則-十年典藏版(下)
I
F279 I F327 380
1 投貪策略
里曰
里n
名
名
分網鹽 謩壟 定價 分纇展 書號 定償
l23456789
經濟指標圖解 F025 300 25 智慧型資產配置 F250 350
史瓦格期貨基本分析(上) F103 480 26 SRI 社會責任投資 F251 450
史瓦格期貨基本分析(下) F104 480 27 混沌操作法新解 F270 400
操作心經 全球匯尖交易員提供的操作建議 F139 360 28 在家投資致富術 F289 420
攻守四大戰技 Fl40 360 29 看經濟大環境決定投資 F293 380
股票期貨操盤技巧指南 F167 250 30 高勝算交易策略 F296 450
金融特殊投資策略 Fl77 500 31 散戶升級的必修課 F297 400
回歸基本面 F180 450 32 他們如何超越歐尼爾 F329 500
華爾街財神 F181 370 33 交易,趨勢雲 F335 380
lOl2345
llllllll122
股票成交量操作戰術 F182 420 34 沒人教你的基本面投資術 F338 420
股票長短線致富術 Fl83 350 35 隨波逐流~台灣 so平衡比例投資法 F341 380
交易,簡單最好! Fl92 320 36 李佛摩操盤術詳解 F344 400
股價走勢圖精論 Fl98 250 37 用賭場思維交易就對了 F347 460
價值投資五大關鍵 F200 360 38 企業評價與選股秘訣 F352 520
計量技術操盤策略(上) F201 300 39 超級績效一金鼉怪傑交易之道 F370 450
6789O
計量技術操盤策略(下) F202 270 40 你世可以成為股市天才 F378 350
震盪盤操作策略 F205 490 41 順勢操作-多元化管理的期貨交易策略 F382 550
透視避險基金 F209 440 42 陷阱分析法 F384 480
看準市場脈動投機術 F2ll 420 43 全画交易一掌握當沖與波段獲利 F386 650
巨波投資法 F216 480
l234
股海奇兵 F219 350
2
混沌操作法 II F220 450
22
傑西.李佛摩股市操盤術(完整版) F235 380
股市獲利倍增術(增訂版) F236 430
| —桿式交易 I
韋曰
聿戸
名
分纇號 畫號 定償 分翡號 書號 定價
l2345678 9Ol2345
高勝算操盤(上) Fl96 320 交易策略評估與最佳化(第二版) F299 500
Illlll
全民貨幣戰爭首部曲
高勝算操盤(下) Fl97 270 F307 450
狙擊手操作法 Fl99 380 HSP計量操盤策略 F309 400
計昷技術操盤策略(上) F201 300 Multi Charts快易通 F312 280
計昷技術操盤策略(下) F202 270 計量交易 F322 380
(交易大師)操盤密碼 F208 380 策略大師談程式密碼 F336 450
TS 程式交易全攻略 F275 430 分析師閼鍵報告2張林忠教你程式交易 F364 580
PowerLanguage 程式交易語法大全 F298 480
1 期賃 I
聿戸
聿戸
名
分纇號 書號 定匱 分纇礱 書號 賾
l234 5678
高績效期貨操作 Fl41 580 雷達導航期股技術(期貨篇) F267 420
征服日經225 期貨及選擇權 F230 450 期指格鬥法 F295 350
期貨賽局(上) F231 460 分析師關鍵報告(期貨交易篇) F328 450
期貨賽局(下) F232 520 期貨交易策略 F381 360
1 選擇櫺 丨
聿曰
定
價
里囯
名
名
分暴礱 書號
,' 分纇鹽 書聾 定匱
_ 3434
,','I,
8080305000
l2345 6789
技術分析&選擇權策略 F097 選擇權交易總覽(第二版) F320 480
交易,選擇權 F210 ',',',' 選擇權安心賺 F340 420
選擇權策略王 F217 選擇權 36計 F357 360
征服日經225 期貨及選擇權 F230 ,',' 技術指標帶你進入選擇權交易 F385 500
活用數學 · 交易選擇權 F246
I 債券賃幣 I
里戶
垂n
分纇號 書號 定償 分頲號 書號 定償
12 34
賺遍全球:貨幣投資全攻略 F260 300 外匯套利 CD F311 450
外匯交易精論 F281 300 外匯套利 II F388 580
I 財葬教育 I
分網堊 名 昌匱 定員 分纇璧 書 名 書褫 定償
l
2
點時成金
蘇黎士投機定律
` F237
F280
260
250
6
7
就是要好運
黒風暗潮
F288
F324
350
450
3 投資心理學(漫畫版) F284 200 8 財報編製與財報分析 F331 320
4 歐尼爾成長型股票投資課(漫盃版) F285 200 9 交易駭客任務 F365 600
5 貨族騙子華爾街 F287 250
財筠工程
I
• l
書
名
名
分纇號 號 定匱 : 分纇號 書號 定償
1. 外匯套利
563.23 105005899
-
外匯套利 11: 套利實戰策暱與風險掌控
作
主
者楊宗桓
編戴惠莉
美術設計 富春全球股份有限公司
封面設計 鼎豐整合行銷
印 刷普贤王印刷有限公司
發行人江聰亮
出版者 寰宇出版股份有限公司
臺北市 106 大安區仁愛路四段 109 號 13 樓
TEL: (02) 2721-8138 FAX: (02) 2711-3270
E-mail : service@ipci.com.tw
http : //www.ipci.com.tw
登記證測撥帳號 1146743-9
出版日期 局版台省字第 3917 號
印 刷 2016 年 4 月初版一刷
定 價新台幣 580 元
0冊
8
。
5
·-I8
- ·
刃
89 66 9
. ` ••