奇狐社區論壇 總頁數 (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)


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

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

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



//HOPE THIS WILL BE ALL!

M1:=EMA(C,5); M2:=EMA(C,10); M3:=EMA(C,25); M4:=EMA(C,50); M5:EMA(C,200);
BBI: (M1+M2+M3+M4)/4;
X01:=CROSS(BBI,EMA(C,200));
X02:=BARSLAST(X01);
X03:=REF(BARPOS,X02);

X11:=CROSS(EMA(C,200),BBI);
X12:=BARSLAST(X11);
X13:=REF(BARPOS,X12);

X21:=IF(X12>X02,1,0);

For i=1 to datacount do begin
IF X21[i] THEN BEGIN
買訊[i]:=IF((RAND(2)-1)=1,1,0) ;
i:=i+15; //作用相等於 Step 15
END;
end;

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


由 taiwanyang121 在 2010-07-11 23:55 發表:

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

好像不行 訊號不見
BBI 在EMA200上只下多單
BBI 在EMA200下只下空單
其他條件不變
==============================
買訊:=c*0;期初資金:=1000000;最大虧損:=0;保證金:=80000;

M1:=EMA(C,5); M2:=EMA(C,10); M3:=EMA(C,25); M4:=EMA(C,50); M5:EMA(C,200);
BBI: (M1+M2+M3+M4)/4;
X01:=CROSS(BBI,EMA(C,200));
X02:=BARSLAST(X01);
X03:=REF(BARPOS,X02);

X11:=CROSS(EMA(C,200),BBI);
X12:=BARSLAST(X11);
X13:=REF(BARPOS,X12);

X21:=IF(X12>X02,1,0);

For i=1 to datacount do begin
IF X21[i] THEN BEGIN
買訊[i]:=IF((RAND(2)-1)=1,1,0) ;
i:=i+15; //作用相等於 Step 15
END;
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(賣訊,(賣成本-買成本),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
下單口數A:=ROUND( IF( 總交易次數>10 AND (KELLY*目前可用資金)/保證金>1 ,(KELLY*目前可用資金)/保證金,1) ) ;
下單口數:=IF(總交易次數<10 OR 下單口數A<2,1,下單口數A);

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 ,'平均獲利:', 平均獲利, 2, 0) colorred;
EXPLAINEX(C>0,'平均虧損:', 平均虧損,2,0) colorred;
EXPLAINEX(C>0 ,'淨利金額:', 淨利金額, 2, 0) colorred;
EXPLAINEX(C>0 ,'勝率:', 勝率, 2, 0) colorred;
EXPLAINEX(C>0 ,'期望值:', 期望值 ,2,0) colorred;
EXPLAINEX(C>0 ,'目前可用資金:', 目前可用資金, 0, 0) colorred;
EXPLAINEX(C>0 ,'最大虧損:', 最大虧損,0,0) colorred;
EXPLAINEX(C>0 ,'KELLY:', KELLY, 4,0) colorred;
EXPLAINEX(C>0 ,'下單口數:', 下單口數, 2,0) colorred;
EXPLAINEX(C>0 ,'錢不夠:', 錢不夠,0,0) colorred;


由 peter109 在 2010-07-12 00:45 發表:

拍謝 有些細節沒注意到
解盤的值會都成為零 主因您使用的主軸200 對分鐘K來說 有些大了
我在一分鐘週期 將200改為100就有顯示了

M1:=EMA(C,5); M2:=EMA(C,10); M3:=EMA(C,25); M4:=EMA(C,50); M5:EMA(C,200);
BBI: (M1+M2+M3+M4)/4;
X01:=CROSS(BBI,M5);
VERTLINE(X01);
X02:=BARSLAST(X01);
X03:=REF(BARPOS,X02);

X11:=CROSS(M5,BBI);
X12:=BARSLAST(X11);
X13:=REF(BARPOS,X12);

For i=700 to datacount do begin
IF M5[i]<BBI[i] THEN BEGIN
買訊[i]:=IF((RAND(2)-1)=1,1,0) ;
i:=i+15; //作用相等於 Step 15
// IF i>=X13[i] THEN BREAK; <<---- 刪除
END;
end;

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


由 taiwanyang121 在 2010-07-12 01:43 發表:

實驗結果證明若用均線看到多頭作多一定虧錢啦

如果看到多頭時作多已經來不及了!!!!


由 taiwanyang121 在 2010-07-16 10:09 發表:

發現問題??請教總版主大大

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

1. 如果有重複買訊, 雖然下面以過濾到有持單的買訊但是買成本在過濾之前會變動如何解決????
??????


由 taiwanyang121 在 2010-07-16 10:29 發表:

如何解決????

1. 如果有重複買訊, 雖然下面以過濾到有持單的買訊但是買成本在過濾之前會變動如何解決????


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

取第一次買訊的成本?
如是
x01:=sum(買訊,barslast(賣訊)+1)=1;
x02:=x01 and ref(x01,1)=0;

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


由 taiwanyang121 在 2010-07-16 11:56 發表:

還有一個問題

就是當最號一行

下單口數:=IF(總交易次數<5 OR 下單口數A<2,1,下單口數A);
算出下單口數後如何在下次出現買訊後的賣訊時用他作為計算盈虧??


由 taiwanyang121 在 2010-07-16 12:08 發表:

我想了兩天了


一定要改為FOR LOOP 嗎??


由 cgjj 在 2010-07-16 14:49 發表:

回覆: 我想了兩天了

引用:
最初由 taiwanyang121 發表

一定要改為FOR LOOP 嗎??



在 賣成本:=ref(c,賣訊SP) ; 的這行下面插入這兩行試試
買訊SP:=barslast(買訊);
買成本:=ref(c,買訊SP);

若仍不是您要的結果, 或許可能需以迴圈處理了


由 taiwanyang121 在 2010-07-16 15:06 發表:

請教版主

謝謝您的解答 但問題不是那個
當公式執行到最後一行
下單口數:=IF(總交易次數<5 OR 下單口數A<2,1,下單口數A);

因為前面的是用一口在計算盈虧 當交易超過十次後算出的勝率與期望值會開始楷變下單口數可是前面還是用一口計算盈虧

我要如何讓他改變下單口數 或不同口數的計算盈虧

希望我表達的你能明白????


由 cgjj 在 2010-07-17 15:56 發表:

回覆: 請教版主

引用:
最初由 taiwanyang121 發表
謝謝您的解答 但問題不是那個
當公式執行到最後一行
下單口數:=IF(總交易次數<5 OR 下單口數A<2,1,下單口數A);

因為前面的是用一口在計算盈虧 當交易超過十次後算出的勝率與期望值會開始楷變下單口數可是前面還是用一口計算盈虧

我要如何讓他改變下單口數 或不同口數的計算盈虧

希望我表達的你能明白????



盈虧 決定 KELLY
KELLY 決定 下單口數
而計算盈虧又要隨下單口數
您想的狀況應該是會有類似 EMA 之 Y' 需用前次值累算的狀況
可能必需改採取迴圈處理, 不能採數列對數列運算
因為數列對數列運算是一次算完所有K棒, 再續算接下來的式子
故此狀況用迴圈處理較適合


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


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

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