hi 小幫手,
您好,我想寫一程式計算
1. 3日平均成交量及18日平均成交量斜率大於0(表示成交量上升)
2. 3日平均成交量 > 18日平均成交量
3. MACD DIF6-12 >0 且連續3日OSC增加
4. MACD DIF19-39 >0 且連續3日OSC增加
請問該如何寫?感謝!!

hi 小幫手,
您好,我想寫一程式計算
1. 3日平均成交量及18日平均成交量斜率大於0(表示成交量上升)
2. 3日平均成交量 > 18日平均成交量
3. MACD DIF6-12 >0 且連續3日OSC增加
4. MACD DIF19-39 >0 且連續3日OSC增加
請問該如何寫?感謝!!

以下是我試著撰寫的程式,但選出來的很多怪怪的,也有幾天後看有達到條件,但當天卻沒選到,能幫忙校正程式bug嗎?
感謝!!
//MACD INPUT 條件
input: FastLength(6), SlowLength(12), MACDLength(9);
input: LongFastLength(19), LongSlowLength(39);
//MACD
variable: difValue(0), macdValue(0), oscValue(0);
variable: LongdifValue(0), LongmacdValue(0), LongoscValue(0);
variable: DIFValue_w(0), MACDValue_w(0), OSCValue_w(0);
SetInputName(1, "DIF短期期數");
SetInputName(2, "DIF長期期數");
SetInputName(3, "MACD期數");
SetInputName(4, "長線DIF短期期數");
SetInputName(5, "長線DIF長期期數");
MACD(weightedclose(), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);
MACD(weightedclose(), LongFastLength, LongSlowLength, MACDLength, LongdifValue, LongmacdValue, LongoscValue);
//日均量
value301 = Average(Volume, 3);
value302 = Average(Volume, 18);
value303 = LinearRegSlope(Volume,3);
value304 = LinearRegSlope(Volume,18);
condition1 = (LongdifValue[3] crosses over LongmacdValue[3]) or (LongdifValue[2] crosses over LongmacdValue[2]) or (LongdifValue[1] crosses over LongmacdValue[1]) or (LongdifValue crosses over LongmacdValue);
condition2 = (DIFValue_w[3] crosses over MACDValue_w[3]) or (DIFValue_w[2] crosses over MACDValue_w[2]) or (DIFValue_w[1] crosses over MACDValue_w[1]) or (DIFValue_w crosses over MACDValue_w);
condition3 = value303>0 and value304>0;
condition4 = value301 >= value302;
ret = condition1 and condition2 and condition3 and condition4;
你應該先outputfield選出來的股票的技術指標數值,然後你會發現,其實技術指標數值是錯誤的,與技術分析圖表的指標數值不同。
Hello, LeonHuang.
很抱歉小幫手花了點時間才知道你的K線是週K線,下次要麻煩您了,
再來您的程式,看起來是要跑選股,所以MACD這類需要前值做計算的指標,需要設定資料長度(SetTotalBar),
所以小幫手根據您的描述,將您的選股程式修改如下:
//MACD INPUT 條件
input: FastLength(6), SlowLength(12), MACDLength(9);
input: LongFastLength(19), LongSlowLength(39);
//MACD
variable: difValue(0), macdValue(0), oscValue(0);
variable: LongdifValue(0), LongmacdValue(0), LongoscValue(0);
variable: DIFValue_w(0), MACDValue_w(0), OSCValue_w(0);
SetInputName(1, "DIF短期期數");
SetInputName(2, "DIF長期期數");
SetInputName(3, "MACD期數");
SetInputName(4, "長線DIF短期期數");
SetInputName(5, "長線DIF長期期數");
SetTotalBar((maxlist(FastLength,SlowLength,6,LongFastLength,LongSlowLength) + MACDLength) * 4);
MACD(weightedclose(), FastLength, SlowLength, MACDLength, difValue, macdValue, oscValue);
MACD(weightedclose(), LongFastLength, LongSlowLength, MACDLength, LongdifValue, LongmacdValue, LongoscValue);
//日均量
value301 = Average(Volume, 3);
value302 = Average(Volume, 18);
value303 = LinearRegSlope(Volume,3);
value304 = LinearRegSlope(Volume,18);
if
value303 > 0 and value304 > 0 // 1. 3日平均成交量及18日平均成交量斜率大於0(表示成交量上升)
and value301 >= value302 // 2. 3日平均成交量 > 18日平均成交量
and difValue > 0 // 3. MACD DIF6-12 >0
and TrueAll(oscValue > oscValue[1], 3) // 且連續3日OSC增加
and LongdifValue > 0 // 4.MACD DIF19-39 >0 且連續3日OSC增加
and TrueAll(LongoscValue > LongoscValue[1], 3) // 且連續3日OSC增加
then
ret = 1;
選股頻率要設定週,回溯至該週的週五,

2467有出現在選股結果,
謝謝。
3 評論