 |
tycoon868
資深會員

註冊日期: Oct 2008
來 自:
文章數量: 313 |
[問題] 如何求算條件成立的價位、區間統計、倉位計算
求教 總版主以下需求:
使用週期: 六十分K
使用商品: 台當月+
半成品主圖原始碼如下:
______________________________________________________________________________________
MQ:=MA(C,10),linethick0,colorff00ff,precision2;
M3:=MA(C,90),linethick0,colorblue,precision2;
MBP90:=MQ-M3,linethick0,precision1;
ABP90:=MA(MBP90,45),precision1;
Partline(1,M3),colorff3300,LINETHICK5;
StickLine( O<C , HIGH , LOW , 0.2 , 0 ) , Color3300ff ;
StickLine( O<C , CLOSE , OPEN , 8 , 0 ) , Color3300ff;
StickLine( O=C , HIGH , LOW , 0.2 , 0 ) , Coloryellow ;
StickLine( O=C , CLOSE , OPEN , 8 , 0 ) , Coloryellow ;
StickLine( O>C , HIGH , LOW , 0.2 , 0 ) , Colorffcc33 ;
StickLine( O>C , CLOSE , OPEN , 8 , 0 ) , Colorffcc33;
MBAD:=MBP90-ABP90,linethick0,color009999,precision1;
BullB:=MBP90>=0 and MBAD>=0; BullBSP:=barslast(BullB);
BullB:=Sum(MBP90>0 ,BullBSP+1)=BullBSP+1;
Bullhold:=barslast(BullB=0);
BearS:=MBP90<0 and MBAD<0; BearSSP:=barslast(BearS);
BearS:=Sum(MBP90<0,BearSSP+1)=BearSSP+1;
Bearhold:=barslast(BearS=0);
週期:Bullhold-Bearhold,color006699,precision0,linethick0;//週期從1開始,直到成為0或-1,視為一個完整的倉位計算週期
多買1:=Cross(MBP90,0); //成立則倉位+2
多買2:=週期>0 and Cross(MBP90,50) and MBAD>0;//成立則倉位+2
多買3:=週期>0 and Cross(MBP90,100) and MBAD>0;//成立則倉位+2
多買4:=週期>0 and Cross(MBP90,150) and MBAD>0;//成立則倉位+2
多買5:=週期>0 and Cross(MBP90,200) and MBAD>0;//成立則倉位+2
多買6:=(Cross(MBP90,50) and MBAD<0and ABP90>0) or (Cross(MBP90,100) and MBAD<0and ABP90>0)
or (Cross(MBP90,150) and MBAD<0and ABP90>0) or (Cross(MBP90,200) and MBAD<0and ABP90>0);//成立則倉位+1
多買7:=Cross(MBP90,ABP90) and 週期>0;//成立則倉位+2
多平1:=Cross(ABP90,MBP90);//成立則倉位 -2
多平2:=Cross(200,MBP90)and MBAD<0;//成立則倉位 -2
多平3:=Cross(150,MBP90)and MBAD<0;//成立則倉位 -2
多平4:=Cross(100,MBP90)and MBAD<0;//成立則倉位 -2
多平5:=Cross(50,MBP90)and MBAD<0;//成立則倉位 -2
多平6:=週期<1 and ref(週期,1)>=1;//成立則將本週期剩餘的倉位 歸零
最長週期:HHV(週期,1000); //希望這個1000可以成為一個變數
______________________________________________________________________________________________
需求一 週期=1 當下取得該筆六十分K的 日期與時間,輸出到主圖解盤區
需求二 如何取得 多買1:=Cross(MBP90,0); 條件成立當下確切的台期指價位,當成該筆單買進成本
需求三 在一個完整的操作週期中(詳見上方週期註解),設限 多買1~7條件成立累加倉位(最大上限為 倉位=10),同時併行 多平1~6作倉位減碼 (最多減碼到 倉位=0),這兩組條件在行情進行過程中(同一完整操作週期),求出一個新指標 命名為 [倉位],希望求取任何一根K棒當下正確的 倉位數值
需求四 最長週期:HHV(週期,1000); 希望可以建立一個指標取代1000,假設將該指標名稱為 Period,允許使用者自由拖拉日期區間,以及藉由 上下方向箭進行畫面數據的縮放(經測試奇狐最高支援縮放達到數據量13000多筆),該 Period 可以運算此一龐大數據並求出 HHV(週期,Period)
定義: Period= User 端操作下呈現出的當下主圖畫面K棒數量,起點(螢幕最左方那一筆),迄點(螢幕最右方那一筆K棒),計算方式為不啟用游標
此一目的是為了作任一區間的各項指標統計
需求五 承需求四,可以將當下 Period 所計算的起迄點 日期時間輸出到解盤區,希望輸出三種格式
1 回測起點: 年月日時間
2. 回測終點: 年月日時間
3. 回測數據量: N 筆
************************************************************************
麻煩總版主直接將原碼給我,讓我從這當中邊做邊學,感謝!
|
|
向版主報告此篇 |  |
|
2022-12-01 14:25 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18139 |
回覆: [問題] 如何求算條件成立的價位、區間統計、倉位計算
引用: 最初由 tycoon868 發表
求教 總版主以下需求:
使用週期: 六十分K
使用商品: 台當月+
半成品主圖原始碼如下:
______________________________________________________________________________________
MQ:=MA(C,10),linethick0,colorff00ff,precision2;
M3:=MA(C,90),linethick0,colorblue,precision2;
MBP90:=MQ-M3,linethick0,precision1;
ABP90:=MA(MBP90,45),precision1;
Partline(1,M3),colorff3300,LINETHICK5;
StickLine( O<C , HIGH , LOW , 0.2 , 0 ) , Color3300ff ;
StickLine( O<C , CLOSE , OPEN , 8 , 0 ) , Color3300ff;
StickLine( O=C , HIGH , LOW , 0.2 , 0 ) , Coloryellow ;
StickLine( O=C , CLOSE , OPEN , 8 , 0 ) , Coloryellow ;
StickLine( O>C , HIGH , LOW , 0.2 , 0 ) , Colorffcc33 ;
StickLine( O>C , CLOSE , OPEN , 8 , 0 ) , Colorffcc33;
MBAD:=MBP90-ABP90,linethick0,color009999,precision1;
BullB:=MBP90>=0 and MBAD>=0; BullBSP:=barslast(BullB);
BullB:=Sum(MBP90>0 ,BullBSP+1)=BullBSP+1;
Bullhold:=barslast(BullB=0);
BearS:=MBP90<0 and MBAD<0; BearSSP:=barslast(BearS);
BearS:=Sum(MBP90<0,BearSSP+1)=BearSSP+1;
Bearhold:=barslast(BearS=0);
週期:Bullhold-Bearhold,color006699,precision0,linethick0;//週期從1開始,直到成為0或-1,視為一個完整的倉位計算週期
多買1:=Cross(MBP90,0); //成立則倉位+2
多買2:=週期>0 and Cross(MBP90,50) and MBAD>0;//成立則倉位+2
多買3:=週期>0 and Cross(MBP90,100) and MBAD>0;//成立則倉位+2
多買4:=週期>0 and Cross(MBP90,150) and MBAD>0;//成立則倉位+2
多買5:=週期>0 and Cross(MBP90,200) and MBAD>0;//成立則倉位+2
多買6:=(Cross(MBP90,50) and MBAD<0and ABP90>0) or (Cross(MBP90,100) and MBAD<0and ABP90>0)
or (Cross(MBP90,150) and MBAD<0and ABP90>0) or (Cross(MBP90,200) and MBAD<0and ABP90>0);//成立則倉位+1
多買7:=Cross(MBP90,ABP90) and 週期>0;//成立則倉位+2
多平1:=Cross(ABP90,MBP90);//成立則倉位 -2
多平2:=Cross(200,MBP90)and MBAD<0;//成立則倉位 -2
多平3:=Cross(150,MBP90)and MBAD<0;//成立則倉位 -2
多平4:=Cross(100,MBP90)and MBAD<0;//成立則倉位 -2
多平5:=Cross(50,MBP90)and MBAD<0;//成立則倉位 -2
多平6:=週期<1 and ref(週期,1)>=1;//成立則將本週期剩餘的倉位 歸零
最長週期:HHV(週期,1000); //希望這個1000可以成為一個變數
______________________________________________________________________________________________
需求一 週期=1 當下取得該筆六十分K的 日期與時間,輸出到主圖解盤區
需求二 如何取得 多買1:=Cross(MBP90,0); 條件成立當下確切的台期指價位,當成該筆單買進成本
需求三 在一個完整的操作週期中(詳見上方週期註解),設限 多買1~7條件成立累加倉位(最大上限為 倉位=10),同時併行 多平1~6作倉位減碼 (最多減碼到 倉位=0),這兩組條件在行情進行過程中(同一完整操作週期),求出一個新指標 命名為 [倉位],希望求取任何一根K棒當下正確的 倉位數值
需求四 最長週期:HHV(週期,1000); 希望可以建立一個指標取代1000,假設將該指標名稱為 Period,允許使用者自由拖拉日期區間,以及藉由 上下方向箭進行畫面數據的縮放(經測試奇狐最高支援縮放達到數據量13000多筆),該 Period 可以運算此一龐大數據並求出 HHV(週期,Period)
定義: Period= User 端操作下呈現出的當下主圖畫面K棒數量,起點(螢幕最左方那一筆),迄點(螢幕最右方那一筆K棒),計算方式為不啟用游標
此一目的是為了作任一區間的各項指標統計
需求五 承需求四,可以將當下 Period 所計算的起迄點 日期時間輸出到解盤區,希望輸出三種格式
1 回測起點: 年月日時間
2. 回測終點: 年月日時間
3. 回測數據量: N 筆
************************************************************************
麻煩總版主直接將原碼給我,讓我從這當中邊做邊學,感謝!
先確認一下~~
您是只要統計當前螢幕區間的範圍的績效對吧?
以螢幕區間內首個多買n成立,當首個進場位置
如此一來,當螢幕區間不同,同時間K棒之倉位就會隨之不同唷! (因為進場起點發生變化)
|
|
向版主報告此篇 |  |
|
2022-12-01 15:02 |
|
|
|  |
 |
tycoon868
資深會員

註冊日期: Oct 2008
來 自:
文章數量: 313 |
謝謝總版主貼心檢視,已經小幅優化原碼如下:
修改部分: BullB:=(MBP90>0and MBAD>0and ABP90<0)or(MBP90>0and MBAD<0and ABP90>0);
多買1:=週期=1;
__________________________________________
MQ:=MA(C,10),linethick0,colorff00ff,precision2;
M3:=MA(C,90),linethick0,colorblue,precision2;
MBP90:=MQ-M3,linethick0,precision1;
ABP90:=MA(MBP90,45),precision1;
Partline(1,M3),colorff3300,LINETHICK5;
StickLine( O<C , HIGH , LOW , 0.2 , 0 ) , Color3300ff ;
StickLine( O<C , CLOSE , OPEN , 8 , 0 ) , Color3300ff;
StickLine( O=C , HIGH , LOW , 0.2 , 0 ) , Coloryellow ;
StickLine( O=C , CLOSE , OPEN , 8 , 0 ) , Coloryellow ;
StickLine( O>C , HIGH , LOW , 0.2 , 0 ) , Colorffcc33 ;
StickLine( O>C , CLOSE , OPEN , 8 , 0 ) , Colorffcc33;
MBAD:=MBP90-ABP90,linethick0,color009999,precision1;
BullB:=(MBP90>0and MBAD>0and ABP90<0)or(MBP90>0and MBAD<0and ABP90>0); BullBSP:=barslast(BullB);
BullB:=Sum(MBP90>0 ,BullBSP+1)=BullBSP+1;
Bullhold:=barslast(BullB=0);
BearS:=(MBP90<0and MBAD>0and ABP90<0)or(MBP90<0and MBAD<0and ABP90>0); BearSSP:=barslast(BearS);
BearS:=Sum(MBP90<0,BearSSP+1)=BearSSP+1;
Bearhold:=barslast(BearS=0);
週期:Bullhold-Bearhold,color006699,precision0,linethick0;//週期從1開始,直到成為0或-1,視為一個完整的倉位計算週期
多買1:=週期=1; //成立則倉位+2
多買2:=週期>0 and Cross(MBP90,50) and MBAD>0;//成立則倉位+2
多買3:=週期>0 and Cross(MBP90,100) and MBAD>0;//成立則倉位+2
多買4:=週期>0 and Cross(MBP90,150) and MBAD>0;//成立則倉位+2
多買5:=週期>0 and Cross(MBP90,200) and MBAD>0;//成立則倉位+2
多買6:=(Cross(MBP90,50) and MBAD<0and ABP90>0) or (Cross(MBP90,100) and MBAD<0and ABP90>0)
or (Cross(MBP90,150) and MBAD<0and ABP90>0) or (Cross(MBP90,200) and MBAD<0and ABP90>0);//成立則倉位+1
多買7:=Cross(MBP90,ABP90) and 週期>0;//成立則倉位+2
多平1:=Cross(ABP90,MBP90);//成立則倉位 -2
多平2:=Cross(200,MBP90)and MBAD<0;//成立則倉位 -2
多平3:=Cross(150,MBP90)and MBAD<0;//成立則倉位 -2
多平4:=Cross(100,MBP90)and MBAD<0;//成立則倉位 -2
多平5:=Cross(50,MBP90)and MBAD<0;//成立則倉位 -2
多平6:=週期<1 and ref(週期,1)>=1;//成立則將本週期剩餘的倉位 歸零
最長週期:HHV(週期,1000); //希望這個1000可以成為一個變數
________________________________________
Q: 是否只作多?
A: 這套交易策略後續一定還需要版主協助,我採用的是逐步階段完成方式,需要先學會這五個奇狐技巧,然後我才能繼續下一個階段
為了向版主提問以及教學,我有盡量讓原碼單純化,所以作空的部分先省略(後續才補上)
感謝~
|
最後由 tycoon868 在 2022-12-02 06:15 編輯 |
向版主報告此篇 |  |
|
2022-12-02 06:08 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18139 |
引用: 最初由 tycoon868 發表
謝謝總版主貼心檢視,已經小幅優化原碼如下:
修改部分: BullB:=(MBP90>0and MBAD>0and ABP90<0)or(MBP90>0and MBAD<0and ABP90>0);
多買1:=週期=1;
__________________________________________
MQ:=MA(C,10),linethick0,colorff00ff,precision2;
M3:=MA(C,90),linethick0,colorblue,precision2;
MBP90:=MQ-M3,linethick0,precision1;
ABP90:=MA(MBP90,45),precision1;
Partline(1,M3),colorff3300,LINETHICK5;
StickLine( O<C , HIGH , LOW , 0.2 , 0 ) , Color3300ff ;
StickLine( O<C , CLOSE , OPEN , 8 , 0 ) , Color3300ff;
StickLine( O=C , HIGH , LOW , 0.2 , 0 ) , Coloryellow ;
StickLine( O=C , CLOSE , OPEN , 8 , 0 ) , Coloryellow ;
StickLine( O>C , HIGH , LOW , 0.2 , 0 ) , Colorffcc33 ;
StickLine( O>C , CLOSE , OPEN , 8 , 0 ) , Colorffcc33;
MBAD:=MBP90-ABP90,linethick0,color009999,precision1;
BullB:=(MBP90>0and MBAD>0and ABP90<0)or(MBP90>0and MBAD<0and ABP90>0); BullBSP:=barslast(BullB);
BullB:=Sum(MBP90>0 ,BullBSP+1)=BullBSP+1;
Bullhold:=barslast(BullB=0);
BearS:=(MBP90<0and MBAD>0and ABP90<0)or(MBP90<0and MBAD<0and ABP90>0); BearSSP:=barslast(BearS);
BearS:=Sum(MBP90<0,BearSSP+1)=BearSSP+1;
Bearhold:=barslast(BearS=0);
週期:Bullhold-Bearhold,color006699,precision0,linethick0;//週期從1開始,直到成為0或-1,視為一個完整的倉位計算週期
多買1:=週期=1; //成立則倉位+2
多買2:=週期>0 and Cross(MBP90,50) and MBAD>0;//成立則倉位+2
多買3:=週期>0 and Cross(MBP90,100) and MBAD>0;//成立則倉位+2
多買4:=週期>0 and Cross(MBP90,150) and MBAD>0;//成立則倉位+2
多買5:=週期>0 and Cross(MBP90,200) and MBAD>0;//成立則倉位+2
多買6:=(Cross(MBP90,50) and MBAD<0and ABP90>0) or (Cross(MBP90,100) and MBAD<0and ABP90>0)
or (Cross(MBP90,150) and MBAD<0and ABP90>0) or (Cross(MBP90,200) and MBAD<0and ABP90>0);//成立則倉位+1
多買7:=Cross(MBP90,ABP90) and 週期>0;//成立則倉位+2
多平1:=Cross(ABP90,MBP90);//成立則倉位 -2
多平2:=Cross(200,MBP90)and MBAD<0;//成立則倉位 -2
多平3:=Cross(150,MBP90)and MBAD<0;//成立則倉位 -2
多平4:=Cross(100,MBP90)and MBAD<0;//成立則倉位 -2
多平5:=Cross(50,MBP90)and MBAD<0;//成立則倉位 -2
多平6:=週期<1 and ref(週期,1)>=1;//成立則將本週期剩餘的倉位 歸零
最長週期:HHV(週期,1000); //希望這個1000可以成為一個變數
________________________________________
Q: 是否只作多?
A: 這套交易策略後續一定還需要版主協助,我採用的是逐步階段完成方式,需要先學會這五個奇狐技巧,然後我才能繼續下一個階段
為了向版主提問以及教學,我有盡量讓原碼單純化,所以作空的部分先省略(後續才補上)
感謝~
請把空方也一塊放上,單邊和雙邊交易處理架構上是不太一樣的
|
|
向版主報告此篇 |  |
|
2022-12-02 08:46 |
|
|
|  |
 |
tycoon868
資深會員

註冊日期: Oct 2008
來 自:
文章數量: 313 |
總版主早安,已經將 空方策略補上了,麻煩您.................希望利用周休假日 學會這五個技巧
MQ:=MA(C,10),linethick0,colorff00ff,precision2;
M3:=MA(C,90),linethick0,colorblue,precision2;
MBP90:=MQ-M3,linethick0,precision1;
ABP90:=MA(MBP90,45),precision1;
Partline(1,M3),colorff3300,LINETHICK5;
StickLine( O<C , HIGH , LOW , 0.2 , 0 ) , Color3300ff ;
StickLine( O<C , CLOSE , OPEN , 8 , 0 ) , Color3300ff;
StickLine( O=C , HIGH , LOW , 0.2 , 0 ) , Coloryellow ;
StickLine( O=C , CLOSE , OPEN , 8 , 0 ) , Coloryellow ;
StickLine( O>C , HIGH , LOW , 0.2 , 0 ) , Colorffcc33 ;
StickLine( O>C , CLOSE , OPEN , 8 , 0 ) , Colorffcc33;
MBAD:=MBP90-ABP90,linethick0,color009999,precision1;
BullB:=(MBP90>0and MBAD>0and ABP90<0)or(MBP90>0and MBAD<0and ABP90>0); BullBSP:=barslast(BullB);
BullB:=Sum(MBP90>0 ,BullBSP+1)=BullBSP+1;
Bullhold:=barslast(BullB=0);
BearS:=(MBP90<0and MBAD>0and ABP90<0)or(MBP90<0and MBAD<0and ABP90>0); BearSSP:=barslast(BearS);
BearS:=Sum(MBP90<0,BearSSP+1)=BearSSP+1;
Bearhold:=barslast(BearS=0);
週期:Bullhold-Bearhold,color006699,precision0,linethick0;//週期從1開始,直到成為0或-1,視為一個完整的倉位計算週期
多買1:=週期=1; //成立則倉位+2
多買2:=週期>0 and Cross(MBP90,50) and MBAD>0;//成立則倉位+2
多買3:=週期>0 and Cross(MBP90,100) and MBAD>0;//成立則倉位+2
多買4:=週期>0 and Cross(MBP90,150) and MBAD>0;//成立則倉位+2
多買5:=週期>0 and Cross(MBP90,200) and MBAD>0;//成立則倉位+2
多買6:=(Cross(MBP90,50) and MBAD<0and ABP90>0) or (Cross(MBP90,100) and MBAD<0and ABP90>0)
or (Cross(MBP90,150) and MBAD<0and ABP90>0) or (Cross(MBP90,200) and MBAD<0and ABP90>0);//成立則倉位+1
多買7:=Cross(MBP90,ABP90) and 週期>0;//成立則倉位+2
多平1:=Cross(ABP90,MBP90);//成立則倉位 -2
多平2:=Cross(200,MBP90)and MBAD<0;//成立則倉位 -2
多平3:=Cross(150,MBP90)and MBAD<0;//成立則倉位 -2
多平4:=Cross(100,MBP90)and MBAD<0;//成立則倉位 -2
多平5:=Cross(50,MBP90)and MBAD<0;//成立則倉位 -2
多平6:=週期<1 and ref(週期,1)>=1;//成立則將本週期剩餘的倉位 歸零(例如前一個倉位4 則將四筆多倉全部平倉)
空賣1:=週期=-1; //成立則倉位-2
空賣2:=週期<0 and Cross(-50,MBP90) and MBAD<0;//成立則倉位-2
空賣3:=週期<0 and Cross(-100,MBP90) and MBAD<0;//成立則倉位-2
空賣4:=週期<0 and Cross(-150,MBP90) and MBAD<0;//成立則倉位-2
空賣5:=週期<0 and Cross(-200,MBP90) and MBAD<0;//成立則倉位-2
空賣6:=(Cross(-50,MBP90) and MBAD>0and ABP90<0) or (Cross(-100,MBP90) and MBAD>0and ABP90<0)
or (Cross(-150,MBP90) and MBAD>0and ABP90<0) or (Cross(-200,MBP90) and MBAD>0and ABP90<0);//成立則倉位-1
空賣7:=Cross(ABP90,MBP90) and 週期<0;//成立則倉位-2
空補1:=Cross(MBP90,ABP90);//成立則倉位 +2
空補2:=Cross(MBP90,-50)and MBAD<0;//成立則倉位 +2
空補3:=Cross(MBP90,-100)and MBAD<0;//成立則倉位 +2
空補4:=Cross(MBP90,-150)and MBAD<0;//成立則倉位 +2
空補5:=Cross(MBP90,-200)and MBAD<0;//成立則倉位 +2
空補6:=週期>-1 and ref(週期,1)>=-1;//成立則將本週期剩餘的倉位 歸零(例如前一個倉位-3 則將三筆空倉作回補)
最長週期:HHV(週期,1000); //希望這個1000可以成為一個變數
|
|
向版主報告此篇 |  |
|
2022-12-02 10:08 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18139 |
引用: 最初由 tycoon868 發表
總版主早安,已經將 空方策略補上了,麻煩您.................希望利用周休假日 學會這五個技巧
MQ:=MA(C,10),linethick0,colorff00ff,precision2;
M3:=MA(C,90),linethick0,colorblue,precision2;
MBP90:=MQ-M3,linethick0,precision1;
ABP90:=MA(MBP90,45),precision1;
Partline(1,M3),colorff3300,LINETHICK5;
StickLine( O<C , HIGH , LOW , 0.2 , 0 ) , Color3300ff ;
StickLine( O<C , CLOSE , OPEN , 8 , 0 ) , Color3300ff;
StickLine( O=C , HIGH , LOW , 0.2 , 0 ) , Coloryellow ;
StickLine( O=C , CLOSE , OPEN , 8 , 0 ) , Coloryellow ;
StickLine( O>C , HIGH , LOW , 0.2 , 0 ) , Colorffcc33 ;
StickLine( O>C , CLOSE , OPEN , 8 , 0 ) , Colorffcc33;
MBAD:=MBP90-ABP90,linethick0,color009999,precision1;
BullB:=(MBP90>0and MBAD>0and ABP90<0)or(MBP90>0and MBAD<0and ABP90>0); BullBSP:=barslast(BullB);
BullB:=Sum(MBP90>0 ,BullBSP+1)=BullBSP+1;
Bullhold:=barslast(BullB=0);
BearS:=(MBP90<0and MBAD>0and ABP90<0)or(MBP90<0and MBAD<0and ABP90>0); BearSSP:=barslast(BearS);
BearS:=Sum(MBP90<0,BearSSP+1)=BearSSP+1;
Bearhold:=barslast(BearS=0);
週期:Bullhold-Bearhold,color006699,precision0,linethick0;//週期從1開始,直到成為0或-1,視為一個完整的倉位計算週期
多買1:=週期=1; //成立則倉位+2
多買2:=週期>0 and Cross(MBP90,50) and MBAD>0;//成立則倉位+2
多買3:=週期>0 and Cross(MBP90,100) and MBAD>0;//成立則倉位+2
多買4:=週期>0 and Cross(MBP90,150) and MBAD>0;//成立則倉位+2
多買5:=週期>0 and Cross(MBP90,200) and MBAD>0;//成立則倉位+2
多買6:=(Cross(MBP90,50) and MBAD<0and ABP90>0) or (Cross(MBP90,100) and MBAD<0and ABP90>0)
or (Cross(MBP90,150) and MBAD<0and ABP90>0) or (Cross(MBP90,200) and MBAD<0and ABP90>0);//成立則倉位+1
多買7:=Cross(MBP90,ABP90) and 週期>0;//成立則倉位+2
多平1:=Cross(ABP90,MBP90);//成立則倉位 -2
多平2:=Cross(200,MBP90)and MBAD<0;//成立則倉位 -2
多平3:=Cross(150,MBP90)and MBAD<0;//成立則倉位 -2
多平4:=Cross(100,MBP90)and MBAD<0;//成立則倉位 -2
多平5:=Cross(50,MBP90)and MBAD<0;//成立則倉位 -2
多平6:=週期<1 and ref(週期,1)>=1;//成立則將本週期剩餘的倉位 歸零(例如前一個倉位4 則將四筆多倉全部平倉)
空賣1:=週期=-1; //成立則倉位-2
空賣2:=週期<0 and Cross(-50,MBP90) and MBAD<0;//成立則倉位-2
空賣3:=週期<0 and Cross(-100,MBP90) and MBAD<0;//成立則倉位-2
空賣4:=週期<0 and Cross(-150,MBP90) and MBAD<0;//成立則倉位-2
空賣5:=週期<0 and Cross(-200,MBP90) and MBAD<0;//成立則倉位-2
空賣6:=(Cross(-50,MBP90) and MBAD>0and ABP90<0) or (Cross(-100,MBP90) and MBAD>0and ABP90<0)
or (Cross(-150,MBP90) and MBAD>0and ABP90<0) or (Cross(-200,MBP90) and MBAD>0and ABP90<0);//成立則倉位-1
空賣7:=Cross(ABP90,MBP90) and 週期<0;//成立則倉位-2
空補1:=Cross(MBP90,ABP90);//成立則倉位 +2
空補2:=Cross(MBP90,-50)and MBAD<0;//成立則倉位 +2
空補3:=Cross(MBP90,-100)and MBAD<0;//成立則倉位 +2
空補4:=Cross(MBP90,-150)and MBAD<0;//成立則倉位 +2
空補5:=Cross(MBP90,-200)and MBAD<0;//成立則倉位 +2
空補6:=週期>-1 and ref(週期,1)>=-1;//成立則將本週期剩餘的倉位 歸零(例如前一個倉位-3 則將三筆空倉作回補)
最長週期:HHV(週期,1000); //希望這個1000可以成為一個變數
如果同時有兩組 多買n 成立,是 +4 嗎? 還是+2
|
|
向版主報告此篇 |  |
|
2022-12-02 14:07 |
|
|
|  |
 |
cgjj
總版主

註冊日期: Oct 2003
來 自:
文章數量: 18139 |
引用: 最初由 tycoon868 發表
+4 哦 !
根據多買條件疊加倉位,直到滿倉10為止
多空雙向都採用這個規則
感謝版大
試試吧,看看是否符合想法
原碼: MQ:=MA(C,10),linethick0,colorff00ff,precision2;
M3:=MA(C,90),linethick0,colorblue,precision2;
MBP90:=MQ-M3,linethick0,precision1;
ABP90:=MA(MBP90,45),precision1;
Partline(1,M3),colorff3300,LINETHICK5;
{
StickLine( O<C , HIGH , LOW , 0.2 , 0 ) , Color3300ff ;
StickLine( O<C , CLOSE , OPEN , 8 , 0 ) , Color3300ff;
StickLine( O=C , HIGH , LOW , 0.2 , 0 ) , Coloryellow ;
StickLine( O=C , CLOSE , OPEN , 8 , 0 ) , Coloryellow ;
StickLine( O>C , HIGH , LOW , 0.2 , 0 ) , Colorffcc33 ;
StickLine( O>C , CLOSE , OPEN , 8 , 0 ) , Colorffcc33;
}
MBAD:=MBP90-ABP90,linethick0,color009999,precision1;
BullB:=(MBP90>0and MBAD>0and ABP90<0)or(MBP90>0and MBAD<0and ABP90>0); BullBSP:=barslast(BullB);
BullB:=Sum(MBP90>0 ,BullBSP+1)=BullBSP+1;
Bullhold:=barslast(BullB=0);
BearS:=(MBP90<0and MBAD>0and ABP90<0)or(MBP90<0and MBAD<0and ABP90>0); BearSSP:=barslast(BearS);
BearS:=Sum(MBP90<0,BearSSP+1)=BearSSP+1;
Bearhold:=barslast(BearS=0);
週期:Bullhold-Bearhold,color006699,precision0,linethick0;//週期從1開始,直到成為0或-1,視為一個完整的倉位計算週期
多買1:=週期=1 or barpos=0; //成立則倉位+2
多買2:=週期>0 and Cross(MBP90,50) and MBAD>0 or barpos=0;//成立則倉位+2
多買3:=週期>0 and Cross(MBP90,100) and MBAD>0 or barpos=0;//成立則倉位+2
多買4:=週期>0 and Cross(MBP90,150) and MBAD>0 or barpos=0;//成立則倉位+2
多買5:=週期>0 and Cross(MBP90,200) and MBAD>0 or barpos=0;//成立則倉位+2
多買6:=(Cross(MBP90,50) and MBAD<0and ABP90>0) or (Cross(MBP90,100) and MBAD<0and ABP90>0)
or (Cross(MBP90,150) and MBAD<0and ABP90>0) or (Cross(MBP90,200) and MBAD<0and ABP90>0) or barpos=0;//成立則倉位+1
多買7:=Cross(MBP90,ABP90) and 週期>0 or barpos=0;//成立則倉位+2
多平1:=Cross(ABP90,MBP90) or barpos=0;//成立則倉位 -2
多平2:=Cross(200,MBP90)and MBAD<0 or barpos=0;//成立則倉位 -2
多平3:=Cross(150,MBP90)and MBAD<0 or barpos=0;//成立則倉位 -2
多平4:=Cross(100,MBP90)and MBAD<0 or barpos=0;//成立則倉位 -2
多平5:=Cross(50,MBP90)and MBAD<0 or barpos=0;//成立則倉位 -2
多平6:=週期<1 and ref(週期,1)>=1 or barpos=0;//成立則將本週期剩餘的倉位 歸零(例如前一個倉位4 則將四筆多倉全部平倉)
空賣1:=週期=-1; //成立則倉位-2
空賣2:=週期<0 and Cross(-50,MBP90) and MBAD<0 or barpos=0;//成立則倉位-2
空賣3:=週期<0 and Cross(-100,MBP90) and MBAD<0 or barpos=0;//成立則倉位-2
空賣4:=週期<0 and Cross(-150,MBP90) and MBAD<0 or barpos=0;//成立則倉位-2
空賣5:=週期<0 and Cross(-200,MBP90) and MBAD<0 or barpos=0;//成立則倉位-2
空賣6:=(Cross(-50,MBP90) and MBAD>0and ABP90<0) or (Cross(-100,MBP90) and MBAD>0and ABP90<0)
or (Cross(-150,MBP90) and MBAD>0and ABP90<0) or (Cross(-200,MBP90) and MBAD>0and ABP90<0) or barpos=0;//成立則倉位-1
空賣7:=Cross(ABP90,MBP90) and 週期<0 or barpos=0;//成立則倉位-2
空補1:=Cross(MBP90,ABP90) or barpos=0;//成立則倉位 +2
空補2:=Cross(MBP90,-50)and MBAD<0 or barpos=0;//成立則倉位 +2
空補3:=Cross(MBP90,-100)and MBAD<0 or barpos=0;//成立則倉位 +2
空補4:=Cross(MBP90,-150)and MBAD<0 or barpos=0;//成立則倉位 +2
空補5:=Cross(MBP90,-200)and MBAD<0 or barpos=0;//成立則倉位 +2
空補6:=週期>-1 and ref(週期,1)>=-1 or barpos=0;//成立則將本週期剩餘的倉位 歸零(例如前一個倉位-3 則將三筆空倉作回補)
Max倉位:=10;
Dir:=SGN(週期); DirLB:=lbound(Dir); StK:=SYSPARAM(2); EdK:=SYSPARAM(3);
StDE:=DATE;StDE:=StDE[StK];
StDE:=numtostr(floor(StDE/10000+1900),0)+numtostr(mod(StDE,10000),0);
StTM:=TIME;StTM:=strright('0000'+numtostr(StTM[StK]/100,0),4);
EXPLAIN(1,'回測起點: '+StDE+' '+StTM);
EdDE:=DATE;EdDE:=EdDE[EdK];
EdDE:=numtostr(floor(EdDE/10000+1900),0)+numtostr(mod(EDDE,10000),0);
EdTM:=TIME;EdTM:=strright('0000'+numtostr(EdTM[EdK]/100,0),4);
EXPLAIN(1,'回測終點: '+EdDE+' '+EdTM);
EXPLAIN(1,'回測K數: '+numtostr(EdK-StK+1,0));
if DirLB>EdK then exit; //不需計算
多買:=(多買1+多買2+多買3+多買4+多買5+多買6+多買7)*(週期>0);
多平:=(多平1+多平2+多平3+多平4+多平5)*(週期>0);
空賣:=(空賣1+空賣2+空賣3+空賣4+空賣5+空賣6+空賣7)*(週期<0);
空補:=(空補1+空補2+空補3+空補4+空補5)*(週期<0);
SWFK:=Dir<>ref(Dir,1) or barpos=lbound(Dir) or (barpos=StK and StK>=lbound(Dir)) or barpos=0;
CC:=C; DoStK:=StK; if DirLB>StK then DoStK:=DirLB;
倉位:Dir*0 NOAXIS;
盈虧:Dir*0 linethick;
for i=DoStK to EdK do begin
if SWFK[i] then begin
Now倉位:=0; Now成本:=0;
end;
倉位[i]:=Now倉位+多買[i]*2-多平[i]*2-空賣[i]*2+空補[i]*2;
if ABS(倉位[i])>10 then 倉位[i]:=SGN(倉位[i])*10;
if Dir[i]=-SGN(倉位[i]) then 倉位[i]:=0;
Now成本:=(倉位[i]-Now倉位)*CC[i]+Now成本;
盈虧[i]:=倉位[i]*CC[i]-Now成本;
Now倉位:=倉位[i];
end;
|
|
向版主報告此篇 |  |
|
2022-12-02 17:09 |
|
|
|  |
本站所有內容未經作者授權禁止轉貼節錄, 發表言論僅供參考勿作為投資決策依據。瀏覽本站請使用 IE 5.5 以上版本, 最佳瀏覽解析度 1024 x 768 全彩。
|
Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.
簡愛洋行 製作 Copyright 2003-. All Rights Reserved. 聯絡我們
|