上位足の始値・終値・高値・安値について

2024/12/19 01:28
64

上位足の価格を元にその価格を超えた際に
エントリーという条件を設定は可能でしょうか?

具体的には
①上位足の始値や終値・高値・安値などを基準として
②下位足でその価格を終値で跨いだらエントリー
③損切は下位足の安値や高値を条件にして
④利確は損切×2倍を利確ポイントとすることは可能でしょうか?

また、損切に関しては安値や高値を終値で超えていた時を条件にします
損切については、
⑤髭で超えているのはスルーし
⑥終値で超えていた場合は損切とします
⑦利確は髭でもタッチした瞬間(その価格に到達)したら利確

また、上位足の価格を元にエントリーですが
⑧同じ通貨ペアの下位足で◯回までエントリー可能などの
制限をかけることは可能でしょうか?

例えばですが、100.00円を上位足の基準とした際に
100.00円を下位足で上抜け・下抜けでも2回目にした場合は
除くというような条件設定は可能でしょうか?
※◯回目以上は取引しないという設定を設けたいです

番号を振ったため、◯番が実現可能かどうかを教えていただきたいです

コメント

GogoJungle
2024/12/19 16:47

①②③
可能でございます。

例えば、買いエントリーにつきまして

1本前の1H足の高値 < 1本前の1D足の高値(1本前の時点では完全に下回っている)
AND
0本前の1H足の終値 > 1本前の1D足の高値(0本前の終値、つまり現在の価格では、上回っている)
↓
買いエントリー

としていただければ、「跨ぐ」という条件でエントリーできます。
また、損切・利確を下位足の安値・高値を元に決定することも、同様の方法にて可能です。


現在のEAつくーるの機能のみでは難しいと存じます。
取引条件にて作成した損切価格を元に動的に利確を決定することはできない状況です。

⑤⑥⑦
可能でございます。
⑤⑥は確定した足(1本前)にて判断します。

例えば、買いエントリーの損切決済につきまして、

1本前の1H足の終値 < 1本前の1D足の安値
↓
買いエントリー決済

としていただければOKです。

⑦は左辺にて「0本前の終値」をご利用いただくことで、「タッチした瞬間」の判定ができます。


前提条件といたしまして、ナンピンやピラミッディング等のオプションを使用しない場合は、「ポジション」1つにつき同時に保持するポジションは1つのみとなります。
つまり、既にポジションを持っている場合は条件を満たしていても追加のエントリーを行わず、決済されて初めて2回目以降のエントリーが行われます。

3回まで同時にエントリーさせたい場合は、全く同じ取引条件でポジションを複製し、ポジション1、ポジション2、ポジション3を用意することになります。

ご質問の意図が「一定回数の取引をしたらEAを停止する」という意味の場合は、「1回」に限られてしまいますが、オプションの「取引回数制限(1回のみ)」をご利用いただけます。

S
2024/12/20 15:23

④の損切幅×2倍が利確についてです
損切や利確の設定は
固定pipsやインジケーターによる算出以外に
何がありますか?

例えば買い取引の場合
エントリー価格が100円
エントリー時の1時間足の安値(損切)→99円
上記の場合

エントリー価格ー損切価格=損切幅
損切幅×2=利確幅
エントリー価格+利確幅=利確価格

となり、実現はできないでしょうか?

GogoJungle
2024/12/23 17:33

EAつくーるには取得した値を計算式に組み込む機能がないため、EAつくーるのみでは実現できない状況でございます。
ただし、出力したコードを一部修正すれば、可能であると存じます。
修正例をご用意いたしましたので、下記に記載いたします。

準備

「エントリー時の1時間足の安値(損切)」の条件を作成したEAをダウンロードします。
(1枚目の画像の赤枠で囲った、矢印の先が「買い決済」になった部分を用意します。エントリーの条件は適切なものをご設定ください。)

LABO_2025_1.png

条件2は、ローソク足の現在の値(0本前の終値)が1時間足の「最終エントリー足の価格」の安値を下回ったら損切りするという条件です。

LABO_2025_2.png

コードの修正

関数の準備

保有中のポジションのエントリー価格を取得する関数を準備します。
下記をコードの一番下の行に貼り付けます。

//--------------------------------------------------------------------------------------------------------+
//保有中のポジションのエントリー価格を取得する関数
//  処理:保有中のポジションのエントリー価格を取得する
//  引数:マジックナンバー
//  戻り値:エントリー価格
//--------------------------------------------------------------------------------------------------------+
double getOpenPrice(int magic)
{
   for (int i = OrdersTotal() - 1; i >= 0; i--) {
      if (OrderSelect(i, SELECT_BY_POS) == false) return(0);
      if (OrderMagicNumber() == magic && OrderSymbol() == Symbol()) return(OrderOpenPrice());
   }

   return(0);
}

利確処理の追加

2 × (エントリー価格 - 損切価格) + エントリー価格の計算式にあてはめ、利確の価格を計算させます。

【修正前】

   if(iClose(Symbol(), 0, 0)+PipsToPrice(0)  <  iLow(Symbol(), PERIOD_H1, getLastEntryBar(Symbol(), PERIOD_H1, 0, Magic1))) signal = 1;
   if(signal != 0 && getOpenLots(Magic1, OP_BUY) != 0) {
      closePosition(Magic1, OP_BUY);
   }

【修正後】

   if(iClose(Symbol(), 0, 0)+PipsToPrice(0)  <  iLow(Symbol(), PERIOD_H1, getLastEntryBar(Symbol(), PERIOD_H1, 0, Magic1))) signal = 1;
   if(signal != 0 && getOpenLots(Magic1, OP_BUY) != 0) {
      closePosition(Magic1, OP_BUY);
   }
   // ここより下の行を付け加えています
   double open_price        = getOpenPrice(Magic1); // エントリー価格
   double stop_loss_price   = iLow(Symbol(), PERIOD_H1, getLastEntryBar(Symbol(), PERIOD_H1, 0, Magic1)); // 損切価格
   double take_profit_price = 2 * (open_price - stop_loss_price) + open_price; // 利確価格
   if (iClose(Symbol(), 0, 0) > take_profit_price && take_profit_price > 0) signal = 1;
   if (signal != 0 && getOpenLots(Magic1, OP_BUY) != 0) {
      closePosition(Magic1, OP_BUY);
   }

以上でございます。
なお、ポジションを複数持つ場合にはこの方法では対応できない点にはご注意いただければ幸いです。

S
2024/12/26 20:11

コードまでいただきありがとうございます。

>ポジションを複数持つ場合にはこの方法では対応できない点にはご注意いただければ幸いです。
上記のように複数ポジションでは対応不可とのことですが、

具体的には下記のような場合には対応不可ということでしょうか?
12/25 13:00に取引開始
12/25 17:00に新規取引開始
また、逆に17時までに決済されていた場合は17時の取引にも適応される。

複数ポジションごとに新規取引をした際にTP SL設定を行うことは不可能ということでしょうか?

代案として
インジケーターつくーるで取引ポイントに矢印とSL,TP価格を表示させることはできますか?

GogoJungle
2024/12/26 21:08

EAつくーるは、ナンピンやピラミッディングを行わない限り、同じ「ポジション〇」(〇には1,2,3,…が入ります)の中で同時に1つのポジションのみを持つため、複数のポジションを持たせたい場合は「ポジション〇」の〇を変えて複数のエントリーの条件を設定することになります。

しかし、先日お伝えした修正用のコードは、マジックナンバーとしてMagic1を指定しており、Magic1でエントリーする「ポジション1」のみで動作するものとなっております。

複数ポジションを持つ(=「ポジション2」以降のエントリー条件を設定している)EAの場合は、

  • 現状では、ご希望の決済条件は「ポジション2」以降には適用されないこと
  • 適用させたい場合は更にコードを修正する必要があること

にご注意いただきたいという意味でございます。

「更にコードを修正する」方法ですが、「// ここより下の行を付け加えています」のコードのMagic1の部分を、適用させたい「ポジション〇」の〇の部分に対応したマジックナンバーに変更していただいたものを追加していただければOKです。

なお、インジケータつくーるをご利用の場合は、2 × (エントリー価格 - 損切価格) + エントリー価格といった計算式の結果を出力させることができますので、その結果を「カスタムインジケーター」機能で読み込んで利用することができますね。

関連トピックス

検索結果がありません。

ノーコードで誰でも簡単EA開発!MQL言語学習にも使える! | GogoJungle

注目トピックス

検索結果がありません。