記事"エキスパートアドバイザーの資金管理のためのファンクション"についてのディスカッション

 

新しい記事 エキスパートアドバイザーの資金管理のためのファンクション はパブリッシュされました:

トレード戦略の開発は主に市場に入り、そして、出るためのパターンの探索と、ポジションの維持に注目している。もし自動トレーディングのためにあるパターンをルールとして形式化できれば、トレーダーはポジションの量、マージンのサイズを計算する問題に立ち向かい、さらに貸付資金の安全なレベルを維持して自動モードでオープンなポジションを確実にするであろう。この論説では MQL5 言語を用いてこれらの計算を行う簡単な例を構築する

作者: MetaQuotes Software Corp.

 

ああ、ここで "読書室 "で最もおいしいが登場し、何をどのように読んでみましょう...

特にそのような著者から。:)

 

スワップ計算機能も欲しいですね。 スワップには5種類あって、それぞれニュアンスが違う。

科学的な方法では正しいところにたどり着けないこともある。

選択で3つのバリエーションを見つけましたが、まだSYMBOL_SWAP_MODE_BY_INTERESTが あります。この計算方法のブローカーが見つからないので、確認できません。

もし、CodeBaseに指定した通貨とロットでのスワップ計算機能を掲載する可能性があるのであれば、お願いします。

 
sergeev:

スワップ計算機能も欲しいですね。 スワップには5種類あって、それぞれニュアンスが違う。

科学的な方法では正しいところにたどり着けないこともある。

選択で3つのバリエーションを見つけましたが、まだSYMBOL_SWAP_MODE_BY_INTERESTがあります。この計算方法のブローカーが見つからないので、確認できません。

もし、CodeBaseに指定した通貨とロットでのスワップ計算機能を投稿する可能性があるのでしたら、お願いします。

+1.あるいは、この計算をすべて標準ライブラリに 実装してください。
 
ドキュメントに書いてあったと思う。そして、mcl4では、数式が変更されただけで、同じでした。
 
Если даже торговля на данном счете разрешена, то это еще не означает, что эксперт имеет право торговать. Чтобы проверить, разрешено ли торговать эксперту, пишем:

取引はできるのに、Expert Advisorが取引できない場合とはどのようなケースですか?

ブローカーが禁止しているのか、端末の設定なのか。

4.と類推すると、「...エキスパートが取引を許可されており、取引操作のフローが自由である場合...」となります。

すなわち、IsTradeAllowed= IsExpertEnabled+ IsTradeContextBusy

IsTradeAllowed - Документация на MQL4
  • docs.mql4.com
IsTradeAllowed - Документация на MQL4
 

興味深く、必要な記事だ!この記事にある計算式を試してみたところ、こうなった。EURGBPを例にしてみましょう。口座通貨はドルです。一番近い通貨ペアはEURUSD、つまりmode=trueです。ここまではいいのですが、必要な証拠金を決定するために、この記事の計算式を使います:

   if(direction==POSITION_TYPE_BUY)
     {
      //--- 逆引用
      if(mode)
        {
         //--- 逆指値の買値でカウントする。
         calc_price=tick.ask;
         answer=lot*lot_size*calc_price;
        }
...
if(direction==POSITION_TYPE_SELL)
     {
      //--- 逆引用
      if(mode)
        {
         //--- 逆引きの売値で数える
         calc_price=tick.bid;
         answer=lot*lot_size*calc_price;
        }

つまり、記事によると、買いの場合、必要な証拠金は次のようになります:

買い:マージン =ロット*ロットサイズ*ティックアスク/レバレッジ

そして、売るときは

売り: 証拠金=ロット*ロットサイズ*ティック_ビッド/レバレッジ

これらの数式をシンプルなEAにコード化し、メタトレーダーが必要な証拠金を教えてくれるように、あらかじめ低資金でEURUSDを売り買いしてみます。同時に、計算した証拠金を出力します。テスターからはこのようなメッセージが表示されます:

2010.07.06 16:34:01 Core 1 no enough money [instantsell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin:122.91, NewFreeMargin: -112.91- テスターが計算したマージン
2010.07.06 16:34:01 Core 1 Error:資金不足 です。自由証拠金 = 10、必要証拠金 =122.899 - 弊社が計算した証拠金。


2010.07.06 16:34:01 Core 1 資金不足 [instantbuy 0.10 EURGBP at 0.81247 sl: 0.80191 tp: 0.82988]
2010.07.06 16:34:01 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin:122.72, NewFreeMargin: -112.72- テスターが計算したマージン
2010.07.06 16:34:01 Core 1 Error: 資金不足です。自由証拠金 = 10、必要証拠金 =122.737 - 弊社が計算した証拠金。

違いがある。必要マージンの計算式を次のように変更します。

買い: 証拠金 =ロット*ロットサイズ*ティック_ビッド/レバレッジ

売り: 証拠金 =ロット*ロットサイズ*ティックアスク/レバレッジ

これは記事と矛盾している。このようなメッセージをテスターから受け取る:

2010.07.06 16:39:49 Core 1 no enough money [instantsell 0.10 EURGBP at 0.82227 sl: 0.83296 tp: 0.79796]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin:122.91, NewFreeMargin: -112.91- テスターが計算したマージン
2010.07.06 16:39:49 Core 1 Error: 資金不足です。Free margin = 10, required margin =122.911 - margin calculated by us

2010.07.06 16:39:49 Core 1 no enough money [instantbuy 0.10 EURGBP at 0.81247 sl: 0.80191 tp: 0.82988]
2010.07.06 16:39:49 Core 1 PrevBalance: 10.00, PrevEquity 10.00, PrevMargin: 0.00, NewMargin:122.72, NewFreeMargin: -112.72- テスターが計算したマージン
2010.07.06 16:39:49 Core 1 Error: not enough money.自由証拠金 = 10、必要証拠金 =122.722 - 弊社が算出した証拠金
.

ここで、エキスパートアドバイザーが「間違った」方法で計算した証拠金は、テスターが計算した証拠金とまったく同じです。EURGBPのようなクロスを計算する場合、テスターでも記事でもビッドとアスクが並べ替えられていることがわかります。記事とテスターのどちらが正しいのでしょうか?

 

この記事は私にとって有益で良いものだ。

理解するためにも、時間を節約するためにもね。ありがとう

この機能で何が得られるのか理解できません。

担保が必要な 場合、契約金額をレバレッジで割るべきではないでしょうか?

Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте
  • www.mql5.com
Стандартные константы, перечисления и структуры / Состояние окружения / Информация об инструменте - Документация по MQL5
 
SHOOTER777:

この記事は私にとって有益なものだ。

理解するためにも、時間を節約するためにもね。ありがとうございました。

この機能で何が得られるのか理解できません。

必要な担保の 大きさであれば、契約金額をレバレッジで割るべきではないでしょうか?

すぐには理解できませんでした。なぜ結果が実際のものと100倍も違うのか、それを見つけるのに1時間もかかった。
 
SHOOTER777:

必要証拠 金額であれば、約定代金をレバレッジで割るべきではないですか?

約定代金は証拠金額ではありません。このコードでは、約定代金をレバレッジで割って証拠金額を求めます。
 
デモのEURUSDペアで...利用可能資金が10,000の場合、ロット10でオープンできません...なぜですか?利用可能な資金に基づいて可能な最大ロットを計算する方法を教えてください。