奇狐社區論壇 總頁數 (3): « 1 [2] 3 »
在這個頁面顯示本主題全部的 42 個文章

奇狐社區論壇 (http://www.chiefox.com.tw/bbs/index.php)
- 問題交流 (http://www.chiefox.com.tw/bbs/forumdisplay.php?forumid=28)
-- 每天每15分鐘丟銅板決定買訊的公式,目的做資金管理與風險控制的測試用 (http://www.chiefox.com.tw/bbs/showthread.php?threadid=13896)


由 taiwanyang121 在 2010-07-09 23:56 發表:

真的不行要改寫成迴圈嗎???

沒有更好的方法嗎??


由 peter109 在 2010-07-10 16:41 發表:

回覆: [請教]這一行要加在甚麼位置???

引用:
最初由 taiwanyang121 發表
買訊:=c*0;
下單口數:=C-C+1 ;
期初資金:=300000;
for i=1 to datacount do begin
買訊:=IF((RAND(2)-1)=1,1,0) ;
i:=i+15; //作用相等於 Step 15
end;
//買進不超過3次
每日開盤:=date<>ref(date,1) or barpos=1;
每日開盤SP:=barslast(每日開盤);
買訊:=買訊 and Sum(買訊,每日開盤SP+1)<=3 ;
買訊SP:=barslast(買訊);
買成本:ref(c,買訊SP) linethick0 colorwhite;
買停利:=買成本+30;
買停損:=買成本-15;
賣訊:=if ( (買停利<high and 買停利>low) or (買停損<high and 買停損>low),1,0);
賣訊SP:=barslast(賣訊);
賣成本:=ref(c,賣訊SP) linethick0 colorwhite;
盈虧:=IF(下單口數>1,if(賣訊,(賣成本-買成本)*下單口數,0) ,if(賣訊,(賣成本-買成本),0) ) linethick0 coloryellow;
//此段就已可過濾掉已有持單的買訊
CK:=買訊-賣訊;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
買訊:CK=1 coloryellow;
賣訊:CK=-1 colormagenta;

總交易次數:SUM(賣訊,0) linethick0 coloryellow ;
總交易損益:SUM(盈虧,0) linethick0 coloryellow ;
總盈餘:SUM(IF(盈虧>0,盈虧,0),0) linethick0 coloryellow;
總虧損:SUM(IF(盈虧<=0,盈虧,0),0)linethick0 coloryellow; //為0或負
淨利金額: (總交易損益-總交易次數*2)*200 linethick0 coloryellow;
賺錢次數:=SUM(盈虧>0,0) linethick0 coloryellow ;
勝率:=IF(總交易次數>10, 賺錢次數/總交易次數,0) linethick0 coloryellow;
期望值:=IF(總交易次數>10,(總盈餘/總交易次數)*勝率+(總虧損/總交易次數)*(1-勝率)-2,0) linethick0 coloryellow;
目前可用資金:=IF(總交易次數<>0,期初資金+(總交易損益*200),期初資金) linethick0 coloryellow;
最大虧損:=IF(盈虧<最大虧損,盈虧,最大虧損) linethick0 coloryellow;
===============================

之前的OK



QUOTE][i]最初由 taiwanyang121 發表

在公式最後一行下加入以下
下單口數那一行應該是不對,請教要如何放???
為何在解盤不會出現下單口數
==============================

下單口數:=ROUND(IF(總交易次數>10,((((總盈餘/總虧損)*勝率-1)/(總盈餘/總虧損))*目前可用資金)/(最大虧損*200),1)) linethick0 coloryellow;

VERTLINE(期望值<0) LINEDOT COLORWHITE PXUP20;
DRAWTEXT(期望值<0,HIGH,'重新調整交易策略') COLORWHITE PXUP40;
EXPLAINEX(C>0 ,'總交易次數:', 總交易次數, 0, 0) colorred;
EXPLAINEX(C>0 ,'總交易損益:', 總交易損益, 0, 0) colorred;
EXPLAINEX(C>0 ,'總盈餘:', 總盈餘, 0, 0) colorred;
EXPLAINEX(C>0,'總虧損:', 總虧損,0,0) colorred;
EXPLAINEX(C>0 ,'淨利金額:', 淨利金額, 0, 0) colorred;
EXPLAINEX(C>0 ,'賺錢次數:', 賺錢次數, 0, 0) colorred;
EXPLAINEX(C>0 ,'勝率:', 勝率, 0, 0) colorred;
EXPLAINEX(C>0 ,'期望值:', 期望值 ,0,0) colorred;
EXPLAINEX(C>0 ,'目前可用資金:', 目前可用資金, 0, 0) colorred;
EXPLAINEX(C>0 ,'最大虧損:', 最大虧損,0,0) colorred;
EXPLAINEX(C>0 ,'下單口數:', 下單口數,0,0) colorred;
[/QUOTE]



正確的說來
最大虧損:=IF(盈虧<最大虧損,盈虧,最大虧損) linethick0 coloryellow;
這部份就已經錯誤了(在這行以前 沒有任何相關的最大虧損定義)
所以 也沒這部份的解盤
下單口數 當中有使用到 最大虧損 當然也就跟著沒解盤囉

您的下單口數的計算邏輯和我的認知有粉大差異唷
也許您另有其他意義 只是單純的用這字眼而已

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 taiwanyang121 在 2010-07-10 22:04 發表:

改好了!!就是有加碼的下單口數那一行要如何加???

買訊:=c*0;期初資金:=1000000;最大虧損:=0;保證金:=80000;
For i=1 to datacount do begin
買訊[i]:=IF((RAND(2)-1)=1,1,0) ;
i:=i+15; //作用相等於 Step 15
end;
//買進不超過3次
每日開盤:=date<>ref(date,1) or barpos=1;
每日開盤SP:=barslast(每日開盤);
買訊:=買訊 and Sum(買訊,每日開盤SP+1)<=3 ;
買訊SP:=barslast(買訊);
買成本:ref(c,買訊SP) linethick0 colorwhite;
買停利:=買成本+30;
買停損:=買成本-15;
賣訊:=if ( (買停利<high and 買停利>low) or (買停損<high and 買停損>low),1,0);
//此段就已可過濾掉已有持單的買訊
CK:=買訊-賣訊;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
買訊:CK=1 coloryellow;
賣訊:CK=-1 colormagenta;
賣訊SP:=barslast(賣訊);
賣成本:=ref(c,賣訊SP) ;
/////想在下一行改為 盈虧:=IF(下單口數>1,if(賣訊,(賣成本-買成本)*下單口數,0) ,if(賣訊,(賣成本-買成本),0) ) linethick0 coloryellow;
///可以算出加碼的盈虧
盈虧:if(賣訊,(賣成本-買成本),0) linethick0 coloryellow;
//==========================================================================================================
總交易次數:=SUM(賣訊,0) ;
總交易損益:=SUM(盈虧,0) ;
總盈餘:=SUM(IF(盈虧>0,盈虧,0),0) ;
總虧損:=SUM(IF(盈虧<0, -盈虧,0),0) ; //為0或負
淨利金額:=(總交易損益-總交易次數*2)*200 ;
賺錢次數:=SUM(盈虧>0,0) ;
虧錢次數:=SUM(盈虧<0,0) ;
平均獲利:=總盈餘/賺錢次數;
平均虧損:=總虧損/虧錢次數;
勝率:=IF(總交易次數>10, 賺錢次數/總交易次數,0) ;
期望值:=IF(總交易次數>10,(平均獲利)*勝率-(平均虧損*(1-勝率)),0) ;
目前可用資金:=IF(總交易次數<>0,期初資金+總交易損益*200 ,期初資金);
錢不夠:= IF( 目前可用資金<80000,1,0);
最大虧損:=LLV(盈虧,0);
KELLY:=(((平均獲利/平均虧損)+1)*勝率-1)/(平均獲利/平均虧損); ///////////資金管理模型 - Kelly Formula凱利公式 FK = ((WL + 1) * Pw - 1 ) / WL
下單口數:=ROUND( IF( 總交易次數>10 AND (KELLY*目前可用資金)/保證金>1 ,(KELLY*目前可用資金)/保證金,1) ) ;


由 taiwanyang121 在 2010-07-10 22:20 發表:

問題 要參考後幾行程式中的數列 要如何做????

因為要先有盈虧才能算下單口數
10次交易以前每次下單為一口
又在第10次交易後又要開始參考下單口數下單?????想不出來如寫???


由 peter109 在 2010-07-10 23:06 發表:

回覆: 改好了!!就是有加碼的下單口數那一行要如何加???

引用:
最初由 taiwanyang121 發表
買訊:=c*0;期初資金:=1000000;最大虧損:=0;保證金:=80000;
For i=1 to datacount do begin
買訊:=IF((RAND(2)-1)=1,1,0) ;
i:=i+15; //作用相等於 Step 15
end;
//買進不超過3次
每日開盤:=date<>ref(date,1) or barpos=1;
每日開盤SP:=barslast(每日開盤);
買訊:=買訊 and Sum(買訊,每日開盤SP+1)<=3 ;
買訊SP:=barslast(買訊);
買成本:ref(c,買訊SP) linethick0 colorwhite;
買停利:=買成本+30;
買停損:=買成本-15;
賣訊:=if ( (買停利<high and 買停利>low) or (買停損<high and 買停損>low),1,0);
//此段就已可過濾掉已有持單的買訊
CK:=買訊-賣訊;
CK:=ref(CK,barslast(CK<>0));
CK:=if(CK<>ref(CK,1) or barpos=lbound(CK),CK,0);
買訊:CK=1 coloryellow;
賣訊:CK=-1 colormagenta;
賣訊SP:=barslast(賣訊);
賣成本:=ref(c,賣訊SP) ;
/////想在下一行改為 盈虧:=IF(下單口數>1,if(賣訊,(賣成本-買成本)*下單口數,0) ,if(賣訊,(賣成本-買成本),0) ) linethick0 coloryellow;
///可以算出加碼的盈虧
盈虧:if(賣訊,(賣成本-買成本),0) linethick0 coloryellow;
//==========================================================================================================
總交易次數:=SUM(賣訊,0) ;
總交易損益:=SUM(盈虧,0) ;
總盈餘:=SUM(IF(盈虧>0,盈虧,0),0) ;
總虧損:=SUM(IF(盈虧<0, -盈虧,0),0) ; //為0或負
淨利金額:=(總交易損益-總交易次數*2)*200 ;
賺錢次數:=SUM(盈虧>0,0) ;
虧錢次數:=SUM(盈虧<0,0) ;
平均獲利:=總盈餘/賺錢次數;
平均虧損:=總虧損/虧錢次數;
勝率:=IF(總交易次數>10, 賺錢次數/總交易次數,0) ;
期望值:=IF(總交易次數>10,(平均獲利)*勝率-(平均虧損*(1-勝率)),0) ;
目前可用資金:=IF(總交易次數<>0,期初資金+總交易損益*200 ,期初資金);
錢不夠:= IF( 目前可用資金<80000,1,0);
最大虧損:=LLV(盈虧,0);
KELLY:=(((平均獲利/平均虧損)+1)*勝率-1)/(平均獲利/平均虧損); ///////////資金管理模型 - Kelly Formula凱利公式 FK = ((WL + 1) * Pw - 1 ) / WL
下單口數:=ROUND( IF( 總交易次數>10 AND (KELLY*目前可用資金)/保證金>1 ,(KELLY*目前可用資金)/保證金,1) ) ;



引用:
[i]最初由 taiwanyang121 發表

因為要先有盈虧才能算下單口數
10次交易以前每次下單為一口
又在第10次交易後又要開始參考下單口數下單?????想不出來如寫???



下單口數A:=ROUND( IF( 總交易次數>10 AND (KELLY*目前可用資金)/保證金>1 ,(KELLY*目前可用資金)/保證金,1) ) ;
下單口數:=IF(總交易次數<10 OR 下單口數A<2,1,下單口數A);

然後 再把相關的計算依據實際的下單口數重新計算一次

加碼/減碼單 是可以/應該列入考慮
繼續加油

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 taiwanyang121 在 2010-07-11 01:03 發表:

請參倉考公式中的那行如何改成加碼的那一行??

/////想在下一行改為 盈虧:=IF(下單口數>1,if(賣訊,(賣成本-買成本)*下單口數,0) ,if(賣訊,(賣成本-買成本),0) ) linethick0 coloryellow;
///可以算出加碼的盈虧
盈虧:if(賣訊,(賣成本-買成本),0) linethick0 coloryellow;
//==========================================================================================================
請參倉考公式中的那行如何改成加碼的那一行??他在研加碼在後沒加到??


由 peter109 在 2010-07-11 01:37 發表:

回覆: 請參倉考公式中的那行如何改成加碼的那一行??

引用:
最初由 taiwanyang121 發表
/////想在下一行改為 盈虧:=IF(下單口數>1,if(賣訊,(賣成本-買成本)*下單口數,0) ,if(賣訊,(賣成本-買成本),0) ) linethick0 coloryellow;
///可以算出加碼的盈虧
盈虧:if(賣訊,(賣成本-買成本),0) linethick0 coloryellow;
//==========================================================================================================
請參倉考公式中的那行如何改成加碼的那一行??他在研加碼在後沒加到??



放在那位置 當中卻有尚未定義的 下單口數
可能嗎?
一般加碼會有加碼的條件

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 taiwanyang121 在 2010-07-11 02:02 發表:

舉例

一般情形是交易訊號出現時你會決定是試單(空手時) 或有單時的加碼, 不會去算當你空手時若發生試單的情況之前的的勝率與期望值對嗎???
所以當你空手發生交易訊號時你如果你的期望值變為負的表示你每交易一筆很容易虧損你會下單嗎???應該是減碼下試單??這裡指的不是加碼單的情況喔!!!


由 peter109 在 2010-07-11 02:23 發表:

哪筆單子是 試單或是加碼單
從目前指標中看不出

只看指標內容
您的交易系統要由您決定
不想去猜不同的定義

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 taiwanyang121 在 2010-07-11 02:38 發表:

問題是盈虧的計算式在你匴好下單口數之前

問題是盈虧的計算式在你匴好下單口數之前
======================================
/////想在下一行改為 盈虧:=IF(下單口數>1,if(賣訊,(賣成本-買成本)*下單口數,0) ,if(賣訊,(賣成本-買成本),0) ) linethick0 coloryellow;
///可以算出加碼的盈虧????????
盈虧:if(賣訊,(賣成本-買成本),0) linethick0 coloryellow;
.....
...
....
下單口數A:=ROUND( IF( 總交易次數>10 AND (KELLY*目前可用資金)/保證金>1 ,(KELLY*目前可用資金)/保證金,1) ) ;
下單口數:=IF(總交易次數<10 OR 下單口數A<2,1,下單口數A);


由 taiwanyang121 在 2010-07-11 02:40 發表:

目前此公式都只有試單

所以都要參考下單口數


由 taiwanyang121 在 2010-07-11 03:04 發表:

如果將後面一段搬到盈虧之前又會出現""盈虧未定義"

買訊:CK=1 coloryellow;
賣訊:CK=-1 colormagenta;
賣訊SP:=barslast(賣訊);
賣成本:=ref(c,賣訊SP) ;
//=======================================================
總交易次數:=SUM(賣訊,0) ;
總交易損益:=SUM(盈虧,0) ;
總盈餘:=SUM(IF(盈虧>0,盈虧,0),0) ;
總虧損:=SUM(IF(盈虧<0, -盈虧,0),0) ; //為0或負
淨利金額:=(總交易損益-總交易次數*2)*200 ;
賺錢次數:=SUM(盈虧>0,0) ;
虧錢次數:=SUM(盈虧<0,0) ;
平均獲利:=總盈餘/賺錢次數;
平均虧損:=總虧損/虧錢次數;
勝率:=IF(總交易次數>10, 賺錢次數/總交易次數,0) ;
期望值:=IF(總交易次數>10,(平均獲利)*勝率-(平均虧損*(1-勝率)),0) ;
目前可用資金:=IF(總交易次數<>0,期初資金+總交易損益*200 ,期初資金);
錢不夠:= IF( 目前可用資金<80000,1,0);
最大虧損:=LLV(盈虧,0);
KELLY:=(((平均獲利/平均虧損)+1)*勝率-1)/(平均獲利/平均虧損); //資金管理模型 - Kelly Formula凱利公式 FK = ((WL + 1) * Pw - 1 ) / WL
下單口數A:=ROUND( IF( 總交易次數>10 AND (KELLY*目前可用資金)/保證金>1 ,(KELLY*目前可用資金)/保證金,1) ) ;
下單口數:=IF(總交易次數<10 OR 下單口數A<2,1,下單口數A);

/////想在下一行改為 盈虧:if(賣訊,(賣成本-買成本)*下單口數,0) linethick0 coloryellow;
///可以算出加碼的盈虧????????
盈虧:if(賣訊,(賣成本-買成本)*下單口數,0) linethick0 coloryellow;
//==============================================================


由 taiwanyang121 在 2010-07-11 03:08 發表:

如果改成迴圈

For I=1 to Datacount do begin
If 在倉口數=0 and 多空=0 then begin //如果空手且觀望時出現訊號時計算調整風控與資金
For j=1 to i do begin
總交易次數[i]:if (賣訊[j]<>0,總交易次數[i]+1,總交易次數[i]) linethick0 coloryellow ;
總賺錢次數[i]:if (盈虧[j]>0,賺錢次數[i]+1,賺錢次數[i]) linethick0 coloryellow ;
總虧錢次數[i]:總交易次數[i]-總賺錢次數[i];
總盈餘[i]:if(盈虧[j]>0,總盈餘[i]+盈虧[j],總盈餘[i]) linethick0 coloryellow;
總虧損[i]:if(盈虧[j]<0,總虧損[i]+盈虧[j],總虧損[i])linethick0 coloryellow; //為負
總交易損益[i]:總盈餘[i]+總虧損[i] linethick0 coloryellow ;
end;
...
..
..
會很麻煩


由 peter109 在 2010-07-11 10:49 發表:

回覆: 問題是盈虧的計算式在你匴好下單口數之前

引用:
最初由 taiwanyang121 發表

目前此公式都只有試單

問題是盈虧的計算式在你匴好下單口數之前
======================================
/////想在下一行改為 盈虧:=IF(下單口數>1,if(賣訊,(賣成本-買成本)*下單口數,0) ,if(賣訊,(賣成本-買成本),0) ) linethick0 coloryellow;
///可以算出加碼的盈虧????????
盈虧:if(賣訊,(賣成本-買成本),0) linethick0 coloryellow;
.....
...
....
下單口數A:=ROUND( IF( 總交易次數>10 AND (KELLY*目前可用資金)/保證金>1 ,(KELLY*目前可用資金)/保證金,1) ) ;
下單口數:=IF(總交易次數<10 OR 下單口數A<2,1,下單口數A);

所以都要參考下單口數



引用:
最初由 taiwanyang121 發表
買訊:CK=1 coloryellow;
賣訊:CK=-1 colormagenta;
賣訊SP:=barslast(賣訊);
賣成本:=ref(c,賣訊SP) ;
//=======================================================
總交易次數:=SUM(賣訊,0) ;
總交易損益:=SUM(盈虧,0) ;
總盈餘:=SUM(IF(盈虧>0,盈虧,0),0) ;
總虧損:=SUM(IF(盈虧<0, -盈虧,0),0) ; //為0或負
淨利金額:=(總交易損益-總交易次數*2)*200 ;
賺錢次數:=SUM(盈虧>0,0) ;
虧錢次數:=SUM(盈虧<0,0) ;
平均獲利:=總盈餘/賺錢次數;
平均虧損:=總虧損/虧錢次數;
勝率:=IF(總交易次數>10, 賺錢次數/總交易次數,0) ;
期望值:=IF(總交易次數>10,(平均獲利)*勝率-(平均虧損*(1-勝率)),0) ;
目前可用資金:=IF(總交易次數<>0,期初資金+總交易損益*200 ,期初資金);
錢不夠:= IF( 目前可用資金<80000,1,0);
最大虧損:=LLV(盈虧,0);
KELLY:=(((平均獲利/平均虧損)+1)*勝率-1)/(平均獲利/平均虧損); //資金管理模型 - Kelly Formula凱利公式 FK = ((WL + 1) * Pw - 1 ) / WL
下單口數A:=ROUND( IF( 總交易次數>10 AND (KELLY*目前可用資金)/保證金>1 ,(KELLY*目前可用資金)/保證金,1) ) ;
下單口數:=IF(總交易次數<10 OR 下單口數A<2,1,下單口數A);

/////想在下一行改為 盈虧:if(賣訊,(賣成本-買成本)*下單口數,0) linethick0 coloryellow;
///可以算出加碼的盈虧????????
盈虧:if(賣訊,(賣成本-買成本)*下單口數,0) linethick0 coloryellow;
//==============================================================



引用:
最初由 taiwanyang121 發表
For I=1 to Datacount do begin
If 在倉口數=0 and 多空=0 then begin //如果空手且觀望時出現訊號時計算調整風控與資金
For j=1 to i do begin
總交易次數[i]:if (賣訊[j]<>0,總交易次數[i]+1,總交易次數[i]) linethick0 coloryellow ;
總賺錢次數[i]:if (盈虧[j]>0,賺錢次數[i]+1,賺錢次數[i]) linethick0 coloryellow ;
總虧錢次數[i]:總交易次數[i]-總賺錢次數[i];
總盈餘[i]:if(盈虧[j]>0,總盈餘[i]+盈虧[j],總盈餘[i]) linethick0 coloryellow;
總虧損[i]:if(盈虧[j]<0,總虧損[i]+盈虧[j],總虧損[i])linethick0 coloryellow; //為負
總交易損益[i]:總盈餘[i]+總虧損[i] linethick0 coloryellow ;
end;
...
..
..
會很麻煩



老大
一套好的交易系統 能夠讓自己賺錢的交易系統
再麻煩也要做

您放棄已知的HTS 重新學習奇狐語法 不麻煩?
您單純提出問題 就有人回答 回答的人不會嫌麻煩?

只能說 如何避免不必要的
個人的經驗是
只要電腦跑得動 一開始就將所有/需要的做完整架構
否則 日後的修改會更麻煩

以您思路的慎密性
相信您會完成
(不要告訴我 您不打算完成這交易系統 呵呵)

__________________
至誠能勝天下至偽
至拙能勝天下至巧


由 taiwanyang121 在 2010-07-11 21:54 發表:

誰有控可以將最近的元碼改成如下???

如果BBI=EMA 5,10,25,50 這四條均線的均價 ,
當EMA200 均線 小於 BBI 則 隨機指下多單
若大於 BBI 指下空單 其他條件相同


全部時間均為台灣時間, 現在時間為07:09 總頁數 (3): « 1 [2] 3 »
在這個頁面顯示本主題全部的 42 個文章


Powered by: vBulletin Version 2.3.0 - Copyright©2000-, Jelsoft Enterprises Limited.

簡愛洋行 製作 Copyright 2003-. All Rights Reserved.