均線多和空合一後沒空單

  •   361 
  • 最後發表   阿仁哥  2025 四月 21
阿仁哥 發文於   2025/04/02

均線多和空合一回測後都沒空單,只有空單不知是少了什

// 宣告參數

input: Shortlength(5,"短期均線期數"), Longlength(20,"長期均線期數");

 

// 資料讀取筆數設定

settotalbar(8);

setbarback(maxlist(Shortlength,Longlength,6));

 

// 多方進場策略:短期均線「黃金」交叉長期均線。出場策略:長期均線「死亡」交叉短期均線。

if Average(Close,Shortlength) Cross Above Average(Close,Longlength) then setposition(1);

if Average(Close,Shortlength) Cross Below Average(Close,Longlength) then setposition(0);

// 空方進場策略:長期均線「死亡」交叉短期均線。出場策略:短期均線「黃金」交叉長期均線。

if Average(Close,Shortlength) Cross Below Average(Close,Longlength) then setposition(-1);

if Average(Close,Shortlength) Cross Above Average(Close,Longlength) then setposition(0);

排序方式: 標準 | 最新
虎科大許教授 發文於   2025/04/02

問題出在同一次洗價,放空的setposition不會被執行(同一次洗價只能執行第一個setposition),請改成:

if position<=0 and Average(Close,Shortlength) Cross Above Average(Close,Longlength) then setposition(1);

if position>=0 and Average(Close,Shortlength) Cross Below Average(Close,Longlength) then setposition(-1);

阿仁哥 發文於   2025/04/03

原來如此感謝教授指導

阿仁哥 發文於   2025/04/03

我有照教授的方式做,可以多空交換,但我只想做固定停利,損出場,不想做交叉後出場,要怎做?謝謝

虎科大許教授 發文於   2025/04/03

//假設10點停損停利

if position=0 and Average(Close,Shortlength) Cross Above Average(Close,Longlength) then setposition(1);

if pisition=0 and Average(Close,Shortlength) Cross under Average(Close,Longlength) then setposition(-1);

if position<0 and c>filledAvgPrice+10 or position<0 and c<filledAvgPrice-10 or position>0 and c<filledAvgPrice-10 or position>0 and c>filledAvgPrice+10 then setposition(0,market);

阿仁哥 發文於   2025/04/04

感謝教授指導

阿仁哥 發文於   2025/04/05

請問教授我想做10ma和60ma交叉,可是多次回測都好像是5ma和10ma交叉的樣子 

 

// 宣告參數

input: Shortlength(5,"短期均線期數"), Longlength(60,"長期均線期數");

settotalbar(8);

setbarback(maxlist(Shortlength,Longlength,6));

// 多方進場策略:短期均線「黃金」交叉長期均線。出場策略:長期均線「死亡」交叉短期均線。

if position<=0 and Average(Close,Shortlength) Cross Above Average(Close,Longlength) then setposition(1);

// 空方進場策略:長期均線「死亡」交叉短期均線。出場策略:短期均線「黃金」交叉長期均線。

if position>=0 and Average(Close,Shortlength) Cross Below Average(Close,Longlength) then setposition(-1);

虎科大許教授 發文於   2025/04/05

可能你只是修改程式碼裡面的參數,之前測試使用的參數5期及10期,一直被保留下來。回測之前,應再次確認回測畫面的參數是否正確。

阿仁哥 發文於   2025/04/20

想再請教一下教授,我想設台指期收盤前不再進場,但還是會進場是哪裡有錯?

vars: block_entry(false); 

// === 設定收盤前 60 分鐘禁止進場(夜盤 + 日盤)===

block_entry = (Time >= 0400 and Time < 0500) or (Time >= 1245 and Time < 1345);

 

收盤前平倉

//    收盤前強制清倉

if has_initialized and EnterMarketCloseTime(5) and position <> 0 then begin

    SetPosition(0, MARKET);

    position_cnt = 0;

    has_initialized = false;

    Alert("? 收盤前強制平倉");

虎科大許教授 發文於   2025/04/20

(1) block_entry應改成 (Time >= 040000 and Time < 050000) or (Time >= 124500 and Time < 134500);

(2) block_entry在控制不可進場時,是如何被使用的?

虎科大許教授 發文於   2025/04/21

我不清楚你的has_initialized怎麼設定,若交易的商品是台股且考慮132000強制平倉,可寫成:

if currentTime>=132000 and position<>0 then setposition(0,market);

顯示更多回應 發表回覆
Close