請版大如何修改......謝謝
請教版大要如何修改......才能避免同根k棒同時擁有進場和平倉的訊號.....還有控價的問題......謝謝
//本公式不需套用於圖
//==============================================
//= 本範例設定運算的商品為上市股票和上櫃股票 =
//==============================================
//【設定計算的等級模式】單值
UMode:=1; {0.一般:採用內定基準價,量採單值決定,耗時較短}
{1.中階:支援自定基準價,量採單值決定,耗時中等}
{2.高階:支援自定基準價,量採數列決定,耗時較長}
//【設定適用的板塊】字串
//決定當前設定適用於那些板塊中的商品
適用板塊:='上市股票;上櫃股票';
//【交易訊號導入】數列
多進訊:=(close-ref(close,4))/ref(close,4)>=25/100;
多平訊:=CLOSE<MA(CLOSE,20);
多頭進:=多進訊; //多頭進場{0.無 1.進場} EnterLong
多頭平:=多平訊; //多頭平倉{0.無 1.平倉} ExitLong
多頭加:=C*0; //多頭加碼{0.無 1.加碼}
多頭減:=C*0; //多頭減碼{0.無 1.減碼}
空頭進:=C*0; //空頭進場{0.無 1.進場} EnterShort
空頭平:=C*0; //空頭平倉{0.無 1.平倉} ExitShort
空頭加:=C*0; //空頭加碼{0.無 1.加碼}
空頭減:=C*0; //空頭減碼{0.無 1.減碼}
//【設定進場訊號處理】單值
控連訊:=0; {0.連續進場訊號不再買進,自定加碼減碼訊號無效}
{1.連續進場訊號不再買進,自定加碼減碼訊號有效}
{2.連續進場訊號加碼買進,自定加碼減碼訊號無效}
//【設定加碼減碼過濾】單值
//若於進場點或平倉點, 加碼訊號和減碼訊號將被視為無訊號
//模式:{0.不過濾, -1.連續相鄰訊號僅保留首根, >0.過濾後面 N 個週期內的相同訊號}
加碼濾:=0; //加碼訊號過濾模式
減碼濾:=0; //減碼訊號過濾模式
//【設定交易價格】數列
//設置多方和空方之進場、平倉、強制平倉、加碼、減碼的交易價格
多控價:REFX(OPEN,1); //多方價格
空控價:REFX(OPEN,1); //空方價格
//【設定交易數量】單值or數列 {非零之正整數}
//一般模式和中階模式僅支援用單值來設定量
//要用數列來設定量,必須將計算等級設為高階模式
多進量:1; //多頭進場數量
多加量:1; //多頭加碼數量
多減量:1; //多頭減碼數量
空進量:多進量; //空頭進場數量
空加量:多加量; //空頭加碼數量
空減量:多減量; //空頭減碼數量
//【設定測試時段】單值
//需為奇狐專屬日期格式(自1900年以來的年月日)
//例如: 2008年03月25日要輸入 1080325 這數值 (20080325-19000000=1080325)
始日:=0; //若輸入零,會自動設為第一根K棒日期
終日:=0; //若輸入零,會自動設為最末根K棒日期
//【設定交易類別】單值
交易類:=1; {1.做多 2.做空 3.雙向}
//【設定平盤以下是否可以放空】單值
平下可空:=0; {0.不可空 1.可空}
//【設定最終倉位處理方式】單值
//※若評測之最終K棒為進場點,系統將視其為無效訊號
算終倉:=0; //評測之最終K棒有持倉且尚未平倉, 該回{0.不計收益 1.平倉計算收益}
//【設定商品每點價值、手續費、稅費】單值
tbsStkValue:=1000; //每點價值
tbsInFee:=0.1425; //正:多進空出手續費率(%) 負:多進空出手續費(元)
tbsInTax:=0; //正:多進空出多買空賣稅率(%) 負:多進空出稅費(元)
tbsOutFee:=0.1425; //正:多出空進手續費率(%) 負:多出空進手續費(元)
tbsOutTax:=0.3; //正:多出空進稅率(%) 負:多出空進稅費(元)
//【設定基準價】數列
//僅中階模式和高階模式支援本項中的設定
//一般模式會採用系統預設值(不受這裡設定的影響)
前控基價:O; //前控盈和前控損計算盈虧使用之基準價
後控基高價:H; //做空:後控盈和後控損計算盈虧使用之基準價
後控基低價:L; //做多:後控盈和後控損計算盈虧使用之基準價
後控基價:C; //未達控盈控損標準且尚未平倉結算時,會用此基準價計算當根K棒報酬
//【設定控盈控損】單值
//控盈衰率: 獲利後,平均盈收率減少達之前最高平均盈收率之 N% 時止利,若設為零值則不控盈
//控盈始率: 已連續 M 個週期的平均盈收率都達到 N% 以上時,才開始做控盈的動作
// M 為[控盈均週]設的數值
//控盈均週: 設定平均盈收率是採用盈收率之 N 個週期的特別均值來做計算(即設定M值)
//控損率: 與開倉價比較,虧損達 N% 以上時止損(若為零則不止損)
//強平週數: 開倉後達 N 個週期,無論盈虧均強制平倉(若為零則不強制)
//註:盈收率和平均盈收率之定義與算法,請詳見本系統手冊中的說明
多控盈衰率:=0;
多控盈始率:=0;
多控盈均週:=3; //多方M值
多控損率:=0;
多強平週數:=0;
空控盈衰率:=多控盈衰率;
空控盈始率:=多控盈始率;
空控盈均週:=多控盈均週; //空方M值
空控損率:=多控損率;
空強平週數:=多強平週數;
//=================================================================
//= 以下的程式碼用於傳遞前面的設定給 [TBS交易評測] 系統公式使用 =
//= 請絕對不要做任何的更動增刪,若有異動將導致評測無法正常運行 =
//=================================================================
多空訊多頭進 or barpos=0)*1000+(空頭進 or barpos=0)*2000;
多空訊:=多空訊+(多頭平 or barpos=0)*100+(空頭平 or barpos=0)*200;
多空訊:=多空訊+(多頭加 or barpos=0)*10+(空頭加 or barpos=0)*20;
多空訊:=多空訊+(多頭減 or barpos=0)*1+(空頭減 or barpos=0)*2;
tbsErrBlk:1 linethick0;
tbsSPos1:=1;
if STRRIGHT(適用板塊,1)<>';' then 適用板塊:=適用板塊+';';
while 1 do begin
tbsSPos2:=STRFIND(適用板塊,';',tbsSPos1);
if tbsSPos2=0 then break;
kk:=strmid(適用板塊,tbsSPos1,tbsSPos2-tbsSPos1);
if stkinblock(stklabel,strmid(適用板塊,tbsSPos1,tbsSPos2-tbsSPos1)) then begin
tbsErrBlk:=0; break;
end;
tbsSPos1:=tbsSPos2+1;
end;
多進量i:=strtonum(numtostr(多進量,0));
多加量i:=strtonum(numtostr(多加量,0));
多減量i:=strtonum(numtostr(多減量,0));
空進量i:=strtonum(numtostr(空進量,0));
空加量i:=strtonum(numtostr(空加量,0));
空減量i:=strtonum(numtostr(空減量,0));
tbsTmp:="TBS系統設置子公式#YEAR"(1,if(tbsErrBlk,-1,UMode),控連訊,加碼濾,減碼濾,多進量i,多加量i,多減量i,空進量i,空加量i,空減量i,始日,終日,交易類,平下可空,算終倉);
tbsTmp:="TBS系統設置子公式#YEAR"(2,tbsStkValue,tbsInFee,tbsInTax,tbsOutFee,tbsOutTax,多控盈衰率,多控盈始率,多控盈均週,多控損率,多強平週數,空控盈衰率,空控盈始率,空控盈均週,空控損率,空強平週數);
//=================================================================
|