こんにちは!
この基準でエキスパートアドバイザーを最適化するために、OnTester()関数にLR相関を入れることが可能かどうか、 Custom maxを通じて興味があります 。
OnTester()関数にLR相関を入れることが可能かどうかに興味があります。
説明ではOnTrade()を使った例を示しています。OnTester()に計算を移すことを妨げるものは何もありません。
説明では、OnTrade() を使用した例を示しています。OnTester()に計算を移すことを妨げるものは何もありません。
私はmql5にはあまり詳しくないので、明らかな間違いがあればご容赦ください。
私はこれをOnDeinitの前にEAのコードで実行しようとしています:
double OnTester() { double lrk=TesterStatistics(STAT_LR_CORRELATION); return(lrk); }
エラー"'STAT_LR_CORRELATION' - can't convert enum "が出ます。
もしそうなら
double OnTester() { //--- 同じ秒数で繰り返されるリクエストはブロックする。 static datetime time_on_trade; if(time_on_trade==TimeTradeServer())return; time_on_trade=TimeTradeServer(); //--- 統計を更新する if(!m_stat.Calculate())Print(m_stat.GetLastErrorString()); }
エラー: "'return' -関数は 値を返す必要があります。}- すべてのコントロール・パスが値を返すわけではありません。
EAの1行目と2行目:
#include <CTradeStatistics.mqh>
CTradeStatistics m_stat;何が間違っているのか教えてください。
試行錯誤してやったんだ:
double OnTester() { CTradeStatistics m_stat; if(m_stat.Calculate()) PrintFormat("LR Correlation: %.2f",m_stat.LRCorrelation()); else Print(m_stat.GetLastErrorString()); double LRC=(double)m_stat.LRCorrelation(); return(LRC); }うまくいったかな?
Andrei, いくつかコメントがあります。
1. 500行目
if(m_balance_data.At(i)!=0.0) if(m_balance_data.At(i-1)!=0.0) に修正。
2.511 行目
分母 m_initial_deposit を 0 にチェックしない。
3. m_sharpe_ratioの計算をRiskFreeRateオプションで年間シャープレシオオプションに使用することを必ず 指定してください。
これはオプションの1つであり、標準的なものとは特に異なるため。
このコードでは、株式ドローダウンに関する統計を計算できないことがわかりました。どなたか、独自のコードでエクイティ・ドローダウンの計算に成功された方はいらっしゃいますか?
この単純な答えは、あなたが探しているものではありません。---> MT5 のトレードクラスでは、口座オブジェクトCAccountInfo acc を作成できます。acc は作成された口座情報 オブジェクトで、すべての口座詳細機能に すばやくアクセスできます。そして、acc.Equity()-acc.Balance()を実行します。 正直なところ、もっと簡単なコードacc.Profit() を使用することができます。 プラスなら利益、マイナスならドローダウンですよね? マイナスのエクイティ利益はドローダウンと同じです。 Profit()はエクイティと残高の差です。
あなたの質問がもっと複雑なら、詳細を追加してください;)
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
CTradeStatistics:
作者: Andrey Voytenko