【解析】008-CCI 過売過買
既存戦略の検証で良好な結果をおさめたCCIについて
ソースコードを確認したいと思います。
(テクニカルの参考サイト )
-------------------------------
Input : Period(9) ;
Var : value(0);
value = CCI(Period);
## 買/売決済
If CrossUp(value,-100) Then
{
Buy();
}
## 売/買決済
If CrossDown(value,100) Then
{
Sell();
}
-------------------------------
CCI()関数が重要なポイントになっています。
結果が-100を上抜きしたときは買い、
+100を下抜きしたときは売りとなります。
ベースはドテン売買であるようです。
-------------------------------------------------
/* Description : (C)ommodity (C)hannel (I)ndex
*
* Provided By : YesStock Inc. (c) Copyright 2006
* E-Mail : webmaster@yesstock.com
*/
Input : Period(Numeric);
Var : value1(0), value2(0), diff_Value(0);
value1 = (H + L + C) / 3;
value2 = ma(value1, Period);
diff_Value = value1 - value2;
CCI = (diff_Value) / (ma(abs(diff_Value), Period) * 0.015);
-------------------------------------------------
CCI()関数です。
Value1には当日の高値+安値+終値/3をセットしています。
Value2にはValue1の単純移動平均をセットしています。
diff_ValueはValue1とValue2の差が入ります
CCIの結果には
diff_Value ÷ diff_Valueの絶対値の単純移動平均 ×0.015
という計算結果が入ることになります。
【解析】004-BinaryWave
トレードスタジアムの操作ガイド を見ると
「Binary WaveはMACD、指数移動平均、ROC、Stochastics
4つの指標を利用して作った指標」
とあります。
ソースコードで確認してみましょう。
-----------------------------------------------------------
input : maPeriod(20), ROCPeriod(12), stoPeriod1(5), stoPeriod2(3);
Var : value(0);
value = BW(maPeriod,ROCPeriod,stoPeriod1,stoPeriod2);
## 買/売決済
If CrossUp(value,0) Then
{
Buy();
}
## 売/買決済
If CrossDown(value,0) Then
{
Sell();
}
-----------------------------------------------------------
3行目のBW()関数に具体的な内容が書いてあると想定できます。
戻ってきた結果に対して
CrossUp()、CrossDown()関数で売買を行っています。
上向きに0を突破するか下向きに0を割り込むかという判断です。
-----------------------------------------------------------
/* Description : (B)inary (W)ave
*
* Provided By : YesStock Inc. (c) Copyright 2006
* E-Mail : webmaster@yesstock.com
*/
Input : maPeriod(Numeric), ROCPeriod(Numeric), stoPeriod1(Numeric), stoPeriod2(Numeric);
Var : value(0), value_EMA12(0), value_EMA26(0), value_Lowest(0);
①
value_EMA12 = ema(C, 12);
value_EMA26 = ema(C, 26);
If value_EMA12 - value_EMA26 > ema(value_EMA12 - value_EMA26, 9) Then
value = 1;
Else
value = -1;
②
If C > ma(C, maPeriod) Then
value = value + 1;
Else
value = value - 1;
③
If (C - C[ROCPeriod]) / C[ROCPeriod] * 100 > 0 Then
value = value + 1;
Else
value = value - 1;
④
value_Lowest = lowest(L, stoPeriod1);
If ema((C - value_Lowest) / (highest(H, stoPeriod1) - value_Lowest) * 100, stoPeriod2) > 50 Then
value = value + 1;
Else
value = value - 1;
BW = value;
-----------------------------------------------------------
BW()関数の内容です。
①はMACDの計算です。EMAは指数移動平均です。
②は当日終値と単純移動平均を比較しています。
③はROC というテクニカルの計算ですかね。
当日終値 - 指定した日の終値 / 指定した日の終値 × 100
という算出式になっています。
④はストキャスでしょうか。
(終値 - 指定期間内での最安値) / (指定期間内での最高値 - 指定期間内での最安値) × 100
という計算結果の指数移動平均を算出しています。
関数の特徴として条件に当てはまる場合に+1、
当てはまらない場合に-1を加えています。
4つのうち3つあてはまれば+2、2つならば0となります。














