XS 策略雷達 回測無資料 ,附件提供程式碼

  •   309 
  • 最後發表   蓬蘇王杜  2024 十月 02
蓬蘇王杜 發文於   2024/09/29

進場

input: Price(close), LengthHigh(60), LengthMA(60), BiasThreshold(15), VolumeThreshold(500);

 setinputname(1, "比較價別");

 setinputname(2, "60日高點期數");

 setinputname(3, "季線均線期數");

 setinputname(4, "季線乖離率閾值");

 setinputname(5, "五日均量閾值");

 settotalbar(3);

 setbarback(LengthHigh);

 // 定義變數

 var: HighPoint(0), MA60(0), PriceGap(0), AvgVolume(0);

 // 計算60天內的高點

 HighPoint = highest(high, LengthHigh);

 // 計算季線(60天均線)

 MA60 = average(close, LengthMA);

 // 計算乖離率

 PriceGap = (Price - MA60) / MA60 * 100;

 // 計算五日平均成交量

 

AvgVolume = average(volume, 5);

 

// 濾網條件1: 乖離率不能超過15%

 condition1 = absvalue(PriceGap) <= BiasThreshold;

 

 // 濾網條件2: 五日均量大於500張

 condition2 = AvgVolume > VolumeThreshold;

 // 警示條件: 當價格突破60天高點,並且兩個濾網條件都滿足時,觸發警示

 if Price > HighPoint and condition1 and condition2 then 

    ret = 1;

 

 

 

出場

input: LengthHigh(60), ATRLength(14), ATRMultiplier(2), MA20Length(20);

setinputname(1, "60日高點計算期數");

setinputname(2, "ATR計算期數");

setinputname(3, "ATR倍數");

setinputname(4, "20日均線期數");

settotalbar(3);

setbarback(maxlist(LengthHigh, ATRLength, MA20Length));

// 定義變數

var: HighPoint(0), ATRValue(0), ATRThreshold(0), MA20(0);

// 計算60天內的高點

HighPoint = highest(close, LengthHigh);

// 計算ATR

ATRValue = Average(TrueRange, ATRLength);

ATRThreshold = HighPoint - ATRMultiplier * ATRValue; // 計算出場價位(60天高點減去2個ATR)

// 計算20日均線

MA20 = Average(close, MA20Length);

 

// 出場條件1: 當價格跌破60天高點減去2個ATR時,觸發警示

if close < ATRThreshold then 

    ret = 1;

// 出場條件2: 如果價格在上漲,當價格跌破20日均線時,觸發警示

if close > HighPoint and close < MA20 then 

    ret = 1;

排序方式: 標準 | 最新
虎科大許教授 發文於   2024/09/30

進場的Price不可能高於HighPoint。將HighPoint = highest(high, LengthHigh);改成HighPoint = highest(high[1], LengthHigh);

出場的close不可能高於HighPoint。將HighPoint = highest(close, LengthHigh);改成HighPoint = highest(close[1], LengthHigh);

另外,出場不應該有兩個ret=1,用or處理。兩者情境的其中一個情境出現時才ret=1。

 

蓬蘇王杜 發文於   2024/10/01

謝謝許教授 我再試試看

蓬蘇王杜 發文於   2024/10/02

教授 這個 highest(high[1], LengthHigh

high [1] 是指最高價的前一個次高價格?

虎科大許教授 發文於   2024/10/02

high[1]是前一根K棒的最高價,highest(high[1], LengthHigh)代表過去LengthHigh期的最高價。

  • 按讚來自於
  • YEAH301000
發表回覆
Close