MQL4でiCCI関数を使用する方法について説明します。
iCCI関数は、Commodity Channel Index (CCI)の値を計算するために使用されます。基本的な使い方は以下の通りです。
double iCCI(
string symbol, // 通貨ペア
int timeframe, // タイムフレーム
int period, // 平均期間
int applied_price, // 適用価格タイプ
int shift // シフト
);
以下は、パラメータの説明を表にまとめたものです。
パラメータ | 説明 |
---|---|
symbol | 分析する通貨ペア(例:EURUSD)。NULLを指定すると現在のチャートの通貨ペアが使用されます。 |
timeframe | チャートの時間枠(例:PERIOD_H1, PERIOD_D1)。0を指定すると現在のチャートのタイムフレームが使用されます。 |
period | CCIの計算に使用する期間。通常は14が使用されます。 |
applied_price | 計算に使用する価格タイプ。以下のいずれかを指定します: |
– PRICE_CLOSE: 終値 | |
– PRICE_OPEN: 始値 | |
– PRICE_HIGH: 高値 | |
– PRICE_LOW: 安値 | |
– PRICE_MEDIAN: 中央値 ((high + low) / 2) | |
– PRICE_TYPICAL: 典型的価格 ((high + low + close) / 3) | |
– PRICE_WEIGHTED: 加重終値 ((high + low + close + close) / 4) | |
shift | 現在のバーからのシフト(0が現在のバー、1が1つ前のバー、など) |
使用例
void OnTick()
{
double cci = iCCI(NULL, 0, 14, PRICE_TYPICAL, 0);
if(cci > 100)
{
// CCIが100を超えた場合の処理
Print("CCI is overbought: ", cci);
}
else if(cci < -100)
{
// CCIが-100を下回った場合の処理
Print("CCI is oversold: ", cci);
}
}
この例では、現在のチャートの通貨ペアとタイムフレームを使用し、期間14、典型的価格でCCIを計算しています。CCIが100を超えた場合は買われすぎ、-100を下回った場合は売られすぎと判断しています。iCCI関数は、トレンドの強さや方向性、そして潜在的な反転点を特定するのに役立ちます。ただし、他の指標や分析手法と組み合わせて使用することをお勧めします。
目次
EA使用時のサンプルソース
MQL4でiCCI関数を使用してEAを作成する例を示します。このEAは、CCIのクロスオーバーを使用して取引シグナルを生成します。
#property copyright "Copyright 2024, Your Name"
#property link "https://www.example.com"
#property version "1.00"
#property strict
input int CCIPeriod = 14; // CCI期間
input int CCIOverBought = 100; // 買われすぎのレベル
input int CCIOverSold = -100; // 売られすぎのレベル
input double Lots = 0.1; // 取引ロット数
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
double cci_current = iCCI(NULL, 0, CCIPeriod, PRICE_TYPICAL, 0);
double cci_previous = iCCI(NULL, 0, CCIPeriod, PRICE_TYPICAL, 1);
if(!PositionSelect(Symbol()))
{
// 新規ポジションを開く
if(cci_previous <= CCIOverSold && cci_current > CCIOverSold)
{
// 買いシグナル
OrderSend(Symbol(), OP_BUY, Lots, Ask, 3, 0, 0, "CCI Buy", 0, 0, clrGreen);
}
else if(cci_previous >= CCIOverBought && cci_current < CCIOverBought)
{
// 売りシグナル
OrderSend(Symbol(), OP_SELL, Lots, Bid, 3, 0, 0, "CCI Sell", 0, 0, clrRed);
}
}
else
{
// 既存ポジションを管理
if(OrderType() == OP_BUY && cci_current >= CCIOverBought)
{
// 買いポジションを閉じる
OrderClose(OrderTicket(), OrderLots(), Bid, 3, clrBlue);
}
else if(OrderType() == OP_SELL && cci_current <= CCIOverSold)
{
// 売りポジションを閉じる
OrderClose(OrderTicket(), OrderLots(), Ask, 3, clrYellow);
}
}
}
このEAの動作は以下の通りです。
- CCIの現在値と1つ前の値を計算します。
- オープンポジションがない場合:
- CCIが売られすぎレベル(-100)を下から上に突き抜けた場合、買いポジションを開きます。
- CCIが買われすぎレベル(100)を上から下に突き抜けた場合、売りポジションを開きます。
- オープンポジションがある場合:
- 買いポジションを持っていて、CCIが買われすぎレベルに達した場合、ポジションを閉じます。
- 売りポジションを持っていて、CCIが売られすぎレベルに達した場合、ポジションを閉じます。
注意点:
- このEAは基本的な例であり、実際のトレードには追加のリスク管理やフィルタリングが必要です。
- パラメータ(CCIPeriod, CCIOverBought, CCIOverSold, Lots)は、バックテストと最適化を通じて調整する必要があります。
- 実際の取引に使用する前に、デモ口座でテストし、パフォーマンスを評価することが重要です。
このEAは、CCIを使用した基本的なトレーディングアイデアを示していますが、実際のトレーディングに使用する前に、十分なテストと調整を行うことが重要です。