MC模組開發.1

閱讀時間約 15 分鐘
Multicharts 在台灣是很流行的程式交易套裝軟體,強大的回測功能總令人愛不釋手以下是我運用MC開發程式碼與回測的方法

步驟1 : 常見的Donchain Channel策略,搭配一個進場濾網以及一個出場策略

If EntriesToday(Date)=0 then begin
Buy next bar at Highest(High,55) stop;
SellShort next bar at Lowest(Low,55) stop;
End;

If BarsSinceEntry>=8 then begin
Sell next bar at Low stop;
BuyToCover next bar at High stop;
End;

步驟2 : 利用陣列填裝更多類似的通道策略、納入更多的濾網作為備選方案

Inputs:xxL(1),xxS(1);
Inputs:LenExit(8);
Arrays:BreakLong[10](0),BreakShort[10](0);

BreakLong[1]=Highest(High,55);
BreakLong[2]=MaxList(HighD(1),HighD(2),HighD(3));
BreakLong[3]=Average(High,30)+Highest(Range,500);
BreakLong[4]=Average(High,30)+1.85StdDev(High,60); BreakLong[5]=CloseD(1)+1.35(HighD(1)-LowD(1));
BreakLong[6]=OpenD(0)*1.0075;

BreakShort[1]=Lowest(Low,55);
BreakShort[2]=MinList(LowD(1),LowD(2),LowD(3));
BreakShort[3]=Average(Low,30)-Highest(Range,500);
BreakShort[4]=Average(Low,30)-1.85StdDev(Low,60); BreakShort[5]=CloseD(1)-1.35(HighD(1)-LowD(1));
BreakShort[6]=OpenD(0)*0.9925;

If Time>=CalcTime(Sess1StartTime,5BarInterval) then begin
If ADX(21)>ADX(21)[10] then begin
If EntriesToday(Date)=0 then begin
Buy next bar at BreakLong[xxL] stop;
SellShort next bar at BreakShort[xxS] stop;
End;
End;
End;

If BarsSinceEntry>=LenExit then begin
Sell next bar at Low stop;
BuyToCover next bar at High stop;
End;
步驟3 : 運用亂數,決定挑選的配對組合、長度參數、濾網是否啟用
Vars:ii(0),jj(0);
Inputs:Seed(131071);
Arrays:PRNumber[100,250](0);
Vars:MiddleSquare(0),RandomNumber(0);

//Distribution:Entry+Filter
Vars:xxL(1),xxS(1);
Arrays:BreakLong[10](0),BreakShort[10](0);
Arrays:LenLong[100](0),LenShort[100](0),RatioLong[100](0),RatioShort[100](0);
Arrays:LogisticOnOff[100](0),LenTimeLong[100](0),LenTimeShort[100](0);
//Distribution:Exit
Arrays:LenExit[10](0);

//Pseudo Random Parameterics
If CurrentBar=1 then begin
For ii = 1 to 100 begin
PRNumber[ii,0]=Seed+31*(ii-1);
End; //For ii = 1 to 100 begin

For ii = 1 to 100 begin
For jj = 1 to 200 begin
//Pseudo Random Number Middle Square Method
MiddleSquare=IntPortion(Power(PRNumber[ii,jj-1],2)0.001)0.000001;
RandomNumber=1000000*(MiddleSquare-IntPortion(MiddleSquare));

If RandomNumber<90000 then begin //Check Function
MiddleSquare=IntPortion(Power(PRNumber[ii,jj-1]+110011,2)0.001)0.000001;
RandomNumber=1000000*(MiddleSquare-IntPortion(MiddleSquare));
End; //If RandomNumber<90000 then begin //Check Function
PRNumber[ii,jj]=RandomNumber;
End; // For ii = 1 to 100
End; // For jj = 1 to 200

xxL=Mod(PRNumber[1,1],6)+1;
xxS=Mod(PRNumber[1,101],6)+1;
LenLong[1]=Mod(PRNumber[2,1],50)+21;
LenShort[1]=Mod(PRNumber[2,101],50)+21;
LenLong[2]=Mod(PRNumber[2,2],50)+21;
LenShort[2]=Mod(PRNumber[2,102],50)+21;
LenLong[3]=Mod(PRNumber[2,3],300)+350;
LenShort[3]=Mod(PRNumber[2,103],300)+350;
LenLong[4]=Mod(PRNumber[2,4],50)+55;
LenShort[4]=Mod(PRNumber[2,104],50)+55;
LenLong[5]=Mod(PRNumber[2,5],150)+55;
LenShort[5]=Mod(PRNumber[2,105],150)+55;
LenLong[6]=Mod(PRNumber[2,6],15)+15; //ADX
LenShort[6]=Mod(PRNumber[2,106],15)+15; //ADX
LenLong[7]=Mod(PRNumber[2,7],10)+5; //ADX
LenShort[7]=Mod(PRNumber[2,107],10)+5; //ADX

RatioLong[1]=Mod(PRNumber[3,1],150)0.01+1.64; RatioLong[2]=Mod(PRNumber[3,2],80)0.01+0.75;
RatioLong[3]=Mod(PRNumber[3,3],120)0.01+0.55; RatioShort[1]=Mod(PRNumber[3,101],150)0.01+1.64;
RatioShort[2]=Mod(PRNumber[3,102],80)0.01+0.75; RatioShort[3]=Mod(PRNumber[3,103],120)0.01+0.55;
For ii=1 to 100 begin
LogisticOnOff[ii]=Iff(PRNumber[4,ii]>500000,1,0);
End;
LenTimeLong[1]=Mod(PRNumber[5,1],10)+1;
LenTimeShort[1]=Mod(PRNumber[5,101],10)+1;
LenExit[1]=Mod(PRNumber[6,1],10)+5;

End; //If CurrentBar=1 then begin

//BaseInformation : 1 ~ 10
Vars:StartDate(0),TimeLen(0),BP(0);
Vars:Session(1),OpenDFirstBar(1),EndTime(0),OpenDFirstTime(0),IntraDayBarNo(0);

If CurrentBar=1 then begin //BaseInformation*
StartDate=DateToJulian(Date);
TimeLen=BarInterval;
BP=MinMove/PriceScale;
If Session=1 then EndTime=Sess1EndTime;
If Session=2 then EndTime=Sess2EndTime;
If OpenDFirstBar=1 then OpenDFirstTime=Sess1StartTime;
If OpenDFirstBar=2 then OpenDFirstTime=Sess2StartTime;
IntraDayBarNo=IntPortion((TimeToMinutes(EndTime)-TimeToMinutes(OpenDFirstTime))/TimeLen)+1;
End; //CurrentBar=1

//State Case//
Vars:MP(0),Liquidity(False),Price(0),NoBar(0),EEP(0),TN(0);
MP=MarketPosition;
Liquidity=Summation(Range,20)>80BP and Range>5BP and Range[1]>5BP; Price=0.5(High+Low);
NoBar=BarNumber;
EEP=EntryPrice(0);
TN=TotalTrades;

BreakLong[1]=Highest(High,LenLong[1]);
BreakLong[2]=MaxList(HighD(1),HighD(2),HighD(3));
BreakLong[3]=Average(High,LenLong[2])+Highest(Range,LenLong[3]);
BreakLong[4]=Average(High,LenLong[4])+RatioLong[1]StdDev(High,LenLong[5]);
BreakLong[5]=CloseD(1)+RatioLong[2](HighD(1)-LowD(1));
BreakLong[6]=OpenD(0)*RatioLong[3];
BreakShort[1]=Lowest(Low,LenShort[1]);
BreakShort[2]=MinList(LowD(1),LowD(2),LowD(3));
BreakShort[3]=Average(Low,LenShort[2])-Highest(Range,LenShort[3]);
BreakShort[4]=Average(Low,LenShort[4])-RatioShort[1]StdDev(Low,LenShort[5]);
BreakShort[5]=CloseD(1)-RatioShort[2](HighD(1)-LowD(1));
BreakShort[6]=OpenD(0)*RatioShort[3];
ClearDebug;
SetStopContract;

If IFFLogic(LogisticOnOff[1]=0,True,Time>=CalcTime(Sess1StartTime,LenTimeShort[1]BarInterval)) then begin
If IFFLogic(LogisticOnOff[2]=0,True,ADX(LenLong[6])>ADX(LenLong[6])[LenLong[7]]) then begin
If IFFLogic(LogisticOnOff[3]=0,True,EntriesToday(Date)=0) then begin
Buy next bar at BreakLong[xxL] stop;
End; //If EntriesToday(Date)=0 then begin
End; //If ADX(21)>ADX(21)[10] then begin
End; //If Time>=CalcTime(Sess1StartTime,5BarInterval) then begin
If IFFLogic(LogisticOnOff[1]=0,True,Time>=CalcTime(Sess1StartTime,LenTimeLong[1]BarInterval)) then begin
If IFFLogic(LogisticOnOff[2]=0,True,ADX(LenShort[6])>ADX(LenShort[6])[LenShort[7]]) then begin
If IFFLogic(LogisticOnOff[3]=0,True,EntriesToday(Date)=0) then begin
SellShort next bar at BreakShort[xxS] stop;
End; //If EntriesToday(Date)=0 then begin
End; //If ADX(21)>ADX(21)[10] then begin
End; //If Time>=CalcTime(Sess1StartTime,5BarInterval) then begin
If BarsSinceEntry>=LenExit[1] then begin
Sell next bar at Low stop;
BuyToCover next bar at High stop;
End;
步驟4 : 輸出績效文字檔,透過報酬、風險…等指標,排序模組的優劣相關程式碼,請待下篇文章分享
為什麼會看到廣告
21會員
108內容數
留言0
查看全部
發表第一個留言支持創作者!
Piemann的沙龍 的其他內容
200多年前,本間宗九在稻米市場的買賣,發明了K線,還有對應的酒田戰法技術分析,並因此發大財,家族一值到1945年以前,都是日本第一大地主 那200多年的日本是甚麼樣的社會 ?
選擇權的基礎用途,就是在混亂的行情中,鎖定價格
假設每筆成交價與前一筆的成交價的差異,只有 -1、0、1 三種跳動情況,且每個出現機率都相同,請問觀察51筆成交價資料後,在95%的信心水準下,累積的漲跌點數合理區間為何 ?
利用亂數,在複雜的多個條件下,透過模擬而得到參考答案,在計算科學越來越進步的情況下,此法應用的領域範圍,已獲得大爆發式的增加。本文利用Excel VBA工具,來產生兩種亂數表,一個是均勻分配、另一個是標準常態分配亂數。
挑戰南極點 1911.12.15,阿蒙森是人類史上第一個抵達南極點的探險家,然後阿蒙森拔得頭籌且平安回國,而另一組人34天後抵達南極,但是領隊的史考特則慘被凍死 來回1400英里的距離,阿蒙森的準備方式是這樣進行
山難一二事 1. 凜冬之際,山岳能手Piemann,精挑數名隊友,欲在台灣的奇萊之巔,共賞午夜銀河,享受人生 2. 其中一名隊友Bill是三鐵金牌人,Piemann行前諄切隊友必備物品、時間、路徑
200多年前,本間宗九在稻米市場的買賣,發明了K線,還有對應的酒田戰法技術分析,並因此發大財,家族一值到1945年以前,都是日本第一大地主 那200多年的日本是甚麼樣的社會 ?
選擇權的基礎用途,就是在混亂的行情中,鎖定價格
假設每筆成交價與前一筆的成交價的差異,只有 -1、0、1 三種跳動情況,且每個出現機率都相同,請問觀察51筆成交價資料後,在95%的信心水準下,累積的漲跌點數合理區間為何 ?
利用亂數,在複雜的多個條件下,透過模擬而得到參考答案,在計算科學越來越進步的情況下,此法應用的領域範圍,已獲得大爆發式的增加。本文利用Excel VBA工具,來產生兩種亂數表,一個是均勻分配、另一個是標準常態分配亂數。
挑戰南極點 1911.12.15,阿蒙森是人類史上第一個抵達南極點的探險家,然後阿蒙森拔得頭籌且平安回國,而另一組人34天後抵達南極,但是領隊的史考特則慘被凍死 來回1400英里的距離,阿蒙森的準備方式是這樣進行
山難一二事 1. 凜冬之際,山岳能手Piemann,精挑數名隊友,欲在台灣的奇萊之巔,共賞午夜銀河,享受人生 2. 其中一名隊友Bill是三鐵金牌人,Piemann行前諄切隊友必備物品、時間、路徑
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
MC 台灣的個人或團隊, 在solana黑客松, 還有哪些值得開發的專案例子? 幸福課程 幸福教練黃老師 潮資訊媒體 1. Larix: 描述: Larix 是一個 Solana 上的借貸門戶, 旨在為 Solana 生態的資產持有者提供高效、 安全的加密資產借貸服
MC 台灣的個人或團隊, 在solana黑客松, 還有哪些值得開發的專案例子? 幸福課程 幸福教練黃老師 潮資訊媒體 1. Larix: 描述: Larix 是一個 Solana 上的借貸門戶, 旨在為 Solana 生態的資產持有者提供高效、 安全的加密資產借貸服
MC What is the cost of Ethereum upgrades? Will the gap between rich and poor in the virtual currency circle widen? Will power be concentrated in a
MC 以太坊升級的代價是什麼? 虛擬幣圈的貧富差距會不會擴大? 權力會集中在少數人身上嗎? 未來,以太坊將繼續出現哪些挑戰? #VitalikButerin #ETHTaipei2024 #ETHTaipeiHackathon2024 ... (好的顧問導師教練 協助妳
Thumbnail
当艺术家手握着画笔执着于自己心中理想的彩绘,他会发现越是全情投入越不免身上沾满颜料,而看似【髒藝術家】的他其实本就已成为另一幅艺术。MC HotDog熱狗终于带来了这首《髒藝術家》的录音室版本,去年热狗在《中國說唱巔峰對決》首次演唱这首歌的表演还历历在目。
Thumbnail
$oHo和KidNey的語調和說唱的歌詞充滿侵略性,是長期受到壓迫了吧?畢竟無論有多努力的去製作音樂,最終也走不進你和你的目光裡,沒法在排行榜上爬行,心血就這樣付諸東流。
Thumbnail
同一歌詞,配上不同編排、不同編曲,感受到的,截然不同。由MC SH跟ToNick重新編製的搖滾編曲,將我們遺失東西之後的焦慮、悔疚、痛苦和憤怒,全都發洩出來。這些東西,明明是我們擁有的,明明與生俱來的,但現在全都遺失了,全都被強行掠奪了。
Thumbnail
再一次是來自鄧東城的旋律,要是《係咁先啦》是屬於尾班車的節奏,《跌嘢唔好搵》就是星期六早上的最佳配樂,帶點懶洋洋的感覺,再急促的腳步也瞬間放慢,再焦急的性格也旋即舒緩,慢慢的,漫步於長路橫街之中。
Thumbnail
如果MC $oHo a.k.a. 豪哥是在分析著我們不得不離去的理據,還有那份如何開口拋下一句「再見」的糾結;MC KidNey的部分,就是在尾班車上的歉疚。 明明十五分鐘之前,還在鄧東城EAST CITY的電子派對氛圍之中沐浴著、調笑著...嗯......還有半份欲言又止。
Thumbnail
McCafe正是抓住了商機,無論是上班上課、早餐下午茶、隨時隨地想來一杯咖啡的時候,都可以在麥當勞取得這些讓人心情好的美食。品牌不斷推陳出新、質感提升,也難怪越來越常看到McCafe展店攻佔市場。而McCafe對咖啡豆的堅持,是麥當勞咖啡的關鍵。McCafe咖啡豆嚴選100%阿拉比卡咖啡豆製成
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
美國總統大選只剩下三天, 我們觀察一整週民調與金融市場的變化(包含賭局), 到本週五下午3:00前為止, 誰是美國總統幾乎大概可以猜到60-70%的機率, 本篇文章就是以大選結局為主軸來討論近期甚至到未來四年美股可能的改變
MC 台灣的個人或團隊, 在solana黑客松, 還有哪些值得開發的專案例子? 幸福課程 幸福教練黃老師 潮資訊媒體 1. Larix: 描述: Larix 是一個 Solana 上的借貸門戶, 旨在為 Solana 生態的資產持有者提供高效、 安全的加密資產借貸服
MC 台灣的個人或團隊, 在solana黑客松, 還有哪些值得開發的專案例子? 幸福課程 幸福教練黃老師 潮資訊媒體 1. Larix: 描述: Larix 是一個 Solana 上的借貸門戶, 旨在為 Solana 生態的資產持有者提供高效、 安全的加密資產借貸服
MC What is the cost of Ethereum upgrades? Will the gap between rich and poor in the virtual currency circle widen? Will power be concentrated in a
MC 以太坊升級的代價是什麼? 虛擬幣圈的貧富差距會不會擴大? 權力會集中在少數人身上嗎? 未來,以太坊將繼續出現哪些挑戰? #VitalikButerin #ETHTaipei2024 #ETHTaipeiHackathon2024 ... (好的顧問導師教練 協助妳
Thumbnail
当艺术家手握着画笔执着于自己心中理想的彩绘,他会发现越是全情投入越不免身上沾满颜料,而看似【髒藝術家】的他其实本就已成为另一幅艺术。MC HotDog熱狗终于带来了这首《髒藝術家》的录音室版本,去年热狗在《中國說唱巔峰對決》首次演唱这首歌的表演还历历在目。
Thumbnail
$oHo和KidNey的語調和說唱的歌詞充滿侵略性,是長期受到壓迫了吧?畢竟無論有多努力的去製作音樂,最終也走不進你和你的目光裡,沒法在排行榜上爬行,心血就這樣付諸東流。
Thumbnail
同一歌詞,配上不同編排、不同編曲,感受到的,截然不同。由MC SH跟ToNick重新編製的搖滾編曲,將我們遺失東西之後的焦慮、悔疚、痛苦和憤怒,全都發洩出來。這些東西,明明是我們擁有的,明明與生俱來的,但現在全都遺失了,全都被強行掠奪了。
Thumbnail
再一次是來自鄧東城的旋律,要是《係咁先啦》是屬於尾班車的節奏,《跌嘢唔好搵》就是星期六早上的最佳配樂,帶點懶洋洋的感覺,再急促的腳步也瞬間放慢,再焦急的性格也旋即舒緩,慢慢的,漫步於長路橫街之中。
Thumbnail
如果MC $oHo a.k.a. 豪哥是在分析著我們不得不離去的理據,還有那份如何開口拋下一句「再見」的糾結;MC KidNey的部分,就是在尾班車上的歉疚。 明明十五分鐘之前,還在鄧東城EAST CITY的電子派對氛圍之中沐浴著、調笑著...嗯......還有半份欲言又止。
Thumbnail
McCafe正是抓住了商機,無論是上班上課、早餐下午茶、隨時隨地想來一杯咖啡的時候,都可以在麥當勞取得這些讓人心情好的美食。品牌不斷推陳出新、質感提升,也難怪越來越常看到McCafe展店攻佔市場。而McCafe對咖啡豆的堅持,是麥當勞咖啡的關鍵。McCafe咖啡豆嚴選100%阿拉比卡咖啡豆製成