├── README.md ├── 函數 ├── Array函數 │ ├── ArrayLinearRegSlope.xs │ ├── ArrayMASeries.xs │ ├── ArraySeries.xs │ └── ArrayXDaySeries.xs ├── 交易相關 │ ├── CalcVWAPDistribution.xs │ └── EnterMarketCloseTime.xs ├── 價格取得 │ ├── AvgPrice.xs │ ├── CloseD.xs │ ├── CloseH.xs │ ├── CloseM.xs │ ├── CloseQ.xs │ ├── CloseW.xs │ ├── CloseY.xs │ ├── FastHighest.xs │ ├── FastLowest.xs │ ├── HighD.xs │ ├── HighH.xs │ ├── HighM.xs │ ├── HighQ.xs │ ├── HighW.xs │ ├── HighY.xs │ ├── Highest.xs │ ├── LowD.xs │ ├── LowH.xs │ ├── LowM.xs │ ├── LowQ.xs │ ├── LowW.xs │ ├── LowY.xs │ ├── Lowest.xs │ ├── OpenD.xs │ ├── OpenH.xs │ ├── OpenM.xs │ ├── OpenQ.xs │ ├── OpenW.xs │ ├── OpenY.xs │ ├── TrueHigh.xs │ ├── TrueLow.xs │ ├── TypicalPrice.xs │ └── WeightedClose.xs ├── 價格計算 │ ├── Average.xs │ ├── AvgDeviation.xs │ ├── DwLimit.xs │ ├── EMA.xs │ ├── Range.xs │ ├── RateOfChange.xs │ ├── ReadTicks.xs │ ├── Summation.xs │ ├── TrueRange.xs │ ├── UpLimit.xs │ ├── WMA.xs │ └── XAverage.xs ├── 價格關係 │ ├── Extremes.xs │ ├── ExtremesArray.xs │ ├── FastHighestBar.xs │ ├── FastLowestBar.xs │ ├── HighDays.xs │ ├── HighestArray.xs │ ├── HighestBar.xs │ ├── LowDays.xs │ ├── LowestArray.xs │ ├── LowestBar.xs │ ├── MoM.xs │ ├── NthExtremes.xs │ ├── NthExtremesArray.xs │ ├── NthHighest.xs │ ├── NthHighestArray.xs │ ├── NthHighestBar.xs │ ├── NthLowest.xs │ ├── NthLowestArray.xs │ ├── NthLowestBar.xs │ ├── OHLCPeriodsAgo.xs │ ├── QoQ.xs │ ├── SimpleHighest.xs │ ├── SimpleHighestBar.xs │ ├── SimpleLowest.xs │ ├── SimpleLowestBar.xs │ └── YoY.xs ├── 技術指標 │ ├── ACC.xs │ ├── ADI.xs │ ├── ADO.xs │ ├── AR.xs │ ├── ATR.xs │ ├── BR.xs │ ├── Bias.xs │ ├── BiasDiff.xs │ ├── BollingerBand.xs │ ├── BollingerBandWidth.xs │ ├── CCI.xs │ ├── CV.xs │ ├── CommodityChannel.xs │ ├── DIF.xs │ ├── DMO.xs │ ├── DPO.xs │ ├── D_Value.xs │ ├── DirectionMovement.xs │ ├── EMP.xs │ ├── ERC.xs │ ├── HL_Osc.xs │ ├── KO成交量擺盪指標.xs │ ├── KST確認指標.xs │ ├── K_Value.xs │ ├── KeltnerLB.xs │ ├── KeltnerMA.xs │ ├── KeltnerUB.xs │ ├── MACD.xs │ ├── MAM.xs │ ├── MA_Osc.xs │ ├── MI.xs │ ├── MO.xs │ ├── MTM.xs │ ├── MTM_MA.xs │ ├── Momentum.xs │ ├── PSY.xs │ ├── PVC.xs │ ├── PercentB.xs │ ├── PercentR.xs │ ├── Q指標.xs │ ├── RC.xs │ ├── RSI.xs │ ├── RSV.xs │ ├── SAR.xs │ ├── Stochastic.xs │ ├── TRIX.xs │ ├── TechScore.xs │ ├── TurnOverRate.xs │ ├── VA.xs │ ├── VAO.xs │ ├── VHF.xs │ ├── VPT.xs │ ├── VR.xs │ ├── VVA.xs │ └── WAD.xs ├── 排行 │ ├── 乖離率排行榜.xs │ ├── 外資連續買超排行榜.xs │ ├── 收盤價排行榜.xs │ ├── 收盤均價排行榜.xs │ ├── 漲幅排行榜.xs │ └── 跌幅排行榜.xs ├── 日期相關 │ ├── BarsLast.xs │ ├── DateTime.xs │ ├── DaysToExpiration.xs │ ├── FormatMQY.xs │ ├── GetBarOffsetForYears.xs │ ├── GetLastTradeDate.xs │ ├── LastDayOfMonth.xs │ └── NthDayOfMonth.xs ├── 期權相關 │ ├── BSDelta.xs │ ├── BSGamma.xs │ ├── BSPrice.xs │ ├── BSTheta.xs │ ├── BSVega.xs │ ├── BlackScholesModel.xs │ ├── DaysToExpirationTF.xs │ ├── HVolatility.xs │ ├── IVolatility.xs │ └── NormSDist.xs ├── 統計分析 │ ├── CoefficientR.xs │ ├── Correlation.xs │ ├── Covariance.xs │ ├── RSquare.xs │ ├── StandardDev.xs │ └── VariancePS.xs ├── 趨勢分析 │ ├── Angle.xs │ ├── Angleprice.xs │ ├── DownTrend.xs │ ├── LinearReg.xs │ ├── LinearRegAngle.xs │ ├── LinearRegSlope.xs │ ├── NDaysAngle.xs │ ├── SwingHigh.xs │ ├── SwingHighBar.xs │ ├── SwingLow.xs │ ├── SwingLowBar.xs │ ├── TSELSindex.xs │ ├── TSEMFI.xs │ ├── TimeSeriesForecast.xs │ ├── UpShadow.xs │ └── UpTrend.xs ├── 跨頻率 │ ├── xfMin_CrossOver.xs │ ├── xfMin_CrossUnder.xs │ ├── xfMin_DirectionMovement.xs │ ├── xfMin_EMA.xs │ ├── xfMin_GetBoolean.xs │ ├── xfMin_GetCurrentBar.xs │ ├── xfMin_GetDTValue.xs │ ├── xfMin_GetValue.xs │ ├── xfMin_MACD.xs │ ├── xfMin_PercentR.xs │ ├── xfMin_RSI.xs │ ├── xfMin_Stochastic.xs │ ├── xfMin_WeightedClose.xs │ ├── xfMin_XAverage.xs │ ├── xf_CrossOver.xs │ ├── xf_CrossUnder.xs │ ├── xf_DirectionMovement.xs │ ├── xf_EMA.xs │ ├── xf_GetBoolean.xs │ ├── xf_GetCurrentBar.xs │ ├── xf_GetDTValue.xs │ ├── xf_GetValue.xs │ ├── xf_MACD.xs │ ├── xf_PercentR.xs │ ├── xf_RSI.xs │ ├── xf_Stochastic.xs │ ├── xf_WeightedClose.xs │ ├── xf_XAverage.xs │ └── xfmin_MTM.xs ├── 邏輯判斷 │ ├── AverageIF.xs │ ├── CountIF.xs │ ├── CountIfARow.xs │ ├── CrossOver.xs │ ├── CrossUnder.xs │ ├── Filter.xs │ ├── IFF.xs │ ├── IsXLOrder.xs │ ├── IsXOrder.xs │ ├── SummationIF.xs │ ├── TrueAll.xs │ ├── TrueAny.xs │ └── TrueCount.xs └── 量能相關 │ ├── DiffBidAskVolumeLxL.xs │ ├── DiffBidAskVolumeXL.xs │ ├── DiffTradeVolumeAtAskBid.xs │ └── DiffUpDownVolume.xs ├── 指標 ├── XQ技術指標 │ ├── 3-6 乖離率.xs │ ├── 3-6乖離率轉折點.xs │ ├── ACC (加速量指標).xs │ ├── AD-Osc(聚散擺盪指標).xs │ ├── ADI (累積分配指標).xs │ ├── AR 指標.xs │ ├── ATR (平均真實區域).xs │ ├── BBand width (布林通道寬度指標).xs │ ├── BIAS 乖離率.xs │ ├── BR 指標.xs │ ├── CCI (商品通道指標).xs │ ├── DMI (趨向指標).xs │ ├── DMI-Osc(趨向擺盪線).xs │ ├── DPO (非趨勢價格擺盪指標).xs │ ├── HL-Osc (高低價擺盪指標).xs │ ├── KD 隨機指標.xs │ ├── KDJ 隨機指標.xs │ ├── MA-Osc (移動平均線擺盪指標).xs │ ├── MACD 指標.xs │ ├── MAM(移動平均動量指標).xs │ ├── MI(質量指標).xs │ ├── MO(運動量擺盪指標).xs │ ├── MTM(動量指標).xs │ ├── PSY 心理線.xs │ ├── RC(價格變動率指標).xs │ ├── RSI指標.xs │ ├── RSV 指標.xs │ ├── TRIX(三重指數平滑移動平均指標).xs │ ├── VHF(垂直水平過濾指標).xs │ ├── WAD 威廉多空力度線.xs │ ├── 威廉指標.xs │ └── 快速KD 隨機指標.xs ├── XQ量能指標 │ ├── CV(積量指標).xs │ ├── CVI(累計成交量指標).xs │ ├── EMV(簡易波動指標).xs │ ├── MFI(資金流向指標).xs │ ├── NVI(負量指標).xs │ ├── OBV(能量潮指標).xs │ ├── PVC(成交量變動百分比指標).xs │ ├── PVI(正量指標).xs │ ├── PVT(價量趨勢指標).xs │ ├── TAPI(每點成交值指標).xs │ ├── VA(成交量累積散佈指標).xs │ ├── VAOsc(成交量累積散佈擺盪指標).xs │ ├── VR(成交量比率指標).xs │ ├── VRC(成交量變動指標).xs │ ├── VVA指標.xs │ ├── 投資建議目標價潛在獲利率.xs │ ├── 投資建議評級(%).xs │ └── 新聞分數.xs ├── 主圖指標 │ ├── BBand軌道線.xs │ ├── CDP.xs │ ├── EMA.xs │ ├── SAR.xs │ ├── ZigZag.xs │ ├── 修正式移動平均線.xs │ ├── 個股儀表板.xs │ ├── 內盤成本線.xs │ ├── 唐奇安通道.xs │ ├── 外盤成本線.xs │ ├── 外資均價線.xs │ ├── 大戶成本線.xs │ ├── 寶塔線.xs │ ├── 平均K線.xs │ ├── 平均波幅通道.xs │ ├── 投信均價線.xs │ ├── 投資建議目標價.xs │ ├── 散戶成本線.xs │ ├── 樂活五線譜.xs │ ├── 樂活五線譜_趨勢線.xs │ ├── 權益線分析.xs │ ├── 當日成本線.xs │ ├── 肯特納通道.xs │ ├── 自營商均價線.xs │ ├── 處置期間.xs │ ├── 融券均價線.xs │ ├── 融資均價線.xs │ ├── 趨勢線.xs │ └── 開盤第N根的每日高低價線.xs ├── 即時籌碼 │ ├── 分時大戶買賣力(金額).xs │ ├── 分時大戶買賣力.xs │ ├── 分時散戶買賣力(金額).xs │ ├── 分時散戶買賣力.xs │ ├── 分時漲跌成交量.xs │ ├── 分時買賣力.xs │ ├── 大戶散戶籌碼流向(金額).xs │ ├── 大戶散戶籌碼流向.xs │ ├── 大戶買賣力(金額).xs │ ├── 大戶買賣力.xs │ ├── 散戶買賣力(金額).xs │ ├── 散戶買賣力.xs │ ├── 流動大戶買賣力.xs │ ├── 漲跌成交量.xs │ ├── 自訂大戶買賣力.xs │ ├── 自訂散戶買賣力.xs │ └── 買賣力.xs ├── 大盤指標 │ ├── ALF亞歷山大過濾指標.xs │ ├── BBand寬度指標.xs │ ├── ETF成交量統計指標.xs │ ├── KST確認指標.xs │ ├── OTC佔大盤成交量比.xs │ ├── Q指標.xs │ ├── 上漲下跌家數差RSI指標.xs │ ├── 上漲下跌量差.xs │ ├── 上漲佔比.xs │ ├── 上漲家數.xs │ ├── 上漲家數佔比指標.xs │ ├── 上漲量比重.xs │ ├── 主力買賣超佔市場成交量比.xs │ ├── 估波指標(Coppock Indicator).xs │ ├── 作多意願指標.xs │ ├── 內外盤量差.xs │ ├── 內盤長短期累積量比值差.xs │ ├── 反脆弱指標.xs │ ├── 台指選倉P/C.xs │ ├── 噪音指標.xs │ ├── 外資買賣超佔市場成交量比.xs │ ├── 多空點數指標.xs │ ├── 大盤儀表板.xs │ ├── 大盤六度空間切割法.xs │ ├── 大盤多空對策判斷分數.xs │ ├── 大盤多空指標.xs │ ├── 委買委賣均張差額.xs │ ├── 實質買賣盤比指標.xs │ ├── 尼古斯指標.xs │ ├── 投信買賣超佔市場成交量比.xs │ ├── 本土天王平均.xs │ ├── 法人買賣超佔市場成交量比.xs │ ├── 法人買進賣出比重指標.xs │ ├── 漲跌停家數.xs │ ├── 當日沖銷張數.xs │ ├── 移動平均線再平均指標.xs │ ├── 自營商買賣超佔市場成交量比.xs │ ├── 軍火商指數.xs │ ├── 開盤委買委賣差.xs │ └── 麥克連震盪指標.xs ├── 市場動能 │ ├── 台灣50KD多方家數.xs │ ├── 台灣50MTM多方家數.xs │ ├── 台灣50上昇趨勢家數.xs │ ├── 台灣50上漲家數.xs │ ├── 台灣50創新低家數.xs │ ├── 台灣50創新高家數.xs │ ├── 台灣50均線多方家數.xs │ ├── 台灣50大單成交次數.xs │ ├── 台灣50大單買進金額.xs │ ├── 台灣50大戶買賣力.xs │ └── 台灣50紅K家數.xs ├── 技術指標 │ ├── %b指標.xs │ ├── ADTM動態買賣氣指標.xs │ ├── ASI(Accumulation Swing Index)振動升降指標.xs │ ├── Aroon.xs │ ├── BB指標.xs │ ├── BW MFI.xs │ ├── CMI市場波動指標.xs │ ├── CMO(錢德動量擺盪指標).xs │ ├── CPC指標.xs │ ├── CR指標.xs │ ├── Chaikin 蔡金波動性指標.xs │ ├── DBCD 異同離差乖離率 .xs │ ├── DMI.xs │ ├── EMA-SMA.xs │ ├── Elder 多頭力道指標.xs │ ├── Elder 空頭力道指標.xs │ ├── HV歷史波動率指標.xs │ ├── IMI日內動能指標.xs │ ├── KO能量潮指標.xs │ ├── K棒衍生指標.xs │ ├── LRR線性迴歸反轉指標.xs │ ├── MFO資金流震盪指標.xs │ ├── MF錢流指標.xs │ ├── Mass Index.xs │ ├── N日來漲幅較大天數.xs │ ├── N日內上漲天數.xs │ ├── RunScore.xs │ ├── R平方.xs │ ├── Stoller平均波幅通道.xs │ ├── ZDZB築底指標.xs │ ├── Zero Lag Heikin-Ashi.xs │ ├── adaptive price zone.xs │ ├── ado聚散擺盪平均線.xs │ ├── bandpass filter.xs │ ├── bband當沖操作指標.xs │ ├── coppock indicator.xs │ ├── demand index.xs │ ├── ease of movement指標.xs │ ├── empirical mode decomposition.xs │ ├── extracting the trend.xs │ ├── range trading指標.xs │ ├── vortex indicator.xs │ ├── 上影線佔實體比例五日平均.xs │ ├── 上漲下跌幅度強弱度指標.xs │ ├── 上漲下跌角度線.xs │ ├── 上漲天數指標.xs │ ├── 主動買力.xs │ ├── 倉 put call ratio.xs │ ├── 價格震盪指標.xs │ ├── 價量斜率指標.xs │ ├── 價量齊揚天數.xs │ ├── 六合神拳指數.xs │ ├── 創新高天數減破底天數.xs │ ├── 力度指標force index.xs │ ├── 加速器指標.xs │ ├── 加速指標.xs │ ├── 勁道指標.xs │ ├── 動量指標.xs │ ├── 向上拉動與向下殺盤力道指標.xs │ ├── 外盤成交比例指標.xs │ ├── 多方力道線.xs │ ├── 多空判斷分數.xs │ ├── 多空力道指標.xs │ ├── 多頭動能.xs │ ├── 天羅地網線.xs │ ├── 循環指標.xs │ ├── 月線與收盤價差.xs │ ├── 比大盤強的天數.xs │ ├── 比大盤強的天數趨勢斜率.xs │ ├── 波動區間指標.xs │ ├── 波動率指標.xs │ ├── 淨買賣力指標.xs │ ├── 真實波動區間指標.xs │ ├── 短線交易比例.xs │ ├── 終極擺盪指標.xs │ ├── 線性迴歸斜率.xs │ ├── 股性綜合分數指標.xs │ ├── 蔡金波動指標.xs │ ├── 變異數指標.xs │ ├── 逢低承接的力道.xs │ ├── 進攻力道線.xs │ ├── 隨機漫步指標.xs │ └── 順勢指標.xs ├── 期權指標 │ ├── Delta.xs │ ├── Gamma.xs │ ├── Theta.xs │ ├── Vega.xs │ ├── 價內外.xs │ ├── 價差.xs │ ├── 台指選Delta.xs │ ├── 台指選IV.xs │ ├── 台股指數近月外資未平倉.xs │ ├── 台股指數近月投信未平倉.xs │ ├── 台股指數近月自營商未平倉.xs │ ├── 外資期權動態.xs │ ├── 委買委賣張數.xs │ ├── 委買委賣筆數.xs │ ├── 摩台近月未平倉.xs │ ├── 期貨散戶多空比.xs │ ├── 溢價率.xs │ ├── 買賣成交筆數.xs │ ├── 選擇權理論價.xs │ └── 隱含波動率.xs ├── 籌碼指標 │ ├── 不明買盤指標.xs │ ├── 主力作多成本線.xs │ ├── 主力成本線.xs │ ├── 主力累計買賣超.xs │ ├── 主力買超佔成交量比重.xs │ ├── 分公司交易家數差.xs │ ├── 分公司淨買賣超家數指標.xs │ ├── 分公司買賣家數指標.xs │ ├── 外資成本線.xs │ ├── 外資換手比例.xs │ ├── 外資累計買賣超.xs │ ├── 外資買超佔成交量比重.xs │ ├── 多空淨力場.xs │ ├── 大戶買張比例.xs │ ├── 實戶累計買賣超.xs │ ├── 投信成本線.xs │ ├── 投信累計買賣超.xs │ ├── 投信買超佔成交量比重.xs │ ├── 控盤者成本線.xs │ ├── 放空佔成交均量倍數.xs │ ├── 散戶作多指標.xs │ ├── 散戶買進比例.xs │ ├── 散戶賣出比例.xs │ ├── 整體籌碼收集指標.xs │ ├── 法人累計買賣超.xs │ ├── 法人買超佔成交量比重.xs │ ├── 法人買進及賣出比例.xs │ ├── 法人買進比例.xs │ ├── 股東人數.xs │ ├── 自營商成本線.xs │ ├── 自營商累計買賣超.xs │ ├── 自營商買超佔成交量比重.xs │ ├── 融資累計張數.xs │ └── 資金流向.xs ├── 跨頻率指標 │ ├── 分鐘與日DMI-Osc.xs │ ├── 分鐘與日DMI.xs │ ├── 分鐘與日KD.xs │ ├── 分鐘與日MACD.xs │ ├── 分鐘與日RSI.xs │ ├── 分鐘與日威廉指標.xs │ ├── 週DMI-Osc.xs │ ├── 週DMI.xs │ ├── 週KD.xs │ ├── 週MACD.xs │ ├── 週RSI.xs │ └── 週威廉指標.xs └── 量能指標 │ ├── BBI多空指數.xs │ ├── DKX多空線.xs │ ├── KO成交量擺盪指標.xs │ ├── VSTD成交量標準差.xs │ ├── WVAD威廉變異離散量.xs │ ├── 上昇趨勢分數.xs │ ├── 交易活躍度指標.xs │ ├── 修正式價量指標.xs │ ├── 四大力道線.xs │ ├── 外盤量bband.xs │ ├── 成交量擺盪指標.xs │ ├── 當日成交密度.xs │ ├── 當日成交總筆數.xs │ ├── 累積量.xs │ ├── 週轉率.xs │ └── 量比.xs ├── 自動交易 ├── 0-基本語法 │ ├── 01-SetPosition.xs │ ├── 02-SetPosition範例#1(多單1口).xs │ ├── 02-SetPosition範例#2(空單1口).xs │ ├── 02-SetPosition範例#3(多單1口+空單1口).xs │ ├── 03-Filled.xs │ ├── 04-SetPosition範例#4(追價).xs │ ├── 04-SetPosition範例#5(加碼).xs │ ├── 05-FilledAvgPrice以及停損停利範例.xs │ ├── 06-FilledRecord函數.xs │ ├── 07-Position跟Filled的異動時機點.xs │ ├── 08-Alert.xs │ └── 09-CancelAllOrders.xs ├── 1-常用下單方式 │ ├── 01-市價交易.xs │ ├── 02-金額換算.xs │ ├── 03-全部賣出.xs │ ├── 04-全部回補.xs │ ├── 05-多單減碼.xs │ ├── 06-空單減碼.xs │ ├── 07-多單加碼.xs │ ├── 08-空單加碼.xs │ ├── 09-刪單.xs │ └── 10-改價.xs ├── 2-下單出場方式 │ ├── 01-收盤前平倉.xs │ ├── 02-多單固定停利停損(點).xs │ ├── 03-空單固定停利停損(點).xs │ ├── 04-多單固定停利停損(%).xs │ ├── 05-空單固定停利停損(%).xs │ ├── 06-多單移動停損(點).xs │ ├── 07-空單移動停損(點).xs │ ├── 08-多單移動停利(點).xs │ └── 09-空單移動停利(點).xs ├── 3-Algo策略委託 │ ├── 01-定時定量交易.xs │ ├── 02-時間權重交易(TWAP).xs │ ├── 03-分量權重交易(VWAP).xs │ ├── 04-網格交易.xs │ └── 05-冰山委託單(Iceberg).xs └── 常見技術分析 │ ├── 多頭 │ ├── ATR觸發上通道.xs │ ├── DIF-MACD從負翻正.xs │ ├── DIF黃金交叉MACD.xs │ ├── KD低檔黃金交叉.xs │ ├── MTM黃金交叉0.xs │ ├── RSI低檔價格背離.xs │ ├── 均線黃金交叉.xs │ ├── 布林通道觸碰下軌.xs │ ├── 帶量黃金交叉均線.xs │ ├── 平滑CCI超賣.xs │ ├── 短期RSI黃金交叉長期RSI.xs │ ├── 股價黃金交叉三均線.xs │ ├── 股價黃金交叉單均線.xs │ └── 股價黃金交叉雙均線.xs │ └── 空頭 │ ├── ATR觸發下通道.xs │ ├── DIF-MACD從正翻負.xs │ ├── DIF死亡交叉MACD.xs │ ├── KD低檔死亡交叉.xs │ ├── MTM死亡交叉0.xs │ ├── RSI高檔價格背離.xs │ ├── 均線死亡交叉.xs │ ├── 布林通道觸碰上軌.xs │ ├── 帶量死亡交叉均線.xs │ ├── 平滑CCI超買.xs │ ├── 短期RSI死亡交叉長期RSI.xs │ ├── 股價死亡交叉三均線.xs │ ├── 股價死亡交叉單均線.xs │ └── 股價死亡交叉雙均線.xs ├── 警示 ├── !語法範例 │ ├── 1.基本語法.xs │ ├── 2.getfield.xs │ ├── 3.getquote.xs │ ├── 4.if..then..else.xs │ ├── 5.if..begin..end..then.xs │ ├── 6.condition條件的交集.xs │ ├── 7.0date(日期)的用法.xs │ ├── 7.1time(時間)的用法.xs │ ├── 8.0常用函數.xs │ ├── 9.0for(迴圈)的用法.xs │ ├── 9.1switch...case.xs │ ├── 9.2while(一直算到條件不符合).xs │ └── 陣列例子.xs ├── 1.籌碼監控 │ ├── 主力切入見真章.xs │ ├── 主力認賠再追賣.xs │ ├── 券增價漲再推升.xs │ ├── 外資增持收新高.xs │ ├── 外資拉抬上攻.xs │ ├── 外資換手再創高.xs │ ├── 實戶潛進終抬頭.xs │ ├── 投信加持卻遇襲.xs │ ├── 投信存股連拉升.xs │ ├── 投信拉抬上攻.xs │ ├── 散戶下車股價漲.xs │ ├── 散戶撿到出貨後創低.xs │ ├── 法人主攻漲升.xs │ ├── 自營商增持收新高.xs │ ├── 自營商拉抬上攻.xs │ ├── 融資追捧戰新高.xs │ └── 連日外盤攻擊創新高.xs ├── 2.市場常用語 │ ├── N期內創新高次數.xs │ ├── N期內破底次數.xs │ ├── 今日多方表態.xs │ ├── 今日資券籌碼分析.xs │ ├── 分鐘暴量n%.xs │ ├── 外盤漲停.xs │ ├── 多次觸底而破 .xs │ ├── 大單敲進.xs │ ├── 急拉.xs │ ├── 急殺.xs │ ├── 拉尾盤.xs │ ├── 殺尾盤.xs │ ├── 當日上漲n%.xs │ ├── 盤中多方警示.xs │ ├── 突破上切線.xs │ ├── 翻紅.xs │ ├── 翻黑.xs │ ├── 資減券增.xs │ ├── 近日多方火力集中.xs │ ├── 連日量縮下跌.xs │ ├── 開低走高.xs │ ├── 開高走低.xs │ └── 高點回檔n%.xs ├── 3.出場常用警示 │ ├── DMI賣出訊號.xs │ ├── KD高檔死亡交叉.xs │ ├── MACD出現賣出訊號.xs │ ├── MTM轉負.xs │ ├── OBV退潮.xs │ ├── RSI高檔死亡交叉.xs │ ├── 一舉跌破多根均線.xs │ ├── 一黑破n紅.xs │ ├── 三長上影線.xs │ ├── 主力出貨 .xs │ ├── 主力賣超.xs │ ├── 乖離過大.xs │ ├── 分鐘線九連黑.xs │ ├── 多日價量背離.xs │ ├── 大黑棒.xs │ ├── 天價留上影線後未開高.xs │ ├── 天量後價量未再創新高.xs │ ├── 川上三鴉.xs │ ├── 巨量長黑.xs │ ├── 投信外資都賣超.xs │ ├── 散戶買單比例太高且走低.xs │ ├── 海龜出場法則.xs │ ├── 盤中直線下跌.xs │ ├── 竭盡缺口.xs │ ├── 股價跌破走平後的高壓電線.xs │ ├── 股價震盪變大且收最低.xs │ ├── 資增券減還收黑.xs │ ├── 跌破n日低點.xs │ ├── 跌破上升趨勢線.xs │ ├── 跌破均線.xs │ ├── 跳空下跌再破底.xs │ ├── 連續n日開高走低收最低.xs │ ├── 階梯式下跌.xs │ ├── 高檔出現吊人線.xs │ ├── 高檔出現黑暗之星.xs │ ├── 高檔覆蓋線.xs │ ├── 高檔量縮收黑.xs │ └── 高檔雙死亡交叉.xs ├── A股用語 │ ├── 九陰白骨爪.xs │ ├── 九陽神功.xs │ ├── 出水芙蓉.xs │ ├── 回頭高飛.xs │ ├── 斷頭鍘刀.xs │ ├── 死蜘蛛.xs │ ├── 殺跌波型.xs │ ├── 池塘底.xs │ ├── 瀑布波型.xs │ ├── 火箭攻擊.xs │ └── 螞蟻功.xs ├── ETF策略 │ ├── BBand翻多.xs │ ├── ETF乖離反轉作多買進訊號.xs │ ├── KO買進訊號.xs │ ├── KST趨勢確認策略.xs │ ├── OBV買進訊號.xs │ ├── Q指標買進訊號.xs │ ├── 三下影線反轉直上買進訊號.xs │ ├── 中長線均線糾結後突破.xs │ ├── 基金投資大跌後的止跌訊號.xs │ ├── 大盤MFI多頭.xs │ ├── 大碗底.xs │ ├── 大跌三成之後.xs │ ├── 大跌後均線黃金交叉.xs │ ├── 大跌後的價量背離.xs │ ├── 月KD高檔鈍化且日KD黃金交叉.xs │ ├── 烏龜進場法則.xs │ ├── 理專DBCD交易法則.xs │ ├── 理專之雙KD向上.xs │ ├── 趨勢翻多.xs │ ├── 週線二連紅之後.xs │ └── 週線反轉法則.xs ├── 價量指標 │ ├── 今日高點回跌.xs │ ├── 價創近期新低量創新高.xs │ ├── 價量同創近期新低.xs │ ├── 價量同創近期新高.xs │ ├── 即將漲停.xs │ ├── 即將跌停.xs │ ├── 多方人氣表態.xs │ ├── 帶量上影線.xs │ ├── 帶量下影線.xs │ ├── 成交量突破N倍均量.xs │ ├── 成交量突破均量.xs │ ├── 步步高升.xs │ ├── 漲停回頭.xs │ ├── 漲停鎖住.xs │ ├── 爆量長紅.xs │ ├── 爆量長黑.xs │ ├── 當日時段區間價突破.xs │ ├── 當日時段區間價跌破.xs │ ├── 當日漲幅預警.xs │ ├── 當日跌幅預警.xs │ ├── 當日量突破.xs │ ├── 當日量跌破.xs │ ├── 當日開盤跳空開低.xs │ ├── 當日開盤跳空開高.xs │ ├── 當期成交量倍增.xs │ ├── 空頭部隊進攻.xs │ ├── 股價創近期新低.xs │ ├── 股價創近期新高.xs │ ├── 跌停回頭.xs │ ├── 跌停鎖住.xs │ ├── 跌跌不休.xs │ ├── 連續期間上漲.xs │ ├── 連續期間下跌.xs │ └── 開高帶量走低.xs ├── 出場訊號 │ ├── emprical指標賣出訊號.xs │ ├── 近幾日總是收黑K.xs │ └── 開盤委賣暴增.xs ├── 技術分析 │ ├── 45度切線突破.xs │ ├── ADX形成上昇趨勢.xs │ ├── ADX趨勢成形.xs │ ├── ATR通道突破策略.xs │ ├── CCI超買.xs │ ├── CCI超賣.xs │ ├── DIF-MACD由正轉負.xs │ ├── DIF-MACD由負轉正.xs │ ├── DIF-MACD轉正買進訊號.xs │ ├── MACD死亡交叉.xs │ ├── MACD黃金交叉.xs │ ├── MFO資金流震盪指標.xs │ ├── MTM往上穿過0.xs │ ├── MTM突破零且投信買超.xs │ ├── MTM背離.xs │ ├── MTM跌破0.xs │ ├── Pivot Point短多策略.xs │ ├── RSI低檔背離.xs │ ├── RSI死亡交叉.xs │ ├── RSI背離.xs │ ├── RSI高檔背離.xs │ ├── RSI黃金交叉.xs │ ├── U型底.xs │ ├── WVAD買進訊號.xs │ ├── 三連陽過前年最高點.xs │ ├── 上昇趨勢確立.xs │ ├── 下跌後的吊人線.xs │ ├── 下降趨勢突破.xs │ ├── 中小型股趨勢成型.xs │ ├── 主力押大注.xs │ ├── 主力收集完開始拉.xs │ ├── 主力累計買超比例過門檻.xs │ ├── 乖離反轉作多買進訊號.xs │ ├── 價值股創近年新高.xs │ ├── 共振策略.xs │ ├── 布林通道超買訊號.xs │ ├── 布林通道超賣訊號.xs │ ├── 帶量突破均線.xs │ ├── 帶量跌破均線.xs │ ├── 底部出大量.xs │ ├── 找起漲點的策略.xs │ ├── 投信天天買 股價天天小漲.xs │ ├── 投信近幾日買超比例高的.xs │ ├── 景氣循環股操作法.xs │ ├── 波動放大.xs │ ├── 波動縮小.xs │ ├── 漲幅警示.xs │ ├── 潛龍昇天.xs │ ├── 盤整後跳空走高.xs │ ├── 短期均線突破長期均線.xs │ ├── 短期均線跌破長期均線.xs │ ├── 突破投信成本線.xs │ ├── 第一次站上20週均線.xs │ ├── 股價穿越突破三均線.xs │ ├── 股價穿越突破單均線.xs │ ├── 股價穿越突破雙均線.xs │ ├── 股價穿越跌破三均線.xs │ ├── 股價穿越跌破單均線.xs │ ├── 股價穿越跌破雙均線.xs │ ├── 股價轉趨活躍.xs │ ├── 跌幅警示.xs │ ├── 進入上昇趨勢.xs │ ├── 過去N日有多日跳空且未拉回.xs │ ├── 野百合的春天.xs │ └── 開始有人問津.xs ├── 抄底策略 │ ├── 大跌後均線糾結後上漲.xs │ ├── 大跌後的低檔五連陽.xs │ ├── 大跌後的連續跳空上漲.xs │ ├── 底部確認.xs │ └── 跌深後的反彈.xs ├── 期權策略 │ ├── 快到期了還是價內.xs │ └── 期指短打.xs ├── 波段操作型 │ ├── 60分鐘線九連陽.xs │ ├── SAR買進訊號.xs │ ├── 休息後風雲再起.xs │ ├── 低PB股的逆襲.xs │ ├── 低檔連n日拉尾盤.xs │ ├── 反常必有妖.xs │ ├── 均線多頭排列.xs │ ├── 外盤買氣轉強.xs │ ├── 多次到底而破.xs │ ├── 多次到頂而突破.xs │ ├── 帶量突破糾結的均線.xs │ ├── 帶量衝破季線.xs │ ├── 平均量黃金交叉.xs │ ├── 抗跌.xs │ ├── 暴量剛起漲.xs │ ├── 月線連兩個月收紅的小型股.xs │ ├── 沖擊底部.xs │ ├── 沿均線前進.xs │ ├── 法人作多股.xs │ ├── 法人爭下車.xs │ ├── 法人累計買超超過N張.xs │ ├── 波幅縮小後的突破.xs │ ├── 海龜進場法則.xs │ ├── 盤整後噴出.xs │ ├── 突破下降趨勢線.xs │ ├── 突破糾結均線.xs │ ├── 自營商獨自偏好.xs │ ├── 藍籌股RSI低檔背離.xs │ ├── 調整型均線黃金交叉.xs │ ├── 貪婪指數太高.xs │ ├── 進入上漲軌道.xs │ ├── 長波段回升.xs │ ├── 雙KD向上.xs │ └── 領先大盤創200日新高.xs ├── 當沖交易型 │ ├── 一分鐘K三連紅.xs │ ├── 主動性買盤大增.xs │ ├── 五分鐘K狹幅整理後帶量破.xs │ ├── 五分鐘線整理後突破.xs │ ├── 即將鎖第一根漲停.xs │ ├── 多次到頂而破.xs │ ├── 斷頭後的止跌.xs │ ├── 會打開的跌停.xs │ ├── 漲停量縮不下來.xs │ ├── 火箭後拉回.xs │ ├── 當日累計量突破.xs │ ├── 當沖一號.xs │ ├── 當沖二號(空).xs │ ├── 盤中突破區間.xs │ ├── 突破波動範圍.xs │ ├── 賣壓很輕.xs │ ├── 跌停一直在成交.xs │ ├── 近期持續強勢股階梯式上漲.xs │ ├── 連續五分鐘一路走高.xs │ ├── 開低不反彈再創新低.xs │ ├── 開大跌後未再探底.xs │ ├── 開盤三連陽.xs │ ├── 開盤五分鐘K線三連陽.xs │ ├── 開盤五分鐘三創新高.xs │ ├── 開盤五分鐘創三新低.xs │ ├── 開盤五分鐘創三新高.xs │ ├── 開盤反轉買進訊號.xs │ ├── 開盤委買暴增.xs │ ├── 開盤暴量.xs │ ├── 開高不拉回後再創新高.xs │ ├── 開高後不拉回.xs │ └── 階梯式上漲.xs ├── 盤中常用 │ ├── 1分鐘K開盤暴量三連陽.xs │ ├── 大單敲進.xs │ ├── 盤中委買遠大於委賣.xs │ ├── 開盤跳空上漲N%且有量.xs │ └── 預估量破均量.xs ├── 短線操作型 │ ├── 一小時線長期盤整後突破.xs │ ├── 一黑破三紅.xs │ ├── 三根長下影線.xs │ ├── 中小型股整理結束.xs │ ├── 主力慢慢收集籌碼後攻堅.xs │ ├── 加速趕底中.xs │ ├── 外資買超但只開平高盤.xs │ ├── 外資連日大買超,股價未開高.xs │ ├── 外資連續買超n天.xs │ ├── 投信初介入.xs │ ├── 投信外資同步進場.xs │ ├── 投信搶買的股票.xs │ ├── 投信殺完之跌深反彈.xs │ ├── 投信買張超過成交量一成.xs │ ├── 投信連日大買超,股價未開高.xs │ ├── 漲勢加速的股票.xs │ ├── 炒高後沒有量.xs │ ├── 短線轉強.xs │ ├── 突破繼續型態.xs │ ├── 站上五根bar高點.xs │ ├── 第一根漲停.xs │ ├── 籌碼由發散轉收集.xs │ └── 除權前的逆襲.xs ├── 酒田戰法 │ ├── 三長下影線.xs │ ├── 三黑鴨.xs │ ├── 倒狀鎚子.xs │ ├── 內困三日翻紅.xs │ ├── 內困三日翻黑.xs │ ├── 十字線.xs │ ├── 吊人.xs │ ├── 多頭三星.xs │ ├── 多頭吞噬.xs │ ├── 多頭執帶.xs │ ├── 多頭母子.xs │ ├── 多頭遭遇.xs │ ├── 夜星.xs │ ├── 帶量倒狀鎚子.xs │ ├── 帶量吊人.xs │ ├── 帶量多頭吞噬.xs │ ├── 帶量多頭執帶.xs │ ├── 帶量空頭執帶.xs │ ├── 帶量鎚頭.xs │ ├── 晨星.xs │ ├── 空頭三星.xs │ ├── 空頭吞噬.xs │ ├── 空頭執帶.xs │ ├── 空頭母子.xs │ ├── 空頭流星.xs │ ├── 空頭遭遇.xs │ ├── 紅三兵.xs │ ├── 蜻蜓十字.xs │ ├── 鎚頭.xs │ └── 長腳十字星.xs └── 長線投資 │ ├── 多頭趨勢已然確立.xs │ ├── 大跌後的定存股標的.xs │ └── 獲利穩定的公司來到市值低位區.xs └── 選股 ├── 00.語法範例 ├── EPS連續N季成長.xs ├── EPS連續N季衰退.xs ├── EPS連續N季都大於X元.xs ├── EPS連續N季都小於X元.xs ├── EPS連續N年都大於X元.xs ├── EPS連續N年都小於X元.xs ├── N期股價趨勢向上.xs ├── N期股價趨勢向下.xs ├── _基本範例.xs ├── 收盤價近N期漲幅大於X%以上.xs ├── 收盤價近N期跌幅大於X%以上.xs ├── 最近4季EPS合計大於X元.xs ├── 最近4季EPS合計小於X元.xs ├── 月營收創N期新低.xs ├── 月營收創N期新高.xs ├── 本益比小於X倍.xs ├── 股價大於近N期平均.xs ├── 股價小於近N期平均.xs └── 週轉率大於X%.xs ├── 01.常用過濾條件 ├── 股本篩選.xs ├── 股票名稱不含F股.xs ├── 過濾低價股票.xs ├── 過濾低成交量股票.xs ├── 過濾冷門股票.xs ├── 過濾小型股票.xs └── 過濾沒賺錢的股票.xs ├── 02.基本技術指標 ├── BBand出現買進訊號.xs ├── CCI超買.xs ├── CCI超賣.xs ├── KD死亡交叉.xs ├── KD黃金交叉.xs ├── MACD死亡交叉.xs ├── MACD黃金交叉.xs ├── MTM穿越0.xs ├── MTM跌破0.xs ├── RSI低檔背離.xs ├── RSI死亡交叉.xs ├── RSI高檔背離.xs ├── RSI黃金交叉.xs ├── 均線多頭排列.xs ├── 均線空頭排列.xs ├── 布林通道超買.xs ├── 布林通道超賣.xs ├── 帶量突破均線.xs ├── 成交量放大.xs ├── 短期均線穿越長期均線.xs ├── 短期均線跌破長期均線.xs ├── 跌破糾結均線.xs ├── 週KD低檔黃金交叉.xs └── 週線月線黃金交叉且站穩.xs ├── 03.進階技術分析 ├── KD與均線同步出現買進訊號.xs ├── K棒突破布林值上緣.xs ├── RSI黃金交叉且股價非盤整.xs ├── 佔大盤成交量比開始上昇.xs ├── 冷門股出量.xs ├── 外盤成交變多.xs ├── 多指標都出現買進訊號.xs ├── 多空分數翻昇.xs ├── 多空分數轉空.xs ├── 天量後價量未再創新高.xs ├── 布林帶寬大於N%.xs ├── 布林帶寬小於N%.xs ├── 帶量突破均線後未拉回.xs ├── 底部越來越高且資金流入的蓄勢股.xs ├── 波動幅度開始變大.xs ├── 盤整後跌破.xs ├── 突破糾結均線.xs ├── 築底指標出現買進訊號.xs ├── 股價下跌而外盤量佔比上升.xs ├── 股價蠢蠢欲動.xs ├── 股價跌破走跌後的高壓電線.xs ├── 趨勢成形.xs ├── 跌破均線後站不回.xs └── 雙KD向上.xs ├── 04.價量選股 ├── M日內連續N日上漲.xs ├── N年來漲了M倍的公司.xs ├── 五日週轉率大於二十日週轉率.xs ├── 今收破昨高.xs ├── 修正式價量指標黃金交叉.xs ├── 價量同步創N期新高.xs ├── 創最低總市值.xs ├── 創百日來新高但距離低點不太遠.xs ├── 區間內股價創新高天數達一定水準.xs ├── 多日價量背離後跌破.xs ├── 多次到底而跌破.xs ├── 多頭轉強.xs ├── 大漲股.xs ├── 大跌後的急拉.xs ├── 底部愈墊愈高且資金流入的蓄勢股.xs ├── 收盤價創N日來新高.xs ├── 收盤價收N日來新低.xs ├── 昨天成交量不到2000張今天已超過2000張.xs ├── 曾經一個月漲超過兩成的股票.xs ├── 最近N日漲跌幅小於M%.xs ├── 有一定成交值且過去三日漲幅小.xs ├── 波動幅度開始變大且往上攻.xs ├── 波段漲幅不大,近N日有過漲停的.xs ├── 漲勢加速.xs ├── 漲勢成形.xs ├── 漲勢變強.xs ├── 漲多後跌破頭部.xs ├── 炒高後無量反轉下跌.xs ├── 無量變有量.xs ├── 特定日期迄今漲跌幅超過一定幅度.xs ├── 盤整N日後突破.xs ├── 站在五十二週高點之上.xs ├── 總市值跌到歷年低點.xs ├── 股價超過N日未再破底.xs ├── 行業轉強個股也轉強.xs ├── 跌到52週低點之下.xs ├── 週線二連紅.xs ├── 過去M日有N日HHLL.xs ├── 過去N日價穩量縮.xs └── 量價背離.xs ├── 05.型態選股 ├── 三次到頂而破.xs ├── 上昇旗形.xs ├── 下跌後的吊人線.xs ├── 下降趨勢改變.xs ├── 下降趨勢明確.xs ├── 做M頭的股票.xs ├── 在上昇趨勢中的股票.xs ├── 平台整理後突破.xs ├── 平台整理後跌破.xs ├── 突破下降旗型.xs ├── 突破整理格局.xs ├── 突破箱型.xs ├── 突破繼續型態.xs ├── 突破股票箱.xs ├── 跌勢後的內困三日翻紅.xs ├── 近期漲幅不大.xs ├── 長時間未破底後創新高.xs └── 長紅.xs ├── 06.籌碼選股 ├── N日以來投信曾大買過.xs ├── N日內三大法人曾同步買超.xs ├── 不明買盤介入.xs ├── 主力偷偷調節後下殺.xs ├── 主力公司派可能出貨中.xs ├── 主力慢慢收集籌碼後攻堅.xs ├── 主力發動股.xs ├── 主力買超超過門檻.xs ├── 主力長期收集.xs ├── 主流股蓄勢待發.xs ├── 交易家數暴增.xs ├── 借券增.xs ├── 借券賣出餘額張數大減.xs ├── 再跌就有斷頭賣壓的股票.xs ├── 券增價漲.xs ├── 券補力道超過一定值.xs ├── 千張大戶增加而散戶減少.xs ├── 千張大戶增持.xs ├── 千張大戶減少而散戶增加.xs ├── 增資股即將出籠.xs ├── 外資完全不碰的股票有人在收籌碼.xs ├── 外資拉抬.xs ├── 外資由空翻多.xs ├── 外資買超後隔天會漲的機率很高的股票.xs ├── 大跌後法人散戶清浮額.xs ├── 官股買超比重.xs ├── 投信從空手到開始佈局.xs ├── 投信拉抬.xs ├── 投信持股從無到有.xs ├── 投信掃貨.xs ├── 投信爭買的小型成長股.xs ├── 投信第一天大買進.xs ├── 散戶買進比例上揚.xs ├── 斷頭後的止跌.xs ├── 法人主力敢買又敢拉的股票.xs ├── 法人大出籌碼.xs ├── 法人大買而股價尚未發動.xs ├── 法人淨買超比例高.xs ├── 法人買超.xs ├── 法人買超減融資佔成交量比重增加.xs ├── 法人買進佔成交量超過25%.xs ├── 法人逢低買超破億元.xs ├── 法人連續買進達一定標準.xs ├── 流通在外股數不多.xs ├── 籌碼安定比率.xs ├── 籌碼從散戶手裡被收集.xs ├── 籌碼被發散.xs ├── 籌碼集中度超過兩成的股票.xs ├── 股價突破外資成本線.xs ├── 股價突破投信成本線.xs ├── 自營商拉抬.xs ├── 融資大減後轉強.xs ├── 融資追捧.xs ├── 近N日主力合計買超大於M張.xs ├── 連續兩日籌碼在收集.xs ├── 連續大戶進散戶出.xs └── 集保張數減少中.xs ├── 07.月營收選股 ├── 可預期的營收成長股.xs ├── 旺季不旺.xs ├── 最近三個月營收明顯成長.xs ├── 月營收YOYN月移動平均大於X.xs ├── 月營收出現死亡交叉.xs ├── 月營收創新低.xs ├── 月營收創新高股價離高點有些距離.xs ├── 月營收大成長的公司.xs ├── 月營收年增率移動平均黃金交叉.xs ├── 月營收成長動能加快.xs ├── 營收再起飛.xs ├── 營收年增率由負轉正,且至少連續3個月.xs ├── 營收月增率優於平均.xs ├── 營收月增率比歷年突出.xs ├── 營收高於預期.xs ├── 營運趨緩.xs ├── 累計月營收年增率連續N月成長.xs └── 累計營收年增率黃金交叉.xs ├── 08.財報選股 ├── N年平均盈餘本益比.xs ├── N年累計營業利益市值比.xs ├── PB來到近年來低點.xs ├── PEG指標.xs ├── ROE漸入佳境.xs ├── 上一季本業賺錢.xs ├── 上市股可以發行權證的流動性條件.xs ├── 上櫃股可以發行權證的流動性條件.xs ├── 五年內有至少三年營收成長.xs ├── 企業價值除以自由現金流的倍數低於一水準.xs ├── 低修正型股價淨值比.xs ├── 公司官僚化.xs ├── 公司連續N年獲利大於X億.xs ├── 利息支出佔股本比例.xs ├── 即將董監改選.xs ├── 可能由虧轉盈.xs ├── 固定資產佔股本比率低於N%.xs ├── 季營收連N季YOY正成長.xs ├── 市值研發費用比.xs ├── 帳上現金少.xs ├── 年營收成長率超過一定比例.xs ├── 最新一季可能虧錢的公司.xs ├── 最近五年ROE平均高於某值.xs ├── 最近幾季存貨增加的比營收還快.xs ├── 本業可能轉虧為盈.xs ├── 本業推估本益比低於N.xs ├── 本業獲利佔八成以上.xs ├── 每年本業都獲利且趨勢向上.xs ├── 每股來自營運現金流量.xs ├── 毛利沒掉營收成長費用減少.xs ├── 毛利率上昇月營收成長.xs ├── 毛利率沒掉的兇.xs ├── 法定盈餘公積已提足,配股能力提昇.xs ├── 流動資產市值比.xs ├── 流動資產減負債超過市值N成.xs ├── 流動資產減負債超過總市值N成.xs ├── 淡季不淡.xs ├── 營收上昇費用降低.xs ├── 營收市值比位於歷史低檔.xs ├── 營業利益均線向上.xs ├── 營業利益率不曾大幅下滑.xs ├── 營業外收入愈來愈高.xs ├── 營益率由負轉正且持續上揚.xs ├── 營運現金流大於稅後盈餘.xs ├── 獲利穩定的公司.xs ├── 獲利追不上固定資本支出.xs ├── 現增佔比低.xs ├── 現金不少但股價淨值比低.xs ├── 現金佔總市值比例.xs ├── 現金很多的公司.xs ├── 現金總市值比.xs ├── 總市值接近歷史低點.xs ├── 考慮成長率的股利回推合理股價.xs ├── 股價低於N年平均股利的N倍.xs ├── 股息配發率超過一定比率.xs ├── 股本膨脹營收獲利跟不上.xs ├── 股東權益報酬率高且穩定.xs ├── 股魚選股策略.xs ├── 葛拉罕的選股兩標準.xs ├── 說好的好業績一直沒有來.xs ├── 資產報酬率達到一定的水準且沒有明顯下滑.xs ├── 近N年EPS成長率平均大於X%.xs ├── 近五年至少有一年營業利益超過五億.xs ├── 近四季EPS合計大於N元.xs ├── 近期有大額資本支出.xs ├── 過去三年來自營運的現金流量都大於零.xs ├── 預估殖利率高的.xs ├── 預期報酬率高的公司.xs ├── 高F_Score的股票.xs ├── 高毛利低獲利營收暴衝.xs ├── 高現金報酬率.xs ├── 高現金股利政策且營運仍佳.xs ├── 高護城河.xs └── 高護城河的公司.xs ├── 09.時機操作 ├── 即將進入季節性多頭.xs ├── 即將進入季節性空頭.xs ├── 可能有填權行情的股票.xs ├── 台幣升值受災股.xs ├── 投信可能會作帳的股票.xs ├── 旺季來臨前.xs └── 長期都填權的股票.xs ├── 10.價值投資 ├── PB跌到歷年低點區且低於0.8.xs ├── 低PB股的逆襲.xs ├── 低本益比低PB高殖利率.xs ├── 低預估本益比攻勢發動.xs ├── 價值雪球股.xs ├── 新一代金牌定存股.xs ├── 月營收推估出的低本益比股.xs ├── 本業推估本益比低於N.xs ├── 每股流動資產遠大於股價.xs ├── 營運現金流量的持續積累.xs ├── 股價距離合理價值很遠.xs └── 跌不下去的高殖利率股.xs └── 11.選股機器人 ├── 上游價格指標趨勢向上.xs ├── 下游價格指標趨勢向上.xs ├── 中小型股整理結束.xs ├── 創百日新高但距低點不遠.xs ├── 可能由盈轉虧.xs ├── 可能轉虧為盈.xs ├── 外資先前沒買,突然連買三天.xs ├── 多次到頂而破.xs ├── 多頭下起漲前的籌碼收集.xs ├── 天價上影線賣出訊號.xs ├── 投信初介入.xs ├── 投信掃貨.xs ├── 投信第一天大買.xs ├── 月營收年增率移動平均黃金交叉b.xs ├── 殺過頭.xs ├── 毛利率創一年新高.xs ├── 毛利率沒掉的兇.xs ├── 烏龜交易法則之買進訊號.xs ├── 烏龜交易法則之賣出訊號.xs ├── 突破糾結均線.xs ├── 總市值位於歷史低檔區.xs ├── 股價領先大盤創新高.xs ├── 週轉率高點買進.xs └── 除權後的填權行情.xs /函數/價格取得/AvgPrice.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | AvgPrice = (Open + High + Low + Close) /4; 5 | 6 | -------------------------------------------------------------------------------- /函數/價格取得/CloseD.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | CloseD = GetField("Close","D")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/CloseH.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | CloseH = GetField("Close","H")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/CloseM.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | CloseM = GetField("Close","M")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/CloseQ.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | CloseQ = GetField("Close","Q")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/CloseW.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | CloseW = GetField("Close","W")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/CloseY.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | CloseY = GetField("Close","Y")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/FastHighest.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePrice(numericseries),Length(numericsimple); 5 | 6 | variable: _Output(0); 7 | 8 | Extremes(thePrice, Length, 1, _Output, value2); 9 | 10 | FastHighest = _Output; 11 | -------------------------------------------------------------------------------- /函數/價格取得/FastLowest.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePrice(numericseries), Length(numericsimple); 5 | variable: _Output(0); 6 | 7 | Extremes(thePrice, Length, -1, _Output, value2); 8 | 9 | FastLowest = _Output; -------------------------------------------------------------------------------- /函數/價格取得/HighD.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | HighD = GetField("High","D")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/HighH.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | HighH = GetField("High","H")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/HighM.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | HighM = GetField("High","M")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/HighQ.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | HighQ = GetField("High","Q")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/HighW.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | HighW = GetField("High","W")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/HighY.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | HighY = GetField("High","Y")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/Highest.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePrice(numericseries),Length(numericsimple); 5 | 6 | variable: _Output(0); 7 | 8 | Extremes(thePrice, Length, 1, _Output, value2); 9 | 10 | Highest = _Output; -------------------------------------------------------------------------------- /函數/價格取得/LowD.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | LowD = GetField("Low","D")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/LowH.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | LowH = GetField("Low","H")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/LowM.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | LowM = GetField("Low","M")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/LowQ.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | LowQ = GetField("Low","Q")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/LowW.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | LowW = GetField("Low","W")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/LowY.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | LowY = GetField("Low","Y")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/Lowest.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePrice(numericseries), Length(numericsimple); 5 | 6 | variable: _Output(0); 7 | 8 | Extremes(thePrice, Length, -1, _Output, value2); 9 | 10 | Lowest = _Output; -------------------------------------------------------------------------------- /函數/價格取得/OpenD.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | OpenD = GetField("Open","D")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/OpenH.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | OpenH = GetField("Open","H")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/OpenM.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | OpenM = GetField("Open","M")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/OpenQ.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | OpenQ = GetField("Open","Q")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/OpenW.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | OpenW = GetField("Open","W")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/OpenY.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: PeriodsAgo(numericsimple); 5 | 6 | OpenY = GetField("Open","Y")[PeriodsAgo]; 7 | -------------------------------------------------------------------------------- /函數/價格取得/TrueHigh.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | if Close[1] > High then TrueHigh = Close[1] 5 | else TrueHigh = High; 6 | -------------------------------------------------------------------------------- /函數/價格取得/TrueLow.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | if Close[1] < Low then TrueLow = Close[1] 5 | else TrueLow = Low; 6 | -------------------------------------------------------------------------------- /函數/價格取得/TypicalPrice.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | TypicalPrice = (High + Low + Close) /3; 5 | -------------------------------------------------------------------------------- /函數/價格取得/WeightedClose.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | WeightedClose = (2 * Close + High + Low) / 4; 5 | -------------------------------------------------------------------------------- /函數/價格計算/Average.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:thePrice(numericseries); //"價格序列" 5 | input:Length(numericsimple); //"計算期間" 6 | 7 | if Length > 0 then 8 | Average = Summation(thePrice, Length) / Length 9 | else 10 | Average =0; 11 | 12 | -------------------------------------------------------------------------------- /函數/價格計算/Range.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | Range = High - Low; 5 | -------------------------------------------------------------------------------- /函數/價格計算/RateOfChange.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:thePrice(numericseries); //"價格序列" 5 | input:Length(numericsimple); //"計算期間" 6 | 7 | 8 | if thePrice[Length] <> 0 then RateOfChange = (thePrice / absvalue(thePrice[Length]) - sign(thePrice[Length])) * 100 9 | else RateOfChange = 0; 10 | -------------------------------------------------------------------------------- /函數/價格計算/Summation.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:thePrice(numericseries); //"價格序列" 5 | input:Length(numericsimple); //"計算期間" 6 | 7 | variable:Sum(0),SumLength(0); 8 | Sum=0; 9 | 10 | for SumLength = 0 to Length - 1 11 | begin 12 | Sum = Sum + thePrice[SumLength]; 13 | end; 14 | 15 | Summation = Sum; 16 | -------------------------------------------------------------------------------- /函數/價格計算/TrueRange.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | TrueRange = TrueHigh - TrueLow; 5 | -------------------------------------------------------------------------------- /函數/價格關係/FastHighestBar.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:thePrice(numericseries); //"價格序列" 5 | input:Length(numericsimple); //"計算期間" 6 | 7 | variable: _Output(0); 8 | 9 | Extremes(ThePrice, Length, 1, value1, _Output); 10 | 11 | FastHighestBar = _Output; -------------------------------------------------------------------------------- /函數/價格關係/FastLowestBar.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:thePrice(numericseries); //"價格序列" 5 | input:Length(numericsimple); //"計算期間" 6 | 7 | variable: _Output(0); 8 | 9 | Extremes(ThePrice, Length, -1, value1, _Output); 10 | 11 | FastLowestbar = _Output; 12 | -------------------------------------------------------------------------------- /函數/價格關係/HighestArray.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePriceArray[MaxSize](NumericArray),ArraySize(numericsimple); 5 | variable: _Output(0); 6 | 7 | ExtremesArray(thePriceArray, ArraySize, 1, _Output, value2); 8 | 9 | HighestArray = _Output; 10 | -------------------------------------------------------------------------------- /函數/價格關係/HighestBar.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:thePrice(numericseries); //"價格序列" 5 | input:Length(numericsimple); //"計算期間" 6 | 7 | variable: _Output(0); 8 | 9 | Extremes(ThePrice, Length, 1, value1, _Output); 10 | 11 | HighestBar = _Output; -------------------------------------------------------------------------------- /函數/價格關係/LowestArray.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePriceArray[MaxSize](NumericArray),ArraySize(numericsimple); 5 | variable: _Output(0); 6 | 7 | ExtremesArray(thePriceArray, ArraySize, -1, _Output, value2); 8 | LowestArray = _Output; 9 | -------------------------------------------------------------------------------- /函數/價格關係/LowestBar.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:thePrice(numericseries); //"價格序列" 5 | input:Length(numericsimple); //"計算期間" 6 | 7 | variable: _Output(0); 8 | 9 | Extremes(ThePrice, Length, -1, value1, _Output); 10 | 11 | Lowestbar = _Output; -------------------------------------------------------------------------------- /函數/價格關係/MoM.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:MomVal(numericseries); 5 | 6 | if barfreq <> "M" and barfreq <> "AM" then 7 | raiseruntimeerror("僅支援月頻率") 8 | else 9 | MOM = (MomVal/MomVal[1]-1)*100; 10 | 11 | -------------------------------------------------------------------------------- /函數/價格關係/NthHighest.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: N (numericsimple), thePrice(numericseries), Length(numericsimple); 5 | variable: _Output(0); 6 | 7 | NthExtremes(thePrice, Length, N, 1, _Output, value2); 8 | 9 | NthHighest = _Output; 10 | -------------------------------------------------------------------------------- /函數/價格關係/NthHighestArray.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePriceArray[MaxSize](NumericArray), Size(numericsimple), N (numericsimple); 5 | variable: _Output(0); 6 | 7 | NthExtremesArray(thePriceArray, Size, N, 1, _Output, value2); 8 | 9 | NthHighestArray = _Output; 10 | -------------------------------------------------------------------------------- /函數/價格關係/NthHighestBar.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: N (numericsimple), thePrice(numericseries), Length(numericsimple); 5 | variable: _Output(0); 6 | 7 | NthExtremes(thePrice, Length, N, 1, value1, _Output); 8 | 9 | NthHighestBar = _Output; 10 | -------------------------------------------------------------------------------- /函數/價格關係/NthLowest.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: N (numericsimple), thePrice(numericseries), Length(numericsimple); 5 | variable: _Output(0); 6 | 7 | NthExtremes(thePrice, Length, N, -1, _Output, value2); 8 | 9 | NthLowest = _Output; 10 | -------------------------------------------------------------------------------- /函數/價格關係/NthLowestArray.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePriceArray[MaxSize](NumericArrayRef), Size(numericsimple), N (numericsimple); 5 | variable: _Output(0); 6 | 7 | NthExtremesArray( thePriceArray, Size, N, -1, _Output, value2) ; 8 | 9 | NthLowestArray = _Output ; 10 | 11 | -------------------------------------------------------------------------------- /函數/價格關係/NthLowestBar.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: N (numericsimple), thePrice(numericseries), Length(numericsimple); 5 | variable: _Output(0); 6 | 7 | NthExtremes(thePrice, Length, N, -1, value1, _Output); 8 | 9 | NthLowestBar = _Output; 10 | -------------------------------------------------------------------------------- /函數/價格關係/QoQ.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:QoQVal(numericseries); 5 | 6 | if barfreq <> "Q" then 7 | raiseruntimeerror("僅支援季頻率") 8 | else 9 | QoQ = 100*(QoQVal/QoQVal[1]-1); -------------------------------------------------------------------------------- /函數/價格關係/SimpleHighest.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePrice(numericseries),Length(numericsimple); 5 | 6 | variable: highValue(0); 7 | variable: i(0); 8 | 9 | highValue = thePrice[0]; 10 | for i = 1 to Length-1 11 | begin 12 | if thePrice[i] > highValue then 13 | highValue = thePrice[i]; 14 | end; 15 | 16 | SimpleHighest = highValue; 17 | 18 | -------------------------------------------------------------------------------- /函數/價格關係/SimpleLowest.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePrice(numericseries),Length(numericsimple); 5 | 6 | variable: lowValue(0); 7 | variable: i(0); 8 | 9 | lowValue = thePrice[0]; 10 | for i = 1 to Length-1 11 | begin 12 | if thePrice[i] < lowValue then 13 | lowValue = thePrice[i]; 14 | end; 15 | 16 | SimpleLowest = lowValue; 17 | -------------------------------------------------------------------------------- /函數/價格關係/YoY.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:YoYVal(numericseries); 5 | 6 | switch(barfreq) 7 | begin 8 | Case "M","AM": 9 | YoY = RateOfChange(YoYVal,12); 10 | Case "Q": 11 | YoY = RateOfChange(YoYVal,4); 12 | Case "Y": 13 | YoY = RateOfChange(YoYVal,1); 14 | default: 15 | raiseruntimeerror("僅支援月、季、年頻率"); 16 | end; 17 | 18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /函數/技術指標/ACC.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | ACC加速量指標(Acceleration),用來觀察行情價格變化的加速度幅度, 6 | 是MOM運動量指標的再一次計算,使用收盤價,並以相同期間長度計算 7 | Length: 計算期數 8 | } 9 | 10 | input: Length(numeric); 11 | 12 | value1 = Momentum(Close, Length); 13 | value2 = Momentum(value1, Length); 14 | 15 | ACC =value2; 16 | -------------------------------------------------------------------------------- /函數/技術指標/ADO.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | Accumulation/Distribution Oscillator,「聚散擺盪」指標。 6 | 傳回ADO值 7 | } 8 | 9 | variable: bp(0), sp(0), adot(0); 10 | 11 | bp = High - Open; 12 | sp = Close - Low; 13 | if High <> low then 14 | adot = (bp + sp)/(2*(High - Low))*100 15 | else 16 | adot = 50; 17 | 18 | ADO =adot; 19 | 20 | -------------------------------------------------------------------------------- /函數/技術指標/ATR.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | 傳回平均真實區間 6 | Length: 計算期數 7 | } 8 | input: Length(numeric); 9 | ATR = Average(TrueRange, Length); 10 | 11 | 12 | -------------------------------------------------------------------------------- /函數/技術指標/BiasDiff.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | Bias function (計算乖離率差值) 6 | 輸入兩個期間數值,計算並輸出此兩期間的乖離率差 7 | Length1: 短期期數 8 | Length2: 長期期數 9 | } 10 | input: length1(numericsimple),length2(numericsimple); 11 | 12 | BiasDiff = Bias(Length1) - Bias(Length2); 13 | -------------------------------------------------------------------------------- /函數/技術指標/BollingerBand.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | // BollingerBand function 5 | // 6 | Input: price(numericseries), length(numericsimple), _band(numericsimple); 7 | 8 | BollingerBand = Average(price, length) + _band * StandardDev(price, length, 1); 9 | -------------------------------------------------------------------------------- /函數/技術指標/CCI.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | Length : CCI指標計算期間 6 | } 7 | input: Length(numeric); 8 | cci = CommodityChannel(Length); 9 | 10 | -------------------------------------------------------------------------------- /函數/技術指標/CV.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(2); 3 | 4 | If CurrentBar = 1 then 5 | CV = Close * Volume 6 | else 7 | CV = CV[1] + (Close - Close[1]) * Volume; 8 | -------------------------------------------------------------------------------- /函數/技術指標/DIF.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | 傳回XQ: MACD指標中DIF值 6 | FastLength: 短期期數 7 | SlowLength: 長期期數 8 | } 9 | input: FastLength(numeric), SlowLength(numeric); 10 | variable: price(0); 11 | 12 | price = WeightedClose(); 13 | 14 | DIF = XAverage(price, FastLength) - XAverage(price, SlowLength); 15 | 16 | -------------------------------------------------------------------------------- /函數/技術指標/DMO.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | DMO指標(Directional Movement Oscillator)以 6 | DMI趨向指標指標中正負DI值,將此二條線合併而成的一條指標線。 7 | Length: 計算期數 8 | } 9 | 10 | input: Length(numeric); 11 | variable: pdi_value(0), ndi_value(0), adx_value(0); 12 | 13 | DirectionMovement(Length, pdi_value, ndi_value, adx_value); 14 | 15 | DMO =(pdi_value - ndi_value); 16 | 17 | -------------------------------------------------------------------------------- /函數/技術指標/DPO.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | XQ: DPO指標 6 | Detrended Price Oscillator,「非趨勢價格擺盪」指標 7 | Length: 計算期數 8 | } 9 | 10 | input: Length(numeric); 11 | 12 | DPO = Close - Average(Close, Length)[(Length /2) + 1]; 13 | 14 | -------------------------------------------------------------------------------- /函數/技術指標/D_Value.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | XQ: KD指標中的D值 6 | Length:計算期數 7 | Kt:Kt權數 8 | } 9 | input: Length(numeric), Kt(numeric); 10 | variable:_rsv(0), _k(0), _d(0); 11 | 12 | Stochastic(Length, Kt, Kt, _rsv, _k, _d); 13 | 14 | D_value = _d; 15 | 16 | 17 | -------------------------------------------------------------------------------- /函數/技術指標/EMP.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | EMP= (AVERAGE(C,3)+AVERAGE(C,6)+AVERAGE(C,12)+AVERAGE(C,24))/4; 5 | -------------------------------------------------------------------------------- /函數/技術指標/ERC.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | RC指標變動率的移動平均值(ERC) 6 | Length: 計算期數 7 | EMALength: 平滑期數 8 | } 9 | input: Length(numeric), EMALength(numeric); 10 | 11 | if Close[Length] > 0 then 12 | value1 = (Close - Close[Length]) / Close[Length]; 13 | 14 | ERC = XAverage(value1, EMALength); 15 | 16 | -------------------------------------------------------------------------------- /函數/技術指標/HL_Osc.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | XQ: HL-Osc 指標 6 | } 7 | variable: hlot(0); 8 | 9 | if TrueRange <> 0 then 10 | hlot = 100 * (H - C[1]) / TrueRange 11 | else 12 | hlot = 0; 13 | 14 | hl_osc = hlot; 15 | 16 | -------------------------------------------------------------------------------- /函數/技術指標/KST確認指標.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | value1=average(rateofchange(close,12),10); 5 | value2=average(rateofchange(close,20),10); 6 | value3=average(rateofchange(close,30),8); 7 | value4=average(rateofchange(close,40),15); 8 | 9 | ret = value1+value2*2+value3*3+value4*4; 10 | -------------------------------------------------------------------------------- /函數/技術指標/K_Value.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | XQ: KD指標中的K值 6 | Length:計算期數 7 | RSVt:RSVt權數 8 | } 9 | input: Length(numeric), RSVt(numeric); 10 | variable: _rsv(0), _k(0),_d(0); 11 | 12 | Stochastic(Length, RSVt, RSVt, _rsv, _k, _d); 13 | 14 | k_value = _k; 15 | 16 | 17 | -------------------------------------------------------------------------------- /函數/技術指標/KeltnerLB.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:Para(NumericSimple); 5 | 6 | //Keltner Channels 的繪製,是以一條指數移動平均線為中間, 然後在上下兩邊依據所謂的"平均真實範圍值"來繪出軌道的範圍來。 7 | 8 | KeltnerLB = KeltnerMA(20) - ATR(20) * Para; 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /函數/技術指標/KeltnerMA.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:n(NumericSimple); 5 | 6 | //Keltner Channels 的繪製,是以一條指數移動平均線為中間, 然後在上下兩邊依據所謂的"平均真實範圍值"來繪出軌道的範圍來。 7 | 8 | KeltnerMA = XAverage(close, n); 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /函數/技術指標/KeltnerUB.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:Para(NumericSimple); 5 | 6 | //Keltner Channels 的繪製,是以一條指數移動平均線為中間, 然後在上下兩邊依據所謂的"平均真實範圍值"來繪出軌道的範圍來。 7 | 8 | KeltnerUB = KeltnerMA(20) + ATR(20) * Para; 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /函數/技術指標/MAM.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(2); 3 | 4 | { 5 | XQ: MAM指標 :當日所計算出移動平均值減去n日前的移動平均值 6 | Length:計算平均期數 7 | Distance:相隔期間 8 | } 9 | Input: Length(numeric), Distance(numeric); 10 | 11 | Value1 = Average(Close, Length); 12 | Value2 = Average(Close, Length)[Distance]; 13 | 14 | MAM = Value1 - Value2; 15 | 16 | -------------------------------------------------------------------------------- /函數/技術指標/MA_Osc.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | XQ: MA-Osc :移動平均線擺盪指標。將兩條不同天期的簡單移動平均線相減即得 6 | Length1:第1條平均線期數 7 | Length2:第2條平均線期數 8 | } 9 | input: Length1(numeric), Length2(numeric); 10 | 11 | value1 = Average(close, Length1); 12 | value2 = Average(close, Length2); 13 | value3 = (value1 - value2); 14 | 15 | ma_osc = value3; 16 | 17 | -------------------------------------------------------------------------------- /函數/技術指標/MO.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(2); 3 | 4 | { 5 | MO運動量震盪指標(Momentum Oscillator)可以說是 6 | MOM運動量指標的另一種的表現方式, 7 | 它把原先以絕對數值展現的MOM指標,改成以相對的數值來展現 8 | Length: 計算期數 9 | } 10 | 11 | input: Length(numeric); 12 | 13 | if Close[Length] > 0 then 14 | mo = 100 * Close / Close[Length] 15 | else 16 | mo=0; 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /函數/技術指標/MTM.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | 以收盤價計算的運動量指標 6 | Length: 計算期數 7 | } 8 | input: Length(numeric); 9 | 10 | MTM = Momentum(Close, Length); 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /函數/技術指標/MTM_MA.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(2); 3 | 4 | { 5 | 對收盤價的運動量指標取再次平均價 6 | Length: 計算期數 7 | } 8 | input: Length(numeric); 9 | 10 | value1 = Momentum(Close, Length); 11 | if CurrentBar >= Length then 12 | Value2 = Average(Value1, Length) 13 | else 14 | Value2 = Value1; 15 | 16 | mtm_ma = value2; 17 | 18 | -------------------------------------------------------------------------------- /函數/技術指標/Momentum.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(2); 3 | 4 | // Momentum function 5 | // 6 | input: price(numericseries), length(numericsimple); 7 | 8 | Momentum = price - price[length]; 9 | 10 | 11 | -------------------------------------------------------------------------------- /函數/技術指標/PSY.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | XQ心理線:人氣指標心理線,計算特定期間內,行情上漲期數的比例 6 | Length: 計算期數 7 | } 8 | input: Length(numeric); 9 | 10 | PSY = 100 * CountIf(Close > Close[1], Length) / Length; 11 | 12 | 13 | -------------------------------------------------------------------------------- /函數/技術指標/PVC.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | Input: Length(numericsimple, "天數"); 5 | 6 | value1 = Average(Volume, Length); 7 | if value1 <> 0 then 8 | PVC = 100 * (Volume - value1) / value1 9 | else 10 | PVC = 0; 11 | -------------------------------------------------------------------------------- /函數/技術指標/RC.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(2); 3 | 4 | { 5 | RC指標變動率 6 | Length: 計算期數 7 | } 8 | input: Length(numeric); 9 | 10 | if Close[Length] > 0 then 11 | RC = (Close - Close[Length]) / Close[Length] 12 | else 13 | RC=0; 14 | 15 | 16 | -------------------------------------------------------------------------------- /函數/技術指標/RSV.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | { 5 | XQ: RSV指標 Raw Stochastic Value 6 | Length: 計算期數 7 | } 8 | input: Length(numeric); 9 | variable: RSVt(3), Kt(3), rsvx(0), k(0), _d(0); 10 | 11 | Stochastic(Length, RSVt, Kt, rsvx, k, _d); 12 | 13 | RSV =rsvx; 14 | -------------------------------------------------------------------------------- /函數/技術指標/TurnOverRate.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | input:period(numericsimple); 3 | value1=GetField("股本(億)")*10000; 4 | value2=average(volume,period); 5 | if value1<>0 6 | then value3=value2/value1*100; 7 | turnoverrate=value3; 8 | 9 | -------------------------------------------------------------------------------- /函數/技術指標/VA.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(2); 3 | 4 | VA = VA[1] + VAO; 5 | -------------------------------------------------------------------------------- /函數/技術指標/VAO.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | variable: support(0), resist(0), hlDiff(0); 5 | 6 | support = (Close - Low); 7 | resist = (High - Close); 8 | hlDiff = (High - Low); 9 | 10 | if hlDiff = 0 then 11 | VAO = 0 12 | else 13 | VAO = (support - resist) / hlDiff * v; 14 | -------------------------------------------------------------------------------- /函數/技術指標/VPT.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(2); 3 | 4 | // XQ: PVT指標 5 | // 6 | 7 | If CurrentBar = 1 then 8 | VPT = 0 9 | else 10 | VPT = VPT[1] + (close - close[1])/close[1] * Volume; 11 | 12 | -------------------------------------------------------------------------------- /函數/技術指標/VVA.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(2); 3 | 4 | // XQ: VVA指標 5 | // 6 | 7 | if High <> Low then 8 | Value1 = (Close - Open)/(High - Low) * Volume 9 | else 10 | Value1 = 0; 11 | 12 | If CurrentBar = 1 then 13 | VVA = Value1 14 | else 15 | VVA = Value1 + VVA[1]; 16 | -------------------------------------------------------------------------------- /函數/排行/乖離率排行榜.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | // 這是一個自訂排行條件的範例 5 | // 示範如何針對內建函數的回傳值進行排序 6 | // 使用者可以自行替換成需要使用的函數 7 | // 8 | // Length是期數 9 | // 10 | 11 | input: 12 | Length(5, numericsimple, "計算期間"); 13 | 14 | retval = bias(Length); 15 | -------------------------------------------------------------------------------- /函數/排行/收盤價排行榜.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | // 這是一個自訂排行條件的範例 5 | // 示範如何針對特定欄位的數值進行排序 6 | // 使用者可以自行替換成需要使用的欄位 7 | // 8 | // 9 | 10 | retval = GetField("收盤價"); 11 | 12 | { 13 | //同理,當日漲跌幅的排行榜就會是: 14 | retval = GetField("漲跌幅"); 15 | } -------------------------------------------------------------------------------- /函數/排行/收盤均價排行榜.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | // 這是一個自訂排行條件的範例 5 | // 示範如何針對特定欄位的N期平均進行排序 6 | // 使用者可以自行替換成需要使用的欄位 7 | // 8 | // Length是期數 9 | 10 | input: 11 | Length(3, numericsimple, "計算期間"); 12 | 13 | retval = Average(GetField("收盤價"),Length); 14 | 15 | { 16 | //如果想做均量的排行榜,只需要更換欄位為成交量: 17 | retval = Average(GetField("成交量"),Length); 18 | } -------------------------------------------------------------------------------- /函數/排行/漲幅排行榜.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | // 這是一個自訂排行條件的範例 5 | // 示範如何針對特定欄位的N期增幅進行排序 6 | // 使用者可以自行替換成需要使用的欄位 7 | // 8 | // Length是期數 9 | 10 | input: 11 | Length(20, numericsimple, "計算期間"); 12 | 13 | retval = rateofchange(GetField("收盤價"),Length); -------------------------------------------------------------------------------- /函數/排行/跌幅排行榜.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | // 這是一個自訂排行條件的範例 5 | // 示範如何針對特定欄位的N期減幅進行排序 6 | // 使用者可以自行替換成需要使用的欄位 7 | // 8 | // Length是期數 9 | 10 | input: 11 | Length(20, numericsimple, "計算期間"); 12 | 13 | retval = -rateofchange(GetField("收盤價"),Length); -------------------------------------------------------------------------------- /函數/日期相關/BarsLast.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(2); 3 | 4 | input: pX(TrueFalseSeries); 5 | 6 | if pX then value1 = currentbar; 7 | 8 | BarsLast = currentbar - value1; 9 | -------------------------------------------------------------------------------- /函數/日期相關/DateTime.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | setbarmode(1); 3 | datetime = date*1000000 + time; -------------------------------------------------------------------------------- /函數/日期相關/GetBarOffsetForYears.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | { 3 | 計算BarOffset for N years 4 | 5 | return 0 if out-of-range 6 | } 7 | 8 | input: years(numericsimple, "N年"); 9 | 10 | value1 = DateAdd(Date, "Y", -1 * years); 11 | retval = GetBarOffset(value1); -------------------------------------------------------------------------------- /函數/日期相關/GetLastTradeDate.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | // 傳入到期月份/年份, 回傳台灣期交所指數期貨的到期日 5 | // (不考慮國定假日等特殊事件) 6 | // 7 | input: 8 | _ExpiredM(numericsimple), 9 | _ExpiredY(numericsimple); 10 | 11 | GetLastTradeDate = NthDayofMonth(EncodeDate(_ExpiredY,_ExpiredM,1),3,3); -------------------------------------------------------------------------------- /函數/日期相關/LastDayOfMonth.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: SelectedMonth(numericsimple); 5 | 6 | value1 = dateadd(EncodeDate(year(date),SelectedMonth,1),"M",1); 7 | value2 = dateadd(value1,"D",-DayOfMonth(value1)); 8 | retval = DayOfMonth(value2); -------------------------------------------------------------------------------- /函數/統計分析/RSquare.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: Indep(numericseries), Dep(numericseries), Length(numericsimple); 5 | 6 | RSquare = Square(CoefficientR(Indep, Dep, Length)); 7 | -------------------------------------------------------------------------------- /函數/統計分析/StandardDev.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePrice(numericseries), Length(numericsimple), DataType(numericsimple); 5 | 6 | Value1 = VariancePS(thePrice, Length, DataType); 7 | if Value1 > 0 then 8 | StandardDev = SquareRoot(Value1) 9 | else 10 | StandardDev = 0; 11 | -------------------------------------------------------------------------------- /函數/趨勢分析/Angleprice.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | input:Date1(numeric),ang(numeric); 3 | 4 | variable:Date1Price(0); 5 | 6 | Date1Price =Open[Date1]; 7 | 8 | value1=tan(ang); 9 | value2=date1price*(1+value1*date1/100); 10 | angleprice=value2; -------------------------------------------------------------------------------- /函數/趨勢分析/LinearRegAngle.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:thePrice(numericseries); //"價格序列" 5 | input:Length(numericsimple); //"計算期間" 6 | 7 | variable: _Output(0); 8 | 9 | LinearReg(thePrice, Length, 0, value1, _Output, value3, value4); 10 | 11 | LinearRegAngle = _Output; 12 | -------------------------------------------------------------------------------- /函數/趨勢分析/LinearRegSlope.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:thePrice(numericseries); //"價格序列" 5 | input:Length(numericsimple); //"計算期間" 6 | 7 | variable: _Output(0); 8 | 9 | LinearReg(thePrice, Length, 0, _Output, value2, value3, value4); 10 | 11 | LinearRegSlope = _Output; 12 | 13 | -------------------------------------------------------------------------------- /函數/趨勢分析/TimeSeriesForecast.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: thePrice(numericseries), Length(numericsimple), TgtBar(numericsimple); 5 | variable: _Output(0); 6 | 7 | LinearReg(thePrice, Length, TgtBar, value1, value2, value3, _Output); 8 | 9 | TimeSeriesForecast = _Output; 10 | -------------------------------------------------------------------------------- /函數/趨勢分析/UpShadow.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | //上影線佔實體比例 3 | SetBarMode(1); 4 | 5 | if range = 0 then 6 | upshadow = 0 7 | else 8 | upshadow = (high - maxlist(open,close)) / range; 9 | 10 | -------------------------------------------------------------------------------- /函數/邏輯判斷/CountIF.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:TrueAndFalse(truefalseseries),Length(numericsimple); 5 | 6 | variable: variableA(0); 7 | 8 | variableA = 0; 9 | 10 | for Value1 = 0 to Length - 1 11 | begin 12 | if TrueAndFalse[Value1] then 13 | variableA = variableA + 1; 14 | end; 15 | 16 | CountIf = variableA; 17 | -------------------------------------------------------------------------------- /函數/邏輯判斷/CountIfARow.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:TrueAndFalse(truefalseseries),Length(numericsimple); 5 | 6 | CountIfARow = truecount(TrueAndFalse,Length); 7 | -------------------------------------------------------------------------------- /函數/邏輯判斷/IFF.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: Logicoperator(truefalsesimple), 5 | TrueReturnV(numericsimple), 6 | FalseReturnV(numericsimple); 7 | 8 | if Logicoperator then IFF = TrueReturnV 9 | else IFF = FalseReturnV; 10 | -------------------------------------------------------------------------------- /函數/邏輯判斷/SummationIF.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input: TrueAndFalse(truefalseseries), thePrice(numericseries), Length(numericsimple); 5 | variable: _Output(0); 6 | 7 | _Output = 0; 8 | 9 | for Value1 = 0 to Length - 1 10 | begin 11 | if TrueAndFalse[Value1] then _Output = _Output + thePrice[Value1]; 12 | end; 13 | 14 | SummationIf = _Output; 15 | -------------------------------------------------------------------------------- /函數/邏輯判斷/TrueAll.xs: -------------------------------------------------------------------------------- 1 | {@type:function_bool} 2 | SetBarMode(1); 3 | 4 | input:TrueAndFalse(truefalseseries), Length(numericsimple); 5 | 6 | TrueAll = True; 7 | 8 | for Value1 = 0 to Length - 1 9 | begin 10 | if TrueAndFalse[Value1] = False then 11 | begin 12 | TrueAll = False; 13 | break; 14 | end; 15 | end; 16 | -------------------------------------------------------------------------------- /函數/邏輯判斷/TrueAny.xs: -------------------------------------------------------------------------------- 1 | {@type:function_bool} 2 | SetBarMode(1); 3 | 4 | input:TrueAndFalse(truefalseseries), Length(numericsimple); 5 | 6 | TrueAny = False; 7 | 8 | for Value1 = 0 to Length - 1 9 | begin 10 | if TrueAndFalse[Value1] then 11 | begin 12 | TrueAny = True; 13 | break; 14 | end; 15 | end; 16 | -------------------------------------------------------------------------------- /函數/邏輯判斷/TrueCount.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | SetBarMode(1); 3 | 4 | input:TrueAndFalse(truefalseseries), Length(numericsimple); 5 | 6 | value2 = 0; 7 | 8 | for Value1 = 0 to Length - 1 9 | begin 10 | if TrueAndFalse[Value1] = true then 11 | value2 = value2 +1 12 | else 13 | begin 14 | break; 15 | end; 16 | end; 17 | TrueCount = value2; 18 | -------------------------------------------------------------------------------- /函數/量能相關/DiffTradeVolumeAtAskBid.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | { 3 | DiffTradeVolumeAtAskBid為分時買賣力的函數, 4 | 該函數運算出來的數值,與XS指標的「分時買賣力」指標相同。 5 | } 6 | 7 | value1 = GetField("外盤量"); 8 | value2 = GetField("內盤量"); 9 | DiffTradeVolumeAtAskBid = value1 - value2; -------------------------------------------------------------------------------- /函數/量能相關/DiffUpDownVolume.xs: -------------------------------------------------------------------------------- 1 | {@type:function} 2 | { 3 | DiffUpDownVolume為分時漲跌成交量的函數, 4 | 該函數運算出來的數值,與XS指標的「分時漲跌成交量」指標相同。 5 | } 6 | 7 | DiffUpDownVolume = GetField("上漲量") - GetField("下跌量"); -------------------------------------------------------------------------------- /指標/XQ技術指標/3-6 乖離率.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ 3-6 乖離率 3 | // 4 | input: Length1(3), Length2(6); 5 | 6 | SetInputName(1, "天數一"); 7 | SetInputName(2, "天數二"); 8 | 9 | Plot1(Bias(Length1) - Bias(Length2), "3-6乖離率(%)"); 10 | 11 | -------------------------------------------------------------------------------- /指標/XQ技術指標/3-6乖離率轉折點.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: 3-6乖離率轉折點 3 | // 4 | Value1 = 2 * Close[3] - Close[6]; 5 | Plot1(Value1, "T"); 6 | -------------------------------------------------------------------------------- /指標/XQ技術指標/ACC (加速量指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: ACC指標 3 | // 4 | input: Length(10); 5 | 6 | SetInputName(1, "天數"); 7 | 8 | value1 = Momentum(Close, Length); 9 | value2 = Momentum(value1, Length); 10 | 11 | Plot1(value2, "ACC"); -------------------------------------------------------------------------------- /指標/XQ技術指標/AD-Osc(聚散擺盪指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: A/D Osc 指標 3 | // 4 | variable: bp(0), sp(0), ado(0); 5 | 6 | bp = High - Open; 7 | sp = Close - Low; 8 | if High <> low then 9 | ado = (bp + sp)/(2*(High - Low))*100 10 | else 11 | ado = 50; 12 | 13 | plot1(ado, "A/D-Osc"); 14 | -------------------------------------------------------------------------------- /指標/XQ技術指標/ADI (累積分配指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: A/DI 指標 3 | // 4 | variable: adi(0); 5 | 6 | if Close > Close[1] then 7 | adi = adi[1] + (Close - minlist(low, close[1])) 8 | else 9 | begin 10 | if Close < Close[1] then 11 | adi = adi[1] - (maxlist(high, close[1]) - close) 12 | else 13 | adi = adi[1]; 14 | end; 15 | 16 | Plot1(adi, "A/DI"); 17 | -------------------------------------------------------------------------------- /指標/XQ技術指標/AR 指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: AR指標 3 | // 4 | input: Length(26); 5 | variable: sum(0), ar(0); 6 | 7 | SetInputName(1, "天數"); 8 | 9 | sum = Summation((Open - Low), Length); 10 | if sum <> 0 then 11 | ar = 100 * Summation((High - Open), length) / sum 12 | else 13 | ar = ar[1]; 14 | 15 | Plot1(ar, "AR(%)"); 16 | 17 | -------------------------------------------------------------------------------- /指標/XQ技術指標/ATR (平均真實區域).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: ATR指標 3 | // 4 | input: Length(14); 5 | 6 | SetInputName(1, "天數"); 7 | 8 | value1 = Average(TrueRange, Length); 9 | Plot1(value1, "ATR"); 10 | -------------------------------------------------------------------------------- /指標/XQ技術指標/BIAS 乖離率.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ 乖離率 3 | // 4 | input: Length1(5), Length2(10), Length3(20); 5 | 6 | SetInputName(1, "天數一"); 7 | SetInputName(2, "天數二"); 8 | SetInputName(3, "天數三"); 9 | 10 | Plot1(Bias(Length1), "BIAS1(%)"); 11 | Plot2(Bias(Length2), "BIAS2(%)"); 12 | Plot3(Bias(Length3), "BIAS3(%)"); 13 | 14 | -------------------------------------------------------------------------------- /指標/XQ技術指標/BR 指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ BR指標 3 | // 4 | input: Length(26); 5 | variable: sum(0), _br(0); 6 | 7 | SetInputName(1, "天數"); 8 | 9 | sum= Summation((Close[1] - Low), length); 10 | if sum <> 0 then 11 | _br = 100 * Summation((High - Close[1]), length) / sum 12 | else 13 | _br = _br[1]; 14 | 15 | Plot1(_br, "BR(%)"); 16 | -------------------------------------------------------------------------------- /指標/XQ技術指標/DPO (非趨勢價格擺盪指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: DPO指標 3 | // 4 | input: Length(10); 5 | variable: dpo(0); 6 | 7 | SetInputName(1, "天數"); 8 | 9 | dpo = Close - Average(Close, Length)[(Length /2) + 1]; 10 | 11 | Plot1(dpo, "DPO"); 12 | 13 | -------------------------------------------------------------------------------- /指標/XQ技術指標/HL-Osc (高低價擺盪指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: HL-Osc 指標 3 | // 4 | variable: tr(0), hlo(0); 5 | 6 | tr = TrueRange; 7 | if tr <> 0 then 8 | hlo = 100 * (H - C[1]) / tr 9 | else 10 | hlo = 0; 11 | 12 | plot1(hlo, "HL-Osc"); 13 | 14 | -------------------------------------------------------------------------------- /指標/XQ技術指標/KD 隨機指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: KD指標 3 | // 4 | input: Length(9), RSVt(3), Kt(3); 5 | variable: rsv(0), k(0), _d(0); 6 | 7 | SetInputName(1, "天數"); 8 | SetInputName(2, "RSVt權數"); 9 | SetInputName(3, "Kt權數"); 10 | 11 | Stochastic(Length, RSVt, Kt, rsv, k, _d); 12 | 13 | Plot1(k, "K(%)"); 14 | Plot2(_d, "D(%)"); 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /指標/XQ技術指標/MA-Osc (移動平均線擺盪指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: MA-Osc 3 | // 4 | input: Length1(5), Length2(10); 5 | 6 | SetInputName(1, "天數一"); 7 | SetInputName(2, "天數二"); 8 | 9 | value1 = Average(close, Length1); 10 | value2 = Average(close, Length2); 11 | value3 = (value1 - value2); 12 | 13 | Plot1(value3, "MA-Osc"); 14 | -------------------------------------------------------------------------------- /指標/XQ技術指標/MAM(移動平均動量指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: MAM指標 3 | // 4 | Input: Length(10), Distance(10); 5 | Variable: mam(0); 6 | 7 | SetInputName(1, "天數一"); 8 | SetInputName(2, "天數二"); 9 | 10 | Value1 = Average(Close, Length); 11 | Value2 = Average(Close, Length)[Distance]; 12 | 13 | mam = Value1 - Value2; 14 | 15 | Plot1(mam, "MAM"); 16 | -------------------------------------------------------------------------------- /指標/XQ技術指標/MO(運動量擺盪指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: MO指標 3 | // 4 | input: Length(10); 5 | variable: mo(0); 6 | 7 | SetInputName(1, "天數"); 8 | 9 | mo = 100 * Close / Close[Length]; 10 | 11 | Plot1(mo, "MO"); 12 | -------------------------------------------------------------------------------- /指標/XQ技術指標/MTM(動量指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: MTM指標 3 | // 4 | input: Length(10); 5 | 6 | SetInputName(1, "天數"); 7 | 8 | value1 = Momentum(Close, Length); 9 | if CurrentBar >= Length then 10 | Value2 = Average(Value1, Length) 11 | else 12 | Value2 = Value1; 13 | 14 | Plot1(value1, "MTM"); 15 | Plot2(value2, "MA"); 16 | 17 | 18 | -------------------------------------------------------------------------------- /指標/XQ技術指標/PSY 心理線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: 心理線 3 | // 4 | input: Length1(12), Length2(24); 5 | 6 | SetInputName(1, "天數一"); 7 | SetInputName(2, "天數二"); 8 | 9 | Value1 = 100 * CountIf(Close > Close[1], Length1) / Length1; 10 | Value2 = 100 * CountIf(Close > Close[1], Length2) / Length2; 11 | 12 | Plot1(Value1, "PSY1"); 13 | Plot2(Value2, "PSY2"); 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /指標/XQ技術指標/RC(價格變動率指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: RC指標 3 | // 4 | input: Length(12), EMALength(12); 5 | 6 | SetInputName(1, "天數"); 7 | SetInputName(2, "平滑天數"); 8 | 9 | value1 = (Close - Close[Length]) / Close[Length]; 10 | value2 = XAverage(value1, EMALength); 11 | 12 | Plot1(value1, "RC"); 13 | Plot2(value2, "ERC"); 14 | 15 | -------------------------------------------------------------------------------- /指標/XQ技術指標/RSI指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: RSI指標 3 | // 4 | input: Length1(6), Length2(12); 5 | 6 | SetInputName(1, "天數一"); 7 | SetInputName(2, "天數二"); 8 | 9 | Plot1(RSI(Close, Length1), "RSI1"); 10 | Plot2(RSI(Close, Length2), "RSI2"); 11 | 12 | 13 | -------------------------------------------------------------------------------- /指標/XQ技術指標/RSV 指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: RSV指標 3 | // 4 | input: Length(9); 5 | variable: RSVt(3), Kt(3), rsv(0), k(0), _d(0); 6 | 7 | SetInputName(1, "天數"); 8 | 9 | Stochastic(Length, RSVt, Kt, rsv, k, _d); 10 | 11 | Plot1(rsv, "RSV(%)"); 12 | -------------------------------------------------------------------------------- /指標/XQ技術指標/TRIX(三重指數平滑移動平均指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: TRIX指標 3 | // 4 | input: Length1(9), Length2(15); 5 | 6 | SetInputName(1, "天數一"); 7 | SetInputName(2, "天數二"); 8 | 9 | Value1 = TRIX(Close, Length1) * 100; 10 | Value2 = TRIX(Close, Length2) * 100; 11 | 12 | Plot1(Value1, "TRIX1"); 13 | Plot2(Value2, "TRIX2"); 14 | -------------------------------------------------------------------------------- /指標/XQ技術指標/快速KD 隨機指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: 快速KD指標 3 | // 4 | input: Length(9), RSVt(3); 5 | variable: rsv(0), k(0), _d(0); 6 | 7 | SetInputName(1, "天數"); 8 | SetInputName(2, "RSVt權數"); 9 | 10 | Stochastic(Length, RSVt, 3, rsv, k, _d); 11 | 12 | Plot1(rsv, "K(%)"); 13 | Plot2(k, "D(%)"); 14 | -------------------------------------------------------------------------------- /指標/XQ量能指標/CV(積量指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: CV指標 3 | // 4 | Variable: _cv(0); 5 | 6 | If CurrentBar = 1 then 7 | _cv = Close * Volume 8 | else 9 | _cv = _cv[1] + (Close - Close[1]) * Volume; 10 | 11 | Plot1(_cv, "CV"); 12 | -------------------------------------------------------------------------------- /指標/XQ量能指標/CVI(累計成交量指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: CVI指標 3 | // 4 | variable: _cvi(0); 5 | 6 | If CurrentBar > 1 then 7 | _cvi = _cvi[1] + GetField("UpVolume") - GetField("DownVolume"); 8 | 9 | Plot1(_cvi, "CVI"); 10 | -------------------------------------------------------------------------------- /指標/XQ量能指標/NVI(負量指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: NVI指標 3 | // 4 | Variable: _nvi(1); 5 | 6 | if CurrentBar = 1 then 7 | _nvi = 1 8 | else 9 | begin 10 | if Volume < Volume[1] then 11 | _nvi = _nvi[1] + (Close - Close[1]) / Close[1] 12 | else 13 | _nvi = _nvi[1]; 14 | end; 15 | 16 | Plot1(_nvi, "NVI"); 17 | 18 | -------------------------------------------------------------------------------- /指標/XQ量能指標/PVC(成交量變動百分比指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: PVC指標 3 | // 4 | Input: Length(10); 5 | Variable: _pvc(0); 6 | 7 | SetInputName(1, "天數"); 8 | 9 | value1 = Average(Volume, Length); 10 | if value1 <> 0 then 11 | _pvc = 100 * (Volume - value1) / value1 12 | else 13 | _pvc = 0; 14 | 15 | Plot1(_pvc, "PVC"); 16 | -------------------------------------------------------------------------------- /指標/XQ量能指標/PVI(正量指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: PVI指標 3 | // 4 | Variable: _pvi(1); 5 | 6 | If CurrentBar = 1 then 7 | _pvi = 1 8 | else 9 | begin 10 | if Volume > Volume[1] then 11 | _pvi = _pvi[1] + (Close - Close[1]) / Close[1] 12 | else 13 | _pvi = _pvi[1]; 14 | end; 15 | 16 | Plot1(_pvi, "PVI"); 17 | -------------------------------------------------------------------------------- /指標/XQ量能指標/PVT(價量趨勢指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: PVT指標 3 | // 4 | variable: _pvt(0); 5 | 6 | If CurrentBar = 1 then 7 | _pvt = 0 8 | else 9 | _pvt = _pvt[1] + (close - close[1])/close[1] * Volume; 10 | 11 | Plot1(_pvt, "PVT"); 12 | -------------------------------------------------------------------------------- /指標/XQ量能指標/TAPI(每點成交值指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: TAPI指標 3 | // 4 | 5 | Plot1(Volume / Close, "TAPI"); 6 | -------------------------------------------------------------------------------- /指標/XQ量能指標/VA(成交量累積散佈指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: VA指標 3 | // 4 | Variable: _va(0); 5 | 6 | if High <> Low then 7 | Value1 = ((Close - Low) - (High - Close))/(High - Low) * Volume 8 | else 9 | Value1 = 0; 10 | 11 | If CurrentBar = 1 then 12 | _va = Value1 13 | else 14 | _va = Value1 + _va[1]; 15 | 16 | Plot1(_va, "VA"); 17 | -------------------------------------------------------------------------------- /指標/XQ量能指標/VRC(成交量變動指標).xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: VRC指標 3 | // 4 | Input: Length(12); 5 | Variable: _vrc(0); 6 | 7 | SetInputName(1, "天數"); 8 | 9 | if volume[Length] <> 0 then 10 | _vrc = 100 * (volume - volume[Length])/volume[Length] 11 | else 12 | _vrc = 50; 13 | 14 | Plot1(_vrc, "VRC"); 15 | -------------------------------------------------------------------------------- /指標/XQ量能指標/VVA指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // XQ: VVA指標 3 | // 4 | variable: _vva(0); 5 | 6 | if High <> Low then 7 | Value1 = (Close - Open)/(High - Low) * Volume 8 | else 9 | Value1 = 0; 10 | 11 | If CurrentBar = 1 then 12 | _vva = Value1 13 | else 14 | _vva = Value1 + _vva[1]; 15 | 16 | Plot1(_vva, "VVA"); 17 | -------------------------------------------------------------------------------- /指標/XQ量能指標/新聞分數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | XQ量能指標。 4 | 支援日頻率。支援上市櫃普通股商品。 5 | } 6 | 7 | value1 = GetField("新聞正向分數") - GetField("新聞負向分數"); 8 | //新聞總分=正向分數-負向分數。來判斷目前的新聞聲量為正向或者負向。 9 | 10 | plot1(value1,"新聞總分");//正向分數-負向分數 11 | plot2(GetField("新聞聲量分數"),"新聞總量",checkbox:=1);//正向分數+負向分數 12 | plot3(GetField("新聞正向分數"),"新聞正總量",checkbox:=0); 13 | plot4(GetField("新聞負向分數"),"新聞負總量",checkbox:=0); -------------------------------------------------------------------------------- /指標/主圖指標/EMA.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | Input: Period1(50); SetInputName(1, "EMA1"); 3 | Input: Period2(120); SetInputName(2, "EMA2"); 4 | Input: Period3(240); setinputname(3, "EMA3"); 5 | 6 | Plot1(EMA(Close, Period1), "EMA1"); 7 | Plot2(EMA(Close, Period2), "EMA2"); 8 | Plot3(EMA(Close, Period3), "EMA3"); -------------------------------------------------------------------------------- /指標/主圖指標/SAR.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: 3 | AFInitial(0.02, "加速因子起始值"), 4 | AFIncrement(0.02, "加速因子累加值"), 5 | AFMax(0.2, "加速因子最高值"); 6 | 7 | plot1(SAR(AFInitial, AFIncrement, AFMax), "SAR"); -------------------------------------------------------------------------------- /指標/主圖指標/唐奇安通道.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/唐奇安通道/ 5 | } 6 | 7 | input:Period(13,"天數"); 8 | 9 | value1 = Highest(H, period); 10 | value2 = Lowest(L, period); 11 | 12 | plot1(value1[1],"通道上緣"); 13 | plot2((value1+value2)/2,"通道中線"); 14 | plot3(value2[1],"通道下緣" ); 15 | -------------------------------------------------------------------------------- /指標/主圖指標/投資建議目標價.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | //支援頻率:不定期 3 | //支援商品 :美(股票) 4 | var:exchange(""); 5 | exchange = GetSymbolInfo("交易所"); 6 | if exchange <> "NYSE" and exchange <> "NASDAQ" and exchange <> "AMEX" then raiseruntimeerror("僅支援美股"); 7 | 8 | plot1(getField("投資建議目標價"),"目標價"); -------------------------------------------------------------------------------- /指標/主圖指標/當日成本線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {均線 = 當日所有成交Tick的平均價格(sum(pv)/sum(v)), 也就是當日的成本 3 | 支援商品:台股/期貨/選擇權/陸股/港股/美股/大盤/類股} 4 | 5 | if barfreq <> "Min" and barfreq <> "D" then 6 | raiseruntimeerror("僅支援分鐘與日頻率"); 7 | 8 | plot1(GetField("均價"),"均價"); -------------------------------------------------------------------------------- /指標/即時籌碼/分時漲跌成交量.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {支援商品類型:台股/期權/選擇權/大盤/類股指數} 3 | 4 | if barfreq <> "Min" and barfreq <> "D" and barfreq <> "AD" then 5 | raiseruntimeerror("僅支援分鐘與日頻率(含還原)"); 6 | 7 | value1 = GetField("上漲量"); 8 | value2 = GetField("下跌量"); 9 | value3 = value1 - value2; 10 | plot1(value3,"漲跌成交(分時)"); 11 | plot2(value1,"上漲量",checkbox:=0); 12 | plot3(value2,"下跌量",checkbox:=0); -------------------------------------------------------------------------------- /指標/即時籌碼/買賣力.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {指標數值定義:(外盤)量 = 開盤累計到目前的(外盤)成交量 3 | 4 | 支援商品:台股/期貨/選擇權} 5 | 6 | value91 = GetField("外盤量"); 7 | 8 | value1 = GetField("外盤量","D"); 9 | value2 = GetField("內盤量","D"); 10 | value3 = value1 - value2; 11 | plot1(value3,"買賣力"); 12 | plot2(value1,"外盤量",checkbox:=0); 13 | plot3(value2,"內盤量",checkbox:=0); -------------------------------------------------------------------------------- /指標/大盤指標/ALF亞歷山大過濾指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: length(10); setinputname(1, "天期"); 3 | 4 | Value1 = close / close[length-1]; 5 | plot1(Value1, "亞歷山大過濾指標"); 6 | 7 | -------------------------------------------------------------------------------- /指標/大盤指標/KST確認指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | variable:kst(0); 3 | 4 | value1=average(rateofchange(close,12),10); 5 | value2=average(rateofchange(close,20),10); 6 | value3=average(rateofchange(close,30),8); 7 | value4=average(rateofchange(close,40),15); 8 | 9 | kst=value1+value2*2+value3*3+value4*4; 10 | 11 | plot1(kst,"KST確認指標"); -------------------------------------------------------------------------------- /指標/大盤指標/OTC佔大盤成交量比.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/otc跟上市成交量比值是股市多空指標/ 5 | } 6 | 7 | input: Period(5,"期數"); 8 | 9 | value1=GetSymbolField("tse.tw","成交量"); 10 | value2=GetSymbolField("otc.tw","成交量"); 11 | value3=value2/value1*100; 12 | value4=average(value3,Period); 13 | 14 | plot1(value4,"OTC/TSE(%)"); 15 | Plot2(value2,"OTC成交量"); 16 | -------------------------------------------------------------------------------- /指標/大盤指標/上漲佔比.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | value1=GetField("上漲家數"); 3 | value2=GetField("下跌家數"); 4 | value3=value1+value2; 5 | if value3 = 0 then value4 = 0 else value4=value1/value3*100; 6 | 7 | plot1(value4,"上漲佔比"); 8 | 9 | -------------------------------------------------------------------------------- /指標/大盤指標/上漲量比重.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/盤上成交是否真的是重要指標/ 5 | } 6 | 7 | if barfreq = "Tick" or barfreq = "Min" then 8 | begin 9 | value1=GetField("上漲量"); 10 | end else begin 11 | value1=GetField("上漲量","D"); 12 | end; 13 | 14 | if volume<>0 then 15 | value2=value1/volume; 16 | plot1(average(value2,5),"上漲量比重"); -------------------------------------------------------------------------------- /指標/大盤指標/台指選倉P/C.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | value1=getsymbolfield("txo00.tf","買賣權未平倉量比率"); 3 | plot1(value1,"台指選倉P/C"); -------------------------------------------------------------------------------- /指標/大盤指標/噪音指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | 3 | input:n1(5); setinputname(1,"計算天期"); 4 | input:n2(5); setinputname(2,"移動平均天期"); 5 | 6 | value1=absvalue(close-close[n1-1]); 7 | value2=summation(range,n1); 8 | if value1 <> 0 then 9 | begin 10 | value3 = value2 / value1; 11 | value4 = average(value3,n2); 12 | end; 13 | 14 | plot1(value4,"噪音指標"); 15 | -------------------------------------------------------------------------------- /指標/大盤指標/多空點數指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/多空點數指標/ 5 | } 6 | 7 | variable:i(0),Lscore(0),Sscore(0); 8 | 9 | Lscore=0; 10 | Sscore=0; 11 | 12 | for i = 1 to 100 begin 13 | if C> H[i] then 14 | Lscore += 1 15 | else if C < L[i] then 16 | Sscore += 1; 17 | end; 18 | PLOT1(LSCORE-SSCORE,"多空點數"); 19 | -------------------------------------------------------------------------------- /指標/大盤指標/大盤多空指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/打造自己的大盤多空函數/ 5 | } 6 | 7 | input:Length(7,"計算天數"); 8 | input:LowLimit(5,"外資買超天數"); 9 | 10 | plot1(tselsindex(Length,LowLimit)); -------------------------------------------------------------------------------- /指標/大盤指標/實質買賣盤比指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:length(5,"期數"); 3 | 4 | if barfreq = "Tick" or barfreq = "Min" 5 | then raiseruntimeerror("不支援此頻率"); 6 | 7 | value1=GetField("實質買盤比"); 8 | value2=GetField("實質賣盤比"); 9 | value3=average(value1,length)-80; 10 | plot1(value3,"實質買賣盤比"); 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /指標/大盤指標/尼古斯指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: length(30); setinputname(1, "天期"); 3 | 4 | value1=GetField("上漲家數"); 5 | value2=GetField("下跌家數"); 6 | value3=average(value1,length); 7 | value4=average(value2,length); 8 | if value4 <> 0 then value5=value3/value4; 9 | 10 | plot1(value5, "尼古斯指標"); -------------------------------------------------------------------------------- /指標/大盤指標/法人買進賣出比重指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:period(5,"期數"); 3 | 4 | if barfreq = "Tick" or barfreq = "Min" 5 | then raiseruntimeerror("不支援此頻率"); 6 | 7 | value1=GetField("法人買進比重"); 8 | value2=GetField("法人賣出比重"); 9 | value3=value1-value2; 10 | value4=average(value3,period); 11 | plot1(value4,"法人買賣比重差額的移動平均"); -------------------------------------------------------------------------------- /指標/大盤指標/漲跌停家數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | value1=GetField("漲停家數"); 3 | value2=GetField("跌停家數"); 4 | plot1(value1,"漲停家數"); 5 | plot2(value2,"跌停家數"); -------------------------------------------------------------------------------- /指標/大盤指標/當日沖銷張數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:length(5,"期數"); 3 | 4 | if barfreq = "Tick" or barfreq = "Min" 5 | then raiseruntimeerror("不支援此頻率"); 6 | 7 | value1=GetField("當日沖銷張數"); 8 | value2=average(value1,length); 9 | plot1(value2,"當日沖銷張數的移動平均"); 10 | 11 | -------------------------------------------------------------------------------- /指標/大盤指標/開盤委買委賣差.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | 收錄於「三週學會程式交易:打造你的第一筆自動化交易」 245頁 5 | https://www.ipci.com.tw/books_in.php?book_id=724 6 | } 7 | 8 | input:length(5,"天期"); 9 | 10 | value1=GetField("開盤委買", "D"); 11 | value2=GetField("開盤委賣", "D"); 12 | value3=value1-value2; 13 | value4=average(value3,length); 14 | 15 | plot1(value4,"開盤委買賣差之移動平均"); 16 | 17 | -------------------------------------------------------------------------------- /指標/市場動能/台灣50KD多方家數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股內, 目前K > D的家數 3 | 使用KD指標,資料期數為9,K值平滑期數為3,D值平滑期數為3。} 4 | 5 | value1 = GetSymbolField("TSE50.SJ","TW50KD多空家數"); 6 | 7 | plot1(value1,"台灣50KD多方家數"); -------------------------------------------------------------------------------- /指標/市場動能/台灣50MTM多方家數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股內, Momentum(10) > 0的家數. 3 | Momentum(N) = 目前價格 - N筆資料前的Close。} 4 | 5 | value1 = GetSymbolField("TSE50.SJ","TW50MTM多空家數"); 6 | 7 | plot1(value1,"台灣50MTM多方家數"); -------------------------------------------------------------------------------- /指標/市場動能/台灣50上昇趨勢家數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股, 趨勢向上的家數. 3 | 趨勢向上的定義是計算近6根K棒(含當前這一根K棒)的線性回歸線是否向上} 4 | 5 | value1 = GetSymbolField("TSE50.SJ","TW50上昇趨勢家數"); 6 | 7 | plot1(value1,"台灣50上昇趨勢家數"); -------------------------------------------------------------------------------- /指標/市場動能/台灣50上漲家數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股,這一根K棒上漲的家數。 3 | K棒上漲的定義為,目前收盤價 > 前一根K棒的收盤價} 4 | 5 | value1 = GetSymbolField("TSE50.SJ","TW50價格上漲家數"); 6 | 7 | plot1(value1,"台灣50上漲家數"); -------------------------------------------------------------------------------- /指標/市場動能/台灣50創新低家數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股, 最低價創近20期新低的家數。} 3 | 4 | value1 = GetSymbolField("TSE50.SJ","TW50創新低家數"); 5 | 6 | plot1(value1,"台灣50創新低家數"); -------------------------------------------------------------------------------- /指標/市場動能/台灣50創新高家數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股,最高價創近20期新高的家數。} 3 | 4 | value1 = GetSymbolField("TSE50.SJ","TW50創新高家數"); 5 | 6 | plot1(value1,"台灣50創新高家數"); -------------------------------------------------------------------------------- /指標/市場動能/台灣50均線多方家數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股內, 目前股價大於10期簡單移動均線之上的家數。} 3 | 4 | value1 = GetSymbolField("TSE50.SJ","TW50均線多空家數"); 5 | 6 | plot1(value1,"台灣50均線多方家數"); -------------------------------------------------------------------------------- /指標/市場動能/台灣50大單成交次數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股, 近10分鐘(買進大單次數+買進特大單次數)的平均值} 3 | 4 | value1 = GetSymbolField("TSE50.SJ","TW50大單成交次數"); 5 | 6 | plot1(value1,"台灣50大單成交次數"); -------------------------------------------------------------------------------- /指標/市場動能/台灣50大單買進金額.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股,近10根K棒的買進大單金額平均值。 3 | 因為不跨日,所以開盤不足10根K棒時則依照開盤根棒數平均(跨K棒時送出前一根K棒的統計值)} 4 | 5 | value1 = GetSymbolField("TSE50.SJ","TW50大單買進金額"); 6 | 7 | plot1(value1,"台灣50大單買進金額(元)"); -------------------------------------------------------------------------------- /指標/市場動能/台灣50大戶買賣力.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股, 當分鐘大戶買賣力金額。 3 | 大戶買賣力為,買進(大單+特大單)-賣出(大單+特大單)} 4 | 5 | value1 = GetSymbolField("TSE50.SJ","TW50大戶買賣力"); 6 | 7 | plot1(value1,"台灣50大戶買賣力(元)"); -------------------------------------------------------------------------------- /指標/市場動能/台灣50紅K家數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {統計台灣50成分股內, 目前這根K棒是紅K棒的家數. 3 | 紅K棒的定義為,收盤價大於開盤價。} 4 | 5 | plot1(GetSymbolField("TSE50.SJ","TW50紅K家數"),"台灣50紅K家數"); -------------------------------------------------------------------------------- /指標/技術指標/CMI市場波動指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/如何判斷現在是趨勢還是盤整-一個還在研究的課/ 5 | } 6 | 7 | input:period(10,"計算區間"); 8 | value1=(close-close[period-1])/(highest(high,period)-lowest(low,period))*100; 9 | value2=absvalue(value1)-30; 10 | value3=average(value2,3); 11 | plot1(value3,"市場波動指標"); -------------------------------------------------------------------------------- /指標/技術指標/CR指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:Length(26,"N日累積"); 3 | variable:Upsum(0),Downsum(0),CR(0); 4 | 5 | Upsum = summation(high - WeightedClose[1],Length); 6 | Downsum = summation(WeightedClose[1] - low,Length); 7 | 8 | if Downsum <> 0 then 9 | CR = Upsum / Downsum *100 10 | else 11 | CR = CR[1]; 12 | 13 | plot1(CR,"CR(%)"); -------------------------------------------------------------------------------- /指標/技術指標/DBCD 異同離差乖離率 .xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/異同離差乖離率dbcd在單一國家股票型基金的應用/ 5 | } 6 | 7 | input: 8 | length1(10,"短天期"), 9 | length2(20,"長天期"), 10 | length3(14,"平均天期"); 11 | 12 | value1=bias(length1); 13 | value2=bias(length2); 14 | value3=value2-value1; 15 | value4=average(value3,length3); 16 | plot1(value4,"DBCD"); -------------------------------------------------------------------------------- /指標/技術指標/DMI.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/787/ 5 | } 6 | 7 | input:length(10,"期數"); 8 | 9 | variable: pdi_value(0), ndi_value(0), adx_value(0); 10 | 11 | DirectionMovement(Length, pdi_value, ndi_value, adx_value); 12 | value1=pdi_value-ndi_value; 13 | 14 | plot1(pdi_value,"向上力量"); 15 | plot2(ndi_value,"向下力量"); 16 | plot3(value1,"多空力道差"); 17 | 18 | -------------------------------------------------------------------------------- /指標/技術指標/EMA-SMA.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:period(20,"計算期間"); 3 | 4 | value1=EMA(close,period); 5 | value2=average(close,period); 6 | if close<>0 then 7 | value3=(value1-value2)/close*100; 8 | 9 | plot1(value3,"EMA-SMA"); -------------------------------------------------------------------------------- /指標/技術指標/Elder 多頭力道指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // Elder 多頭力道指標 3 | // 4 | input: Length(13); 5 | 6 | SetInputName(1, "天數"); 7 | Value1 = High - XAverage(Close, Length); 8 | 9 | Plot1(Value1, "多頭"); 10 | 11 | 12 | -------------------------------------------------------------------------------- /指標/技術指標/Elder 空頭力道指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | // Elder 空頭力道指標 3 | // 4 | input: Length(13); 5 | 6 | SetInputName(1, "天數"); 7 | 8 | Value1 = Low - XAverage(Close, Length); 9 | 10 | Plot1(Value1, "空頭"); 11 | 12 | 13 | -------------------------------------------------------------------------------- /指標/技術指標/HV歷史波動率指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:LENGTH1(6,"短天期"),LENGTH2(100,"短天期"); 3 | 4 | variable:HVS(0),HVL(0),HVindex(0); 5 | value1=log(close/close[1]); 6 | HVS=STANDARDDEV(value1,LENGTH1,1)*100*SQUAREROOT(252); 7 | HVL=STANDARDDEV(VALUE1,LENGTH2,1)*100*SQUAREROOT(252); 8 | HVindex=HVS/HVL; 9 | 10 | plot1(hvindex,"歷史波動率指標"); -------------------------------------------------------------------------------- /指標/技術指標/LRR線性迴歸反轉指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:period(10,"期數"); 3 | 4 | variable:lrr(0); 5 | 6 | value1=linearregslope(close,period); 7 | if value1>value1[1] then 8 | lrr=1 9 | else 10 | lrr=-1; 11 | 12 | plot1(lrr,"線性迴歸反轉指標"); -------------------------------------------------------------------------------- /指標/技術指標/Mass Index.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: length1(9); setinputname(1, "天期一"); 3 | input: length2(25); setinputname(2, "天期二"); 4 | 5 | value1 = average(range,length1); 6 | value2 = average(value1,length1); 7 | if value2 = 0 then value3 = 0 else value3 = value1/value2; 8 | value4 = summation(value3,length2); 9 | 10 | plot1(value4,"Mass Index"); 11 | -------------------------------------------------------------------------------- /指標/技術指標/N日內上漲天數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:length(20,"期數"); 3 | 4 | variable:count(0); 5 | variable:x1(0); 6 | 7 | count=countif(close>close[1],length); 8 | 9 | plot1(count,"上漲天數"); -------------------------------------------------------------------------------- /指標/技術指標/R平方.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/趨勢檢定器/ 5 | } 6 | 7 | input:Length(20,"計算期間"); 8 | 9 | LinearReg(close, Length, 0, value1, value2, value3, value4); 10 | //做收盤價20天線性回歸 11 | {value1:斜率,value4:預期值} 12 | value5=rsquare(close,value4,Length);//算收盤價與線性回歸值的R平方 13 | 14 | plot1(value5,"R平方"); 15 | plot2(0.2,"趨勢成形線"); -------------------------------------------------------------------------------- /指標/技術指標/Stoller平均波幅通道.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: 3 | avlength(5,"均線期數"), 4 | atrlength(15,"ATR平均期數"), 5 | k(1.35,"常數"); 6 | variable:hband(0),lband(0); 7 | 8 | hband=average(close,avlength)+average(truerange,atrlength)*k; 9 | lband=average(close,avlength)-average(truerange,atrlength)*k; 10 | 11 | plot1(hband,"通道上限"); 12 | plot2(close,"收盤價"); 13 | plot3(lband,"通道下限"); 14 | -------------------------------------------------------------------------------- /指標/技術指標/ado聚散擺盪平均線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:period(10,"移動平均線天期"); 3 | value1=average(ado,period); 4 | plot1(value1,"ado聚散擺盪平均線"); -------------------------------------------------------------------------------- /指標/技術指標/coppock indicator.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | variable:coppock(0); 3 | value1=rateofchange(close,14); 4 | value2=rateofchange(close,11); 5 | value3=value1+value2; 6 | value4=xaverage(value3,10); 7 | plot1(value4,"coppock indicator"); 8 | -------------------------------------------------------------------------------- /指標/技術指標/ease of movement指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: 3 | length1(9,"一次平滑期數"), 4 | length2(9,"二次平滑期數"); 5 | 6 | value1=(high+low)/2; 7 | value2=value1-value1[1]; 8 | value3=volume/(high-low); 9 | value4=value2/value3; 10 | value5=average(value4,length1); 11 | value6=average(value5,length2); 12 | 13 | plot1(value5,"EMV"); 14 | plot2(value6,"EMV-MA"); -------------------------------------------------------------------------------- /指標/技術指標/range trading指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | value1=average(range,200); 3 | value2=average(range,3); 4 | value3=(value2-value1)/value1; 5 | plot1(value3,"長短天期range差"); 6 | 7 | -------------------------------------------------------------------------------- /指標/技術指標/上影線佔實體比例五日平均.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | value1=average(upshadow,5); 3 | 4 | plot1(value1,"五日平均上影線佔實體比例"); 5 | 6 | -------------------------------------------------------------------------------- /指標/技術指標/上漲下跌角度線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/漲勢加速的股票怎麼寫順便介紹angle這個函數/ 5 | } 6 | 7 | input: periods(5, "期數"); 8 | 9 | Value1 = Angle(Date[periods], Date); 10 | 11 | Plot1(Value1, "角度"); -------------------------------------------------------------------------------- /指標/技術指標/上漲天數指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:count1(20); 3 | input:count2(10); 4 | 5 | value1=countif(close>close[1],count1); 6 | value2=countif(close>close[1],count2); 7 | value3=value1-value2; 8 | 9 | plot1(value1); 10 | plot2(value2); 11 | plot3(value3); -------------------------------------------------------------------------------- /指標/技術指標/主動買力.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:p1(5,"短天期"); 3 | input:p2(20,"長天期"); 4 | 5 | if barfreq = "Tick" or barfreq = "Min" 6 | then raiseruntimeerror("不支援此頻率"); 7 | 8 | value1=GetField("主動買力"); 9 | value2=average(value1,p1); 10 | value3=average(value1,p2); 11 | 12 | plot1(value2,"主動買力短天期MA"); 13 | plot2(value3,"主動買力長天期MA"); 14 | 15 | 16 | -------------------------------------------------------------------------------- /指標/技術指標/倉 put call ratio.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | //台指選擇權現貨(TXO00.TF) 的 買賣權未平倉量比率 3 | 4 | value1=GetSymbolField("TXO00.TF", "買賣權未平倉量比率"); 5 | plot1(value1,"put call ratio"); -------------------------------------------------------------------------------- /指標/技術指標/價格震盪指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: length1(5); setinputname(1, "短天期"); 3 | input: length2(20); setinputname(2, "長天期"); 4 | 5 | value1 = average(close, length1); 6 | value2 = average(close, length2); 7 | 8 | if value1 = 0 then value3 = 0 else value3 = 100 * (value1 - value2) / value1; 9 | 10 | plot1(value3, "OSCP"); 11 | 12 | 13 | -------------------------------------------------------------------------------- /指標/技術指標/價量斜率指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | value1=average(close,5); 3 | value2=average(volume,5); 4 | value3=linearregslope(value1,5); 5 | value4=linearregslope(value2,5); 6 | value5=value4-value3; 7 | 8 | plot1(value3,"價斜率"); 9 | plot2(value4,"量斜率"); 10 | plot3(value5,"斜率差"); -------------------------------------------------------------------------------- /指標/技術指標/創新高天數減破底天數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:period(12,"期數"); 3 | 4 | value1=countif(lowhighest(high[1],period),period);//近期創新高天數 6 | value3=value2-value1; 7 | 8 | plot1(value3,"天數差"); 9 | plot2(3); 10 | plot3(-3); -------------------------------------------------------------------------------- /指標/技術指標/加速器指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/495/ 5 | } 6 | 7 | variable:Xslope(0); 8 | 9 | Xslope = linearregslope((H+L)/(H+L)[20],20); 10 | 11 | plot1(Xslope,"方向速度" ); 12 | plot2(Xslope-Xslope[1],"速度變化"); -------------------------------------------------------------------------------- /指標/技術指標/多空判斷分數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | 3 | value1 = techscore; 4 | 5 | plot1(value1, "多空指標"); 6 | plot2(3, "低點"); 7 | plot3(11, "高點"); 8 | -------------------------------------------------------------------------------- /指標/技術指標/多空力道指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: length(5); setinputname(1, "天期"); 3 | 4 | Value1 = high - close; 5 | Value2 = close - low; 6 | 7 | Value3 = average(Value1,length); 8 | Value4 = average(Value2,length); 9 | 10 | plot1(Value4 - Value3, "力道"); 11 | -------------------------------------------------------------------------------- /指標/技術指標/多頭動能.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:period(10,"平均值天期"); 3 | 4 | value1=high-close[1]+low-low[1]; 5 | value2=average(value1,period); 6 | 7 | plot1(value2,"多頭動能平均值"); -------------------------------------------------------------------------------- /指標/技術指標/天羅地網線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:period(60,"期數"); 3 | 4 | value5=average(close,period); 5 | value6=standarddev(close,period,1); 6 | value7=value5+value6; 7 | value8=value5+2*value6; 8 | value9=value5-value6; 9 | value10=value5-2*value6; 10 | 11 | plot1(value8,"+2SD"); 12 | plot2(value7,"+1SD"); 13 | plot3(value5,"MA"); 14 | plot4(value9,"-1SD"); 15 | plot5(value10,"-2SD"); -------------------------------------------------------------------------------- /指標/技術指標/月線與收盤價差.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/自訂指標/ 5 | } 6 | 7 | value1=average(close,22); 8 | value2=close-value1; 9 | value3=average(value2,3); 10 | 11 | plot1(value3,"月線與收盤價差三日移動平均"); 12 | plot2(0); -------------------------------------------------------------------------------- /指標/技術指標/比大盤強的天數趨勢斜率.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:period(10,"計算天期"); 3 | 4 | if barfreq <> "D" then raiseruntimeerror("不支援此頻率"); 5 | 6 | value1=GetField("強弱指標"); 7 | value2=countif(value1>1,period); 8 | value3=average(value2,period); 9 | linearreg(value3,period,0,value4,value5,value6,value7); 10 | 11 | plot1(value4,"強度斜率"); 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /指標/技術指標/波動區間指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: 3 | short1(3,"短期平均"), 4 | mid1(20,"長期平均"); 5 | 6 | value1=highest(high,5); 7 | value2=lowest(low,5); 8 | if value2 <> 0 then 9 | value3=(value1-value2)/value2*100; 10 | value4=average(value3,short1); 11 | value5=average(value3,mid1); 12 | 13 | plot1(value4,"短期平均區間"); 14 | plot2(value5,"長期平均區間"); 15 | -------------------------------------------------------------------------------- /指標/技術指標/波動率指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/918/ 5 | } 6 | 7 | value1 = 100*(average(H/L-1,20)+standarddev(H/L-1,20,1)*3); 8 | value2 = value1- average(value1,10); 9 | 10 | plot1(value1,"波動指標"); 11 | if value2> 0 then plot2(value2,"波動放大"); 12 | if value2<= 0 then plot3(value2,"波動縮小"); -------------------------------------------------------------------------------- /指標/技術指標/淨買賣力指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: Period(20,"期數"); 3 | 4 | if high<>low and truerange <> 0 then begin 5 | value1=((high-open)+(close-low))/truerange; 6 | value2=((open-low)+(high-close))/truerange; 7 | end else begin 8 | value1=value1[1]; 9 | value2=value2[1]; 10 | end; 11 | value3=value1-value2; 12 | value4=average(value3,Period); 13 | 14 | plot1(value4,"平均淨買賣力"); 15 | -------------------------------------------------------------------------------- /指標/技術指標/真實波動區間指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/股性系列之六真實波動區間/ 5 | } 6 | 7 | input: Length1(3, "短天數"); 8 | input: Length2(20,"長天數"); 9 | 10 | value1 = Average(TrueRange, Length1); 11 | value2 = Average(TrueRange, Length2); 12 | 13 | Plot1(value1, "短期ATR"); 14 | plot2(value2, "長期ATR"); 15 | 16 | -------------------------------------------------------------------------------- /指標/技術指標/線性迴歸斜率.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/尋找目前趨勢還向上的股票/ 5 | } 6 | 7 | input:Length(20,"計算期間"); 8 | 9 | variable: _Output(0); 10 | 11 | LinearReg(close, Length, 0, value1, value2, value3, value4); 12 | {value1:斜率,value4:預期值} 13 | 14 | plot1(value1,"線性迴歸斜率"); 15 | -------------------------------------------------------------------------------- /指標/技術指標/蔡金波動指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:length(9,"期數"); 3 | 4 | variable:REMA(0),cv1(0); 5 | 6 | if currentbar=1 then begin 7 | cv1=0; 8 | end else if range<>0 then begin 9 | REMA=xaverage(range,length); 10 | if rema[length-1]=0 then 11 | cv1=cv1[1] 12 | else 13 | cv1=(REMA-REMA[length-1])/rema[length-1]; 14 | end; 15 | plot1(cv1,"波動率"); 16 | -------------------------------------------------------------------------------- /指標/技術指標/變異數指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:length1(10,"短天期期別"); 3 | input:length2(20,"長天期期別"); 4 | 5 | value1=varianceps(close,length1,1); 6 | value2=varianceps(close,length2,1); 7 | 8 | plot1(value1,"短天期變異數"); 9 | plot2(value2,"長天期變異數"); 10 | -------------------------------------------------------------------------------- /指標/技術指標/進攻力道線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:period(5,"期別"); 3 | value1=summationif(close>close[1],high-close[1],period); 4 | plot1(value1,"進攻力道線"); 5 | 6 | -------------------------------------------------------------------------------- /指標/技術指標/隨機漫步指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | 3 | input:length(10); setinputname(1, "天期"); 4 | 5 | variable:RWIH(0),RWIL(0); 6 | 7 | value1 = standarddev(close,length,1); 8 | value2 = average(truerange,length); 9 | RWIH = (high-low[length-1])/value2*value1; 10 | RWIL = (high[length-1]-low)/value2*value1; 11 | 12 | plot1(RWIH - RWIL, "RWI"); 13 | -------------------------------------------------------------------------------- /指標/技術指標/順勢指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/為自己的觀察名單標上交易訊號/ 5 | } 6 | 7 | input: 8 | length1(5,"短期平均"), 9 | length2(10,"長期平均"); 10 | 11 | variable:bp1(0),abp1(0),abp2(0); 12 | 13 | bp1=(close-close[1])/truerange*100; 14 | abp1=average(bp1,length1); 15 | abp2=average(bp1,length2); 16 | 17 | plot1(abp1,"短期平均"); 18 | plot2(abp2,"長期平均"); 19 | 20 | -------------------------------------------------------------------------------- /指標/期權指標/Delta.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | plot1(GetField("Delta"),"Delta"); 3 | -------------------------------------------------------------------------------- /指標/期權指標/Gamma.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | plot1(GetField("Gamma"),"Gamma"); -------------------------------------------------------------------------------- /指標/期權指標/Theta.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | plot1(GetField("Theta"),"Theta"); 3 | -------------------------------------------------------------------------------- /指標/期權指標/Vega.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | plot1(GetField("Vega"),"Vega"); -------------------------------------------------------------------------------- /指標/期權指標/價內外.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | variable:vRatio(0); 3 | 4 | if symboltype <> 5 then 5 | raiseruntimeerror("僅支援選擇權"); 6 | 7 | vRatio = iff(leftstr(getsymbolinfo("買賣權"),1)="C",1,-1)*(100*getsymbolfield("Underlying","收盤價")/getsymbolinfo("履約價")-100); 8 | 9 | plot1(vRatio,"價內外%"); -------------------------------------------------------------------------------- /指標/期權指標/台股指數近月外資未平倉.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | value1 = getsymbolfield("FITX*1.TF","外資買方未平倉口數"); 3 | value2 = getsymbolfield("FITX*1.TF","外資賣方未平倉口數"); 4 | value3 = value1 - value2; 5 | plot1(value1,"外資未平倉買口"); 6 | plot2(value2,"外資未平倉賣口"); 7 | plot3(value3,"外資未平倉淨口"); 8 | 9 | -------------------------------------------------------------------------------- /指標/期權指標/台股指數近月投信未平倉.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | value1 = getsymbolfield("FITX*1.TF","投信買方未平倉口數"); 3 | value2 = getsymbolfield("FITX*1.TF","投信賣方未平倉口數"); 4 | value3 = value1 - value2; 5 | plot1(value1,"投信未平倉買口"); 6 | plot2(value2,"投信未平倉賣口"); 7 | plot3(value3,"投信未平倉淨口"); 8 | 9 | -------------------------------------------------------------------------------- /指標/期權指標/台股指數近月自營商未平倉.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | value1 = getsymbolfield("FITX*1.TF","自營商買方未平倉口數"); 3 | value2 = getsymbolfield("FITX*1.TF","自營商賣方未平倉口數"); 4 | value3 = value1 - value2; 5 | plot1(value1,"自營商未平倉買口"); 6 | plot2(value2,"自營商未平倉賣口"); 7 | plot3(value3,"自營商未平倉淨口"); 8 | 9 | -------------------------------------------------------------------------------- /指標/期權指標/摩台近月未平倉.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | value1 = getsymbolfield("STW*1.SG","未平倉"); 3 | plot1(value1,"摩台近月未平倉"); 4 | -------------------------------------------------------------------------------- /指標/期權指標/溢價率.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | variable:vRatio(0); 3 | 4 | if symboltype <> 5 then 5 | raiseruntimeerror("僅支援選擇權"); 6 | 7 | vRatio = 100 * ( 8 | iff(leftstr(getsymbolinfo("買賣權"),1)="C",1,-1) * (getsymbolinfo("履約價") - getsymbolfield("Underlying","收盤價")) + close) 9 | /getsymbolfield("Underlying","收盤價"); 10 | 11 | plot1(vRatio,"溢價率%"); -------------------------------------------------------------------------------- /指標/籌碼指標/主力成本線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | 3 | { 4 | 籌碼指標。 5 | 支援日以上頻率。支援台股商品。 6 | } 7 | 8 | plot1(GetField("主力成本"),"主力成本線");//系統估算值。計算主力持股成本。 -------------------------------------------------------------------------------- /指標/籌碼指標/外資成本線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | 3 | { 4 | 籌碼指標。 5 | 支援日以上頻率。支援台股商品。 6 | } 7 | 8 | plot1(GetField("外資成本"),"外資成本線");//系統估算值。計算外資持股成本。 -------------------------------------------------------------------------------- /指標/籌碼指標/投信成本線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | 3 | { 4 | 籌碼指標。 5 | 支援日以上頻率。支援台股商品。 6 | } 7 | 8 | plot1(GetField("投信成本"),"投信成本線");//系統估算值。計算投信持股成本。 -------------------------------------------------------------------------------- /指標/籌碼指標/控盤者成本線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | if barfreq = "Tick" or barfreq = "Min" 3 | then raiseruntimeerror("不支援此頻率"); 4 | 5 | value1=GetField("控盤者成本線"); 6 | plot1(value1,"控盤者成本線"); 7 | 8 | -------------------------------------------------------------------------------- /指標/籌碼指標/放空佔成交均量倍數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/借券相關欄位在交易策略上的應用/ 5 | } 6 | 7 | if barfreq <> "D" then raiseruntimeerror("不支援此頻率"); 8 | 9 | value1=GetField("借券餘額張數","D"); 10 | value2=GetField("融券餘額張數","D"); 11 | if volume<>0 then 12 | value3=(value1+value2)/average(volume,20); 13 | plot1(value3,"放空佔成交均量倍數"); -------------------------------------------------------------------------------- /指標/籌碼指標/散戶作多指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:Period(10,"MA期數"); 3 | 4 | if barfreq = "Tick" or barfreq = "Min" 5 | then raiseruntimeerror("不支援此頻率"); 6 | 7 | value1=GetField("融資買進張數"); 8 | value2=GetField("融券買進張數"); 9 | if volume <> 0 then 10 | value3=(value1+value2)/volume; 11 | value4=average(value3,Period); 12 | 13 | plot1(value4,"散戶作多指標"); 14 | -------------------------------------------------------------------------------- /指標/籌碼指標/散戶買進比例.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:Period(5,"MA期數"); 3 | 4 | if barfreq = "Tick" or barfreq = "Min" 5 | then raiseruntimeerror("不支援此頻率"); 6 | 7 | value1=GetField("散戶買張"); 8 | if volume<>0 then 9 | value2=value1/volume*100; 10 | value3=average(value2,Period); 11 | 12 | plot1(value3,"散戶買進比例"); 13 | 14 | -------------------------------------------------------------------------------- /指標/籌碼指標/散戶賣出比例.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:Period(5,"MA期數"); 3 | 4 | if barfreq = "Tick" or barfreq = "Min" 5 | then raiseruntimeerror("不支援此頻率"); 6 | 7 | value1=GetField("散戶賣張"); 8 | if volume<>0 then 9 | value2=value1/volume*100; 10 | value3=average(value2,Period); 11 | 12 | plot1(value3,"散戶賣出比例"); 13 | 14 | -------------------------------------------------------------------------------- /指標/籌碼指標/自營商成本線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | 3 | { 4 | 籌碼指標。 5 | 支援日以上頻率。支援台股商品。 6 | } 7 | 8 | plot1(GetField("自營商成本"),"自營商成本線");//系統估算值。計算自營商持股成本。 -------------------------------------------------------------------------------- /指標/籌碼指標/融資累計張數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input: Length(5); setinputname(1,"計算天數"); 3 | input:TXT("僅適用日線以上"); setinputname(2,"使用限制"); 4 | 5 | variable: _buyTotal(0), volTotal(0); 6 | 7 | _buyTotal = summation(GetField("融資增減張數"), Length); 8 | volTotal = summation(Volume, Length); 9 | 10 | Plot1(_buyTotal, "累計增減"); 11 | Plot2(_buyTotal * 100 / volTotal, "比例%"); 12 | 13 | -------------------------------------------------------------------------------- /指標/量能指標/BBI多空指數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/用自訂指標來看a股後市/ 5 | } 6 | 7 | input: 8 | a1(3,"第一根均線天期"), 9 | a2(6,"第二根均線天期"), 10 | a3(12,"第三根均線天期"), 11 | a4(24,"第四根均線天期"); 12 | 13 | variable:BBI(0); 14 | 15 | BBI=(average(close,a1)+average(close,a2)+average(close,a3)+average(close,a4))/4; 16 | plot1(close-bbi,"多空線"); 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /指標/量能指標/DKX多空線.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/dkx多空線/ 5 | } 6 | 7 | input:length(10,"MA期數"); 8 | 9 | variable:MID(0),midsum(0),DKX(0),DKXMA(0),r1(0); 10 | 11 | MID=(close*3+open+high+low)/6; 12 | 13 | DKX=WMA(MID,20); 14 | dkxma=average(dkx,length); 15 | 16 | plot1(close,"收盤價"); 17 | plot2(dkxma,"多空線的移動平均線"); 18 | 19 | 20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /指標/量能指標/VSTD成交量標準差.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:Period(22,"期數"); 3 | 4 | variable:VSTD(0); 5 | VSTD=standarddev(VOLUME,Period,1); 6 | 7 | PLOT1(VSTD,"VSTD"); 8 | -------------------------------------------------------------------------------- /指標/量能指標/WVAD威廉變異離散量.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/wvad威廉變異離散量/ 5 | } 6 | 7 | input:length(5,"期數"); 8 | 9 | variable:wvad(0); 10 | 11 | value1=close-open; 12 | value2=high-low; 13 | 14 | if high<>low then 15 | value3=value1/value2*volume 16 | else 17 | value3=value3[1]; 18 | 19 | wvad=summation(value3,length); 20 | 21 | plot1(wvad,"威廉變異離散量"); 22 | 23 | -------------------------------------------------------------------------------- /指標/量能指標/修正式價量指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | { 3 | 指標說明 4 | https://xstrader.net/修正式價量指標vptvolume-price-trend/ 5 | } 6 | 7 | input:day(5,"移動平均線天數"); 8 | 9 | variable:tvp(0),mpc(0); 10 | mpc=(open+high+low+close)/4; 11 | 12 | if mpc[1]<>0 then 13 | tvp=tvp[1]+(mpc-mpc[1])/mpc[1]*volume 14 | else 15 | tvp=tvp[1]; 16 | 17 | plot1(tvp,"修正型價量指標"); 18 | -------------------------------------------------------------------------------- /指標/量能指標/成交量擺盪指標.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | Input: length1(5); setinputname(1, "短天期"); 3 | Input: length2(20); setinputname(2, "長天期"); 4 | 5 | Value1 = Average(Volume, length1); 6 | Value2 = Average(Volume, length2); 7 | 8 | if value1 = 0 then value3 = 0 else Value3 = (Value1 - Value2) * 100 / Value1; 9 | 10 | Plot1(Value3, "OSCV"); 11 | -------------------------------------------------------------------------------- /指標/量能指標/當日成交密度.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | variable:II(0); 3 | 4 | if high-low<>0 and volume<>0 then 5 | II=(2*CLOSE-HIGH-LOW)/(HIGH-LOW)*VOLUME; 6 | 7 | PLOT1(average(II,5),"成交密度"); 8 | -------------------------------------------------------------------------------- /指標/量能指標/當日成交總筆數.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | input:p1(5,"短天期"); 3 | input:p2(20,"長天期"); 4 | 5 | value1=GetField("總成交次數"); 6 | value2=average(value1,p1); 7 | value3=average(value2,p2); 8 | 9 | plot1(value2,"成交筆數短期均線"); 10 | plot2(value3,"成交筆數長期均線"); 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /指標/量能指標/累積量.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | variable:tv(0);//當日累積量 3 | 4 | if date<>date[1] then 5 | tv=volume 6 | else 7 | tv=tv[1]+volume; 8 | 9 | plot1(tv,"累積量"); -------------------------------------------------------------------------------- /指標/量能指標/週轉率.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | if barfreq = "Tick" or barfreq = "Min" 3 | then raiseruntimeerror("不支援此頻率"); 4 | 5 | if GetField("發行張數(張)") <> 0 then begin 6 | value1 = volume / GetField("發行張數(張)") * 100; 7 | plot1(value1,"週轉率(%)"); 8 | end else 9 | noplot(1); -------------------------------------------------------------------------------- /指標/量能指標/量比.xs: -------------------------------------------------------------------------------- 1 | {@type:indicator} 2 | {量比公式 = 估計量 / 昨量 3 | 當量比 > 1時表示量是放大的, 數值越大表示越強 4 | 支援商品:台(股票)} 5 | 6 | if barfreq <> "Min" and barfreq <> "D" then 7 | raiseruntimeerror("僅支援分鐘與日頻率"); 8 | 9 | value1 = GetField("量比"); 10 | 11 | plot1(value1, "量比"); 12 | plot2(1, "基準線"); -------------------------------------------------------------------------------- /自動交易/常見技術分析/多頭/MTM黃金交叉0.xs: -------------------------------------------------------------------------------- 1 | {@type:autotrade} 2 | // 宣告參數 3 | Input: Length(10, "期數"); 4 | 5 | // 資料讀取筆數設定 6 | settotalbar(maxlist(Length,6) + 8); 7 | 8 | // 多方進場策略:MTM黃金交叉0軸;出場策略:MTM死亡交叉0軸 9 | if Momentum(Close, Length) Crosses Above 0 then setposition(1); 10 | if Momentum(Close, Length) Crosses below 0 then setposition(0); -------------------------------------------------------------------------------- /自動交易/常見技術分析/多頭/股價黃金交叉單均線.xs: -------------------------------------------------------------------------------- 1 | {@type:autotrade} 2 | // 宣告參數 3 | input: length(5,"均線期數"); 4 | variable: avgValue(0); 5 | 6 | // 資料讀取筆數設定 7 | settotalbar(3); 8 | setbarback(length); 9 | 10 | avgValue = Average(close,length); 11 | 12 | // 多方進場策略:收盤價黃金交叉均線。出場策略:收盤價死亡交叉均線。 13 | if close cross above avgValue then setposition(1); 14 | if close cross below avgValue then setposition(0); -------------------------------------------------------------------------------- /自動交易/常見技術分析/空頭/MTM死亡交叉0.xs: -------------------------------------------------------------------------------- 1 | {@type:autotrade} 2 | // 宣告參數 3 | Input: Length(10, "期數"); 4 | 5 | // 資料讀取筆數設定 6 | settotalbar(maxlist(Length,6) + 8); 7 | 8 | // 空方進場策略:MTM死亡交叉0軸;出場策略:MTM黃金交叉0軸 9 | if Momentum(Close, Length) Crosses below 0 then setposition(-1); 10 | if Momentum(Close, Length) Crosses Above 0 then setposition(0); -------------------------------------------------------------------------------- /自動交易/常見技術分析/空頭/股價死亡交叉單均線.xs: -------------------------------------------------------------------------------- 1 | {@type:autotrade} 2 | // 宣告參數 3 | input: length(5,"均線期數"); 4 | variable: avgValue(0); 5 | 6 | // 資料讀取筆數設定 7 | settotalbar(3); 8 | setbarback(length); 9 | 10 | avgValue = Average(close,length); 11 | 12 | // 空方進場策略:收盤價死亡交叉均線。出場策略:收盤價黃金交叉均線。 13 | if close cross below avgValue then setposition(-1); 14 | if close cross above avgValue then setposition(0); -------------------------------------------------------------------------------- /警示/!語法範例/7.1time(時間)的用法.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | //系統用time來代表時間,顯示格式為hhmmss 3 | 4 | //===========範例:開盤前三根K線都是陽線====================== 5 | 6 | //3.引用時間序列的回傳值﹙包括開高低收成交量等﹚ 7 | //時間函數應用 8 | if time=091500 //時間是九點十五分 9 | 10 | and close>close[1] and close>open 11 | and close[1]>close[2] and close[1]>open[1] 12 | and close[2]>close[3] and close[2]>open[2] 13 | 14 | then ret=1; -------------------------------------------------------------------------------- /警示/1.籌碼監控/散戶下車股價漲.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT("僅適用日線"); setinputname(1,"使用限制"); 3 | 4 | settotalbar(3); 5 | 6 | if BarFreq <> "D" then return; 7 | 8 | if close > high[1] and 9 | GetField("散戶買賣超張數")[1] < volume[1] * -0.1 then ret=1; 10 | -------------------------------------------------------------------------------- /警示/1.籌碼監控/散戶撿到出貨後創低.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: ChangeKshares(1000); setinputname(1,"主力出貨張數"); 3 | input:TXT("僅適用日線"); setinputname(2,"使用限制"); 4 | 5 | settotalbar(3); 6 | 7 | if BarFreq <> "D" then return; 8 | 9 | if close < low[1] and 10 | GetField("主力買賣超張數")[1] < ChangeKshares*-1 and 11 | GetField("散戶買賣超張數")[1] > ChangeKshares 12 | then ret=1; 13 | 14 | -------------------------------------------------------------------------------- /警示/1.籌碼監控/融資追捧戰新高.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: pastDays(10); setinputname(1,"計算天數"); 3 | input:TXT("僅適用日線"); setinputname(2,"使用限制"); 4 | 5 | settotalbar(pastDays + 3); 6 | 7 | if BarFreq <> "D" then return; 8 | 9 | if Getfield("融資餘額張數")[1] = highest(Getfield("融資餘額張數")[1] ,pastDays) and 10 | close >= highest(high[1],pastDays) 11 | then ret=1; 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /警示/1.籌碼監控/連日外盤攻擊創新高.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT("僅適用日線"); setinputname(1,"使用限制"); 3 | 4 | settotalbar(3); 5 | 6 | if BarFreq <> "D" then return; 7 | 8 | if Close > maxlist(high[1],high[2]) and GetField("內盤量","D")>0 and GetField("外盤量") > GetField("內盤量","D") * 1.2 then 9 | begin 10 | if TrueAll(Getfield("外盤量")[1] > 1.1 * Getfield("內盤量")[1], 3) then ret=1; 11 | end; 12 | -------------------------------------------------------------------------------- /警示/2.市場常用語/外盤漲停.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | if GetField("漲停價", "D") = q_Ask and close <> GetField("漲停價", "D") then ret=1; -------------------------------------------------------------------------------- /警示/2.市場常用語/急拉.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:P1(1.5); setinputname(1,"急拉幅度%"); 3 | 4 | settotalbar(3); 5 | 6 | IF close > close[1]*(1+P1/100) and close=high and volume>volume[1] 7 | then ret=1; -------------------------------------------------------------------------------- /警示/2.市場常用語/急殺.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:P1(1.5); setinputname(1,"急殺幅度%"); 3 | 4 | settotalbar(3); 5 | 6 | IF close < close[1]*(1-P1/100) and close=Low and volume>volume[1] 7 | then ret=1; -------------------------------------------------------------------------------- /警示/2.市場常用語/殺尾盤.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT("限用10分鐘以下"); setinputname(1,"使用限制"); 3 | 4 | settotalbar(3); 5 | 6 | variable:KeyPrice(0); 7 | 8 | if Date> date[1] then KeyPrice = 0; // 換日的話則重新定義KeyPrice 9 | if time>132000 and KeyPrice = 0 then KeyPrice =close; 10 | 11 | if KeyPrice > 0 and close <= KeyPrice *0.99//時間超過13:20分且十分鐘跌幅超過1% 12 | then ret=1; 13 | -------------------------------------------------------------------------------- /警示/2.市場常用語/翻紅.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(7); 3 | if close crosses over close[1] 4 | then ret=1; -------------------------------------------------------------------------------- /警示/2.市場常用語/翻黑.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(7); 3 | if close crosses under close[1] 4 | then ret=1; -------------------------------------------------------------------------------- /警示/2.市場常用語/連日量縮下跌.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:percent(4);setinputname(1,"累計下跌幅度%"); 3 | input:ratio(20); setinputname(2,"量縮幅度%"); 4 | input:Length(3);setinputname(3,"持續期數"); 5 | 6 | settotalbar(Length + 3); 7 | 8 | if close[Length-1] > Close * (1+percent/100) and 9 | volume[Length-1] > Volume* (1+ratio/100) and 10 | TrueAll(Close < Close[1] ,Length-1) 11 | then ret=1; -------------------------------------------------------------------------------- /警示/2.市場常用語/開低走高.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:OpenGap(1); setinputname(1,"開低幅度%"); 3 | input:uppercent(1);setinputname(2,"從最低點反彈上揚幅度%"); 4 | 5 | settotalbar(3); 6 | 7 | if GetField("Low", "D") = GetField("Open", "D") and 8 | GetField("Open", "D") < GetField("RefPrice", "D") * (1- OpenGap/100) and 9 | q_Last > GetField("Low", "D") * (1+uppercent/100) 10 | then ret=1; -------------------------------------------------------------------------------- /警示/2.市場常用語/開高走低.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:OpenGap(1); setinputname(1,"開高幅度%"); 3 | input:Downpercent(1);setinputname(2,"從最高點回檔下跌幅度%"); 4 | 5 | settotalbar(3); 6 | 7 | if GetField("High", "D") = GetField("Open", "D") and 8 | GetField("Open", "D") > GetField("RefPrice", "D") * (1+ OpenGap/100) and 9 | Close < GetField("High", "D") * (1 - Downpercent/100) 10 | then ret=1; -------------------------------------------------------------------------------- /警示/2.市場常用語/高點回檔n%.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(20); setinputname(1,"尋找高點期數"); 3 | input:percent(7); setinputname(2,"自高點回檔幅度%"); 4 | 5 | settotalbar(Length + 3); 6 | 7 | if close < highest(high,Length)*(1- percent/100) then Ret=1; -------------------------------------------------------------------------------- /警示/3.出場常用警示/DMI賣出訊號.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(14); setinputname(1,"計算期數"); 3 | variable: pdi(0), ndi(0), adx_value(0); 4 | 5 | settotalbar(maxlist(Length,6) * 13 + 8); 6 | 7 | DirectionMovement(Length, pdi, ndi, adx_value); 8 | 9 | if pdindi[1] and ndi crosses over pdi 10 | then ret=1; -------------------------------------------------------------------------------- /警示/3.出場常用警示/MTM轉負.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Length(10); SetInputName(1, "期數"); 3 | 4 | settotalbar(maxlist(Length,6) + 8); 5 | 6 | if momentum(close,Length) crosses under 0 then ret=1; 7 | -------------------------------------------------------------------------------- /警示/3.出場常用警示/一黑破n紅.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(3); setinputname(1,"計算期數"); 3 | 4 | settotalbar(Length + 3); 5 | 6 | if high=highest(high[1],Length) and close absvalue(open-close)*3; 7 | condition2 = high > maxlist(open, close) * (100 + Percent)/100; 8 | 9 | if trueall( condition1 and condition2, 3) then ret=1; 10 | -------------------------------------------------------------------------------- /警示/3.出場常用警示/主力賣超.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:PastDays(3); setinputname(1,"計算天數"); 3 | input:summ(2000);setinputname(2,"合計賣超張數門檻"); 4 | input:TXT("僅適用日線"); setinputname(3,"使用限制"); 5 | 6 | settotalbar(PastDays + 3); 7 | 8 | if Barfreq = "D" and close< close[1] and 9 | summation(GetField("LeaderDifference")[1],PastDays) <= summ*-1 then ret=1; -------------------------------------------------------------------------------- /警示/3.出場常用警示/乖離過大.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(200); setinputname(1,"計算期數"); 3 | input:Ratio(70); setinputname(2,"正向乖離門檻%"); 4 | 5 | settotalbar(Length + 3); 6 | 7 | if close/average(close,Length)>= 1+Ratio/100 8 | then ret=1; -------------------------------------------------------------------------------- /警示/3.出場常用警示/分鐘線九連黑.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | Input: Length(9); SetInputName(1, "連續筆數"); 3 | 4 | settotalbar(Length + 3); 5 | 6 | if Barfreq ="Min" then 7 | if trueall(close < open,Length) then ret=1; 8 | -------------------------------------------------------------------------------- /警示/3.出場常用警示/多日價量背離.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(5); setinputname(1,"計算期數"); 3 | input:times(3);setinputname(2,"價量背離次數"); 4 | input:TXT("建議使用日線"); setinputname(3,"使用說明"); 5 | 6 | variable:count(0); 7 | 8 | settotalbar(Length + 3); 9 | 10 | count = CountIf(close > close[1] and volume < volume[1], Length); 11 | 12 | if count > times then 13 | ret = 1; 14 | 15 | -------------------------------------------------------------------------------- /警示/3.出場常用警示/大黑棒.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Percent(4); setinputname(1,"實體K棒為股價絕對百分比"); 3 | 4 | settotalbar(3); 5 | 6 | if open/close >= 1 + Percent/100 //實體(開盤-收盤) 7 | then ret=1; -------------------------------------------------------------------------------- /警示/3.出場常用警示/川上三鴉.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | if TrueAll((open-close) > (high-low) * 0.5 and close Close * 1.025//實體 5 | and close[1] > Close * 1.035 //較前一日大跌 6 | and volume >=amount 7 | then ret=1; -------------------------------------------------------------------------------- /警示/3.出場常用警示/投信外資都賣超.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT("僅適用日線"); setinputname(1,"使用限制"); 3 | 4 | settotalbar(3); 5 | 6 | if Barfreq <> "D" then return; 7 | 8 | if Open < Close[1] and Close < Close[1] and 9 | GetField("外資買賣超")[1]<0 and GetField("投信買賣超")[1]<0 10 | then ret=1; 11 | 12 | -------------------------------------------------------------------------------- /警示/3.出場常用警示/海龜出場法則.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(10); setinputname(1,"近N週期數"); 3 | input:TXT("僅適用日線"); setinputname(2,"使用限制"); 4 | 5 | settotalbar((Length + 3)*5); 6 | 7 | if barfreq <> "D" and barfreq <> "AD" then Return; 8 | 9 | if close < lowest(getfield("low","W")[1],Length)//近n週最低價 10 | then ret=1; -------------------------------------------------------------------------------- /警示/3.出場常用警示/資增券減還收黑.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:V1(1000); setinputname(1,"融資增加張數"); 3 | input:V2(500); setinputname(2,"融券減少張數"); 4 | input:TXT("僅適用日線"); setinputname(3,"使用限制"); 5 | 6 | settotalbar(3); 7 | 8 | if BarFreq <> "D" then return; 9 | 10 | if close < close[1] and 11 | GetField("融資增減張數")[1] > V1 and 12 | GetField("融券增減張數")[1] < V2*-1 13 | then ret=1; 14 | 15 | -------------------------------------------------------------------------------- /警示/3.出場常用警示/跌破n日低點.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(20); setinputname(1,"計算期數"); 3 | 4 | settotalbar(Length + 3); 5 | 6 | if close < lowest(low[1],Length) then ret=1; -------------------------------------------------------------------------------- /警示/3.出場常用警示/跳空下跌再破底.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | //分鐘線 3 | input:Gapratio(1.5);setinputname(1,"跳空下跌百分比%"); 4 | input:TXT("僅適用分鐘線"); setinputname(2,"使用限制"); 5 | 6 | settotalbar(5); 7 | 8 | if barfreq<>"Min" then return; 9 | 10 | if Close < close[1] and Close < GetField("Open", "D") then 11 | if GetField("Open", "D") < GetField("RefPrice", "D")*(100-Gapratio)/100 then ret=1; 12 | -------------------------------------------------------------------------------- /警示/3.出場常用警示/連續n日開高走低收最低.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(2); setinputname(1,"計算期數"); 3 | 4 | settotalbar(Length + 3); 5 | 6 | if Trueall( Open > Close[1]*1.005 and Close 2 *(high[1]-low[1]) and 9 | (close-low) > (open-close) *2; 10 | 11 | condition2= close[1] > highest(High,30)*0.98; //昨日收盤價接近三十日高點 12 | 13 | if condition1 and condition2 then ret=1; 14 | 15 | end; -------------------------------------------------------------------------------- /警示/A股用語/九陰白骨爪.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | // 連續9筆K線收黑 3 | // 4 | settotalbar(10); 5 | Ret = TrueAll(close < open, 9); 6 | -------------------------------------------------------------------------------- /警示/A股用語/九陽神功.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | // 連續9筆上漲 3 | settotalbar(10); 4 | Ret = TrueAll(Close > Close[1], 9); 5 | -------------------------------------------------------------------------------- /警示/A股用語/殺跌波型.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | //黑三兵 3 | input:TXT("請使用1分鐘線"); setinputname(1,"使用方法"); 4 | 5 | settotalbar(5); 6 | 7 | if ( open - close ) > (high -low) * 0.75 and 8 | ( open[1] - close[1] ) > (high[1] -low[1]) * 0.75 and 9 | ( open[2] - close[2] ) > (high[2] -low[2]) * 0.75 and 10 | close < close[1] and close[1] < close[2] 11 | then ret=1; -------------------------------------------------------------------------------- /警示/A股用語/瀑布波型.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | setbarback(30); 4 | if close[1] > lowest(close,30) * 1.2 and 5 | (high-low)> close * 0.035 and 6 | (close-low)> close * 0.01 7 | then ret=1; -------------------------------------------------------------------------------- /警示/A股用語/火箭攻擊.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | IF CLOSE >= CLOSE[1] * 1.015 and close=high and volume>volume[1] 4 | then ret=1; -------------------------------------------------------------------------------- /警示/ETF策略/ETF乖離反轉作多買進訊號.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(20); setinputname(1,"計算期數"); 3 | input:Ratio(21); setinputname(2,"乖離%"); 4 | 5 | variable:KPrice(0); 6 | if close/average(close,Length)<= 1-Ratio/100 then KPrice = H; 7 | if Close crosses over KPrice 8 | then ret=1 ; 9 | -------------------------------------------------------------------------------- /警示/ETF策略/KO買進訊號.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | Input: Length1(34, "短天期"); 3 | Input: Length2(55, "長天期"); 4 | variable: ko(0); 5 | 6 | ko = callfunction("KO成交量擺盪指標", Length1, Length2); 7 | 8 | value1=average(ko,3); 9 | value2=average(ko,13); 10 | 11 | if value1 crosses over value2 12 | and linearregangle(close,5)>20 13 | then ret=1; -------------------------------------------------------------------------------- /警示/ETF策略/KST趨勢確認策略.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | variable:kst(0); 3 | 4 | kst=callfunction("KST確認指標"); 5 | 6 | if kst crosses over -50 then ret=1; 7 | 8 | 9 | -------------------------------------------------------------------------------- /警示/ETF策略/Q指標買進訊號.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:t1(10,"計算累積價格變動的bar數"); 3 | input:t2(5,"計算價格累積變化量移動平均的期別"); 4 | input:t3(20,"計算雜訊的移動平均期別"); 5 | variable:Qindicator(0); 6 | 7 | Qindicator=callfunction("Q指標",t1,t2,t3); 8 | 9 | if linearregangle(Qindicator,5)>40 10 | and barslast(linearregangle(Qindicator,5)>45)[1]>20 11 | then ret=1; -------------------------------------------------------------------------------- /警示/ETF策略/大盤MFI多頭.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | if TSEMFI=1 3 | then ret=1; -------------------------------------------------------------------------------- /警示/ETF策略/大碗底.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | value1=lowestbar(low,100); 3 | value2=lowest(low,100); 4 | value3=highestbar(high,100); 5 | value4=highest(high,100); 6 | 7 | if value4>value2*1.15 8 | and value3-value1>15 9 | then begin 10 | if value1>15 11 | and value2*1.05>close[1] 12 | and close>close[1]*1.01 13 | and volume>average(volume[1],15)*1.2 14 | then ret=1; 15 | end; 16 | -------------------------------------------------------------------------------- /警示/ETF策略/大跌三成之後.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:n(30,"下跌幅度"); 3 | input:period(60,"計算天數"); 4 | 5 | if close*(1+n/100) < close[period-1] then ret=1; 6 | 7 | -------------------------------------------------------------------------------- /警示/ETF策略/大跌後均線黃金交叉.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | Input: Length1(5, "短天期"); 3 | Input: Length2(20, "長天期"); 4 | 5 | value1=highest(high,100); 6 | 7 | if value1 > close*1.2 8 | and average(close,Length1) crosses over average(close,Length2) 9 | then ret=1; -------------------------------------------------------------------------------- /警示/ETF策略/大跌後的價量背離.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:period(10,"計算天數"); 3 | input:times(5,"背離次數"); 4 | 5 | if close[1]*1.2c[1] xor v>v[1],period) >= times //價漲量縮、價跌量增 7 | and close=highest(close,period) //收近期最高 8 | then ret=1; -------------------------------------------------------------------------------- /警示/ETF策略/烏龜進場法則.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | if average(close,3) crosses above average(close,55) 3 | and volume> average(volume,5) 4 | and atr(3) > atr(20) 5 | then ret=1; -------------------------------------------------------------------------------- /警示/ETF策略/理專DBCD交易法則.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:length1(10,"短天期"),length2(20,"長天期"),length3(14,"平滑天期"); 3 | input:Threshold(-2,"觸發標準"); 4 | 5 | value1=bias(length1); 6 | value2=bias(length2); 7 | value3=value2-value1; 8 | value4=average(value3,length3); 9 | 10 | if value4 crosses over Threshold 11 | then ret=1; -------------------------------------------------------------------------------- /警示/ETF策略/趨勢翻多.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(20,"計算期間"); 3 | 4 | LinearReg(close, Length, 0, value1, value2, value3, value4); 5 | //做收盤價20天線性回歸 6 | //value1:斜率、value4:預期值 7 | value5=rsquare(close,value4,20);//算收盤價與線性回歸值的R平方 8 | 9 | if value1>0 and value1[1]<0 and value5>0.2 then ret=1; -------------------------------------------------------------------------------- /警示/ETF策略/週線二連紅之後.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | if rateofchange(close,2)[1]>0 3 | and rateofchange(close,2)[2]>0 4 | and closeclose*1.15 6 | then ret=1; 7 | 8 | -------------------------------------------------------------------------------- /警示/ETF策略/週線反轉法則.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:rate1(5,"先前週線漲幅"); 3 | input:rate2(3,"本週低點跌幅"); 4 | input:TXT("僅適用日線","使用限制"); 5 | 6 | settotalbar(20); 7 | 8 | if getfield("high","W")[2]>=getfield("close","W")[3]*(1+rate1/100) 9 | and low < getfield("close","W")[1]*(1-rate2/100) 10 | then ret=1; 11 | -------------------------------------------------------------------------------- /警示/價量指標/今日高點回跌.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:HighBound(2); setinputname(1,"高點幅度%"); 3 | input:Reaction(1); setinputname(2,"回檔預警幅度%"); 4 | 5 | settotalbar(3); 6 | 7 | if GetField("High", "D") > GetField("RefPrice", "D")*(1+0.01*HighBound) and 8 | Close <= GetField("High", "D")*(1-0.01*Reaction) then 9 | ret = 1; 10 | -------------------------------------------------------------------------------- /警示/價量指標/價創近期新低量創新高.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Price(close); setinputname(1,"比較價別"); 3 | input: Length(20); setinputname(2,"近期期數"); 4 | 5 | settotalbar(3); 6 | setbarback(Length); 7 | 8 | if Price < lowest(low[1] ,Length) and 9 | volume > highest(volume[1],length) then ret=1; 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /警示/價量指標/價量同創近期新低.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Price(close); setinputname(1,"比較價別"); 3 | input: Length(20); setinputname(2,"近期期數"); 4 | 5 | settotalbar(3); 6 | setbarback(Length); 7 | 8 | if Price < lowest(low[1] ,Length) and 9 | volume < lowest(volume[1],length) then ret=1; 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /警示/價量指標/價量同創近期新高.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Price(close); setinputname(1,"比較價別"); 3 | input: Length(20); setinputname(2,"近期期數"); 4 | 5 | settotalbar(3); 6 | setbarback(Length); 7 | 8 | if Price > highest(high[1] ,Length) and 9 | volume > highest(volume[1],length) then ret=1; 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /警示/價量指標/即將漲停.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Percent(1); setinputname(1,"距離漲停百分比"); 3 | 4 | settotalbar(3); 5 | 6 | if close > GetField("漲停價", "D")*(1-Percent/100) then ret =1; -------------------------------------------------------------------------------- /警示/價量指標/即將跌停.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Percent(1); setinputname(1,"距離跌停百分比"); 3 | 4 | settotalbar(3); 5 | 6 | if close < GetField("跌停價", "D")*(1+Percent/100) then ret =1; -------------------------------------------------------------------------------- /警示/價量指標/多方人氣表態.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | if Close > highD(1) and GetField("Volume", "D")> GetField("Volume", "D")[1] then ret=1; -------------------------------------------------------------------------------- /警示/價量指標/帶量上影線.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(5); 3 | if high - maxlist(open,close) > absvalue(open-close)*2 and 4 | Volume > maxlist(volume[1],volume[2],volume[3]) then ret=1; 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /警示/價量指標/帶量下影線.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(5); 3 | if minlist(open,close) - low > absvalue(open-close)*2 and 4 | Volume > Maxlist(volume[1],volume[2],volume[3]) then ret=1; 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /警示/價量指標/成交量突破N倍均量.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: length(20); setinputname(1,"均量期數"); 3 | input: VolumeXtime(3); setinputname(2,"量增倍數"); 4 | 5 | settotalbar(3); 6 | setbarback(Length); 7 | 8 | if volume > Average( volume[1],length)* VolumeXtime then ret=1; 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /警示/價量指標/成交量突破均量.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: length(20); setinputname(1,"均量期數"); 3 | input: confirmVolume(500); setinputname(2,"突破均量張數"); 4 | 5 | settotalbar(3); 6 | setbarback(Length); 7 | 8 | if volume > Average( volume[1],length) +confirmVolume then ret=1; 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /警示/價量指標/步步高升.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | if volume > volume[1] and 4 | volume[1] > volume[2] and 5 | close > close[1] and 6 | close[1] > close[2] and 7 | close > open and 8 | close[1] > open[1] and 9 | close[2] > open[2] 10 | then ret=1; 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /警示/價量指標/漲停回頭.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | If Close[1] = GetField("漲停價", "D") And q_Last < GetField("漲停價", "D") Then ret = 1; 4 | 5 | -------------------------------------------------------------------------------- /警示/價量指標/漲停鎖住.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | If Close = GetField("漲停價", "D") And q_AskSize <=0 Then ret = 1; 4 | 5 | -------------------------------------------------------------------------------- /警示/價量指標/爆量長紅.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(8); 3 | if volume > Average(volume[1],5) *3 and 4 | ( close - open ) >( high -low ) * 0.75 and 5 | close > open + (high[1]- low[1]) 6 | then ret=1; 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /警示/價量指標/爆量長黑.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(8); 3 | if volume > Average(volume[1],5) *3 and 4 | ( open - close ) >( high -low ) * 0.75 and 5 | open > close + (high[1]- low[1]) 6 | then ret=1; 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /警示/價量指標/當日漲幅預警.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:AlertChangeRatio(3); setinputname(1,"預警幅度%"); 3 | settotalbar(3); 4 | If q_PriceChangeRatio > AlertChangeRatio Then ret = 1; 5 | 6 | -------------------------------------------------------------------------------- /警示/價量指標/當日跌幅預警.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:AlertChangeRatio(3); setinputname(1,"預警幅度%"); 3 | settotalbar(3); 4 | If q_PriceChangeRatio < AlertChangeRatio*-1 Then ret = 1; 5 | 6 | -------------------------------------------------------------------------------- /警示/價量指標/當期成交量倍增.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: VolumeXtime(3); setinputname(1,"量增倍數"); 3 | settotalbar(3); 4 | if volume > volume[1] * VolumeXtime then ret=1; 5 | -------------------------------------------------------------------------------- /警示/價量指標/空頭部隊進攻.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(25); 3 | if low < lowD(1) and GetField("Volume", "D")> GetField("Volume", "D")[1] then ret=1; 4 | 5 | 6 | 7 | -------------------------------------------------------------------------------- /警示/價量指標/股價創近期新低.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Price(close); setinputname(1,"比較價別"); 3 | input: Length(20); setinputname(2,"近期期數"); 4 | settotalbar(3); 5 | setbarback(Length); 6 | if Price < Lowest(Low[1] ,Length) then ret=1; 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /警示/價量指標/股價創近期新高.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Price(close); setinputname(1,"比較價別"); 3 | input: Length(20); setinputname(2,"近期期數"); 4 | settotalbar(3); 5 | setbarback(Length); 6 | if Price > highest(high[1] ,Length) then ret=1; 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /警示/價量指標/跌停回頭.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | If Close[1] = GetField("跌停價", "D") And Close> GetField("跌停價", "D") Then ret = 1; 4 | 5 | -------------------------------------------------------------------------------- /警示/價量指標/跌停鎖住.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | If Close = GetField("跌停價", "D") And q_bidsize <=0 Then ret = 1; 4 | 5 | -------------------------------------------------------------------------------- /警示/價量指標/跌跌不休.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(5); 3 | if volume > volume[1] and 4 | volume[1] > volume[2] and 5 | close < close[1] and 6 | close[1] < close[2] and 7 | close < open and 8 | close[1] < open[1] and 9 | close[2] < open[2] 10 | then ret=1; 11 | 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /警示/價量指標/連續期間上漲.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(3); setinputname(1,"連續上漲期數"); 3 | settotalbar(Length + 3); 4 | If TrueAll(Close > Close[1],Length) then ret=1; 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /警示/價量指標/連續期間下跌.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(3); setinputname(1,"連續下跌期數"); 3 | settotalbar(Length + 3); 4 | If TrueAll(Close < Close[1],Length) then ret=1; 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /警示/出場訊號/近幾日總是收黑K.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | if countif(close=5 3 | //過去七天有五天以上收黑 4 | and lowest(close,90)*1.4 0 and range[1] <> 0 then 5 | value1= ((high-low[1])-(high[1]-low))/((high-low[1])+(high[1]-low))*volume; 6 | if summation(volume,period) <> 0 then 7 | value2= summation(value1,period)/summation(volume,period); 8 | 9 | if value2 crosses over -0.5 then ret=1; -------------------------------------------------------------------------------- /警示/技術分析/MTM往上穿過0.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | // MTM往上穿越0軸 3 | // 4 | Input: Length(10); 5 | 6 | settotalbar(maxlist(Length,6) + 8); 7 | 8 | SetInputName(1, "期數"); 9 | 10 | Ret = Momentum(Close, Length) Crosses Above 0; 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /警示/技術分析/MTM突破零且投信買超.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | //透過Z的時間安排來決定現在用的是那一根Bar的資料 3 | variable: Z(0); 4 | if GetFieldDate("主力買賣超張數") <> 0 then 5 | Z=0 6 | else 7 | Z=1; 8 | 9 | if momentum(close,10) crosses over 0 10 | and GetField("投信買賣超")[Z]>1000 11 | then ret=1; -------------------------------------------------------------------------------- /警示/技術分析/MTM背離.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | value1=momentum(close,10); 3 | if linearregslope(close,6)<0 4 | and linearregslope(value1,6)>0 5 | and close*1.20 5 | and close*1.2 0 then 5 | Z=0 6 | else 7 | Z=1; 8 | 9 | value1=GetField("主力買賣超張數")[Z]; 10 | if value1=highest(value1,120) 11 | and trueall(value1>0,3) 12 | and volume>500 13 | and close>close[1]*1.03 14 | then ret=1; -------------------------------------------------------------------------------- /警示/技術分析/價值股創近年新高.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | if close crosses over highest(close[1],220) 3 | then ret=1; -------------------------------------------------------------------------------- /警示/技術分析/布林通道超買訊號.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | // 布林通道超買訊號 3 | // 4 | Input: Length(20), UpperBand(2); 5 | 6 | settotalbar(Length + 3); 7 | 8 | SetInputName(1, "期數"); 9 | SetInputName(2, "通道上緣"); 10 | 11 | Ret = High >= bollingerband(Close, Length, UpperBand); 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /警示/技術分析/布林通道超賣訊號.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | // 布林通道超賣訊號 3 | // 4 | Input: Length(20), LowerBand(2); 5 | 6 | settotalbar(Length + 3); 7 | 8 | SetInputName(1, "期數"); 9 | SetInputName(2, "通道下緣"); 10 | 11 | Ret = Low <= bollingerband(Close, Length, -1 * LowerBand); 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /警示/技術分析/底部出大量.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:period(60); 3 | if close=lowest(close,period) 4 | and volume=highest(volume,period) 5 | then ret=1; 6 | 7 | -------------------------------------------------------------------------------- /警示/技術分析/波動放大.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | // 波動放大 3 | // 4 | input: Length(20), Percent(7); 5 | 6 | settotalbar(3); 7 | setbarback(Length); 8 | 9 | SetInputName(1, "期數"); 10 | SetInputName(2, "波動幅度%"); 11 | 12 | Ret = Highest(High, Length) / Lowest(Low, Length) -1 > Percent*0.01; 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /警示/技術分析/波動縮小.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | // 波動縮小 3 | // 4 | input: Length(20), Percent(7); 5 | 6 | settotalbar(3); 7 | setbarback(Length); 8 | 9 | SetInputName(1, "期數"); 10 | SetInputName(2, "波動幅度%"); 11 | 12 | Ret = Highest(High, Length) / Lowest(Low, Length) -1 < Percent*0.01; 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /警示/技術分析/漲幅警示.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Length(5), Percent(3); 3 | 4 | settotalbar(3); 5 | setbarback(Length); 6 | 7 | SetInputName(1, "計算期數"); 8 | SetInputName(2, "累計上漲幅度(%)"); 9 | 10 | Ret = Rateofchange(Close, Length) > Percent; 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /警示/技術分析/短期均線突破長期均線.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Shortlength(5); setinputname(1,"短期均線期數"); 3 | input: Longlength(20); setinputname(2,"長期均線期數"); 4 | 5 | settotalbar(8); 6 | setbarback(maxlist(Shortlength,Longlength,6)); 7 | 8 | If Average(Close,Shortlength) crosses over Average(Close,Longlength) then Ret=1; 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /警示/技術分析/短期均線跌破長期均線.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Shortlength(5); setinputname(1,"短期均線期數"); 3 | input: Longlength(20); setinputname(2,"長期均線期數"); 4 | 5 | settotalbar(8); 6 | setbarback(maxlist(Shortlength,Longlength,6)); 7 | 8 | If Average(Close,Shortlength) crosses under Average(Close,Longlength) then Ret=1; 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /警示/技術分析/第一次站上20週均線.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | if barfreq<>"W" then return; 3 | if close crosses over average(close,20) 4 | and barslast(close crosses over average(close,20))[1] 5 | >20 6 | then ret=1; -------------------------------------------------------------------------------- /警示/技術分析/股價穿越突破單均線.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: length(5); setinputname(1,"均線期數"); 3 | input: Price(Close); setinputname(2,"價格別"); 4 | 5 | settotalbar(3); 6 | setbarback(length); 7 | 8 | variable: avgValue(0); 9 | avgValue = Average(Price,length); 10 | 11 | if close > avgValue and open < avgValue then ret=1; 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /警示/技術分析/股價穿越跌破單均線.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: length(5); setinputname(1,"均線期數"); 3 | input: Price(Close);setinputname(2,"價格別"); 4 | 5 | settotalbar(3); 6 | setbarback(length); 7 | 8 | variable: avgValue(0); 9 | avgValue = Average(Price,length); 10 | 11 | if close < avgValue and open > avgValue then ret=1; 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /警示/技術分析/跌幅警示.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Length(5), Percent(3); 3 | 4 | settotalbar(3); 5 | setbarback(length); 6 | 7 | SetInputName(1, "計算期數"); 8 | SetInputName(2, "累計下跌幅度(%)"); 9 | 10 | Ret = RateOfChange(Close, Length) < -1 * Percent; 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /警示/技術分析/野百合的春天.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | //獲利穩定的公司 20天後出場 3 | 4 | settotalbar(700); 5 | if getsymbolfield("tse.tw","收盤價") 6 | > average(getsymbolfield("tse.tw","收盤價"),10) 7 | then begin 8 | value4=GetField("總市值"); 9 | value5=average(value4,600); 10 | if value4[1]close[1]*1.025 6 | and close<30 7 | then ret=1; -------------------------------------------------------------------------------- /警示/抄底策略/大跌後的低檔五連陽.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | if trueall(close>open,5) 3 | and close*1.4 close[1],5)>=3 5 | //過去五天有三天以上開盤比前一天收盤高 6 | and GetSymbolField("tse.tw","收盤價","D") 7 | >average(GetSymbolField("tse.tw","收盤價","D"),10) 8 | //指數位於十日均線之上 9 | and average(volume,5)>2000 10 | //五日均量大於2000張 11 | then ret=1; -------------------------------------------------------------------------------- /警示/抄底策略/跌深後的反彈.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:ratio(10,"近十日最小下跌幅度"); 3 | 4 | if open*1.025open //收盤比開盤高 6 | and close*(1+ratio/100)0 3 | and datediff(GetSymbolInfo("到期日"),date)<10 4 | and datediff(GetSymbolInfo("到期日"),date)>0 5 | then ret=1; 6 | 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /警示/波段操作型/60分鐘線九連陽.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT("僅適用60分鐘線"); setinputname(1,"使用限制"); 3 | 4 | settotalbar(10); 5 | 6 | if barfreq<> "Min" or barinterval <> 60 then return; 7 | 8 | if TrueAll(Close > Close[1] and Close > Open ,9) then Ret=1; 9 | -------------------------------------------------------------------------------- /警示/波段操作型/SAR買進訊號.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:AFIncrement(0.02); setinputname(1,"加速因子"); 3 | input:AFMax(0.2); setinputname(2,"加速因子最大值"); 4 | 5 | settotalbar(100); 6 | 7 | variable: 8 | sarValue(0); 9 | 10 | sarValue = SAR(AFIncrement, AFIncrement, AFMax); 11 | 12 | if close crosses over sarValue then ret = 1; 13 | -------------------------------------------------------------------------------- /警示/波段操作型/休息後風雲再起.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(5); 3 | 4 | condition1 = Close[3] > low[3]* 1.01; 5 | condition2 = close[2] > open[2] * 1.01 and open[2]>close[3]; 6 | condition3 = close[1] < close[2] and high[1] < close[1]* 1.005; 7 | condition4 = close > close[1] * 1.01; 8 | 9 | if condition1 and condition2 and condition3 and condition4 then ret=1; 10 | -------------------------------------------------------------------------------- /警示/波段操作型/低PB股的逆襲.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | if GetSymbolField("tse.tw","收盤價") > average(GetSymbolField("tse.tw","收盤價"),10) 3 | then begin 4 | if close<12 5 | and H = highest(H,20) 6 | and closeclose*1.1 8 | then ret=1; 9 | end; 10 | -------------------------------------------------------------------------------- /警示/波段操作型/反常必有妖.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT("僅適用60分鐘"); setinputname(1,"使用限制"); 3 | 4 | settotalbar(30); 5 | 6 | if barinterval <> 60 or barfreq<> "Min" then return; 7 | 8 | if Close > close[1] * 1.02 then 9 | begin 10 | value2=average(truerange,30); 11 | value3=average(truerange,3); 12 | if truerange>value3 and value3>value2 then ret=1; 13 | end; -------------------------------------------------------------------------------- /警示/波段操作型/抗跌.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(3); 3 | if open>open[1] and open < 1.005*low then ret=1; 4 | -------------------------------------------------------------------------------- /警示/波段操作型/月線連兩個月收紅的小型股.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT("僅適用日線","使用限制"); 3 | 4 | settotalbar(120); 5 | 6 | if GetField("總市值","D")<2000000000 //單位是元 7 | and close<40 8 | and getfield("close","M")[1]>getfield("close","M")[2] 9 | and getfield("close","M")[2]>getfield("close","M")[3] 10 | then ret=1; 11 | -------------------------------------------------------------------------------- /警示/波段操作型/沖擊底部.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:BarPercent(75); setinputname(1,"當期回升比例"); 3 | 4 | settotalbar(3); 5 | 6 | if q_Ask > Close[1] and high[1] > high[2] and low[1] > low[2] and close[1] > close[2] then 7 | if TrueAll( (close[1]-low[1])>(high[1]-low[1])*BarPercent/100 ,2) then ret=1; 8 | -------------------------------------------------------------------------------- /警示/波段操作型/海龜進場法則.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(10); setinputname(1,"近N週期數"); 3 | input:TXT("僅適用日線"); setinputname(2,"使用限制"); 4 | 5 | settotalbar((Length + 3)*5); 6 | 7 | if barfreq <> "D" and barfreq <> "AD" then Return; 8 | 9 | if close > highest(getfield("High","W")[1],Length)//近n週最高價 10 | then ret=1; -------------------------------------------------------------------------------- /警示/波段操作型/盤整後噴出.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(30); setinputname(1, "計算期間"); 3 | input:percent(2.5); setinputname(2, "設定盤整區間%"); 4 | 5 | settotalbar(9); 6 | setbarback(Length); 7 | 8 | value1=highest(high[1],Length); 9 | value2=lowest(low[1],Length); 10 | 11 | if close crosses above value1 12 | and value1 < value2 *( 1 + percent * 0.01) //最近幾根bar的收盤價高點與低點差不到N% 13 | then ret=1; -------------------------------------------------------------------------------- /警示/當沖交易型/即將鎖第一根漲停.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(20); setinputname(1,"過去無漲停期數"); 3 | input:Ratio(1); setinputname(2,"差幾%漲停"); 4 | input:TXT("請用日線逐筆洗價"); setinputname(3,"使用限制"); 5 | 6 | settotalbar(Length + 3); 7 | 8 | if BarFreq = "D" then 9 | if Close > GetField("漲停價", "D")*(1- Ratio/100) then 10 | if TrueAll(close[1] < Close[2]*1.068,Length) then ret=1; 11 | -------------------------------------------------------------------------------- /警示/當沖交易型/會打開的跌停.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(605); 3 | if q_ask=GetField("跌停價", "D") and 4 | q_bestasksize1<1500 and 5 | (closeD(2)-close)>0.07*Close 6 | then ret=1; -------------------------------------------------------------------------------- /警示/當沖交易型/火箭後拉回.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT1("僅適用1分鐘線"); setinputname(1,"使用限制"); 3 | settotalbar(3); 4 | if barfreq ="Min" and barinterval =1 and 5 | close[1]/close[2]>1.015 and //上個1分鐘線單分鐘拉超過1.5% 6 | GetField("High", "D") > high and //高不過高 7 | Close < GetField("High", "D")*0.99 and //自高檔回1% 8 | Close > Low[1] 9 | then ret=1; -------------------------------------------------------------------------------- /警示/當沖交易型/當日累計量突破.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:VolumeThre(1000); setinputname(1,"突破量門檻"); 3 | input:AmountThre(1000); setinputname(2,"突破成交值金額門檻(萬)"); 4 | settotalbar(3); 5 | if GetField("Volume", "D") > VolumeThre or GetField("均價")*GetField("Volume", "D")/10 > AmountThre then ret=1; 6 | -------------------------------------------------------------------------------- /警示/當沖交易型/突破波動範圍.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(20); setinputname(1,"高低計算期數"); 3 | settotalbar(3); 4 | setbarback(Length); 5 | variable:HighLow(0); 6 | HighLow=high-low; 7 | if C>highest(H[1],Length) *1.005 and HighLow>highest(HighLow[1],Length) then ret=1; -------------------------------------------------------------------------------- /警示/當沖交易型/賣壓很輕.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:rate(20);setinputname(1,"當日內盤量佔總成交比例%"); 3 | settotalbar(8); 4 | if {內盤量}GetField("內盤量", "D") < GetField("Volume", "D")*(Rate/100) and Countif(close< close[1],5) < 3 5 | then ret=1; -------------------------------------------------------------------------------- /警示/當沖交易型/連續五分鐘一路走高.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT1("僅適用1分鐘線"); setinputname(1,"使用限制"); 3 | settotalbar(8); 4 | if barfreq = "Min" and barinterval = 1 and 5 | TrueAll(close >Close[1] ,5) then ret=1; -------------------------------------------------------------------------------- /警示/當沖交易型/開盤三連陽.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT("僅適用60分鐘線以內"); setinputname(1,"使用限制"); 3 | settotalbar(5); 4 | if barfreq = "Min" and barinterval <= 60 and 5 | (time[2] = 84500 or time[2] = 90000) and 6 | Close > Close[1] and Close[1] > Close[2] and 7 | Close[2] > Open[2] 8 | then ret=1; -------------------------------------------------------------------------------- /警示/當沖交易型/開盤五分鐘創三新低.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT("僅適用1分鐘線"); setinputname(1,"使用限制"); 3 | settotalbar(8); 4 | variable:KBarOfDay(0); KBarOfDay+=1; if date<>date[1] then KBarOfDay=1; 5 | 6 | if barfreq = "Min" and barinterval = 1 and Date = CurrentDate and 7 | KBarOfDay = 6 and 8 | Countif(Low < Low[1] and Close < Close[1] ,5) >=3 then Ret=1; -------------------------------------------------------------------------------- /警示/當沖交易型/開盤五分鐘創三新高.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT("僅適用1分鐘線"); setinputname(1,"使用限制"); 3 | settotalbar(8); 4 | variable:KBarOfDay(0); KBarOfDay+=1; if date<>date[1] then KBarOfDay=1; 5 | 6 | if barfreq<> "Min" and barinterval = 1 and Date = CurrentDate and 7 | KBarOfDay = 6 and 8 | Countif(High > High[1] and Close > Close[1] ,5) >=3 then Ret=1; -------------------------------------------------------------------------------- /警示/當沖交易型/階梯式上漲.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:TXT1("僅適用1分鐘線"); setinputname(1,"使用限制"); 3 | input:TXT2("只於9:10判斷"); setinputname(2,"使用說明"); 4 | settotalbar(12); 5 | if barfreq = "Min" and barinterval = 1 and time =91000 and 6 | TrueAll(close >Close[1] ,10) then ret=1; 7 | 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /警示/盤中常用/開盤跳空上漲N%且有量.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | if open >=close[1]*1.03 3 | and volume*close>300000 4 | then ret=1; -------------------------------------------------------------------------------- /警示/盤中常用/預估量破均量.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | value1=GetField("內盤量", "D");//當日內盤量 3 | value2=GetField("外盤量", "D");//當日外盤量 4 | if GetField("估計量") > average(volume[1],10)*1.3 5 | and value2>value1 6 | then ret=1; -------------------------------------------------------------------------------- /警示/短線操作型/三根長下影線.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Percent(1.5); setinputname(1,"下影線佔股價絕對百分比"); 3 | 4 | settotalbar(5); 5 | 6 | condition1 = (minlist(open,close)-low) > absvalue(open-close)*3; 7 | condition2 = minlist(open,close) > low * (100 + Percent)/100; 8 | 9 | if trueall( condition1 and condition2, 3) then ret=1; 10 | -------------------------------------------------------------------------------- /警示/短線操作型/加速趕底中.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(210); 3 | 4 | if Close[4] > Close *1.07 and 5 | TrueAll (truerange/Close > 0.02,3) and 6 | Close < Highest(high,200) *0.7 7 | then Ret=1; 8 | 9 | {自高檔回跌三成且近5期收低7%以上,近3期每期波動至少有2%} -------------------------------------------------------------------------------- /警示/短線操作型/外資連續買超n天.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Periods(5); setinputname(1,"外資連續買超天數"); 3 | input:TXT1("僅適用日線"); setinputname(2,"使用限制"); 4 | 5 | settotalbar(3); 6 | setbarback(Periods); 7 | 8 | if BarFreq <> "D" then return; 9 | 10 | Ret = TrueAll(GetField("外資買賣超")[1] > 0, Periods); 11 | -------------------------------------------------------------------------------- /警示/短線操作型/投信外資同步進場.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Fboughts(100); setinputname(1,"外資買超張數"); 3 | input:Sboughts(100); setinputname(2,"投信買超張數"); 4 | input:TXT1("僅適用日線"); setinputname(3,"使用限制"); 5 | settotalbar(3); 6 | if BarFreq <> "D" then return; 7 | if GetField("外資買賣超")[1]>Fboughts and GetField("投信買賣超")[1]>Sboughts 8 | then ret=1; -------------------------------------------------------------------------------- /警示/短線操作型/漲勢加速的股票.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:day2(5,"近期"); 3 | input:day1(10,"中期"); 4 | 5 | if angle(date[day1],date[day2])>0 6 | and angle(date[day2],date)>angle(date[day1],date[day2]) 7 | and angle(date[day2],date)>25 8 | and GetSymbolField("tse.tw","收盤價","W") 9 | >average(GetSymbolField("tse.tw","收盤價","W"),13) 10 | then ret=1; -------------------------------------------------------------------------------- /警示/短線操作型/站上五根bar高點.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(5); 3 | 4 | if close > highest(High[1],4) 5 | then ret=1; -------------------------------------------------------------------------------- /警示/酒田戰法/三長下影線.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input: Percent(1.5); setinputname(1,"下影線佔股價絕對百分比"); 3 | settotalbar(5); 4 | 5 | condition1 = (minlist(open,close)-Low) > absvalue(open-close)*3; 6 | condition2 = minlist(open, close) > low* (100 + Percent)/100; 7 | 8 | if trueall( condition1 and condition2, 3) then ret=1; -------------------------------------------------------------------------------- /警示/長線投資/大跌後的定存股標的.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | input:Length(200,"尋找高點期數"); 3 | input:percent(38.2,"自高點回檔幅度%"); 4 | 5 | if close < highest(high,Length)*(1- percent/100) then Ret=1; -------------------------------------------------------------------------------- /警示/長線投資/獲利穩定的公司來到市值低位區.xs: -------------------------------------------------------------------------------- 1 | {@type:sensor} 2 | settotalbar(700); 3 | 4 | if getsymbolfield("tse.tw","收盤價") > average(getsymbolfield("tse.tw","收盤價"),10) then begin 5 | value4=GetField("總市值"); 6 | value5=average(value4,600); 7 | if value4[1] GetField("EPS","Q")[1],N) then ret=1; 7 | 8 | SetOutputName1("EPS(元)(季)"); 9 | OutputField1(GetField("EPS","Q")); 10 | -------------------------------------------------------------------------------- /選股/00.語法範例/EPS連續N季衰退.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(4); SetInputName(1, "期別"); 3 | 4 | SetTotalBar(3); 5 | 6 | if TrueAll(GetField("EPS","Q") < GetField("EPS","Q")[1],N) then ret=1; 7 | 8 | SetOutputName1("EPS(元)(季)"); 9 | OutputField1(GetField("EPS","Q")); 10 | -------------------------------------------------------------------------------- /選股/00.語法範例/EPS連續N季都大於X元.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(4); setinputname(1, "期別"); 3 | input:X(1); setinputname(2, "元"); 4 | 5 | SetTotalBar(3); 6 | 7 | if TrueAll(GetField("EPS", "Q") > X,N) then ret=1; 8 | 9 | SetOutputName1("EPS(元)(季)"); 10 | OutputField1(GetField("EPS", "Q")); 11 | -------------------------------------------------------------------------------- /選股/00.語法範例/EPS連續N季都小於X元.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(4); setinputname(1, "期別"); 3 | input:X(0); setinputname(2, "元"); 4 | 5 | SetTotalBar(3); 6 | 7 | if TrueAll(GetField("EPS", "Q") < X,N) then ret=1; 8 | 9 | SetOutputName1("EPS(元)(季)"); 10 | OutputField1(GetField("EPS", "Q")); 11 | -------------------------------------------------------------------------------- /選股/00.語法範例/EPS連續N年都大於X元.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(4); setinputname(1, "期別"); 3 | input:X(1); setinputname(2, "元"); 4 | 5 | SetTotalBar(3); 6 | 7 | if TrueAll(GetField("EPS", "Y") > X,N) then ret=1; 8 | 9 | SetOutputName1("EPS(元)(年)"); 10 | OutputField1(GetField("EPS", "Y")); 11 | -------------------------------------------------------------------------------- /選股/00.語法範例/EPS連續N年都小於X元.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(4); setinputname(1, "期別"); 3 | input:X(0); setinputname(2, "元"); 4 | 5 | SetTotalBar(3); 6 | 7 | if TrueAll(GetField("EPS", "Y") < X,N) then ret=1; 8 | 9 | SetOutputName1("EPS(元)(年)"); 10 | OutputField1(GetField("EPS", "Y")); 11 | -------------------------------------------------------------------------------- /選股/00.語法範例/N期股價趨勢向上.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: Period(10); SetInputName(1, "期別"); 3 | 4 | settotalbar(3); 5 | 6 | Condition1 = rateofchange(close, period) >= Period; 7 | Condition2 = close > close[Period/2]; 8 | Condition3 = close > average(close, period); 9 | 10 | ret = condition1 and condition2 and condition3; 11 | -------------------------------------------------------------------------------- /選股/00.語法範例/N期股價趨勢向下.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: Period(10); SetInputName(1, "期別"); 3 | 4 | settotalbar(3); 5 | 6 | Condition1 = rateofchange(close, period) <= -1 * Period; 7 | Condition2 = close < close[Period/2]; 8 | Condition3 = close < average(close, period); 9 | 10 | ret = condition1 and condition2 and condition3; 11 | -------------------------------------------------------------------------------- /選股/00.語法範例/收盤價近N期漲幅大於X%以上.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(10); SetInputName(1, "期別"); 3 | input:X(5); SetInputName(2, "漲幅%"); 4 | 5 | SetTotalBar(3); 6 | 7 | Value1 = RateOfChange(GetField("收盤價"),N); 8 | if Value1 > X then ret=1; 9 | 10 | SetOutputName1("近期漲幅%"); 11 | OutputField1(Value1); -------------------------------------------------------------------------------- /選股/00.語法範例/收盤價近N期跌幅大於X%以上.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(10); SetInputName(1, "期別"); 3 | input:X(5); SetInputName(2, "跌幅%"); 4 | 5 | SetTotalBar(3); 6 | 7 | Value1 = RateOfChange(GetField("收盤價"),N); 8 | if Value1 < -1 * X then ret=1; 9 | 10 | SetOutputName1("近期跌幅%"); 11 | OutputField1(Value1); -------------------------------------------------------------------------------- /選股/00.語法範例/最近4季EPS合計大於X元.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:X(5); SetInputName(1, "元"); 3 | 4 | variable: N(4); 5 | 6 | SetTotalBar(3); 7 | 8 | Value1 = Summation(GetField("EPS","Q"),N); 9 | if Value1 > X then ret=1; 10 | 11 | SetOutputName1("EPS合計"); 12 | OutputField1(Value1); 13 | -------------------------------------------------------------------------------- /選股/00.語法範例/最近4季EPS合計小於X元.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:X(0); SetInputName(1, "元"); 3 | 4 | variable: N(4); 5 | 6 | SetTotalBar(3); 7 | 8 | Value1 = Summation(GetField("EPS","Q"),N); 9 | if Value1 < X then ret=1; 10 | 11 | SetOutputName1("EPS合計"); 12 | OutputField1(Value1); 13 | -------------------------------------------------------------------------------- /選股/00.語法範例/月營收創N期新低.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(13); setinputname(1, "期別"); 3 | 4 | SetTotalBar(3); 5 | 6 | if GetField("月營收", "M") <= Lowest(GetField("月營收", "M"),N) then ret=1; 7 | 8 | SetOutputName1("月營收"); 9 | OutputField1(GetField("月營收", "M")); 10 | -------------------------------------------------------------------------------- /選股/00.語法範例/月營收創N期新高.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(13); setinputname(1, "期別"); 3 | 4 | SetTotalBar(3); 5 | 6 | if GetField("月營收", "M") >= Highest(GetField("月營收", "M"),N) then ret=1; 7 | 8 | SetOutputName1("月營收"); 9 | OutputField1(GetField("月營收", "M")); 10 | -------------------------------------------------------------------------------- /選股/00.語法範例/本益比小於X倍.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | Input: X(10); SetInputName(1, "本益比(倍)"); 3 | 4 | settotalbar(3); 5 | 6 | Value1 = GetField("本益比", "D"); 7 | if Value1 < X then Ret = 1; 8 | 9 | SetOutputName1("本益比(倍)"); 10 | outputfield1(Value1); 11 | 12 | 13 | -------------------------------------------------------------------------------- /選股/00.語法範例/股價大於近N期平均.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(5); setinputname(1, "期別"); 3 | 4 | SetTotalBar(3); 5 | 6 | Value1 = Average(GetField("Close"),N); 7 | if GetField("Close") > Average(GetField("Close"),N) then ret=1; 8 | 9 | SetOutputName1("均價"); 10 | outputfield1(Value1); 11 | 12 | -------------------------------------------------------------------------------- /選股/00.語法範例/股價小於近N期平均.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N(5); setinputname(1, "期別"); 3 | 4 | SetTotalBar(3); 5 | 6 | Value1 = Average(GetField("Close"),N); 7 | if GetField("Close") < Value1 then ret=1; 8 | 9 | SetOutputName1("均價"); 10 | outputfield1(Value1); 11 | 12 | -------------------------------------------------------------------------------- /選股/00.語法範例/週轉率大於X%.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | Input: X(5); SetInputName(1, "週轉率%"); 3 | 4 | settotalbar(3); 5 | 6 | Value1 = GetField("週轉率","D"); 7 | if Value1 > X then Ret = 1; 8 | 9 | SetOutputName1("週轉率%"); 10 | outputfield1(Value1); 11 | 12 | -------------------------------------------------------------------------------- /選股/01.常用過濾條件/股本篩選.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:MinCapital(10); 3 | input:MaxCapital(50); 4 | 5 | SetInputName(1, "最小股本(億)"); 6 | SetInputName(2, "最大股本(億)"); 7 | 8 | SetTotalBar(3); 9 | 10 | Value1 = GetField("最新股本"); 11 | 12 | // 介於兩者之間 13 | Ret = Value1 >= MinCapital and Value1 <= MaxCapital; 14 | 15 | 16 | -------------------------------------------------------------------------------- /選股/01.常用過濾條件/股票名稱不含F股.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | variable:sn(""); 3 | sn=symbolname; 4 | if instr(sn,"F")=0 5 | and instr(sn,"Y")=0 then ret=1; 6 | outputfield(1,sn,0,"symbolname"); -------------------------------------------------------------------------------- /選股/01.常用過濾條件/過濾低價股票.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:PriceLimit(5); 3 | 4 | SetInputName(1, "最小股價"); 5 | 6 | SetTotalBar(3); 7 | 8 | Ret = close > PriceLimit; 9 | -------------------------------------------------------------------------------- /選股/01.常用過濾條件/過濾低成交量股票.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:Length(5); 3 | input:VolumeLimit(500); 4 | 5 | SetInputName(1, "均量天期"); 6 | SetInputName(2, "最小均量"); 7 | 8 | SetTotalBar(3); 9 | 10 | Value1 = Average(volume, Length); 11 | Ret = Value1 > VolumeLimit; 12 | 13 | SetOutputName1("成交均量"); 14 | OutputField1(Value1); -------------------------------------------------------------------------------- /選股/01.常用過濾條件/過濾冷門股票.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:PriceLimit(5),Length(5), VolumeLimit(500); 3 | 4 | SetInputName(1, "最小股價"); 5 | SetInputName(2, "均量天期"); 6 | SetInputName(3, "最小均量"); 7 | 8 | SetTotalBar(3); 9 | 10 | Value1 = Average(volume,Length); 11 | if close > PriceLimit and Value1 > VolumeLimit Then 12 | ret = 1; 13 | 14 | -------------------------------------------------------------------------------- /選股/01.常用過濾條件/過濾小型股票.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:MinCapital(10); // 股本(億) 3 | 4 | SetInputName(1, "最小股本(億)"); 5 | 6 | SetTotalBar(3); 7 | 8 | Ret = GetField("最新股本") > MinCapital; 9 | -------------------------------------------------------------------------------- /選股/01.常用過濾條件/過濾沒賺錢的股票.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // 過去四季每股盈餘加總必須 > 0 3 | // 4 | SetTotalbar(3); 5 | 6 | Value1 = summation(GetField("EPS","Q"), 4); 7 | Ret = Value1 > 0; 8 | 9 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/KD死亡交叉.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // KD指標, K值由上往下穿越D值 3 | // 4 | input: Length(9), RSVt(3), Kt(3); 5 | variable: rsv(0), k(0), _d(0); 6 | 7 | SetTotalBar(maxlist(Length,6) * 3); 8 | 9 | SetInputName(1, "天數"); 10 | SetInputName(2, "RSVt權數"); 11 | SetInputName(3, "Kt權數"); 12 | 13 | Stochastic(Length, RSVt, Kt, rsv, k, _d); 14 | 15 | Ret = k crosses below _d; 16 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/KD黃金交叉.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // KD指標, K值由下往上穿越D值 3 | // 4 | input: Length(9), RSVt(3), Kt(3); 5 | variable: rsv(0), k(0), _d(0); 6 | 7 | SetTotalBar(maxlist(Length,6) * 3); 8 | 9 | SetInputName(1, "天數"); 10 | SetInputName(2, "RSVt權數"); 11 | SetInputName(3, "Kt權數"); 12 | 13 | Stochastic(Length, RSVt, Kt, rsv, k, _d); 14 | 15 | Ret = k crosses above _d; 16 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/MTM穿越0.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // MTM往上穿越0軸 3 | // 4 | Input: Length(10); 5 | 6 | SetInputName(1, "期數"); 7 | 8 | settotalbar(maxlist(Length,6)); 9 | 10 | Ret = Momentum(Close, Length) Crosses Above 0; 11 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/MTM跌破0.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // MTM往下跌破0軸 3 | // 4 | Input: Length(10); 5 | 6 | SetInputName(1, "期數"); 7 | 8 | settotalbar(maxlist(Length,6)); 9 | 10 | Ret = Momentum(Close, Length) Crosses Below 0; 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/RSI死亡交叉.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // RSI短天期往下穿越長天期 3 | // 4 | input: ShortLength(6), LongLength(12); 5 | 6 | settotalbar(maxlist(ShortLength,LongLength,6) * 9); 7 | 8 | SetInputName(1, "短期期數"); 9 | SetInputName(2, "長期期數"); 10 | 11 | Ret = RSI(Close, ShortLength) Crosses Below RSI(Close, LongLength); 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/RSI黃金交叉.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // RSI短天期往上穿越長天期 3 | // 4 | input: ShortLength(6), LongLength(12); 5 | 6 | settotalbar(maxlist(ShortLength,LongLength,6) * 9); 7 | 8 | SetInputName(1, "短期期數"); 9 | SetInputName(2, "長期期數"); 10 | 11 | Ret = RSI(Close, ShortLength) Crosses Above RSI(Close, LongLength); 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/布林通道超買.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // 布林通道超買訊號 3 | // 4 | Input: Length(20), UpperBand(2); 5 | 6 | SetInputName(1, "期數"); 7 | SetInputName(2, "通道上緣"); 8 | 9 | settotalbar(3); 10 | 11 | Ret = High >= bollingerband(Close, Length, UpperBand); 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/布林通道超賣.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // 布林通道超賣訊號 3 | // 4 | Input: Length(20), LowerBand(2); 5 | 6 | SetInputName(1, "期數"); 7 | SetInputName(2, "通道下緣"); 8 | 9 | settotalbar(3); 10 | 11 | Ret = Low <= bollingerband(Close, Length, -1 * LowerBand); 12 | 13 | 14 | 15 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/帶量突破均線.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // 帶量突破均線 3 | // 4 | input: Length(10), VolFactor(2); 5 | 6 | SetInputName(1, "期數"); 7 | SetInputName(2, "成交量放大倍數"); 8 | 9 | settotalbar(3); 10 | 11 | if close > Average(close, Length) and close[1] < Average(close, Length) and 12 | volume > Average(volume[1], Length) * VolFactor 13 | then ret=1; 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/成交量放大.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: Length(5), VolFactor(2); 3 | 4 | SetInputName(1, "均量區間"); 5 | SetInputName(2, "放大倍數"); 6 | 7 | settotalbar(3); 8 | 9 | Ret = Volume > Average(Volume[1], Length) * VolFactor; 10 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/短期均線穿越長期均線.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: Shortlength(5); setinputname(1,"短期均線期數"); 3 | input: Longlength(20); setinputname(2,"長期均線期數"); 4 | 5 | settotalbar(3); 6 | 7 | If Average(Close,Shortlength) crosses over Average(Close,Longlength) then Ret=1; 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/短期均線跌破長期均線.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: Shortlength(5); setinputname(1,"短期均線期數"); 3 | input: Longlength(20); setinputname(2,"長期均線期數"); 4 | 5 | settotalbar(3); 6 | 7 | If Average(Close,Shortlength) crosses under Average(Close,Longlength) then Ret=1; 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /選股/02.基本技術指標/週KD低檔黃金交叉.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // KD指標, K值由下往上穿越D值 3 | // 4 | input: Length(9), RSVt(3), Kt(3); 5 | variable: rsv(0), k(0), _d(0); 6 | 7 | SetInputName(1, "天數"); 8 | SetInputName(2, "RSVt權數"); 9 | SetInputName(3, "Kt權數"); 10 | 11 | Stochastic(Length, RSVt, Kt, rsv, k, _d); 12 | 13 | Ret = k crosses above _d and k<30; -------------------------------------------------------------------------------- /選股/02.基本技術指標/週線月線黃金交叉且站穩.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("AD"); 3 | 4 | value1=average(close,5); 5 | value2=average(close,20); 6 | if value1[3] crosses over value2[3] 7 | and trueall(close>close[1]and close>value1,5) 8 | then ret=1 ; 9 | 10 | outputfield(1,value1,2,"週線", order := -1); 11 | outputfield(2,value2,2,"月線"); 12 | -------------------------------------------------------------------------------- /選股/03.進階技術分析/K棒突破布林值上緣.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | Input: 3 | Length(20, "期數"), 4 | UpperBand(2, "通道上緣"); 5 | 6 | settotalbar(3); 7 | 8 | Ret = close >= bollingerband(Close, Length, UpperBand); -------------------------------------------------------------------------------- /選股/03.進階技術分析/佔大盤成交量比開始上昇.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("佔全市場成交量比","D"); 3 | 4 | SetTotalBar(5); 5 | 6 | if value1[4]=lowest(value1,5) and 7 | value1=highest(value1,5) and 8 | close crosses above average(close,5) 9 | then ret=1; 10 | 11 | SetOutputName1("佔全市場成交量比(%)"); 12 | OutputField1(value1); 13 | -------------------------------------------------------------------------------- /選股/03.進階技術分析/冷門股出量.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:limit1(700); setinputname(1,"均量上限"); 3 | input:limit2(1000); setinputname(2,"突破量"); 4 | 5 | SetTotalBar(3); 6 | 7 | value1 = average(volume,5); 8 | 9 | if value1 < limit1 and volume > limit2 and High > close[1] and volume > volume[1] 10 | then ret=1; 11 | -------------------------------------------------------------------------------- /選股/03.進階技術分析/多空分數翻昇.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // 計算技術指標分數序列, 判斷指標分數是否翻轉 3 | // 4 | settotalbar(168); 5 | 6 | value1 = techscore(); 7 | value2 = average(value1, 10); 8 | if value2 crosses above 5 then ret = 1; 9 | 10 | 11 | -------------------------------------------------------------------------------- /選股/03.進階技術分析/多空分數轉空.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | // 計算技術指標分數序列, 判斷指標分數是否翻轉 3 | // 4 | settotalbar(168); 5 | 6 | value1 = techscore(); 7 | value2 = average(value1, 10); 8 | if value2 crosses under 10 then ret = 1; 9 | 10 | 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /選股/03.進階技術分析/布林帶寬大於N%.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: 3 | Length(20, "天數"), 4 | UpperBand(2, "上"), 5 | LowerBand(2, "下"), 6 | BBW(80,"N"); 7 | 8 | variable: 9 | bbandwidth(0); 10 | 11 | bbandwidth = bollingerbandwidth(Close, Length, UpperBand, LowerBand); 12 | 13 | if bbandwidth >= BBW then ret=1; 14 | 15 | outputfield(1,bbandwidth,2,"布林帶寬"); 16 | -------------------------------------------------------------------------------- /選股/03.進階技術分析/布林帶寬小於N%.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: 3 | Length(20, "天數"), 4 | UpperBand(2, "上"), 5 | LowerBand(2, "下"), 6 | BBW(20,"N"); 7 | 8 | variable: 9 | bbandwidth(0); 10 | 11 | bbandwidth = bollingerbandwidth(Close, Length, UpperBand, LowerBand); 12 | 13 | if bbandwidth <= BBW then ret=1; 14 | 15 | outputfield(1,bbandwidth,2,"布林帶寬"); 16 | -------------------------------------------------------------------------------- /選股/03.進階技術分析/盤整後跌破.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:length(20); setinputname(1, "計算期間"); 3 | input:percent(7); setinputname(2, "設定盤整區間%"); 4 | 5 | SetTotalBar(3); 6 | 7 | value1 = highest(high[1],length); 8 | value2 = lowest(low[1],length); 9 | 10 | if 11 | close crosses under value2 and 12 | value1 < value2 *( 1 + percent * 0.01) //最近幾根bar的收盤價高點與低點差不到N% 13 | then ret=1; 14 | -------------------------------------------------------------------------------- /選股/03.進階技術分析/股價蠢蠢欲動.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | SetTotalBar(23); 3 | 4 | value1=truerange(); 5 | value2=highest(value1,20); 6 | 7 | if value1 > value2[1] and 8 | value1 > value1[1] and 9 | close*1.01 > high and 10 | close > close[1] 11 | then ret=1; 12 | -------------------------------------------------------------------------------- /選股/03.進階技術分析/股價跌破走跌後的高壓電線.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | SetTotalBar(8); 3 | 4 | value1 = (average(close,30) + average(close,72)) / 2; //地心引力線 5 | value2 = value1*1.2;//高壓電線 6 | value3 = linearregslope(value2,5); 7 | 8 | if absvalue(value3) <= 0.1 and close crosses under value1 9 | then ret=1; 10 | 11 | -------------------------------------------------------------------------------- /選股/04.價量選股/M日內連續N日上漲.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:day(11); 3 | input:m1(3); 4 | setinputname(1,"計算天期"); 5 | setinputname(2,"連續上漲天數"); 6 | 7 | variable:x(0),count(0); 8 | count=0; 9 | for x=0 to day-m1 10 | begin 11 | if close[x]>close[x+1] 12 | and close[x+1]>close[x+2] 13 | and close[x+2]>close[x+3] 14 | then count=count+1; 15 | end; 16 | if count>=1 17 | then ret=1; 18 | 19 | 20 | -------------------------------------------------------------------------------- /選股/04.價量選股/N年來漲了M倍的公司.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:y1(10,"計算的年數"); 3 | input:ratio(800,"上漲的倍數%"); 4 | 5 | value1=rateofchange(GetField("收盤價","AM"),y1*12); 6 | 7 | if value1>=ratio 8 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/五日週轉率大於二十日週轉率.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | if turnoverrate(5)>turnoverrate(20) 3 | then ret=1; 4 | outputfield(1,turnoverrate(5),1,"5日平均週轉率"); 5 | outputfield(2,turnoverrate(20),1,"20日平均週轉率"); 6 | -------------------------------------------------------------------------------- /選股/04.價量選股/今收破昨高.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | if close>=high[1] 3 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/價量同步創N期新高.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(100,"計算天數"); 3 | 4 | value1=highest(high,period); 5 | value2=highest(volume,period); 6 | if high=value1 and volume=value2 7 | then ret=1; 8 | -------------------------------------------------------------------------------- /選股/04.價量選股/創最低總市值.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(36,"計算的月份數"); 3 | setbarfreq("M"); 4 | 5 | if GetField("總市值","M")=lowest(GetField("總市值","M"),period) 6 | then ret=1; 7 | 8 | -------------------------------------------------------------------------------- /選股/04.價量選股/創百日來新高但距離低點不太遠.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | //說明:今天的收盤價創百日來的收盤價新高,但是收盤價距離低點不太遠 3 | 4 | input:day(100); setinputname(1,"計算區間"); 5 | input:percents(14); setinputname(2,"距離區間最低點漲幅"); 6 | 7 | SetTotalBar(3); 8 | 9 | value1 = lowest(close, day); 10 | if close=highest(close,day) and value1 * (1 + percents/100) >= close 11 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/區間內股價創新高天數達一定水準.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(10,"計算區間"); 3 | input:lowlimit(3,"附合條件的最低次數"); 4 | if countif(high=highest(high,20),period)>=lowlimit 5 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/大跌後的急拉.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("AD"); 3 | 4 | value1=barslast(close>=close[1]*1.07); 5 | if value1[1]>50 6 | //超過50天沒有單日上漲超過7% 7 | and value1=0 8 | //今天上漲超過7% 9 | and average(volume,100)>500 10 | and volume>1000 11 | and close[1]*1.252000 4 | and close=highest(close,20) 5 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/曾經一個月漲超過兩成的股票.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("M"); 3 | settotalbar(12); 4 | 5 | if close>close[1]*1.2 then 6 | begin 7 | ret=1; 8 | outputfield(1,intportion(date*0.01),0,"上漲的月份"); 9 | end; 10 | 11 | -------------------------------------------------------------------------------- /選股/04.價量選股/最近N日漲跌幅小於M%.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(10,"計算區間"); 3 | input:ratio(10,"最低漲跌幅"); 4 | 5 | value1 = rateofchange(close,period-1); 6 | if value1 < ratio then ret=1; 7 | 8 | outputfield(1,value1,1,"區間漲跌幅"); 9 | -------------------------------------------------------------------------------- /選股/04.價量選股/有一定成交值且過去三日漲幅小.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:b1(1.5,"三日漲幅上限"); 3 | if volume*close>=30000 4 | and close<=close[2]*(1+b1/100) 5 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/波段漲幅不大,近N日有過漲停的.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:day(10,"計算區間"); 3 | value1=GetField("漲停價","D"); 4 | if trueany(close=value1,day) 5 | //近十日有一天漲停 6 | and close value2 and 10 | value2 > value3 and 11 | value1 > value1[1] and 12 | value1[1] > value1[2] and 13 | value1 > 0.3 and 14 | value3[2] < 0.1 and 15 | value3 > 0 16 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/漲多後跌破頭部.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:ratio(50); 3 | input:period(100); 4 | setinputname(1,"波段漲幅"); 5 | condition1=false; 6 | value1=highestbar(close,period);//波段最高價距今幾根bar 7 | value2=lowest(close[1],value1); 8 | if value1>5 and close>close[100]*(1+ratio/100) 9 | and close crosses under value2 10 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/無量變有量.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:v1(1000,"前一期成交量"); 3 | input:v2(1000,"最新期成交量"); 4 | if trueall(volume[1]<=v1,10) and volume>v2 5 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/盤整N日後突破.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(20,"盤整的天數"); 3 | input:ratio(5,"盤整的最大波動範圍"); 4 | 5 | if highest(close,period)[1] highest(close,period)[1] 7 | and volume >average(volume,period) 8 | and volume>2000 9 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/站在五十二週高點之上.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("最高價","w"); 3 | value2=highest(value1[1],52); 4 | if close>value2 then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/總市值跌到歷年低點.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("Y"); 3 | settotalbar(8); 4 | 5 | value1=GetField("總市值","Y"); 6 | value2=lowest(value1,8); 7 | if value1day 8 | then ret=1; -------------------------------------------------------------------------------- /選股/04.價量選股/行業轉強個股也轉強.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(20,"計算區間"); 3 | setbarfreq("D"); 4 | settotalbar(20); 5 | 6 | value1=GetField("同業股價指標","D"); 7 | value2=GetField("佔全市場成交量比","D"); 8 | 9 | if value1=highest(value1,period) 10 | and value2=highest(value2,period) 11 | then ret=1; 12 | -------------------------------------------------------------------------------- /選股/04.價量選股/跌到52週低點之下.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("W"); 3 | 4 | if close0 and rateofchange(close,2)[2]>0 5 | and closeclose*1.2 7 | then ret=1; 8 | 9 | outputfield(1,close[2],2,"前波低點", order := -1); 10 | -------------------------------------------------------------------------------- /選股/04.價量選股/過去M日有N日HHLL.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:days(5,"計算天期"); 3 | input:occurrence(2, "發生次數"); 4 | 5 | condition1= high>high[1] and low>low[1] ; 6 | value1=countif(condition1,days); 7 | if value1>=occurrence then ret=1; 8 | 9 | -------------------------------------------------------------------------------- /選股/04.價量選股/過去N日價穩量縮.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:days(10,"計算期間"); 3 | input:vhilimit(1000,"量的上限"); 4 | input:philimit(5,"價格波動上限"); 5 | setbarfreq("D"); 6 | settotalbar(days); 7 | 8 | value1=highest(high,days); 9 | value2=lowest(low,days); 10 | value3=(value1-value2)/value2*100; 11 | if trueall(volume 1000 and value3 < 0 and value4 > 0 12 | then ret=1; 13 | 14 | -------------------------------------------------------------------------------- /選股/05.型態選股/下降趨勢明確.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:Length(20,"期間"); //"計算期間" 3 | settotalbar(20); 4 | 5 | LinearReg(close, Length, 0, value1, value2, value3, value4); 6 | //做收盤價20天線性回歸 7 | {value1:斜率,value4:預期值} 8 | 9 | value5=rsquare(close,value4,20); 10 | //算收盤價與線性回歸值的R平方 11 | 12 | if value1<0 and value5>0.2 13 | then ret=1; 14 | -------------------------------------------------------------------------------- /選股/05.型態選股/在上昇趨勢中的股票.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:Length(20,"期間"); //"計算期間" 3 | settotalbar(20); 4 | 5 | LinearReg(close, Length, 0, value1, value2, value3, value4); 6 | //做收盤價20天線性回歸 7 | {value1:斜率,value4:預期值} 8 | 9 | value5=rsquare(close,value4,20); 10 | //算收盤價與線性回歸值的R平方 11 | 12 | if value1>0 and value5>0.2 13 | then ret=1; -------------------------------------------------------------------------------- /選股/05.型態選股/近期漲幅不大.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(20,"計算區間"); 3 | input:ratio(7,"最低漲跌幅"); 4 | 5 | if close[period-1]<>0 6 | and (close/close[period-1]-1)*100=open*1.035 3 | then ret=1; -------------------------------------------------------------------------------- /選股/06.籌碼選股/N日以來投信曾大買過.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(250,"計算期間"); 3 | input:days(5,"計算買進的天數"); 4 | input:amount(3000,"大買的最低張數"); 5 | setbarfreq("D"); 6 | settotalbar(period+days); 7 | 8 | value1=GetField("投信買張"); 9 | value2=summation(value1,days); 10 | if countif(value2>=amount,period)>=1 11 | then ret=1; 12 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/N日內三大法人曾同步買超.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:days(20,"計算天期"); 3 | setbarfreq("D"); 4 | settotalbar(days+1); 5 | 6 | value1=GetField("外資買賣超","D"); 7 | value2=GetField("投信買賣超","D"); 8 | value3=GetField("自營商自行買賣買賣超","D"); 9 | condition1=value1>0 and value2>0 and value3>0; 10 | if barslast(condition1) 20日均線 10% 4 | 5 | if volumeaverage(close,20)*1.1 8 | then ret=1; -------------------------------------------------------------------------------- /選股/06.籌碼選股/交易家數暴增.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("分公司交易家數","D"); 3 | value2=highest(GetField("分公司交易家數","D")[1],20); 4 | if value1-value2>150 5 | then ret=1; -------------------------------------------------------------------------------- /選股/06.籌碼選股/借券增.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:lowlimit(200,"借券增加張數"); 3 | input:days(3,"計算天數"); 4 | setbarfreq("D"); 5 | settotalbar(3); 6 | 7 | value1=GetField("借券賣出餘額張數","D")-GetField("借券賣出餘額張數","D")[days];//借券賣出餘額張數增加數 8 | if value1>=lowlimit 9 | then ret=1; 10 | 11 | outputfield(1,value1,"借券賣出餘額張數增加數"); 12 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/借券賣出餘額張數大減.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: amount(1000); setinputname(1, "減少張數"); 3 | 4 | SetTotalBar(3); 5 | 6 | value1 = GetField("借券賣出餘額張數"); 7 | if value1[1] - value1 > amount 8 | then ret=1; 9 | 10 | setoutputname1("借券賣出減少張數"); 11 | outputfield1(value1[1] - value1); 12 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/券補力道超過一定值.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("融券餘額張數","D"); 3 | input:lowlimit(100,"券補力道下限"); 4 | if value1/average(volume,5)*100>lowlimit 5 | then ret=1; -------------------------------------------------------------------------------- /選股/06.籌碼選股/千張大戶增持.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: ratio(10, "增加比例%"); 3 | 4 | setbarfreq("W"); 5 | settotalbar(3); 6 | 7 | if GetField("大戶持股比例","W",param:=1000) > (GetField("大戶持股比例","W",param:=1000)[1] * (1 + ratio/100)) then ret=1; 8 | 9 | outputfield(1, GetField("大戶持股比例","W",param:=1000), 2, "大戶比例"); 10 | outputfield(2, GetField("大戶持股比例","W",param:=1000)[1], 2, "大戶比例[1]"); -------------------------------------------------------------------------------- /選股/06.籌碼選股/外資由空翻多.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("D"); 3 | settotalbar(3); 4 | 5 | if summation(GetField("外資買賣超","D"),20)<0 6 | and trueall(GetField("外資買賣超","D")>200,3) 7 | then ret=1; 8 | 9 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/大跌後法人散戶清浮額.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(10); setinputname(1,"計算跌幅區間"); 3 | input:percent1(10); setinputname(2,"區間最小跌幅"); 4 | 5 | settotalbar(3); 6 | 7 | value1=GetField("法人買賣超張數"); 8 | value2=GetField("融資增減張數"); 9 | 10 | if close[period-1] >= close*(1+percent1/100) and 11 | value1 < 0 and 12 | value2 < 0 and 13 | close > close[1] 14 | then ret=1; -------------------------------------------------------------------------------- /選股/06.籌碼選股/官股買超比重.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: lowlimit(30, "官股買超比重(%)"); 3 | 4 | value1 = getfield("官股券商買賣超張數", "D"); 5 | if value1 > 0 then begin 6 | value2 = value1 * 100 / volume; 7 | if value2 >= lowlimit then ret=1; 8 | end; 9 | 10 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/投信持股從無到有.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: v1(2000); setinputname(1, "投信估計持股上限(張)"); 3 | input: v2(300); setinputname(2, "近一日買賣超(張)"); 4 | 5 | value1=GetField("投信持股","D"); 6 | value2=GetField("投信買賣超","D"); 7 | 8 | if value1 < v1 and value2 > v2 9 | then ret=1; 10 | 11 | SetOutputName1("投信買賣超(張)"); 12 | OutputField1(value2); 13 | 14 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/投信第一天大買進.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("最新股本");//單位:億 3 | value2=GetField("投信買張","D"); 4 | value3=value2*close/10; //單位:萬} 5 | 6 | 7 | 8 | condition1=value3>200 and value1<80; 9 | 10 | condition2=filter(condition1,5); 11 | 12 | if condition2 13 | then ret=1; 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/斷頭後的止跌.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | 3 | input:Length(4); setinputname(1,"計算區間"); 4 | input:DVOL(3000); setinputname(2,"區間融資減少張數"); 5 | input:R1(30); setinputname(3,"區間跌幅(%)"); 6 | 7 | SetTotalBar(3); 8 | 9 | if Close > Close[1] and 10 | RateOfChange(Close, Length) < -1 * R1 and 11 | GetField("融資餘額張數")[Length] - GetField("融資餘額張數") > DVOL 12 | then ret=1; 13 | 14 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/法人大出籌碼.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:r1(45); 3 | setinputname(1,"法人賣出佔成交量比例下限%"); 4 | value1=GetField("外資賣張","D"); 5 | value2=GetField("投信賣張","D"); 6 | value3=GetField("自營商賣張","D"); 7 | if volume<>0 then 8 | value4=(value1+value2+value3)/volume; 9 | if value4*100>r1 10 | then ret=1; -------------------------------------------------------------------------------- /選股/06.籌碼選股/法人大買而股價尚未發動.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:day(10); setinputname(1,"連續買超天數"); 3 | input:amount(100); setinputname(2,"每日至少買超張數(張)"); 4 | input:percent1(3); setinputname(3,"漲幅上限(%)"); 5 | 6 | SetTotalBar(3); 7 | 8 | if trueall(GetField("法人買賣超張數") > amount, day) and 9 | RateOfChange(Close, day) < percent1 10 | then ret=1; 11 | 12 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/法人買進佔成交量超過25%.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:r1(45); 3 | setinputname(1,"法人買進佔成交量比例下限%"); 4 | value1=GetField("外資買張","D"); 5 | value2=GetField("投信買張","D"); 6 | value3=GetField("自營商買張","D"); 7 | if volume<>0 then 8 | value4=(value1+value2+value3)/volume; 9 | if value4*100>r1 10 | then ret=1; -------------------------------------------------------------------------------- /選股/06.籌碼選股/法人逢低買超破億元.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:day(5,"計算期別"); 3 | input:lowlimit(1,"單位:億元"); 4 | setbarfreq("D"); 5 | settotalbar(day); 6 | 7 | value1=GetField("法人買賣超張數","D"); 8 | value2=summation(value1,day); 9 | value3=value1*value2/10000; 10 | 11 | if value3>=1 12 | and close*1.1 r1 12 | then ret=1; 13 | 14 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/籌碼從散戶手裡被收集.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:ratio(200); setinputname(1,"控盤者買張除以散戶買張的比例(%)"); 3 | input:volLimit(2000); setinputname(2,"成交量下限(張)"); 4 | 5 | settotalbar(3); 6 | 7 | value1=GetField("控盤者買張"); 8 | value2=GetField("散戶買張"); 9 | value3=value1/value2 * 100; 10 | 11 | if volume > volLimit and value3 > ratio and value3[1] > ratio 12 | then ret=1; 13 | 14 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/籌碼集中度超過兩成的股票.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:day(10,"天數"); 3 | input:ratio(20,"最低百分比"); 4 | setbarfreq("D"); 5 | settotalbar(day+3); 6 | 7 | value1=GetField("主力買賣超張數","D"); 8 | 9 | if volume<>0 then 10 | value2=summation(value1,day)/summation(volume,day)*100; 11 | if value2>=ratio then 12 | ret=1; 13 | 14 | outputfield(1,value2,0,"籌碼集中度"); 15 | -------------------------------------------------------------------------------- /選股/06.籌碼選股/近N日主力合計買超大於M張.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("主力買賣超張數","D"); 3 | input:days(5,"計算天期"); 4 | input:lowmit(200,"買超最低張數"); 5 | if summation(value1,days)>=lowmit 6 | then ret=1; -------------------------------------------------------------------------------- /選股/06.籌碼選股/連續兩日籌碼在收集.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("分公司買進家數","D"); 3 | value2=GetField("分公司賣出家數","D"); 4 | value3=value2-value1; 5 | if trueall(value3>30,2) 6 | then ret=1; -------------------------------------------------------------------------------- /選股/06.籌碼選股/集保張數減少中.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: n(3); setinputname(1, "計算期間(週)"); 3 | input: Amount(1000); setinputname(2, "減少張數(張)"); 4 | 5 | SetTotalBar(3); 6 | 7 | // 單位=萬張 8 | Value1 = (GetField("集保張數","W")[n] - GetField("集保張數","W")) * 10000; 9 | if Value1 > Amount then 10 | ret = 1; 11 | 12 | setoutputname1("減少張數(張)"); 13 | OutputField1(Value1); 14 | 15 | -------------------------------------------------------------------------------- /選股/07.月營收選股/月營收YOYN月移動平均大於X.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:lowlimit(10,"年增率下限"); 3 | input:period(12,"移動平均線的期別"); 4 | 5 | if average(GetField("月營收年增率","M"),period) >= lowlimit 6 | then ret=1; -------------------------------------------------------------------------------- /選股/07.月營收選股/月營收出現死亡交叉.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:shortterm(4); 3 | input:longterm(12); 4 | setinputname(1,"短期均線"); 5 | setinputname(2,"長期均線"); 6 | 7 | if average(GetField("月營收","M"),shortterm)*1.1 8 | < average(GetField("月營收","M"),longterm) 9 | then ret=1; 10 | -------------------------------------------------------------------------------- /選股/07.月營收選股/月營收創新低.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(36, "期別"); 3 | settotalbar(period + 5); 4 | 5 | value1=GetField("月營收","M"); 6 | value2=lowest(GetField("月營收","M"),period); 7 | 8 | if value1=value2 9 | and value1[1]=value2[1] 10 | then ret=1; 11 | 12 | outputfield(1, value1,2,"月營收(億)", order := 1); 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /選股/07.月營收選股/月營收創新高股價離高點有些距離.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=highest(getfield("月營收","M"),48); 3 | value2=highest(GetField("總市值","D"),500); 4 | 5 | if getfield("月營收","M")=value1 6 | and value2>GetField("總市值","D")*1.2 7 | then ret=1; -------------------------------------------------------------------------------- /選股/07.月營收選股/月營收年增率移動平均黃金交叉.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("月營收年增率","M"); 3 | 4 | if average(value1,4) crosses over average(value1,12) 5 | and value1 > 0 6 | then ret=1; 7 | 8 | outputfield(1,value1,2,"月營收年增率%", order := 1); 9 | -------------------------------------------------------------------------------- /選股/07.月營收選股/營收年增率由負轉正,且至少連續3個月.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("月營收年增率","M"); 3 | input:period(3); 4 | if trueall(value1>0,period) and value1[3]<0 5 | then ret=1; -------------------------------------------------------------------------------- /選股/07.月營收選股/營收月增率優於平均.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("月營收月增率","M"); 3 | value2=average(GetField("月營收月增率","M"),36); 4 | if value1>10 5 | and value1>value2*1.3 6 | then ret=1; -------------------------------------------------------------------------------- /選股/07.月營收選股/累計月營收年增率連續N月成長.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(6,"計算區間"); 3 | settotalbar(period+1); 4 | value1=GetField("累計營收年增率","M"); 5 | if trueall(value1>value1[1],period) 6 | then ret=1; 7 | -------------------------------------------------------------------------------- /選股/07.月營收選股/累計營收年增率黃金交叉.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("累計營收年增率","M"); 3 | input: r1(3),r2(12); 4 | setinputname(1,"短天期"); 5 | setinputname(2,"長天期"); 6 | if average(value1,r1) crosses over average(value1,r2)+5 7 | and value1>10 8 | then ret=1; 9 | -------------------------------------------------------------------------------- /選股/08.財報選股/PEG指標.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:r1(1); setinputname(1,"PEG上限"); 3 | 4 | settotalbar(3); 5 | 6 | // PEG指標 7 | // 8 | value1 = GetField("本益比","D"); 9 | value2 = GetField("月營收年增率","M"); 10 | if value1 > 0 and value2 > 0 and value1 / value2 < r1 then 11 | ret=1; 12 | 13 | SetOutputName1("PEG指標"); 14 | OutputField1(value1 / value2); 15 | 16 | -------------------------------------------------------------------------------- /選股/08.財報選股/ROE漸入佳境.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("股東權益報酬率","Q"); 3 | if GetField("股東權益報酬率","Q")>GetField("股東權益報酬率","Q")[1] 4 | and GetField("股東權益報酬率","Q")>GetField("股東權益報酬率","Q")[4] 5 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/上一季本業賺錢.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("營業利益率","Q"); 3 | if value1>0 4 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/五年內有至少三年營收成長.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("營業收入淨額","Y"); 3 | value2=value1-value1[1]; 4 | if countif(value2>0,5)>=3 5 | then ret=1; 6 | -------------------------------------------------------------------------------- /選股/08.財報選股/公司連續N年獲利大於X億.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:lowlimit(1,",金額下單位億元"); 3 | input:period(10,"連續年度數"); 4 | value1=GetField("本期稅後淨利","Y");//單位百萬 5 | if trueall(value1>lowlimit*100,period) 6 | then ret=1; 7 | -------------------------------------------------------------------------------- /選股/08.財報選股/利息支出佔股本比例.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:r1(5); setinputname(1,"利息支出佔股本比例(%)"); 3 | 4 | settotalbar(3); 5 | 6 | value1=GetField("最新股本"); //單位億 7 | value2=GetField("利息支出","Y"); //單位百萬 8 | 9 | value3=value2/(value1*100) * 100; 10 | 11 | if value3 > r1 12 | then ret=1; 13 | 14 | SetOutputName1("利息支出佔股本比例(%)"); 15 | OutputField1(value3); 16 | -------------------------------------------------------------------------------- /選股/08.財報選股/固定資產佔股本比率低於N%.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:r1(10,"固定資產佔股本比例(單位%)"); 3 | 4 | value1=GetField("最新股本");//單位億 5 | value2=GetField("固定資產","Q"); 6 | value3=value2/(value1*100); 7 | 8 | if value3value1[4],n) 8 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/市值研發費用比.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:n(5); setinputname(1,"研發費用市值比"); 3 | 4 | settotalbar(3); 5 | 6 | value1=GetField("總市值"); // 單位=億 7 | value2=GetField("研發費用","Y"); // 單位=百萬 8 | value3=value2 / value1; // % 9 | if value3 > n 10 | then ret=1; 11 | 12 | SetOutputName1("研發費用市值比"); 13 | OutputField1(value3); 14 | -------------------------------------------------------------------------------- /選股/08.財報選股/帳上現金少.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:r1(50); setinputname(1,"帳上現金(單位:百萬元)"); 3 | 4 | settotalbar(3); 5 | 6 | value1=GetField("現金及約當現金","Q"); 7 | if value1 < r1 8 | then ret=1; 9 | 10 | SetOutputName1("帳上現金(百萬)"); 11 | OutputField1(value1); 12 | -------------------------------------------------------------------------------- /選股/08.財報選股/年營收成長率超過一定比例.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("Y"); 3 | settotalbar(5); 4 | 5 | value1=GetField("營收成長率","Y"); 6 | value2=average(value1,5); 7 | if trueall(value1>0,5) and value2>=25 8 | then ret=1; 9 | 10 | OutputField(1,value1,"年度營收成長率"); 11 | OutputField(2,value2,"五年平均營收成長率"); 12 | -------------------------------------------------------------------------------- /選股/08.財報選股/最新一季可能虧錢的公司.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("M"); 3 | 4 | value1=GetField("月營收","M");//單位:億 5 | value2=value1[2]+value1[3]+value1[4]; 6 | value3=GetField("營業毛利率","Q"); 7 | value4=GetField("營業費用","Q");//單位:百萬 8 | 9 | if value2*value3/100-value4/100<0 10 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/本業推估本益比低於N.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:epsl(15,"預估本益比上限"); 3 | 4 | value3= summation(GetField("營業利益","Q"),4); //單位百萬; 5 | value4= GetField("最新股本");//單位億; 6 | value5= value3/(value4*10);//每股預估EPS 7 | if value5>0 and close/value5<=epsl 8 | then ret=1; 9 | 10 | outputfield(1,close/value5,1,"預估本益比", order := 1); 11 | -------------------------------------------------------------------------------- /選股/08.財報選股/本業獲利佔八成以上.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("營業利益","Q");//單位百萬 3 | value2=GetField("稅前淨利","Q");//單位百萬 4 | if value2>0 5 | then begin 6 | if value1/value2*100>80 7 | then ret=1; 8 | end; -------------------------------------------------------------------------------- /選股/08.財報選股/每年本業都獲利且趨勢向上.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:lm(200,"年營業利益下限"); 3 | settotalbar(5); 4 | 5 | value1=GetField("營業利益","Y");//百萬 6 | if trueall(value1>lm,5) 7 | //週去五年都賺超過一億 8 | and linearregslope(value1,5)>0 9 | //五年的營業利益趨勢往上 10 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/每股來自營運現金流量.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:r1(25); setinputname(1,"來自營運的現金流量佔股本比率下限%"); 3 | 4 | settotalbar(3); 5 | 6 | value1=GetField("最新股本"); // 單位=億 7 | value2=GetField("來自營運之現金流量","Q"); // 單位=百萬 8 | value3=value2/value1; // 單位=% 9 | 10 | if value3 > r1 11 | then ret=1; 12 | 13 | setoutputname1("來自營運的現金流量佔股本比率(%)"); 14 | outputfield1(value3); -------------------------------------------------------------------------------- /選股/08.財報選股/毛利率上昇月營收成長.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("月營收月增率","M"); 3 | value2=GetField("營業毛利率","Q"); 4 | if value1>value1[1] 5 | and value2>value2[1] 6 | then ret=1; 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /選股/08.財報選股/毛利率沒掉的兇.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:ratio(10,"毛利率單季衰退幅度上限"); 3 | input:period(10,"計算的期間,單位是季"); 4 | 5 | value1=GetField("營業毛利率","Q"); 6 | if trueall(value1>value1[1]*(1-ratio/100),period) 7 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/法定盈餘公積已提足,配股能力提昇.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("法定盈餘公積","Q"); //百萬 3 | 4 | value2=GetField("最新股本"); //億 5 | 6 | value3=GetField("本期稅後淨利","Q"); //百萬 7 | 8 | // 稅後淨利 + 法定盈餘公積 > 股本 9 | // 10 | if value1 + value3 > value2*100 11 | then ret=1; 12 | 13 | -------------------------------------------------------------------------------- /選股/08.財報選股/流動資產市值比.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:r1(12); setinputname(1,"流動資產市值比下限%"); 3 | 4 | settotalbar(3); 5 | 6 | value1=GetField("流動資產","Q"); // 單位=百萬 7 | value2=GetField("總市值","D"); // 單位=億 8 | value3=value1/value2; // 單位=% 9 | if value3 < r1 10 | then ret=1; 11 | 12 | setoutputname1("流動資產市值比%"); 13 | outputfield1(value3); 14 | -------------------------------------------------------------------------------- /選股/08.財報選股/流動資產減負債超過市值N成.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:ratio(80,"佔總市值百分比%"); 3 | if (GetField("流動資產","Q")-GetField("負債總額","Q"))*100>GetField("總市值","D")*ratio/100 4 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/流動資產減負債超過總市值N成.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:ratio(80,"比率下限"); 3 | 4 | value1=GetField("流動資產","Q");//單位百萬 5 | value2=GetField("負債總額","Q");//單位百萬 6 | value3=GetField("總市值","D");//單位億 7 | 8 | if (value1-value2)>=value3*ratio 9 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/營收上昇費用降低.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:period(5,"計算的季別"); 3 | input:count(2,"符合條件之最低次數"); 4 | setbarfreq("Q"); 5 | settotalbar(period+1); 6 | 7 | value1=GetField("營業收入淨額","Q");//單位百萬 8 | value2=GetField("營業費用","Q");//單位百萬 9 | 10 | if countif(value1>value1[1] and value2=count 11 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/營業利益均線向上.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("Q"); 3 | settotalbar(10); 4 | value1=GetField("營業利益","Q"); 5 | if linearregslope(average(value1,5),5)>0 6 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/營業利益率不曾大幅下滑.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:r1(5, "營業利益率QOQ最大衰退幅度"); 3 | input:p1(5, "計算的季期數"); 4 | 5 | SetTotalBar(p1 + 4); 6 | value1=GetField("營業利益率","Q"); 7 | if trueall(value1*(1+r1/100)>value1[1],p1) 8 | then ret=1; 9 | -------------------------------------------------------------------------------- /選股/08.財報選股/營業外收入愈來愈高.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | settotalbar(3); 3 | 4 | if trueall(GetField("營業外收入合計","Y") > GetField("營業外收入合計","Y")[1], 3) 5 | then ret=1; 6 | 7 | -------------------------------------------------------------------------------- /選股/08.財報選股/營益率由負轉正且持續上揚.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | settotalbar(3); 3 | 4 | if 5 | GetField("營業利益率","Q")[2]<0 and 6 | GetField("營業利益率","Q")[1]>0 and 7 | GetField("營業利益率","Q") > GetField("營業利益率","Q")[1] and 8 | GetField("月營收月增率","M") > 0 and 9 | GetField("月營收月增率","M")[1] >0 10 | then ret=1; 11 | 12 | -------------------------------------------------------------------------------- /選股/08.財報選股/營運現金流大於稅後盈餘.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | settotalbar(3); 3 | 4 | value1=GetField("來自營運之現金流量","Q"); 5 | value2=GetField("本期稅後淨利","Q"); 6 | if value1 > value2 7 | then ret=1; 8 | -------------------------------------------------------------------------------- /選股/08.財報選股/獲利穩定的公司.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("Y"); 3 | settotalbar(5); 4 | value1=GetField("每股稅後淨利(元)","Y"); 5 | if trueall(value1>=2,5)//過去五年每年都賺超過兩元 6 | and highest(value1,5)r1 11 | and value2/100>r2 12 | and value3 r1 then ret=1; 11 | 12 | SetoutputName1("現金佔總市值比例%"); 13 | OutputField1(value3); 14 | -------------------------------------------------------------------------------- /選股/08.財報選股/現金很多的公司.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: lowlimit(10,"償債後現金及短投最少金額"); 3 | 4 | value1=GetField("現金及約當現金","Q");//單位百萬 5 | value2=GetField("短期投資","Q");//單位百萬 6 | value3=GetField("短期借款","Q");//單位百萬 7 | value4=(value1+value2-value3)/100;//單位億之現金及短期投資合計金額 8 | 9 | if value4>=lowlimit 10 | then ret=1; 11 | 12 | outputfield(1,value4,"償債後現金及短投金額(億)"); 13 | -------------------------------------------------------------------------------- /選股/08.財報選股/股價低於N年平均股利的N倍.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:N1(5); 3 | input:N2(16); 4 | setinputname(1,"股利平均的年數"); 5 | setinputname(2,"股利的倍數"); 6 | value1=GetField("股利合計","Y"); 7 | value2=average(value1,N1); 8 | if close0 6 | then value3=value2/value1*100;//股息配發率 7 | 8 | if trueall(value3>ratio,3) then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/資產報酬率達到一定的水準且沒有明顯下滑.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("資產報酬率","Q"); 3 | value2=average(value1,4); 4 | value3=linearregslope(value2,5); 5 | if value3>0 6 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/近N年EPS成長率平均大於X%.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input: N(5), X(10); 3 | setbarfreq("Y"); 4 | 5 | setinputname(1, "期別"); 6 | setinputname(2, "平均EPS成長率(%)"); 7 | 8 | SetTotalBar(N+3); 9 | 10 | Value1 = Average(RateOfChange(GetField("每股稅後淨利(元)","Y"), 1), N); 11 | 12 | Ret = Value1 > X; 13 | 14 | SetOutputName1("平均EPS成長率(%)"); 15 | OutputField1(Value1); 16 | 17 | 18 | -------------------------------------------------------------------------------- /選股/08.財報選股/近五年至少有一年營業利益超過五億.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:years(5,"期間"); 3 | setbarfreq("Y"); 4 | settotalbar(5); 5 | 6 | value1=GetField("營業利益","Y");//單位: 百萬 7 | if highest(value1,years)>=500 8 | then ret=1; -------------------------------------------------------------------------------- /選股/08.財報選股/近四季EPS合計大於N元.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:n1(3); 3 | setinputname(1,"每股稅後淨利最低標準"); 4 | value1=GetField("每股稅後淨利(元)","Q"); 5 | value2=summation(value1,4); 6 | if value2>=n1 7 | then ret=1; 8 | -------------------------------------------------------------------------------- /選股/08.財報選股/過去三年來自營運的現金流量都大於零.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("來自營運之現金流量","Y"); 3 | if trueall(value1>0,3) 4 | then ret=1; -------------------------------------------------------------------------------- /選股/09.時機操作/可能有填權行情的股票.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("除權日期"); 3 | value2=GetField("每股稅後淨利(元)","Y"); 4 | if value1>date 5 | and datediff(value1,date)<5 6 | //除權後五天內 7 | and trueall(close=2 10 | //每股稅後淨利大於2元 11 | then ret=1; 12 | outputfield(1,value1,0,"今年度除權日"); 13 | -------------------------------------------------------------------------------- /選股/09.時機操作/台幣升值受災股.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("每股營業額(元)","Y"); 3 | value2=GetField("外銷比率","Y"); 4 | if value1>20 and value2>90 5 | //每股營收超過20且外銷比率超過九成 6 | then ret=1; 7 | 8 | outputfield(1,value1,0,"每股營收"); 9 | outputfield(2,value2,0,"外銷比率"); 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /選股/10.價值投資/PB跌到歷年低點區且低於0.8.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("股價淨值比","Y"); 3 | value2=lowest(value1,4); 4 | if value1close*1.1 6 | then ret=1; 7 | 8 | outputfield(1, GetField("股價淨值比","D"),2, "PB比", order := 1); 9 | -------------------------------------------------------------------------------- /選股/10.價值投資/低本益比低PB高殖利率.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | {本益比小於 15 倍 股價淨值比小於 2 倍 殖利率大於 3%} 3 | 4 | 5 | 6 | if GetField("本益比","D") < 10 and 7 | GetField("股價淨值比","D") <1.5 and 8 | GetField("殖利率","D") > 3 and 9 | GetField("營收成長率","Q") >0 10 | 11 | 12 | then ret=1; 13 | 14 | -------------------------------------------------------------------------------- /選股/10.價值投資/本業推估本益比低於N.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:peuplimit(15,"預估本益比上限"); 3 | value3= summation(GetField("營業利益","Q"),4); //單位百萬; 4 | value4= GetField("最新股本");//單位億; 5 | value5= value3/(value4*10);//每股預估EPS 6 | if value5>0 and close/value5<=peuplimit 7 | then ret=1; -------------------------------------------------------------------------------- /選股/11.選股機器人/多頭下起漲前的籌碼收集.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("AD"); 3 | 4 | value1=GetField("分公司買進家數"); 5 | value2=GetField("分公司賣出家數"); 6 | value3=value2-value1; 7 | value4=countif(value3>20,10); 8 | if value4>6 and close[30]>close*1.1 9 | then ret=1; 10 | 11 | outputfield(1,value1,0,"買進家數", order := -1); 12 | outputfield(2,value2,0,"賣出家數"); 13 | -------------------------------------------------------------------------------- /選股/11.選股機器人/天價上影線賣出訊號.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("AD"); 3 | 4 | variable:Kprice(0); 5 | 6 | if H > O*1.03 and C = 500; 10 | ret = condition1 and condition2; 11 | 12 | outputfield(1,Kprice,2,"關卡價", order := -1); 13 | -------------------------------------------------------------------------------- /選股/11.選股機器人/投信第一天大買.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("AD"); 3 | 4 | input: v1(500, "投信估計持股上限(張)"); 5 | 6 | value1=GetField("投信持股","D"); 7 | value2=GetField("投信買賣超","D"); 8 | 9 | if value1 < v1 and value2 > VOLUME*0.2 10 | then ret=1; 11 | 12 | outputfield(1,GetField("投信買賣超","D"),0,"投信買超", order := 1); 13 | -------------------------------------------------------------------------------- /選股/11.選股機器人/月營收年增率移動平均黃金交叉b.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("月營收年增率","M"); 3 | 4 | if average(value1,4) crosses over average(value1,12) 5 | and value1 > 0 6 | then ret=1; 7 | 8 | outputfield(1,value1,2,"月營收年增率%", order := 1); 9 | -------------------------------------------------------------------------------- /選股/11.選股機器人/毛利率創一年新高.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | value1=GetField("營業毛利率","Q"); 3 | if value1=highest(value1,12) 4 | then ret=1; -------------------------------------------------------------------------------- /選股/11.選股機器人/毛利率沒掉的兇.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | input:ratio(10,"毛利率單季衰退幅度上限"); 3 | input:period(10,"計算的期間,單位是季"); 4 | 5 | value1=GetField("營業毛利率","Q"); 6 | if trueall(value1>value1[1]*(1-ratio/100),period) 7 | then ret=1; -------------------------------------------------------------------------------- /選股/11.選股機器人/週轉率高點買進.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | setbarfreq("AD"); 3 | 4 | value1=GetField("成交金額"); 5 | value2=GetField("總成交次數","D"); 6 | if value2>0 then value3=value1/value2; 7 | 8 | if value3=highest(value3,200) 9 | and close>close[1]*1.025 10 | and close[2]2000 12 | then ret=1; 13 | 14 | outputfield(1, GetField("週轉率","D"), 2, "週轉率%", order := 1); 15 | -------------------------------------------------------------------------------- /選股/11.選股機器人/除權後的填權行情.xs: -------------------------------------------------------------------------------- 1 | {@type:filter} 2 | if close[1]*1.1close[1]*1.025 4 | and volume>average(volume,20) 5 | then ret=1; 6 | 7 | value1=getbaroffset(dateadd(GetField("除權息日期"),"D",-1)); 8 | outputfield(1,close[value1],2,"除權參考價"); 9 | outputfield(2,-RateOfChange(c,value1),2,"貼權率%", order := 1); 10 | --------------------------------------------------------------------------------