ツクールで例えばポディションを2つもち全決済があるEAを作ります。
全決済のマジックナンバー指定で1,2を入力します。
ポディションのマジックナンバーは初期値1,2なので、これで全決済できるというのは理解できます。
実際にEAを使用する段階で、マジックナンバーをEAの設定上で1→101,2→102に変更したとした場合でも正常に稼働するということで良いでしょうか。ツクールであらかじめ全決済の指定を1→101,2→102に変更する必要はないという認識です。
これについては、
① input int Magic1 = 1;→input int Magic1 = 101;にしても問題ない。= 101 はMagic1の代数というだけで、全決済のコードは代数ではなく、Magic1が指定されているということで合っていますか?
② ①があってるとして、
全決済をそれぞれ持つ2つのEAが起動していた場合、EA1がMagic1 = 1 Magic2 = 2、EA2がMagic1 = 101 Magic2 = 102として、全決済のポディションが2つのEAで混同しないのは、ポディション自体が持っているのは= 1 等の部分だけで、結果として、全決済のコードは、逆から1 = Magic1と読み込んで、EA1のみ決済され、EA2のMagic1 = 101には干渉せず、2つのEAがそれぞれ決済されるということでしょうか
プログラム初心者で見当違いでしたら申し訳ありません。
| 検索結果がありません。 |
| 検索結果がありません。 |
ご質問は、「全決済」の指定欄に
1,2と入れておけば、実運用時にMagic1=101、Magic2=102に変更しても正しくそのEA内の対象ポジションだけ全決済されるのか、という点ですね。結論から申し上げますと、その認識で問題ありません。
EAつくーるの「全決済」の指定欄に入れる
1,2は、実際のマジックナンバーそのものではなく、ポジション番号1・2を指す指定として扱われています。つまり、
Magic1Magic2という対応になっており、EAの設定画面で
Magic1 = 101Magic2 = 102に変更した場合でも、全決済の
仕組み1,2は自動的にその現在値(101,102)を参照します。EAつくーるのデフォルトのソースコードでは、初期化時に次のような処理があります。
複数ポジションのEAであれば、実際にはこれが
のように並ぶ形になります。
そして、全決済などで複数指定を判定する部分は次の考え方です。
ここで
magics[i]に入っている"1"や"2"は、"1"→magic_array[0]→Magic1"2"→magic_array[1]→Magic2というふうに変換されます。
ですので、全決済欄に
1,2と書いてあれば、実際の比較対象はMagic1の現在値Magic2の現在値です。
①についてご理解はほぼ合っています。
ただ、より正確に言うと、
input int Magic1 = 1;input int Magic1 = 101;に変更しても問題ありません。
そして全決済側は、単純に「1という数値」そのものを見ているのではなく、ポジション1に対応する
Magic1変数の現在値を見ています。そのため、
Magic1 = 101に変えた場合は、全決済の対象も自動的に 101 になります。ここで少しだけ注意点
「全決済のマジックナンバー指定」という表示だと、
101,102のように実マジックナンバーを書く欄に見えやすいのですが、コード上の動きとしてはそうではありません。この欄は実質的には、
1= ポジション12= ポジション2を指定する欄として考えていただくのが正確です。
つまり、EAつくーる側で全決済欄を
②について101,102に書き換える必要はありません。むしろ、そこを
101,102にすると想定外の動作になる可能性があります。こちらも、基本的にはその理解で問題ありません。
たとえば、
Magic1 = 1、Magic2 = 2Magic1 = 101、Magic2 = 102という2つのEAが同時に動いている場合、各EAはそれぞれ自分自身の
Magic1、Magic2の現在値を使って判定します。そのため、
1,2→ 実際には1,2を対象1,2→ 実際には101,102を対象となり、通常は混同しません。
重要な前提ただし、混同しないためには次の前提があります。
たとえば、
Magic1=101Magic1=101のように、同じ通貨ペア上で同じマジックナンバーを使ってしまうと干渉します。
ですので、複数EAを同時運用する場合は、実際に設定するマジックナンバーを重複させないことが大切です。
こうなっていませんか?誤解しやすい点として、次のように考えてしまうことがあります。
1,2と入れるMagic1=101、Magic2=102に変更した101,102に直さないといけないのでは?これは不要です。
全決済欄は
1,2のままで大丈夫です。逆に、全決済欄に
まとめ101,102を入れてしまうと、コード上は「ポジション101、ポジション102」を参照しようとする形になり、正常に使えません。1,2は、実マジックナンバーではなくポジション番号の指定です。Magic1=101、Magic2=102に変更しても、全決済欄は1,2のままで正常動作します。101,102に書き換える必要はありません。実運用の設定としては、以下の考え方で問題ありません。
この形で、全決済は
101と102のポジションを対象に動作する認識で問題ありません。