タイトルが入力されていません。
コンテンツがありません。
There have no category
There have no subcategory
以前のQ&Aで、追加要望として「平均足の構成(ヒゲ)」があったようですが、これは要望として取り上げてもらえなかったのでしょうか?
https://labo.gogojungle.co.jp/articles/948
通常の「ローソク足の構成(ヒゲ)」と同様に、平均足でも「上ヒゲ、実態、下ヒゲ、値幅」を作成したいですが。。。。
もし要望として無理であれば、現状でサクッとコードで変更することはできますか?
お待たせしてしまい失礼いたします。
改善事項のリストには入っておりまして、過去に複数の方からご要望いただいている・実装後の既存プログラムへの影響が小さいといった条件を基準に、順次対応させていただいております。 コードの修正方法を考えてみましたので、共有いたします。
EAつくーるで通常どおり、例えば「ローソク足の構成(ヒゲ) > 数値(10)」のように条件を作ってEAを作成し、EA(mq4)をダウンロードします。 この時点では平均足にできないため、一旦ローソク足で条件を組んでOKです(後でコード側で平均足に差し替えます)。
mq4を開き、コードの一番下(最下部) に以下を貼り付けてください(戻り値はpipsです)。
double getHeikenAshiValue( string symbol, int timeframe, int part, // 0:上ヒゲ / 1:実体 / 2:下ヒゲ / 3:値幅 int shift ) { int digits = (int)MarketInfo(symbol, MODE_DIGITS); double ha_open = iCustom(symbol, timeframe, "Heiken Ashi", 0, shift); double ha_high = iCustom(symbol, timeframe, "Heiken Ashi", 1, shift); double ha_low = iCustom(symbol, timeframe, "Heiken Ashi", 2, shift); double ha_close = iCustom(symbol, timeframe, "Heiken Ashi", 3, shift); double body_high = MathMax(ha_open, ha_close); double body_low = MathMin(ha_open, ha_close); switch (part) { case 0: return NormalizeDouble(PriceToPips(ha_high - body_high), digits); // 上ヒゲ case 1: return NormalizeDouble(PriceToPips(body_high - body_low), digits); // 実体 case 2: return NormalizeDouble(PriceToPips(body_low - ha_low), digits); // 下ヒゲ case 3: return NormalizeDouble(PriceToPips(ha_high - ha_low), digits); // 値幅 } return 0.0; }
※ PriceToPips() はEAつくーる生成EA内に既に入っている前提です(通常入っています)。
PriceToPips()
mq4内で getCandleStickPips( を検索し、見つかった箇所の 関数名だけを差し替えます。
getCandleStickPips(
例:EAつくーる側で「ローソク足の構成(ヒゲ) > 10」のような条件を作ると、コード内で次のような形が見つかることがあります。
if(getCandleStickPips(Symbol(), 0, 0, 0) + (0) > 10) signal = 1;
この場合、次のように getCandleStickPips → getHeikenAshiValue に置換してください(他はそのままでOKです)。
if(getHeikenAshiValue(Symbol(), 0, 0, 0) + (0) > 10) signal = 1;
これで、EAつくーるで作った「ローソク足の構成(ヒゲ)>10(pips)」という条件を、参照元だけ平均足に切り替えた形で使えます。
以上の方法で、EAつくーるの設定はそのまま活かしつつ、コード上で getCandleStickPips → getHeikenAshiValue に差し替えるだけで、平均足の「上ヒゲ/実体/下ヒゲ/値幅」を同じ要領で利用できます。
コメント文がありません。
お待たせしてしまい失礼いたします。
改善事項のリストには入っておりまして、過去に複数の方からご要望いただいている・実装後の既存プログラムへの影響が小さいといった条件を基準に、順次対応させていただいております。
コードの修正方法を考えてみましたので、共有いたします。
設定方法(ロジック)
1) まずEAつくーる側で「ローソク足の構成(ヒゲ)+数値」の条件を作る
EAつくーるで通常どおり、例えば「ローソク足の構成(ヒゲ) > 数値(10)」のように条件を作ってEAを作成し、EA(mq4)をダウンロードします。
この時点では平均足にできないため、一旦ローソク足で条件を組んでOKです(後でコード側で平均足に差し替えます)。
2) ダウンロードしたEAのコード最下部に、平均足版の関数を追加する
mq4を開き、コードの一番下(最下部) に以下を貼り付けてください(戻り値はpipsです)。
※
PriceToPips()はEAつくーる生成EA内に既に入っている前提です(通常入っています)。3) EA内で getCandleStickPips を呼んでいる箇所を探して、関数名だけ置換する
mq4内で
getCandleStickPips(を検索し、見つかった箇所の 関数名だけを差し替えます。例:EAつくーる側で「ローソク足の構成(ヒゲ) > 10」のような条件を作ると、コード内で次のような形が見つかることがあります。
この場合、次のように getCandleStickPips → getHeikenAshiValue に置換してください(他はそのままでOKです)。
これで、EAつくーるで作った「ローソク足の構成(ヒゲ)>10(pips)」という条件を、参照元だけ平均足に切り替えた形で使えます。
以上の方法で、EAつくーるの設定はそのまま活かしつつ、コード上で getCandleStickPips → getHeikenAshiValue に差し替えるだけで、平均足の「上ヒゲ/実体/下ヒゲ/値幅」を同じ要領で利用できます。