水平の罫線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
EA出品を考えています。通貨別にパラメータを設定したいところがあるので、試しに
https://labo.gogojungle.co.jp/articles/105
こちらのページのサンプルコードをそのままはりつけたのですが
‘TakeProfit’ - constant cannot be modified
‘StopLoss’ - constant cannot be modified
というエラーがでてしまいます。
自分が設定したいのは、時間指定決済で、
input bool isExitByTime = true;
input string TimeCloseValue = “23:48”;
または
input bool isExitByTime = false;
input string TimeCloseValue = “23:48”;
このどちらかの設定を
USDJPY EURJPY EURUSD GBPJPY GBPUSD
の5通貨でお客様が設定をする手間を不要とするために、
初期設定で5通貨別に時間指定決済あり/なしを設定したいのですが、
よろしくお願いいたします。
コメント文がありません。
水平の罫線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
画像
検索結果がありません。 |
検索結果がありません。 |
https://labo.gogojungle.co.jp/articles/2273
こちらの質問に関して、
下記の設定で分岐可能というご指導を頂いたように思います
基本設定
input int Magic1= 1;
input bool isExitByTime = true;
input string TimeCloseValue = “23:00”;
input int Magic2 = 2;
input bool isExitByTime2 = true;
input string TimeCloseValue2 = “23:00”;
☆(OnTick() 内
if(isExitByTime == true) ExitByTime(TimeCloseValue, Magic1, exit_time_date_array);
if(isExitByTime2 == true) ExitByTime(TimeCloseValue2, Magic2, exit_time_date_array);
そして今回の質問なのですが、
さらに通貨別初期設定。ということは可能でしょうか?
https://labo.gogojungle.co.jp/articles/105
こちらのページのサンプルコードをそのままはりつけたのですが
‘TakeProfit’ - constant cannot be modified
‘StopLoss’ - constant cannot be modified
うまくいきませんでした。
下記設定が可能であれば初期状態から購入者がスワップ+のみでEAを使用できると考えています。
こちらを導入するためにはどのように修正記載すればよいでしょうか?
USDJPY
input bool isExitByTime = true; ポジション1(Magic1)持ち越しあり(買い)
input bool isExitByTime2 = false; ポジション2(Magic2)売り持ち越しなし(売り)
EURJPY
input bool isExitByTime = true; ポジション1(Magic1)持ち越しあり(買い)
input bool isExitByTime2 = false; ポジション2(Magic2)売り持ち越しなし(売り)
GBPJPY
input bool isExitByTime = true; ポジション1(Magic1)持ち越しあり(買い)
input bool isExitByTime2 = false; ポジション2(Magic2)売り持ち越しなし(売り)
EURUSD
input bool isExitByTime = false; ポジション1(Magic1)買い持ち越しなし(買い)
input bool isExitByTime2 = true; ポジション2(Magic2)売り持ち越しあり(売り)
GBPUSD
input bool isExitByTime = false; ポジション1(Magic1)買い持ち越しなし(買い)
input bool isExitByTime2 = true; ポジション2(Magic2)売り持ち越しあり(売り)
いつもお世話になっております。
通貨別の初期値(“買いは持ち越し/売りは決済”など)を、購入者が触らなくても反映したいというご要望に沿って結論をお伝えします。
EAつくーるのインプットは固定値で、チャートの通貨ペアに応じて入力値を自動変更する仕組みがないためです。
さらに「売りだけ時刻決済・買いは持ち越し」のような片側だけの時刻決済は、「オプション→指定時刻決済」では“全ポジション対象”になるため、取引条件で時刻に合わせた「買い/売りポジション決済」ルールを作るのが確実です(ポジション単位で制御できます)。
以下、実装パターンをご提案します。
パターンA(ノーコード・確実):通貨ごとにEA(またはset)を用意
構成
例)USDJPY/EURJPY/GBPJPYは「買い(Magic1)持ち越し、売り(Magic2)23:48で決済」
EURUSD/GBPUSDはその逆 …という形。
EAつくーるでの設定例(USDJPY向け)
「ポジション1(Magic1=1)」=買い用:
「ポジション2(Magic2=2)」=売り用:
エントリー条件:ユーザー様のロジック
決済条件:指定時刻のローソク足で売りだけ決済
例(23:48相当のタイミングで成り立つ条件を用意)
ポイント:
> EURJPY/GBPJPYも同様に設定(Magic1=買い持ち越し、Magic2=売り23:48決済)。
> EURUSD/GBPUSDは逆(Magic1=買い23:48決済、Magic2=売り持ち越し)で、それぞれ「取引通貨ペア制限」を通貨名に合わせて作ってください。
> これにより**“購入者は通貨に合ったEA(またはset)を入れるだけ”**になります。
パターンB(1本にまとめたい場合の最終手段):外部MQLで通貨分岐
> EAつくーるの範囲を超えるため最終手段です。初心者向けではないため要点のみ。
問題のコンパイルエラー
『
'TakeProfit' - constant cannot be modified
/'StopLoss' - constant cannot be modified
』は、input
は定数扱いのため、後から代入しようとして発生します。対処:
input
は“初期入力用”に留め、実行時に書き換える変数(例:int takeProfit; int stopLoss; bool isExitByTimeBuy; bool isExitByTimeSell;
)を別に用意して、OnInit()
でSymbol()
に応じて代入します。input
そのものを上書きしないようにします。通貨別の初期値切替の考え方(例)
OnInit()
内でswitch(Symbol())
やif(Symbol()=="USDJPY")
のように分岐Magic1/2(買い/売り)それぞれの時刻決済フラグと時刻文字列を、通貨に応じて内部変数へ代入
OnTick()
では前回ご提示のの**
isExitByTimeBuy/TimeCloseValueBuy
等は input ではなく “内部変数”** を参照させるこうすると購入者の入力に依らず通貨別の初期値を実行時に適用できます。
※ EAつくーるでMT5用EAをコンパイルする場合は、
MQL5\Include\Tkool\Tkool.mqh
が正しい場所にあるかも併せて確認してください。ありがちな設定ミスと確認ポイント
片側のみの決済をしたいときは取引条件で“買い/売りポジション決済”を個別に作るようにしてください。
まとめ(実務的なおすすめ)
購入者の手間ゼロを最優先するなら、通貨ごとにEA(またはset)を分けて配布(パターンA)。
どうしても1本に集約したい場合のみ、外部MQLで
Symbol()
分岐+内部変数で初期値を切替(パターンB)。input
に代入しない(今回のエラー原因)OnInit()
で内部変数へ通貨別初期値を設定この方針であれば、記載いただいた5通貨の「買いは持ち越し/売りは時刻決済」やその逆の要件を、購入者側の設定なしで実現できます。
ありがとうございました。どのような方法をとるのが良いのか、考えがまとまってきました。