複利機能について

EAつくーる
れんくん
2025/01/16 01:33
192

複利機能を3万で0.01ロット毎上がるコードを教えてほしいです。
また、パラメーター設定で金額を自由にいじれると尚うれしいです!

コメント

GogoJungle
2025/01/16 14:26

証拠金の増減に対してロット数を変更するという解釈でよろしいでしょうか?

「証拠金1万に対して0.01ロット」の場合はこちらのQAにおいてN=1としたものです。(詳しい原理の説明についてはこちらをご参照ください。)

金額の部分を自由にいじれるようにということで、そのパラメータをEquityとして作成してみます。

変数の定義

【修正前】

input int Magic1 = 1;

【修正後】

input int Magic1 = 1;
input int Equity = 30000;

lotsを更新する処理の追加

【修正前】

      if(openPosition(signal, lots, take_profit, stop_loss, Magic1)) {
         bars1 = Bars;
      }

【修正後】

      lots = AccountEquity() / (100 * Equity); // この行を追加
      if(openPosition(signal, lots, take_profit, stop_loss, Magic1)) {
         bars1 = Bars;
      }

以上でございます。
参考になりましたら幸いです。

れんくん
2025/03/26 21:05

お世話になります。こちらですが、3万円で複利設定しても4万や5万円でも0.02ロットになります。おそらく初期ロットが邪魔しているのかなとは思います。可能であれば、3万0.01ロット6万0.02としたいです。パラメーターで変更できるのは変わらず修正案あれば宜しくお願い致します。

GogoJungle
2025/03/28 11:03

ロット数の計算値に0.01未満の端数が出た場合に、それを切り捨てる方法で実現します。
ただし、30000円未満の場合にロット数が「0」とならないように、最低値を0.01とする必要がありますね。

前回の回答の「lotsを更新する処理の追加」で修正する行を、次のコードに置き換えてお試しいただければと存じます。

lots = MathMax(0.01, MathFloor(AccountEquity() / (100 * Equity) * 100) / 100);
れんくん
2025/03/29 21:45

‘Equity’ - undeclared identifier こちらのエラーが出てしまいます

れんくん
2025/03/29 21:50

解決いたしました!

関連トピックス

検索結果がありません。

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

注目トピックス

検索結果がありません。