1本前のローソク足の安値 < 1本前の13EMA
AND
2本前のローソク足の安値 > 2本前の13EMA
AND
2本前の100EMA < 2本前の13EMA
AND
3本前の100EMA > 3本前の13EMA
→ エントリー
OR
1本前のローソク足の安値 < 1本前の13EMA
AND
2本前のローソク足の安値 > 2本前の13EMA
AND
3本前の100EMA < 3本前の13EMA
AND
4本前の100EMA > 4本前の13EMA
→ エントリー
OR
1本前のローソク足の安値 < 1本前の13EMA
AND
2本前のローソク足の安値 > 2本前の13EMA
AND
4本前の100EMA < 4本前の13EMA
AND
5本前の100EMA > 5本前の13EMA
→ エントリー
OR
・
・
・
OR
1本前のローソク足の安値 < 1本前の13EMA
AND
2本前のローソク足の安値 > 2本前の13EMA
AND
n本前の100EMA < n本前の13EMA
AND
(n+1)本前の100EMA > (n+1)本前の13EMA
→ エントリー
EAつくーるには、「ゴールデンクロスが起きたあと、その状態(クロス済み)を何本分か保持して、次の条件(EMA13タッチ)が来るまで待つ」といった フラグ機能 がございません。
そのため、「クロス後」を厳密に表現するには、少し工夫が必要になります。
今回やりたいことを条件として整理すると、
という A AND B になりますね。
ここで、(B)「過去にゴールデンクロスしている」をEAつくーるで表現するには、
「直近n本のどこかでクロスが発生している」を ORで分解して並べる方法になります。
クロスの検出は「(k+1)本前では13EMAが100EMAより下、k本前では上」という形で書けますので、
となります。
そして(A)側の「EMA13タッチ」は、例としてご提示いただいた形式に合わせて
のように「下抜け→上戻し(タッチ復帰)」型で表現できます。
したがって最終的には、次のように「タッチ条件」AND「クロスがn本前に起きた」を ORで並べる形になります。
完全に「過去に一度でもクロスした」を厳密に満たすには n→∞ が必要になりますが、実運用では 十分大きなn(例:50本、100本、200本など) を設定すれば問題ございません。
作成の手間はかかりますが、EAつくーるの 「複製」機能 をご利用いただくことで、比較的簡単に作成できます。すなわち、最初の1つの条件セットを作成したあと、それを必要な数だけ複製し、クロス判定に使っているEMAの「計算位置(本数前)」を 2/3/4… のように順に変更していけばOKでございます。
なお、売り(デッドクロス後のEMA13タッチ)は、上記の大小関係をすべて逆(13EMAと100EMAの上下、タッチ判定で使う高値/安値)にして同様にOR展開していただく形になります。
回答ありがとうございます。恐縮ですが追加で質問させてください。
エントリー後、EMAがクロスするまでローソク足が実体でEMA13にタッチする度に、エントリーを繰り返す
このようにするにはどうすればいいでしょうか?
追加のご質問ありがとうございます。
「EMAが逆方向にクロスするまで、ローソク足が実体でEMA13にタッチするたびにエントリーを繰り返す」というロジックですね。
まず前回の回答の補足となりますが、今回「EMAがクロスするまで(=逆のクロスが起きるまで)」という終了条件をお知らせいただいたことで、よりシンプルに「現在のEMA13とEMA100の大小関係が維持されている間(ゴールデンクロス中)」という解釈が可能になります。
前回ご案内した「過去のクロスをORで探す」複雑な設定は不要となり、「現在のEMA13がEMA100より大きい」という状態をAND条件に加えるだけで実現可能です。
その上で、「タッチするたびにエントリーを繰り返す(複数のポジションを保有していく)」ための設定ですが、残念ながら、EAつくーるの仕様のみでは「1つの取引条件(マジックナンバー)内で、条件を満たすたびにポジションを無制限に追加し続ける」ことはできません。EAつくーるは原則として、同じマジックナンバーのポジションは同時に1つしか持たない仕様となっているためです。
これを解決するための回避策と、代替案をご案内いたします。
回避策:想定される最大回数分の「ポジション」を作成する
最大エントリー回数(例:3回まで、など)を決めていただき、「取引条件」画面にて「ポジション1」「ポジション2」「ポジション3」と複数のタブを作成することで疑似的に実現します。
同時に同じ足で複数回エントリーしてしまわないよう、ポジション2以降には「前のポジションを保有しており、かつ前のポジションのエントリーから1本以上足が経過していること」を条件に加えます。
また、「実体でタッチ」については、 のように「始値と終値の間にEMA13の価格が存在する」状態として定義します。
1. 「オプション」設定画面
2. 「取引条件」設定画面(買いの場合の例)
◆ ポジション1(1回目のエントリー)の設定
陽線でタッチした場合と、陰線でタッチした場合の2つのパターンをORで繋ぎます。
◆ ポジション2(2回目の追加エントリー)の設定
上記のポジション1の各パターンの先頭に、以下の2つのAND条件を追加します。
※ポジション3以降を作成する場合は、「ポジション数(ポジション:2)=1」「最終エントリー足(ポジション:2)>=1」と、一つ前のポジション番号を参照するように変更して繋げてください。売りエントリーの場合は、各大小関係を逆にして同様に作成します。
◆ 決済条件(クロスするまで=逆クロスで決済)
ポジション1(または作成したすべてのポジションタブ)にて、以下のように設定します。オプションの「全決済」が効いているため、条件を満たすとすべての保有ポジションが一斉に決済されます。
MQLでの補足(上限なく無制限にエントリーしたい場合)
ポジションタブを複数作成するのが手間で、かつ回数を無制限にしたい場合は、EAつくーるでの作成後にソースコード(MQL)を直接編集することが最終手段となります。
「ポジション1」の設定だけをEAつくーるで作成して出力し、ソースコード内で「保有中のポジション数をチェックしている条件記述」を削除することで、同じ条件で何度もエントリーできるようになります。ただし、この制限を外すと「同じローソク足の中でTickごとに無数にエントリーしてしまう」ため、MQLの知識を用いて「新しいローソク足で1回のみエントリーする」という制御コードをご自身で追加していただく必要がございます。
まずは、EAつくーる内で安全に設定が完結できる「ポジションを複数作成する回避策」にて、必要な回数分の設定を構築して挙動をお試しください。