COCO研究院

 找回密碼
 註冊
搜索
查看: 23373|回復: 12

[範例程式碼] 微分策略(附程式)

[複製鏈接]
發表於 21-12-29 01:28 | 顯示全部樓層 |閱讀模式
本帖最後由 liawfujin 於 21-12-29 01:51 編輯

學過微積分的人應知道距離(對時間)的微分是速度, 而把微分的概念應用到股價上, 那麼對股價(均線)微分, 可以得到股價上漲或下跌的速度!

將微分觀念應用到程式交易, 幣圖誌裡有一篇文章可以參考, " 04/03開發商品的交易系統 - 基礎篇 [34]微分" ,
https://www.bituzi.com/2015/04/trading-fundamantals34.html

這裡還是從前篇 HullMoving Average(HMA) 出發, 微分是無限小的變量,我們無法做到無限小, 只能在此均線上取兩點(6 根 K 棒)的差值(即導數)來近似!
//----------------------------------
inputs: Hlength(x), dyz(6);
Input: avmlen(y), asima(2), du(z1),dl(z2);
var: M1_M2(0), avM1_M2(0);
vars: delta1(0), MA(0),HMA(0);
vars: mp(0), IsBalanceDay(False);
//----------------------------------------
MA=2*WAverage(close,IntPortion(Hlength*0.5))-WAverage(close,Hlength);
HMA=WAverage(MA,IntPortion(SquareRoot(Hlength)));

delta1 =  HMA - HMA[dyz];

//----------------------------------------
M1_M2 = AverageFC(delta1, asima);
avM1_M2 = AverageFC(M1_M2, avmlen);

//-----------------------------------------
mp = MarketPosition;
if DAYofMonth(Date) > 14 and DAYofMonth(Date) < 22 and DAYofWeek(Date)= 3 then isBalanceDay = True else isBalanceDay =False;
//---------------------------------------
if mp = 0 then begin
   if M1_M2 cross over avM1_M2+du then buy next bar at market;   
end;

if mp > 0 then begin
  if M1_M2 cross under avM1_M2-dl then sellshort next bar at market;
end;

if mp < 0 then begin
   if M1_M2 cross over avM1_M2+du then buy next bar at market;
end;

if IsBalanceDay then setExitonClose;
//--------------------------------------------------
delta1 即為   HullMoving Average(HMA) 的導數, 當導數為零時, 代表均線反轉, 而導數極大(小)值, 代表均線的反曲點, 均線增速為零, 之後均線上漲速度變緩!

為使導數較為平滑, 可求其某小區間的均值, M1_M2 = AverageFC(delta1, asima); avM1_M2 = AverageFC(M1_M2, avmlen) 為某一區間的導數簡單平均值(線)!

此指標的交易策略
, 可以在導數M1_M2 穿越 avM1_M2 之上時買進, M1_M2 穿越 avM1_M2 之下時賣出, 加減一小差值 du, dl 當緩衝, 以減少買賣雜訊.

4分鐘 K 線, 跑日夜盤的波段策略, 以 2017.05 至2020.06.30 之資料為樣本內做優化, 一口小台, 不設停損, 每月結算, 起始資金10萬, 單邊費用設120元, 2020. 07.01 後是樣本外績效,

空單權益曲線

空單權益曲線

多單權益曲線

多單權益曲線

詳細權益曲線

詳細權益曲線

K 線參考圖

K 線參考圖

評分

參與人數 3金錢 +5 收起 理由
qekwee88 + 1 太強了
abopt + 2
dahlia1981 + 2 太強了

查看全部評分

發表於 22-9-18 08:37 | 顯示全部樓層
liawfujin 發表於 22-9-16 14:19
x, y, z1, z2 是數值參數, 要帶入數值才能編譯!

謝謝大佬指點迷津,這下明白了.感恩有你!
回復 支持 1 反對 0

使用道具 舉報

 樓主| 發表於 22-9-16 14:19 | 顯示全部樓層
qingxinguayu 發表於 22-9-15 11:34
編譯不通過,提示變量設置錯誤.Hlength(x)
avmlen(y)
du(z1),dl(z2)

x, y, z1, z2 是數值參數, 要帶入數值才能編譯!
回復 支持 1 反對 0

使用道具 舉報

發表於 22-9-15 11:34 | 顯示全部樓層
編譯不通過,提示變量設置錯誤.Hlength(x)
avmlen(y)
du(z1),dl(z2)
回復 支持 1 反對 0

使用道具 舉報

發表於 23-10-24 14:03 | 顯示全部樓層
感謝分享觀念
發表於 24-10-25 22:14 | 顯示全部樓層
感謝大大的分享
發表於 24-10-28 09:56 | 顯示全部樓層
感謝分享感謝分享感謝分享
發表於 24-10-28 19:33 | 顯示全部樓層
謝謝大佬分享
發表於 24-11-6 10:01 | 顯示全部樓層
感謝大大的分享
發表於 24-11-7 10:58 | 顯示全部樓層
受小弟一拜!
發表於 24-11-13 15:51 | 顯示全部樓層
感謝大大的分享
您需要登錄後才可以回帖 登錄 | 註冊

本版積分規則

手機版|Archiver|站長信箱|廣告洽詢|COCO研究院

GMT+8, 24-11-24 21:50

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
理財討論網站 |