水平の罫線1
水平の罫線3
Word
# Code...
参照
2つつなげることで入れ子にできます
3つまでできます
太字1
太字2
斜体1
斜体2
打ち消し線
++下線付きテキスト++
マークテキスト
19th
H2O
© © ® ® ™ ™ § § ±
😉 😆 😋 😢
😃 😦 😎 😉
リスト(箇条書き)
リストの作成は先頭に
+
-
または*
で始めることによってリストを作成できます
リスト(段落番号)
テーブル
名前 | 説明 |
---|---|
EA(自動売買) | MT4で利用可能な自動売買ソフトウェア |
インジケーター | 売買サイン、発注補助、各種通知機能などのツール |
テーブル(カラムを右寄せ)
名前 | 説明 |
---|---|
EA(自動売買) | MT4で利用可能な自動売買ソフトウェア |
インジケーター | 売買サイン、発注補助、各種通知機能などのツール |
リンク
GogoJungle
画像
タイトルが入力されていません。
コンテンツがありません。
There have no category
There have no subcategory
お世話になっております。
1つのEAで、複数の各ポジション毎に、利食い(TP)幅、損切り(SL)幅が、個別に設定できて非常に便利で使いやいです。
ありがとうございます。
ただ、それに対応して、各ポジションに個別に建値も設定したいです。(利食い幅に比例して、建値も可変させる必要があり)
現状は、オプションで1つのEAで一つしか設定出来ず苦慮しております。
何か良い方法がございましたら、教えていただけますか。
よろしくお願い致します。
(例)
ポジション1:利食い(TP)300pips、損切り(SL)100pips、建値150pips
ポジション2:利食い(TP)600pips、損切り(SL)200pips、建値300pips
コメント文がありません。
水平の罫線1
水平の罫線3
Word
# Code...
参照
2つつなげることで入れ子にできます
3つまでできます
太字1
太字2
斜体1
斜体2
打ち消し線
++下線付きテキスト++
マークテキスト
19th
H2O
© © ® ® ™ ™ § § ±
😉 😆 😋 😢
😃 😦 😎 😉
リスト(箇条書き)
リストの作成は先頭に
+
-
または*
で始めることによってリストを作成できます
リスト(段落番号)
テーブル
名前 | 説明 |
---|---|
EA(自動売買) | MT4で利用可能な自動売買ソフトウェア |
インジケーター | 売買サイン、発注補助、各種通知機能などのツール |
テーブル(カラムを右寄せ)
名前 | 説明 |
---|---|
EA(自動売買) | MT4で利用可能な自動売買ソフトウェア |
インジケーター | 売買サイン、発注補助、各種通知機能などのツール |
リンク
GogoJungle
画像
水平の罫線1
水平の罫線3
Word
# Code...
参照
2つつなげることで入れ子にできます
3つまでできます
太字1
太字2
斜体1
斜体2
打ち消し線
++下線付きテキスト++
マークテキスト
19th
H2O
© © ® ® ™ ™ § § ±
😉 😆 😋 😢
😃 😦 😎 😉
リスト(箇条書き)
リストの作成は先頭に
+
-
または*
で始めることによってリストを作成できます
リスト(段落番号)
テーブル
名前 | 説明 |
---|---|
EA(自動売買) | MT4で利用可能な自動売買ソフトウェア |
インジケーター | 売買サイン、発注補助、各種通知機能などのツール |
テーブル(カラムを右寄せ)
名前 | 説明 |
---|---|
EA(自動売買) | MT4で利用可能な自動売買ソフトウェア |
インジケーター | 売買サイン、発注補助、各種通知機能などのツール |
リンク
GogoJungle
画像
検索結果がありません。 |
検索結果がありません。 |
添付ファイルです。
おそれいりますが、ここでいう「建値」は何を指しておられますでしょうか?
建値はエントリー時の価格のことですから、単位がpipsになっているのは違和感がございます。
もう少し詳しくお教えいただければ、適切なアドバイスをさせていただけるかもしれません。
ご連絡ありがとうございます。
オプションを選択 → 建値ストップ の間隔○○○pips
を指しております。エントリー価格から○○○pips 利益の方向に、含み益が出たら
損切り(SL)をエントリー価格に変更する。
を意味しております。これで分かりますでしょうか。
よろしくお願い致します。
添付ファイルです。
詳細のご説明ありがとうございます。
建値ストップ機能の「間隔」のことですね。
EAつくーるの機能のみでは各ポジション毎に異なる間隔で建値ストップを実行することはできませんが、出力されるコードを数行修正していただくことで実現します。
下記を参考に修正をお試しいただければと存じます。
1. 変数の定義
建値ストップの「間隔」
BreakEvenValue
および「補正値」CorrectionValue
を、ポジションの数だけ増やします。例えば、ポジション1: 間隔150pips, 補正値10pips
ポジション2: 間隔300pips, 補正値20pips
の場合は下記のようにします。("BreakEvenValue"で検索してご修正ください。)
修正前
修正後
2. 引数の変数名の変更
建値ストップを行う関数自体はポジションの数だけ予め用意されますので、引数の名前を変更します。
修正前
修正後
以上でございます。
ご参考になりましたら幸いです。
ご回答くださりありがとうございます。
上記の変数の定義で、
早速、解決策について、ご連絡くださいまして
ありがとうございます。
この内容をベースにテスト用の簡単なEAを作って試そうとしているのですが
疑問が生じまして、ご教示いただけないでしょうか。
お手数をお掛けしますが、よろしくお願いいたします。
質問1)
上記の変数の定義で、修正後のBreakEvenValueとCorrectionValueの
番号は1と2が誤記ではないでしょうか?
(私が無知なため、もし間違った指摘でしたら、すみません)
修正後
input double BreakEvenValue1 = 150;
input double CorrectionValue2 = 10;
input double BreakEvenValue1 = 300;
input double CorrectionValue2 = 20;
質問1)
正しくは、以下になりませんか?
修正後
input double BreakEvenValue1 = 150;
input double CorrectionValue1 = 10;
input double BreakEvenValue2 = 300;
input double CorrectionValue2 = 20;
質問2)ポジション数が3つのEAを作ってみましたが、
修正前と修正後は、これで大丈夫でしょうか?
・修正前):マジックNo1、2、3 建値20pips 補正値2pips
・修正後):マジックNo1 建値20pips 補正値2pips
:マジックNo2 建値40pips 補正値4pips
:マジックNo3 建値60pips 補正値6pips
●修正前)
●修正後)
ご質問1につきまして
大変失礼いたしました。
ナンバリングが誤っており、ご指摘通りの修正で正しいものとなります。
ご質問2につきまして
ご提示いただいた修正内容で完璧でございます。
ポジション数がNの場合は、
BreakEvenValue
,CorrectionValue
をN個ずつ用意し、N箇所で呼び出しているBreakEven()
関数の引数をご修正いただければOKとなります。※ソースコード全体を掲示すると、EAつくーるの仕組みがご購入されていない方にも分かってしまいますため、ご投稿いただいたコメントを修正し、ソースコードのうち該当する部分のみを表示させていただきました。
早々にご回答くださいましてありがとうございました。
ソースコード全体を掲示してしまい、申し訳ございませんでした。
続けてのご質問となりすみませんが、
回答文書の中で、
ポジション数がNの場合とありますが、
質問3)
例えば、N=80で、ポジション数が80個の場合は
前回は3個の事例で質問しましたが、80回 同様の作業をすればよいということでしょうか。
質問4)
ポジション数に制限はないとQ&Aで聞いておりますが、実運用上 N=80個のポジションは多過ぎて
ちゃんと動作するのか不安ですが、経験値のようなものがありましたら共有いただけますと幸いです。
input bool isBreakEven = true;
input double BreakEvenValue1 = 20;
input double CorrectionValue1 = 2;
input double BreakEvenValue2 = 40;
input double CorrectionValue2 = 4;
input double BreakEvenValue3 = 60;
input double CorrectionValue3 = 6;
input double BreakEvenValue4 = 80;
input double CorrectionValue4 = 8;
・
・
・
input double BreakEvenValue80 = 120;
input double CorrectionValue80 = 12;
(中略)
if(isBreakEven == true) BreakEven(BreakEvenValue1, CorrectionValue1, Magic1);
if(isBreakEven == true) BreakEven(BreakEvenValue2, CorrectionValue2, Magic2);
if(isBreakEven == true) BreakEven(BreakEvenValue3, CorrectionValue3, Magic3);
if(isBreakEven == true) BreakEven(BreakEvenValue4, CorrectionValue4, Magic4);
・
・
・
if(isBreakEven == true) BreakEven(BreakEvenValue80, CorrectionValue80, Magic80);
ご質問3につきまして
仰る通りの方法でご作成いただけます。
ご質問4につきまして
確かにポジション数80は動作に支障が生じる可能性があります。
過去に、20程度で固まってしまった、という例がございます。
https://labo.gogojungle.co.jp/articles/1042
各ポジションに条件をどれだけ設定するかにもよりますが、ポジション数が多い場合はこまめな保存を心がけることをお願いできればと存じます。
EA自体の処理が遅くなってしまう問題については、(コードを修正することになりますが)「何回も用いる条件を1つにまとめる」ことを試してみる価値があるかもしれません。
早々にご回答くださりありがとうございます。
各ポジションの条件式の数によっても変わると思うので、複製で何個まで保存可能か試しながら進めてみます。
コードの修正は今回が初めてで、これからプログラムの勉強しようと思います。
Webサイトでも探してみますが、初心者向けに、いい書籍がありましたらご紹介いただけますと幸いです。
こちらのスレッドの回答担当者である私の個人的な経験ではありますが、ベースとなるプログラム(例えばEAつくーるで生成したEAのコード)を改造しながら、わからないところをWebサイトで検索することでMQL言語を習得した身でして、おすすめの書籍は紹介させていただけない状況でございます。
網羅的な参考書での学習もよいですが、やはり、実際の問題を調べて解決していくスタイルが、最も身につきやすいのではないかと考えております。
また最近ですと、生成AIを利用することでより効率的に学習を進められることと存じます。
例えば、ChatGPTはMQL4、MQL5に関する質問にも答えてくれます。ご活用をご検討いただければ幸いです。
ハチ様がますますスキルアップなさることを楽しみにしております。
ご回答ありがとうございます。
確かに、教科書通りにやみくもに、知識を入れるよりは、EAつくーるのコードをベースにわからないところを調べるやり方でやってみようと思います。
現実的なアドバイスをくださり、ためになりました、ありがとうございました。
追加ですみません。
上記に関連した内容なのでこちらで問い合わせさせて頂きました。
EAの建値の設定は、解決したのですが、マジックナンバーが複数存在してしまう
ことが分かりその変更方法についてご教示頂けないでしょうか。
質問1)
同じMT4ファイルで、同じ通貨ペアで異なるEAを稼働させる場合で
個々のが複数ポジションを持つ場合、マジックナンバーは変更する必要がありますか。
例えば、EA(1)ポジション1(Magic1)、ポジション2(Magic2)、ポジション3(Magic3)
EA(2)ポジション1(Magic1)、ポジション2(Magic2)、ポジション3(Magic3)
質問2)
上記、質問1)でマジックナンバーの変更の必要がある場合は、
EA(2)のポジション1(Magic1)、ポジション2(Magic2)、ポジション3(Magic3)の
マジックナンバーを
EA(2)のポジション1(Magic4)、ポジション2(Magic5)、ポジション3(Magic6)に変更
する必要があると思います。
変更方法は、
・画面を右クリック
・エキスパートアドバイザー
・設定
・パラメーターの入力
・変数Magic1の値をダブルクリックして、「1」から「4」に変更
以下同様に
・変数Magic2の値をダブルクリックして、「1」から「5」に変更
・変数Magic3の値をダブルクリックして、「1」から「6」に変更
・一番下の「OK」ボタンをクリック
上記変更方法で大丈夫でしょうか??
パラメーターの入力画面の右下にある「読み込み(L)」や「保存(S)」のボタンを押す必要はありますか??
上記、作業だけで、EAの中のコードも全て書き換わって動作するものでしょうか??
質問3)
同じ通貨ペアで、複数のEAを稼働させる場合、(例えば、EA1、EA2、EA3、EA4と4つある場合)
EA毎に、個別にMT4ファイルを4つ作成して、立ち上げれば、マジックナンバーの変更は不要でしょうか?
ご質問ありがとうございます。
ご質問1につきまして
変更の必要がございます。
同時に稼働させるEAの全てのポジションについて、マジックナンバーは相異なるものである必要があります。
ご質問2につきまして
変更方法につきましては、仰る通りの方法で問題ありません。
ただし、コードが書き換わるわけではないため、チャートから外した際には番号がリセットされてしまいます。
毎回設定するのが面倒な場合は「setファイル」を用意しておくとよいでしょう。
「保存」を押すことで、パラメータの状況が記録された「setファイル」が作成されますので、それを保存しておき、再度設定する際には「読み込み」を押して適用することができます。
なお、ソースコード自体を修正してしまうのが一番楽かもしれません。
input int Magic〇 = 〇○○○;
の部分を書き換えてからコンパイルします。お勧めの方法として、「各EAに固有の番号を付けて管理し、その番号+元のマジックナンバーというルールでナンバリングする」というものを提案させていただきます。
ルール:先頭に「1」、次の5桁にEAの番号、次の4桁にポジションの番号を記載
【例】
EAの番号が「123」(00123), ポジションが99個(0001~0099)の場合
こうすることで、被りを気にしなくてよくなります。
※int型の最大値が2,147,483,647である点には注意します。
この数値を超えると思わぬ不具合が発生する可能性があります。
ご質問3につきまして
NGです。
口座単位で管理されますので、干渉してしまいます。
前述の方法でコードを書き換え、マジックナンバーを予め被らないようにしておけば安心ですね。
書き換え用のテキストを簡単に生成できるツールを作ってみたので、よろしければお使いください。
ご回答ありがとうございます。
理解できました^^
マジックナンバーの番号の振り方や、生成ツールの作成までありがとうございます!!
(因みにこちらはエクセルのマクロ機能で作成されているのでしょうか)
質問4)追加ですみません。
回答くださいました質問3から考察すると、同一のMT4同一口座で、1つのEA(ポジション1個のみ)を稼働させる場合、異なる通貨ペア4つ(GBPUSD、EURUSD、AUDUSD)を稼働させる場合でも、
マジックナンバーは、4つ全て異なる番号にしないといけないということですね??
(Web検索で調べると、「通貨ペアが違っていれば、マジックナンバーは同じでも大丈夫」というのを見かけますが・・)
ご質問4につきまして
EAつくーるで作成したEAの場合は、通貨ペアが異なればマジックナンバーが同じでも大丈夫です。
と言いますのも、決済処理の際にポジションに設定されているマジックナンバーと通貨ペアの両方を確認するためです。
closePosition
という関数の定義の中に、という行があり、ここでポジションの通貨ペア(Symbol)がEA自身の通貨ペアと一致していない場合は決済処理を飛ばす(continueする)、となっています。
よって、通貨ペアが違っていればマジックナンバーが同じでも決済されることはありません。
とは言え、この処理が記載されていないEAも存在するため、基本的にはマジックナンバーが被らないようにして運用するくせを付けておくのがよいと存じます。
P.S. 前回の回答にて添付いたしましたツールは、エクセルのマクロではなくHTMLとJavasctriptで作成しました。
zipファイルを展開してメモ帳等で開いていただければソースが確認できますので、(自己責任でお願いいたしますが、)改造してお使いいただくこともできます。
質問4につきまして、詳細にご回答くださり、ありがとうございます!
よく理解できました。
(EAを開発者が、closePositionの関数の中に、上記のような条件を
入れているか否かで変わってくるのですね!)
細かい指摘ですみませんが、回答文書の中で、
6,7行目
>>という行があり、ここでポジションの通貨ペア(Symbol)がEA自身の通貨ペアと
>>一致していない場合は決済処理を飛ばす(continueする)、となっています。
上記で「一致していない場合」と記述されてますが、正しくは、EA自身の通貨ペアと
「一致している場合」は決済処理を飛ばす、ですよね??
少し混乱したので、念のため確認させていただけますか。
よろしくお願いいたします。
P.S.: マジックナンバーの生成ツールは、HTMLとJavasctriptだったのですね。
勉強になりました。ありがとうございます!!
ありがとうございます。
ご理解の通りでございます。
なお、ご指摘いただいた部分につきましては、
となりますので、回答させていただいた通り「一致していない場合は決済処理を飛ばす」で合っております。
言い換えると、「一致している場合のみ決済処理を実行する」となりますね。