EAつくーるで三役好転・三役逆転作ってみた!
FX
こんにちは。ちょびっとfxです。
さて、タイトル通りですが、EAつくーるありそうでなさそうな一目均衡表の三役好転・三役逆転の関数を作ってみました。
一目均衡表の三役好転・三役逆転って何?は、Google先生に聞いてみよう。
さて早速ですが関数です。
//--------------------------------------------------------------------------------------------------------+
//| 一目均衡表「三役好転」および「三役逆転」シグナル取得関数
//| 処理: 一目均衡表を使用して、三役好転(買いシグナル)または三役逆転(売りシグナル)を判定
//| 引数:
//| symbol: シンボル名(通貨ペア等)
//| period: タイムフレーム(PERIOD_H1 など)
//| shift : 取得するバーのシフト(0が最新、1は1本前のバー)
//| 戻り値:
//| 1: 三役好転シグナル(買いチャンス)
//| -1: 三役逆転シグナル(売りチャンス)
//| 0: それ以外の場合(取引なし)
//--------------------------------------------------------------------------------------------------------+
int getIchimokuSignal(string symbol, int period, int shift) {
// 一目均衡表の各ラインを取得
double tenkanSen = iIchimoku(symbol, period, 9, 26, 52, MODE_TENKANSEN, shift); // 転換線
double kijunSen = iIchimoku(symbol, period, 9, 26, 52, MODE_KIJUNSEN, shift); // 基準線
double chikouSpan = iIchimoku(symbol, period, 9, 26, 52, MODE_CHIKOUSPAN, shift); // 遅行スパン
double senkouSpanA = iIchimoku(symbol, period, 9, 26, 52, MODE_SENKOUSPANA, shift); // 先行スパンA
double senkouSpanB = iIchimoku(symbol, period, 9, 26, 52, MODE_SENKOUSPANB, shift); // 先行スパンB
double currentPrice = iClose(symbol, period, shift); // 現在の価格(シフトに応じたクローズ価格)
// 三役好転の条件(買いのシグナル)
bool bullishCondition1 = tenkanSen > kijunSen; // 転換線が基準線を上抜け
bool bullishCondition2 = chikouSpan > iClose(symbol, period, shift + 26); // 遅行スパンが26期間前の価格を上抜け
bool bullishCondition3 = currentPrice > senkouSpanA && currentPrice > senkouSpanB; // 現在の価格が雲を上抜け
// 三役逆転の条件(売りのシグナル)
bool bearishCondition1 = tenkanSen < kijunSen; // 転換線が基準線を下抜け
bool bearishCondition2 = chikouSpan < iClose(symbol, period, shift + 26); // 遅行スパンが26期間前の価格を下抜け
bool bearishCondition3 = currentPrice < senkouSpanA && currentPrice < senkouSpanB; // 現在の価格が雲を下抜け
// 三役好転(買いのシグナル)
if (bullishCondition1 && bullishCondition2 && bullishCondition3) {
return 1; // 買いチャンス
}
// 三役逆転(売りのシグナル)
else if (bearishCondition1 && bearishCondition2 && bearishCondition3) {
return -1; // 売りチャンス
}
// シグナルなし
return 0;
}
EAつくーるは、買いの場合「signal = 1;」、売りの場合「signal = ‐1;」としているので、戻り値はそのルールに沿って作ってます。
利用方法はこんな感じ。
if(getIchimokuSignal(Symbol(), PERIOD_H1, 1) > 0) signal = 1;
売りの場合は下記。
if(getIchimokuSignal(Symbol(), PERIOD_H1, 1) < 0) signal = -1;
簡単ですね。
EAつくーるのルールの沿ってるので、下記でもOKかも。
signal = getIchimokuSignal(Symbol(), PERIOD_H1, 1);
ではまた。
ファイルDLは下記より。
×![]()
ใช่ไหม?