我使用以下交易腳本回測所有上市櫃類股 我寫的跌破10日低停利這個條件都會無效 , 我也看不出語法有什麼問題...
我大概貼一些出來 ,我往下再貼出完整程式碼 , 另外問為什麼回測2千多檔上市櫃類股 會大量失敗? 大量逾時 終止運算?
我在附上我的截圖失敗畫面 ,謝謝各位好心人的回答
low_out(10,"低點出場");
low_point = lowest(low,low_out);
//停利
if position > 0 and filled > 0 and close < low_point then setposition(0,label:="停利");
//參數 input: pos_1(10,"試單(萬)"), pos_2(20,"加碼(萬)"), sstop(4.8," 停損% "), aadd(5," 加碼% "), high_in(8,"日均"), low_out(10,"低點出場"); //變數 vars: order_pos(0), max_pos(0), stop_price(0), add_price(0), min_bar(0), high_point(0), low_point(0); //取資料 min_bar = GetField("收盤價", "30")[1]; high_point = average(close,high_in); //8日均 low_point = lowest(low,low_out); //進場邏輯 condition2 = min_bar <= high_point ; //前一根k condition3 = close >= high_point ; //穿越8日線 condition4 = filledavgPrice*filled*1000 > 10000*pos_1 ; // 判斷是否已加碼 //進場 if position = 0 and filled = 0 and condition2 and condition3 then begin order_pos = IntPortion((pos_1 * 10000) / (close * 1000)); if order_pos > 0 then begin setposition(order_pos,label:="進場"); end; end; //停損邏輯:依加碼與否切換條件 if position > 0 and filled > 0 then begin if not condition4 then begin // 尚未加碼 if close < filledavgPrice * (1 - (sstop * 0.01)) then setposition(0, label:="初始停損"); end else begin // 已加碼 if close < filledavgPrice * (1 - ((sstop / 2) * 0.01)) then setposition(0, label:="加碼後停損"); end; end; //加碼 if position > 0 and filled > 0 and close >= filledavgPrice*(1+(aadd*0.01)) and not condition4 then begin max_pos = IntPortion((pos_2 * 10000) / (close * 1000)); if max_pos > 0 then begin setposition(max_pos,label:="加碼"); end; end; //停利 if position > 0 and filled > 0 and close < low_point then setposition(0,label:="停利"); print("20高",high_point,"10低",low_point);
2 評論