iIchimoku関数は、MQL4で一目均衡表(Ichimoku Kinko Hyo)の値を計算するために使用されます。この関数は、一目均衡表の各ラインの値を返します。
目次
関数の構文
double iIchimoku(
string symbol, // 通貨ペア
int timeframe, // タイムフレーム
int tenkan_sen, // 転換線期間
int kijun_sen, // 基準線期間
int senkou_span_b, // 先行スパンB期間
int mode, // ライン識別子
int shift // シフト
);
パラメータの説明
以下は、パラメータの説明を表にまとめたものです。
パラメータ | 説明 |
---|---|
symbol | 分析する通貨ペア(例:USDJPY) |
timeframe | チャートの時間枠(例:PERIOD_H1, PERIOD_D1) |
tenkan_sen | 転換線の期間(デフォルトは9) |
kijun_sen | 基準線の期間(デフォルトは26) |
senkou_span_b | 先行スパンBの期間(デフォルトは52) |
mode | 取得するラインの種類 |
– MODE_TENKANSEN: 転換線 | |
– MODE_KIJUNSEN: 基準線 | |
– MODE_SENKOUSPANA: 先行スパンA | |
– MODE_SENKOUSPANB: 先行スパンB | |
– MODE_CHIKOUSPAN: 遅行スパン | |
shift | 現在のバーからのシフト(0が現在のバー) |
使用例
以下は、iIchimoku関数を使用して各ラインの値を取得する例です。
double tenkan = iIchimoku(Symbol(), PERIOD_CURRENT, 9, 26, 52, MODE_TENKANSEN, 0);
double kijun = iIchimoku(Symbol(), PERIOD_CURRENT, 9, 26, 52, MODE_KIJUNSEN, 0);
double senkouA = iIchimoku(Symbol(), PERIOD_CURRENT, 9, 26, 52, MODE_SENKOUSPANA, 0);
double senkouB = iIchimoku(Symbol(), PERIOD_CURRENT, 9, 26, 52, MODE_SENKOUSPANB, 0);
double chikou = iIchimoku(Symbol(), PERIOD_CURRENT, 9, 26, 52, MODE_CHIKOUSPAN, 26);
注意点
- 遅行スパンは26バー前の値を参照するため、
shift
パラメータに26を指定しています。 - 一目均衡表は、トレンドの方向や強さ、サポートとレジスタンスレベルを識別するのに役立ちます。
- 他のテクニカル指標と組み合わせることで、より信頼性の高い取引シグナルを得ることができます。
応用例
一目均衡表を使用した簡単な取引戦略の例:
- 転換線が基準線を上から下に突き抜けた場合、売りシグナル
- 転換線が基準線を下から上に突き抜けた場合、買いシグナル
- 価格が雲(先行スパンAと先行スパンBの間の領域)の上にある場合、上昇トレンド
- 価格が雲の下にある場合、下降トレンド
これらのシグナルを組み合わせることで、より強力な取引戦略を構築できます。iIchimoku関数を適切に使用することで、一目均衡表の各ラインの値を簡単に取得し、トレーディング戦略に組み込むことができます。
EAサンプルソース
MQL4でiIchimoku関数を使用して、一目均衡表の雲(くも)のロジックを利用したEAを作成する方法を説明します。
以下は、雲を利用した簡単なトレーディングロジックを実装したEAのサンプルコードです。
#property copyright "Copyright 2024, Your Name"
#property link "https://www.example.com"
#property version "1.00"
#property strict
input int TenkanSen = 9;
input int KijunSen = 26;
input int SenkouSpanB = 52;
int OnInit()
{
return(INIT_SUCCEEDED);
}
void OnDeinit(const int reason)
{
}
void OnTick()
{
double senkouSpanA = iIchimoku(Symbol(), PERIOD_CURRENT, TenkanSen, KijunSen, SenkouSpanB, MODE_SENKOUSPANA, 0);
double senkouSpanB = iIchimoku(Symbol(), PERIOD_CURRENT, TenkanSen, KijunSen, SenkouSpanB, MODE_SENKOUSPANB, 0);
double currentPrice = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
if(!PositionSelect(Symbol()))
{
if(currentPrice > senkouSpanA && currentPrice > senkouSpanB)
{
// 価格が雲の上にある場合、買いポジションを開く
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, 0, 0, "Ichimoku Buy", 0, 0, clrGreen);
}
else if(currentPrice < senkouSpanA && currentPrice < senkouSpanB)
{
// 価格が雲の下にある場合、売りポジションを開く
OrderSend(Symbol(), OP_SELL, 0.1, Bid, 3, 0, 0, "Ichimoku Sell", 0, 0, clrRed);
}
}
else
{
// ポジションが既に存在する場合の決済ロジック
if(OrderType() == OP_BUY && currentPrice < senkouSpanA && currentPrice < senkouSpanB)
{
// 買いポジションを持っていて、価格が雲の下に移動した場合、決済
OrderClose(OrderTicket(), OrderLots(), Bid, 3, clrRed);
}
else if(OrderType() == OP_SELL && currentPrice > senkouSpanA && currentPrice > senkouSpanB)
{
// 売りポジションを持っていて、価格が雲の上に移動した場合、決済
OrderClose(OrderTicket(), OrderLots(), Ask, 3, clrGreen);
}
}
}
このEAは以下のロジックを実装しています。
- iIchimoku関数を使用して、先行スパンA(雲の上辺)と先行スパンB(雲の下辺)の値を取得します。
- 現在の価格が雲の上にある場合(先行スパンAとBの両方より上)、買いポジションを開きます。
- 現在の価格が雲の下にある場合(先行スパンAとBの両方より下)、売りポジションを開きます。
- 既存のポジションがある場合、価格が雲を突き抜けた時に決済します。
このEAは基本的なロジックを実装していますが、実際の運用には以下の点に注意が必要です。
- リスク管理:適切なストップロスとテイクプロフィットを設定してください。
- パラメータ最適化:TenkanSen、KijunSen、SenkouSpanBの値は、バックテストと最適化を通じて調整してください。
- 追加のフィルター:他のテクニカル指標や市場状況を考慮に入れて、より洗練されたエントリー/イグジット条件を追加することを検討してください。
このEAは、一目均衡表の雲を使用した基本的なトレーディングアイデアを示していますが、実際のトレーディングに使用する前に、十分なテストと調整を行うことが重要です。