begin screening 0 baseDate 2007 1 9 nLowHigh 200 200 begin condition 0 and 1 begin customExpSrc 1 0 1 // MACDシグナルをMACDが指定した上昇率で上抜いたものをスクリーニング // すなわち、MACDオシレータが負から正に転じたものをスクリーニング //   「MACDオシレータ = MACD − MACDシグナル」なので。 // MACD変数macdを宣言 $INDICATOR MACD macd // MACDのパラメータを設定 // どんなパラメータがあるかは、「インジケータ・ビューワ」でわかります。 // デフォールト値は、「インジケータ・パラメータ・ダイアログ」を見てください。 macd.days_EMA1 = 5; macd.days_EMA2 = 20; macd.days_Signal = 9; // 10日間で取引があった日数を調べ、7日以下は除外する。 int nValid = Lib_Bundle.CountValidDays(Close_ts(),10); if( nValid <= 7 ) return false; double osci1 = macd.OSCI.Value(-1); // 昨日のMACDオシレータ値 double osci0 = macd.OSCI.Value(0); // 今日のMACDオシレータ値 if( Double.IsNaN(osci0) ) return false; if( Double.IsNaN(osci1) ) return false; if( osci1 >= 0.0 ) return false; // 昨日のMACDオシレータ値が正はだめ if( osci0 <= 0.0 ) return false; // 今日のMACDオシレータ値が負はだめ double macd0 = macd.MACD.Value(0); // 今日のMACD値 if( macd0 >= 0.0 ) return false; // 今日のMACD値が正はだめ // 30日間のMACDオシレータの最大、最小を知る。 double min = Lib_Bundle.Min(macd.OSCI,-29,0); double max = Lib_Bundle.Max(macd.OSCI,-29,0); double range = max-min; // 過去30日間のMACDオシレータの動き幅 double up = osci0-osci1; // 昨日から今日にかけてのMACDオシレータの変化 double upRate = up/range*100.0; // オシレータの動き幅にたいする、変化の比率。 if( upRate <= 10.0 ) return false; // 変化の比率が10%以下はやめ return true; // すべての条件が満たされた。 end condition end screening