多個(gè)國(guó)外成熟交易策略分享交流[開拓者公式]
- 咨詢內(nèi)容:
大家好,剛剛來(lái)到TB社區(qū),我今年20歲,目前在美國(guó)讀書準(zhǔn)備學(xué)習(xí)金融工程專業(yè)。我的父母是國(guó)內(nèi)私募基金的操盤手,從大概八歲起就逐步接觸股票期貨和各種金融產(chǎn)品的交易。從最開始的巴菲特式的buy and hold策略,到后來(lái)研究長(zhǎng)期資本管理公司的無(wú)風(fēng)險(xiǎn)套利策略,再到巴菲特,羅杰斯式的宏觀對(duì)沖策略,以及國(guó)內(nèi)外著名炒單手的日內(nèi)超短線策略。其間我還研究了德州撲克的打法并獲得了pokerstrategy的鉆石會(huì)員。我研究自動(dòng)化交易很多年了,以前主要在MT4平臺(tái)上設(shè)計(jì)和制作用于外匯市場(chǎng)自動(dòng)化交易程序,這是我的實(shí)盤賬戶在線網(wǎng)址:carpower007.mt4live.com過去六個(gè)月盈利超過300%資金回撤小于10%.最近受一個(gè)私募朋友的委托開發(fā)適應(yīng)國(guó)內(nèi)期貨市場(chǎng)的自動(dòng)化交易程序.在這里我將分享我設(shè)計(jì)自動(dòng)化程序的每一個(gè)步驟,包括測(cè)試報(bào)告和代碼,由于我在TB方面還是新手希望各位前輩能夠多多指點(diǎn).大家如果常去國(guó)外的交易系統(tǒng)論壇的就會(huì)發(fā)現(xiàn)那里的老外非常有分享精神,一來(lái)有很多人把自己已經(jīng)非常成熟的交易系統(tǒng)的源代碼分享出來(lái),二來(lái)只要有人提出想法就會(huì)有很多智同道和的人幫助他完成交易系統(tǒng)編程工作,通過這樣的分享他們的平均水平越來(lái)越高.而國(guó)內(nèi)的交易系統(tǒng)設(shè)計(jì)者們卻總是閉門造車,很少互相分享互相幫助.我希望通過我的分享在我們的社區(qū)里掀起分享互助的熱潮,有更多的高手分享出交易策略有更多的程序員愿意幫助論壇里的朋友編寫指標(biāo)和交易策略使我們的整體交易水平越來(lái)越高.
在接下來(lái)的幾篇帖子里我將和大家分享我收集破解的800多個(gè)國(guó)外自動(dòng)化交易程序中最優(yōu)秀的幾個(gè)的原理,并和大家一起探討如何把他們移植到國(guó)內(nèi)的交易市場(chǎng)里.這些系統(tǒng)包括:
1.基于交易時(shí)段選擇和高低點(diǎn)突破的Hans123突破系統(tǒng)
2.適應(yīng)震蕩市場(chǎng)的EA scalper pro剝頭皮系統(tǒng)(我外匯實(shí)盤用的系統(tǒng))
3.適應(yīng)震蕩市場(chǎng)的ea boss剝頭皮交易系統(tǒng)(匯友曾經(jīng)有過2周22倍資金回撤0.89%的實(shí)盤交易記錄)
4.基于新聞公布和基本面瞬時(shí)變化的自動(dòng)化交易程序Luckey news5基于隨機(jī)漫步原理和金字塔加碼的穩(wěn)健盈利ea point Break 5和其升級(jí)版DTS6用于eurgbp eurusd gbpusd的三角套利程序。其中ea boss和ea scalper pro都有一套完整的震蕩市場(chǎng)過濾系統(tǒng)如果移植到國(guó)內(nèi)相信對(duì)大家的交易應(yīng)該很有幫助.由于外匯市場(chǎng)的交易手續(xù)費(fèi)大都在百分之二以上.從賭博數(shù)學(xué)和金融數(shù)學(xué)的概率期望角度來(lái)分析,所有在外匯市場(chǎng)上有效的系統(tǒng),在國(guó)內(nèi)千分之三的手續(xù)費(fèi)條件都應(yīng)該是有效的而且利潤(rùn)應(yīng)該是國(guó)外系統(tǒng)的數(shù)倍.
首先我來(lái)介紹第一個(gè)系統(tǒng)Hans123突破交易系統(tǒng).
大家知道外匯市場(chǎng)主要分為三個(gè)交易時(shí)段,亞洲盤.歐洲盤和美洲盤.還有一個(gè)是只有電子盤交易的時(shí)段.其中電子盤和亞洲盤由于參與者較少,和亞洲金融機(jī)構(gòu)實(shí)力較小的緣故,行情主要以上下震蕩為主,這段時(shí)間是趨勢(shì)交易者的地獄,但是是逆勢(shì)剝頭皮交易的天堂,很多準(zhǔn)確率超過99%且風(fēng)險(xiǎn)很小的暴利策略都是針對(duì)這個(gè)交易時(shí)段的設(shè)計(jì)的(比如ea scalper pro和ea boss)這里我們后面再詳細(xì)討論.歐洲盤和美洲盤是參與者最多的時(shí)段,是最適合進(jìn)行突破交易的時(shí)段,hans123就是一個(gè)非常典型且非常有效的自動(dòng)化交易策略,它的基本原理是開盤一定時(shí)間內(nèi)突破前一個(gè)市場(chǎng)的最高價(jià)或最低價(jià)順勢(shì)做多或做空,經(jīng)過對(duì)止損止盈等參數(shù)的優(yōu)化這套系統(tǒng)可以應(yīng)用到幾乎所有的外匯品種中并且盈利穩(wěn)定,下面是具體的交易策略.
-
--交易規(guī)則—
初始策略
1)找出亞洲盤的最低最高點(diǎn),在歐洲開市時(shí).
2)掛單最高價(jià)+5點(diǎn)買進(jìn),最低價(jià)-5點(diǎn)賣出。
3)美洲盤開市前平掉所有倉(cāng)位.
1)找出歐洲盤最高最低價(jià)在美洲盤開市時(shí).
2)掛單最高價(jià)+5點(diǎn)買進(jìn),最低價(jià)-5點(diǎn)賣出。
3)美洲盤收市前平掉所有倉(cāng)位
EUR/USD:
Buy Stop = 最高價(jià) + 5;
止盈 = Buy Stop + 80;
止損 = Buy Stop - 50;
Sell Stop = 最低價(jià) - 5;
止盈 = Sell Stop - 80;
止損 = Sell Stop + 50;
有30點(diǎn)浮動(dòng)利潤(rùn)時(shí)將止損移至開倉(cāng)價(jià)位。(30點(diǎn)追蹤止損)
GBP/USD:
Buy Stop = 最高價(jià) + 5;
止盈 = Buy Stop + 120;
止損 = Buy Stop - 70;
Sell Stop = 最低價(jià) - 5;
止盈 = Sell Stop - 120;
止損 = Sell Stop + 70;有40點(diǎn)浮動(dòng)利潤(rùn)時(shí)將止損移至開倉(cāng)價(jià)位。(40點(diǎn)追蹤止損)
每日早7點(diǎn),平掉手上所有單子。
實(shí)盤使用的時(shí)候建議大家根據(jù)品種波動(dòng)率來(lái)優(yōu)化止盈止損等參數(shù)以達(dá)到最好的效果,這個(gè)mt4里可以用遺傳基因算法優(yōu)化來(lái)搞定很快,TB上目前用的還是窮舉法,期待老大給咱們開發(fā)一下呵呵.
以下是原貼地址里面包括交易系統(tǒng)的模板和自動(dòng)化交易程序國(guó)內(nèi)好像給屏蔽了可能得翻墻
http://www.forex-tsd.com/expert- ... 785-hans123-ea.html
我各人優(yōu)化以后這個(gè)系統(tǒng)的年均盈利在100%左右,資金回撤20%,使用的是分筆成交數(shù)據(jù).后面我傳了一份國(guó)際黃金期貨的測(cè)試報(bào)告這個(gè)大家相對(duì)外匯還要熟悉一些,大家參考一下。
下面來(lái)談?wù)勅绾伟堰@個(gè)系統(tǒng)移植到國(guó)內(nèi)的期貨市場(chǎng)中來(lái).
我目前的基本想法是這樣的,hans123可以有以下幾種移植方法
1突破昨日最高最低點(diǎn)5點(diǎn)順勢(shì)開倉(cāng).收盤前關(guān)倉(cāng).設(shè)置止盈止損追蹤止損,止盈止損都設(shè)置成參數(shù),以便根據(jù)品種波動(dòng)率優(yōu)化.這里最好加一個(gè)限制開倉(cāng)時(shí)間的參數(shù)便于優(yōu)化交易時(shí)段,因?yàn)楦鶕?jù)我的經(jīng)驗(yàn)一般來(lái)講每個(gè)品種的有效突破都集中在一個(gè)特定的時(shí)段,并以此時(shí)段為中心進(jìn)行正態(tài)分布排列。所以優(yōu)化交易時(shí)段對(duì)這個(gè)策略來(lái)講非常重要。這個(gè)在后面我共享的一個(gè)外匯市場(chǎng)的統(tǒng)計(jì)表里有說(shuō)明,大家可以參考(進(jìn)一步優(yōu)化的filter:交易時(shí)段優(yōu)化,ATR,Keltner Channel,KDJ等)
2突破前一個(gè)交易時(shí)段的最高最低點(diǎn)5點(diǎn)順勢(shì)開倉(cāng),本交易時(shí)段結(jié)束前平掉所有倉(cāng)位。設(shè)置止盈止損追蹤止損,止盈止損追蹤止損都設(shè)置成參數(shù)以便根據(jù)品種波動(dòng)率優(yōu)化。加一個(gè)限制開倉(cāng)時(shí)間的參數(shù)便于優(yōu)化交易時(shí)段。(進(jìn)一步優(yōu)化的filter:交易時(shí)段優(yōu)化,ATR,Keltner Channel,KDJ等)
我在論壇里逛了下發(fā)現(xiàn)了幾個(gè)和我想法相似的朋友下面是他們已經(jīng)完成的代碼的整理,有些功能還沒有實(shí)現(xiàn)各位前輩老大可否傾囊相授,告訴我如何實(shí)現(xiàn)這些功能,多謝了:)這個(gè)突破系統(tǒng)不要nextbar發(fā)送功能只要根據(jù)所有的即時(shí)價(jià)位來(lái)發(fā)出交易信號(hào)。另外希望能精確到分鐘
-
- 1簡(jiǎn)單的昨日高低點(diǎn)突破系統(tǒng):
這個(gè)系統(tǒng)我希望高手可以幫助我把那些加倉(cāng)反手的功能都去掉,或者設(shè)置成可以開關(guān)的功能然后加入止盈止損和追蹤止損并加入交易時(shí)間限制,使得我可以針對(duì)品種波動(dòng)率優(yōu)化參數(shù)。
日內(nèi)高低點(diǎn)突破交易系統(tǒng)
//------------------------------------------------------------------------
// 簡(jiǎn)稱: todayHLCross
// 名稱:
// 類別: 交易指令
// 類型: 其他
// 輸出:
//------------------------------------------------------------------------
/*
日內(nèi)開盤區(qū)高低點(diǎn)機(jī)械突破系統(tǒng)
*/
Params
Numeric maxLots(1);//單次開倉(cāng)手?jǐn)?shù)
Numeric maxTrad(4);//最大交易次數(shù)
Numeric minSpt(15);//最小開倉(cāng)間隔bar數(shù)
Numeric splitRate(3); //交易滑點(diǎn)和傭金
Numeric tradBegin(930); //開倉(cāng)時(shí)間
Numeric tradEnd(1430); //開倉(cāng)截止時(shí)間
Numeric closeTime(1457); //bar的時(shí)間超過此值后平倉(cāng),一分鐘交易=1457
Vars
Numeric splitDot; //交易滑點(diǎn)
Bool bc(False);//開多條件
Bool sc(False);//開空條件
Numeric tradePrice(0);
NumericSeries hh;
NumericSeries ll;
Begin
splitDot=splitRate*MinMove();
If(BarStatus==0)
{
hh=High;
ll=Low;
Return;
}
if(Day !=Day[1])
{
hh=High;
ll=Low; }
Else
If(Time<0.0001*tradBegin)
{
if(High>hh[1]) hh=High; Else hh=hh[1];
if(Low<ll[1]) ll=Low; Else ll=ll[1];
}
Else
if(Time>=0.0001*tradBegin And Time<=0.1500)
{
hh=hh[1];
ll=ll[1];
//穿越模式
bc=CrossOver(Open,hh) Or CrossOver(High,hh) Or CrossOver(Low,hh) Or CrossOver(Close,hh) ;
sc=CrossUnder(Open,ll) Or CrossUnder(High,ll) Or CrossUnder(Low,ll) Or CrossUnder(Close,ll);
if(MarketPosition == 0)
{
// 當(dāng)前無(wú)倉(cāng),開始建立多頭
if(bc)
{
if(BarStatus==2) tradePrice= Q_AskPrice +splitDot; Else tradePrice=hh+splitDot;
Buy(maxLots,tradePrice);
}
Else
// 當(dāng)前無(wú)倉(cāng),開始建立空頭
If(sc )
{
if(BarStatus==2)tradePrice= Q_BidPrice -splitDot; Else tradePrice=ll-splitDot;
SellShort(maxLots,tradePrice);
}
}
//-----------------------------------------------------------------------------
Else
{
if(MarketPosition > 0 )
{
// 當(dāng)前多倉(cāng),加倉(cāng)多頭
if(bc And BarsSinceLastEntry>minSpt)
{
if(BarStatus==2) tradePrice= Q_AskPrice +splitDot; Else tradePrice=hh+splitDot;
Buy(maxLots,tradePrice);
}
// 當(dāng)前多頭,要求反轉(zhuǎn)為空頭
if(sc)
{
if(BarStatus==2)tradePrice= Q_BidPrice -splitDot; Else tradePrice=ll-splitDot;
// 平多頭開空
SellShort(maxLots,tradePrice);
}
//持倉(cāng)處理,止損止盈平倉(cāng)
//........
}
//-----------------------------------------------------------------------------------------------
Else
if(MarketPosition < 0 )
{
// 當(dāng)前空倉(cāng),加空頭
If(sc And BarsSinceLastEntry>minSpt)
{
if(BarStatus==2)tradePrice= Q_BidPrice -splitDot; Else tradePrice=ll-splitDot;
SellShort(maxLots,tradePrice);
}
// 當(dāng)前空頭,要求反轉(zhuǎn)為多頭
if(bc)
{
if(BarStatus==2) tradePrice= Q_AskPrice +splitDot; Else tradePrice=hh+splitDot;
//平空頭,開多
Buy(maxLots,tradePrice);
}
//持倉(cāng)處理,止損止盈平倉(cāng)
//........
}
}
}
End
//------------------------------------------------------------------------
// 編譯版本 GS2004.06.12
// 用戶版本 2008/11/18 18:49
// 版權(quán)所有 fish0451
// 更改聲明 TradeBlazer Software保留對(duì)TradeBlazer平臺(tái)
// 每一版本的TrabeBlazer公式修改和重寫的權(quán)利
//------------------------------------------------------------------------ - 網(wǎng)友回復(fù):
2定義時(shí)間段內(nèi)高低點(diǎn)的函數(shù):
vars
NumericSeries TmpHiLine;
Begin
If(Date!=Date[1])
{
TmpHiLine = InvalidNumeric;
}else
{
TmpHiLine = TmpHiLine[1];
}
If(Time >= 0.1100 && Time <= 0.1120)
{
If(TmpHiLine == InvalidNumeric )
TmpHiLine = High;
else
TmpHiLine = max(High,TmpHiLine );
}
PlotNumeric("MyHighLine",TmpHiLine );
End
- 一個(gè)30分鐘突破的日內(nèi)系統(tǒng)
這個(gè)系統(tǒng)我認(rèn)為缺乏一個(gè)有效的過濾器會(huì)造成很多無(wú)效突破,在過濾器中最簡(jiǎn)單有效的是交易時(shí)段過濾器正如我前面提到的有效突破總是集中在一天中的某一時(shí)段呈正態(tài)分布向兩邊展開。通過時(shí)間過濾器可以大大提高系統(tǒng)的成功率和穩(wěn)定性。希望高手添加一下。
Params
Numeric nMins(30); // N分鐘的突破
Numeric nOffset(3); // 突破式的價(jià)格偏移
Vars
NumericSeries HighestOf30Min;
NumericSeries lowestOf30Min;
Numeric myPrice;
Numeric MinPoint;
Numeric lots(1);
Begin
MinPoint = MinMove*PriceScale;
If(Date <> Date[1])
{
HighestOf30Min = High;
lowestOf30Min = Low;
}Else If(Time < 0.0900+nMins*0.0001)
{
HighestOf30Min = max(high,HighestOf30Min[1]);
lowestOf30Min = min(Low,lowestOf30Min[1]);
}Else
{
HighestOf30Min = HighestOf30Min[1];
lowestOf30Min = lowestOf30Min[1];
}
If(High >= HighestOf30Min + nOffset*MinPoint && MarketPosition != 1)
{
myPrice = HighestOf30Min + nOffset*MinPoint;
If(Open > myPrice) myPrice = Open;
Buy(lots,myPrice);
}
If(Low <= lowestOf30Min - nOffset*MinPoint && MarketPosition != -1)
{
myPrice = lowestOf30Min - nOffset*MinPoint;
If(Open < myPrice) myPrice = Open;
SellShort(lots,myPrice);
}
If(Time >= 0.1459)
{
Sell(lots,Open);
BuyToCover(lots,Open);
}
End
有思路,想編寫各種指標(biāo)公式,程序化交易模型,選股公式,預(yù)警公式的朋友
可聯(lián)系技術(shù)人員 QQ: 262069696 進(jìn)行 有償 編寫!(不貴!點(diǎn)擊查看價(jià)格!)
相關(guān)文章
-
沒有相關(guān)內(nèi)容