初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 485 1...478479480481482483484485486487488489490491492...1504 新しいコメント Boris 2015.12.22 18:24 #4841 -Aleks-:よろしくお願いします!各(とする)日の最大 ドローダウンを求める必要があります(ファイルへの書き込みは1日に1回発生します) - MT4ターミナル。最大ドローダウンはピークから現在の資金ドローダウンまでのチャート上の距離で、資金ドローダウンは現在の損失額です。次のようなコードを書きました。 if(Analiz_Prosadki==true) { if(ContolSavaTXT==1) { ProfitNew=0; ProfitMin=0; ContolSavaTXT=0; } if(ContolSavaTXT==0) { ProfitNew=AccountInfoDouble(ACCOUNT_PROFIT); BalansNew==AccountInfoDouble(ACCOUNT_BALANCE); //Текузее значение баланса if (BalansNew>BalansMax) BalansMax=BalansNew; if (ProfitNew<ProfitMin && BalansNew>=BalansMax) ProfitMin=ProfitNew; if (ProfitNew<ProfitMin && BalansNew<BalansMax) ProfitMin=ProfitNew-(BalansMax-BalansNew); } ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitMin); // Пишем информацию в файл - функция возвращает 1 }しかし、あるチャートでは正しく、あるチャートでは異常である。どうやらコードかロジックを間違えたようなのですが、どれが原因かわかりません。私の知る限り、EquityのピークからEquityのピットまで数えるべきで、残高から数えるのではない、これではドローダウンがとてもよく見えてしまうそして、あなたのコードが返信の中で繰り返され、サイトを乱雑にしないように、他のボタンではなく、SRC ボタンを使ってください。 Aleksey Vyazmikin 2015.12.22 19:33 #4842 Boris:私の知る限りでは、残高からではなく、エクイティのピークからエクイティのピットまで数える必要があり、これはドローダウンのイメージを本当に柔らかくします。そして、あなたのコードが返信の中で繰り返され、サイトを乱雑にしないように、他のボタンではなく、SRC ボタンを使ってください。残高を資金に変更 - テスターとまだ合わない - テスターの値の方が大きい。ACCOUNT_PROFITは実際には残高と資金の差分であり、多分それが ポイントです...。一方、EAが動作するために必要な資金量を調べるのが作業であり、資金の上限を考慮するのは意味がないように思うのですが...。SRCが何なのかわからないから使わない。 Boris 2015.12.22 20:20 #4843 -Aleks-:ACCOUNT_PROFITは、実は残高と資金の差分なんです、多分それ です・・・。一方、EAを動作させるためにどれだけの資金が必要かを調べる作業であり、資金の上限を考慮するのは意味がないように思うのですが......。SRCが何なのかわからないから使わない。ビデオカメラの左側にあるボタン(上図)は、コード挿入用のボタンですエクイティについてBalanceをEquityに置き換えると、Equity = Balance + Profitとなるので、ACCOUNT_PROFITを 除外しなければならない。しかし、ターミナルでは常にEquityが変化しており、テスターではポジションクローズ 時にEquityとドローダウンが修正されるため、中間ドローダウンはテスターで修正されません。その結果、テスター上では現実よりも市場の状況が魅力的になっています。最近、EAの各アクション、オープニング、修正、クロージングなどに必要なすべての情報をテスター、デモ、リアルでプリントアウトしています。でも、もうお気づきでしょう。;) Hexen 2015.12.22 20:58 #4844 こんばんは、標準ライブラリのCTrailingFixedPipsクラスについて教えて いただきたいのですが、TakeProfitレベルの「trailing」の意味は何ですか?到達することはないのでしょう?私が何かを理解していないか、コードや意味を理解していないかのどちらかです。ドキュメントより "価格インデントがストップロスレベルより高い場合、そのポジションの新しいストップロス価格が提案さ れます。ストップロスの変更条件が満たされ、テイクプロフィットのレベルがゼロ でない場合、ポジションに新しいテイクプロフィット価格を設定することが推奨さ れます。"<ExpertTrailingCTrailingFixedPips.mqh>の場合//+------------------------------------------------------------------+ //| Checking trailing stop and/or profit for long position. | //+------------------------------------------------------------------+ bool CTrailingFixedPips::CheckTrailingStopLong(CPositionInfo *position,double &sl,double &tp) { ... ... delta=m_stop_level*m_adjusted_point; if(price-base>delta) { sl=price-delta; if(m_profit_level!=0) tp=price+m_profit_level*m_adjusted_point; } ... } 削除済み 2015.12.22 21:06 #4845 Hexen:こんばんは、標準ライブラリのCTrailingFixedPipsクラスについて教えて いただきたいのですが、TakeProfitレベルの「trailing」の意味は何ですか?到達することはないのでしょう?私が何かを理解していないか、コードや意味を理解していないかのどちらかです。ドキュメントより "価格インデントがストップロスレベルより高い場合、そのポジションの新しいストップロス価格が提案さ れます。ストップロスの変更条件が 満たされ、テイクプロフィットの レベルがゼロでない場合、ポジションに新しいテイクプロフィット 価格を設定することが推奨されます。"<ExpertTrailingCTrailingFixedPips.mqh>の場合 これは誤植である可能性が高いです。Stop Lossとすべきです。 Alexey Volchanskiy 2015.12.22 21:09 #4846 Hexen:こんばんは、標準ライブラリのCTrailingFixedPipsクラスについて教えて いただきたいのですが、TakeProfitレベルの「trailing」の意味は何ですか?到達することはないのでしょう?私が何かを理解していないか、コードや意味を理解していないかのどちらかです。ドキュメントより "価格インデントがストップロスレベルより高い場合、そのポジションの新しいストップロス価格が提案さ れます。ストップロスの変更条件が満たされ、テイクプロフィットのレベルがゼロ でない場合、ポジションに新しいテイクプロフィット価格を設定することが推奨さ れます。"<ExpertTrailingCTrailingFixedPips.mqh>の場合 上記のコードから判断すると、TPはSLと同期して動きます。トレーリングストップをねじ込む) Aleksey Vyazmikin 2015.12.22 21:10 #4847 Boris:ビデオカメラ(上図)の左側にあるこのボタンは、コードを挿入するためのものですコード用の「コード」スタイルがあり、メニューから選択するのですが、私が使っているのはこれです。ボリス: エクイティについてBalanceをEquityに置き換えると、Equity = Balance + Profitとなるので、ACCOUNT_PROFITを 除外しなければならない。しかし、ターミナルでは常にEquityが変化しており、テスターではポジションクローズ 時にEquityとドローダウンが修正されるため、中間ドローダウンはテスターで修正されません。その結果、テスター上では現実よりも市場の状況が魅力的になっています。最近、EAの各アクション、オープニング、修正、クロージングなどに必要なすべての情報をテスター、デモ、リアルでプリントアウトしています。でも、もうお気づきでしょう。;)レポートのテスターで固定されているドローダウンがポジションクローズ時のみであれば、マーケットで1つのオーダーを使用してもドローダウンは発生しないはずですが、そうではありません;)ACCOUNT_PROFIT = Funds-balanceなので、この指標を計算に使わない理由はないと思うのですが・・・。 Aleksey Vyazmikin 2015.12.23 01:17 #4848 -Aleks-:よろしくお願いします!各(とする)日の最大 ドローダウンを求める必要があります(ファイルへの書き込みは1日に1回発生します) - MT4ターミナル。最大ドローダウンはピークから現在の資金ドローダウンまでのチャート上の距離で、資金ドローダウンは現在の損失額です。次のようなコードを書きました。 if(Analiz_Prosadki==true) { if(ContolSavaTXT==1) { ProfitNew=0; ProfitMin=0; ContolSavaTXT=0; } if(ContolSavaTXT==0) { ProfitNew=AccountInfoDouble(ACCOUNT_PROFIT); BalansNew== AccountInfoDouble(ACCOUNT_BALANCE); //Текузее значение баланса if (BalansNew>BalansMax) BalansMax=BalansNew; if (ProfitNew<ProfitMin && BalansNew>=BalansMax) ProfitMin=ProfitNew; if (ProfitNew<ProfitMin && BalansNew<BalansMax) ProfitMin=ProfitNew-(BalansMax-BalansNew); } ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitMin); // Пишем информацию в файл - функция возвращает 1 }しかし、あるチャートでは正しく表示され、他のチャートでは表示されない。 同時に、チャートのビジュアルも同じである。コードかロジックに間違いがあったのでしょうが、どれが原因かわかりません。コードに間違いを発見しました。 BalansNew=AccountInfoDouble(ACCOUNT_BALANCE); しかし、それでもポティックの計算とテスターの結果が異なる原因を解決するには至りませんでした。ボリスさんの理論を株式計算で確認したところ、結果もマイナスでした。 if(Analiz_Prosadki==true) { if(ContolSavaTXT==1) { ProfitNew=0; ContolSavaTXT=0; } if(ContolSavaTXT==0) { BalansNew=AccountInfoDouble(ACCOUNT_EQUITY); //Текущее значение баланса if (BalansNew>BalansMax) BalansMax=BalansNew; if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; if (ProfitNew<ProfitMin) ProfitMin=ProfitNew; } ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitNew); // Пишем информацию в файл - функция возвращает 1 }ところで、1ロットしか取引していないのに、テスターのチャート上でequityとbalanceがずれているのは、どうしたことでしょう。 Questions from Beginners MQL5 初心者の方からの質問 MQL4 MT4 MetaTrader エラー、バグ、質問 Alexey Viktorov 2015.12.23 06:38 #4849 -Aleks-:コードに間違いがありました。 BalansNew=AccountInfoDouble(ACCOUNT_BALANCE); しかし、それでも、計算されたエクイティとテスターの結果が異なる原因を解決するには至りませんでした。ボリスさんの理論を株式計算で確認したところ、結果もマイナスでした。 if(Analiz_Prosadki==true) { if(ContolSavaTXT==1) { ProfitNew=0; ContolSavaTXT=0; } if(ContolSavaTXT==0) { BalansNew=AccountInfoDouble(ACCOUNT_EQUITY); //Текущее значение баланса if (BalansNew>BalansMax) BalansMax=BalansNew; if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; if (ProfitNew<ProfitMin) ProfitMin=ProfitNew; } ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitNew); // Пишем информацию в файл - функция возвращает 1 }ところで、1ロットしか取引していない場合、チャート上のテスターでは、equityとbalanceがどのように非同期化されるのかがよくわかりません。エクイティとバランスがどのようにずれているのか」を理解するためには、バランスとは何か、エクイティとは何かを理解する必要があります。残高 - アカウントの持分額。エクイティ - 現在の、口座の変動する金額です。あなたのテスターにも同じ機能があり、ドローダウンを修正しますが、あなたが望むような形ではありません。つまり、最大ドローダウンを計算するためには、その値を格納するための静的変数 またはグローバル 変数を宣言し、この変数をあなたのコードのように書き換える必要があるのです。これが今、あなたが書いたものです...。if (BalansNew>BalansMax) BalansMax=BalansNew; // Если новое значение эквити больше зафиксированного в прошлый раз - перезапишем значение переменной // но это не просадка, это максимальная прибыльif (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; // А здесь BalansNew уже равно BalansMax и эта строка не выполняется никогда...maxとminの2つの変数を作り、そこに値を書き込む必要があります。そして、ここで声を大にして思うことがあります。当日の分ではなく、注文を閉じるときにファイルに書き込んで、変数を書き換えたほうがいいのでは?このときEquityはbalanceと等しいので、maxとminが書かれている変数をゼロにする必要があります。 MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第19部): ライブラリメッセージのクラス Aleksey Vyazmikin 2015.12.23 07:55 #4850 Alexey Viktorov:エクイティとバランスがどのようにずれているか」を理解するためには、バランスとは何か、エクイティとは何かを理解する必要があります。残高とは、口座にある一定の資金量のことです。エクイティ - 現在の、口座の変動する金額です。今書いているテスターにも同じ機能があり、ドローダウンが修正されますが、思い通りにはいきません。つまり、最大ドローダウンを計算するためには、その値を格納するための静的変数 またはグローバル 変数を宣言し、この変数をあなたのコードと同じように書き換える必要があるのです。それが今書いてあることなんですね...。if (BalansNew>BalansMax) BalansMax=BalansNew; // Если новое значение эквити больше зафиксированного в прошлый раз - перезапишем значение переменной // но это не просадка, это максимальная прибыльif (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; // А здесь BalansNew уже равно BalansMax и эта строка не выполняется никогда...maxとminの2つの変数を作り、そこに値を書き込む必要があります。そして、ここで声を大にして思うことがあります。当日の分ではなく、注文を閉じるときにファイルに書き込んで、変数を書き換えた方がいいのでは?このとき、equityはbalanceと等しく、maxとminが書かれている変数をゼロにする必要があります。リクエストに応えていただき、ありがとうございましたグローバル変数は実際の市場操作に関係するものです。私はテスト情報が必要で、それが理由で悩んだわけではありません。残高と資本とは、もちろん分かっているのですが、ドローダウンの計算に失敗しました。 私のコードサンプルを見ると、残高と資金の両方を最大、残高と資金を最小とするようにしたことが分かります。不等式if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; が満たされないのはなぜだと思いますか?それは新しいバランスの最大値に達したときにバー上で満たされないだけです(または株式 - まだ真実ではない)、しかしその時点で私は利益のドローダウンProfitMin=ProfitNewを修正 します。一日のファイルを記録することは、最大ドローダウンが通常注文を閉じる瞬間に到達しないため、より関連性が高く、目標はExpert Advisorの作業に必要な平均金額を計算することである。 1...478479480481482483484485486487488489490491492...1504 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
よろしくお願いします!
各(とする)日の最大 ドローダウンを求める必要があります(ファイルへの書き込みは1日に1回発生します) - MT4ターミナル。
最大ドローダウンはピークから現在の資金ドローダウンまでのチャート上の距離で、資金ドローダウンは現在の損失額です。
次のようなコードを書きました。
if(Analiz_Prosadki==true)
{
if(ContolSavaTXT==1)
{
ProfitNew=0;
ProfitMin=0;
ContolSavaTXT=0;
}
if(ContolSavaTXT==0)
{
ProfitNew=AccountInfoDouble(ACCOUNT_PROFIT);
BalansNew==AccountInfoDouble(ACCOUNT_BALANCE); //Текузее значение баланса
if (BalansNew>BalansMax) BalansMax=BalansNew;
if (ProfitNew<ProfitMin && BalansNew>=BalansMax) ProfitMin=ProfitNew;
if (ProfitNew<ProfitMin && BalansNew<BalansMax) ProfitMin=ProfitNew-(BalansMax-BalansNew);
}
ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitMin); // Пишем информацию в файл - функция возвращает 1
}
しかし、あるチャートでは正しく、あるチャートでは異常である。
どうやらコードかロジックを間違えたようなのですが、どれが原因かわかりません。
私の知る限り、EquityのピークからEquityのピットまで数えるべきで、残高から数えるのではない、これではドローダウンがとてもよく見えてしまう
そして、あなたのコードが返信の中で繰り返され、サイトを乱雑にしないように、他のボタンではなく、SRC ボタンを使ってください。
私の知る限りでは、残高からではなく、エクイティのピークからエクイティのピットまで数える必要があり、これはドローダウンのイメージを本当に柔らかくします。
そして、あなたのコードが返信の中で繰り返され、サイトを乱雑にしないように、他のボタンではなく、SRC ボタンを使ってください。
残高を資金に変更 - テスターとまだ合わない - テスターの値の方が大きい。ACCOUNT_PROFITは実際には残高と資金の差分であり、多分それが ポイントです...。一方、EAが動作するために必要な資金量を調べるのが作業であり、資金の上限を考慮するのは意味がないように思うのですが...。
SRCが何なのかわからないから使わない。
ACCOUNT_PROFITは、実は残高と資金の差分なんです、多分それ です・・・。一方、EAを動作させるためにどれだけの資金が必要かを調べる作業であり、資金の上限を考慮するのは意味がないように思うのですが......。
SRCが何なのかわからないから使わない。
ビデオカメラの左側にあるボタン(上図)は、コード挿入用のボタンです
エクイティについてBalanceをEquityに置き換えると、Equity = Balance + Profitとなるので、ACCOUNT_PROFITを 除外しなければならない。しかし、ターミナルでは常にEquityが変化しており、テスターではポジションクローズ 時にEquityとドローダウンが修正されるため、中間ドローダウンはテスターで修正されません。その結果、テスター上では現実よりも市場の状況が魅力的になっています。最近、EAの各アクション、オープニング、修正、クロージングなどに必要なすべての情報をテスター、デモ、リアルでプリントアウトしています。でも、もうお気づきでしょう。;)
こんばんは、標準ライブラリのCTrailingFixedPipsクラスについて教えて いただきたいのですが、TakeProfitレベルの「trailing」の意味は何ですか?到達することはないのでしょう?私が何かを理解していないか、コードや意味を理解していないかのどちらかです。
ドキュメントより
"価格インデントがストップロスレベルより高い場合、そのポジションの新しいストップロス価格が提案さ れます。ストップロスの変更条件が満たされ、テイクプロフィットのレベルがゼロ でない場合、ポジションに新しいテイクプロフィット価格を設定することが推奨さ れます。"
<ExpertTrailingCTrailingFixedPips.mqh>の場合
こんばんは、標準ライブラリのCTrailingFixedPipsクラスについて教えて いただきたいのですが、TakeProfitレベルの「trailing」の意味は何ですか?到達することはないのでしょう?私が何かを理解していないか、コードや意味を理解していないかのどちらかです。
ドキュメントより
"価格インデントがストップロスレベルより高い場合、そのポジションの新しいストップロス価格が提案さ れます。ストップロスの変更条件が 満たされ、テイクプロフィットの レベルがゼロでない場合、ポジションに新しいテイクプロフィット 価格を設定することが推奨されます。"
<ExpertTrailingCTrailingFixedPips.mqh>の場合
こんばんは、標準ライブラリのCTrailingFixedPipsクラスについて教えて いただきたいのですが、TakeProfitレベルの「trailing」の意味は何ですか?到達することはないのでしょう?私が何かを理解していないか、コードや意味を理解していないかのどちらかです。
ドキュメントより
"価格インデントがストップロスレベルより高い場合、そのポジションの新しいストップロス価格が提案さ れます。ストップロスの変更条件が満たされ、テイクプロフィットのレベルがゼロ でない場合、ポジションに新しいテイクプロフィット価格を設定することが推奨さ れます。"
<ExpertTrailingCTrailingFixedPips.mqh>の場合
ビデオカメラ(上図)の左側にあるこのボタンは、コードを挿入するためのものです
コード用の「コード」スタイルがあり、メニューから選択するのですが、私が使っているのはこれです。
エクイティについてBalanceをEquityに置き換えると、Equity = Balance + Profitとなるので、ACCOUNT_PROFITを 除外しなければならない。しかし、ターミナルでは常にEquityが変化しており、テスターではポジションクローズ 時にEquityとドローダウンが修正されるため、中間ドローダウンはテスターで修正されません。その結果、テスター上では現実よりも市場の状況が魅力的になっています。最近、EAの各アクション、オープニング、修正、クロージングなどに必要なすべての情報をテスター、デモ、リアルでプリントアウトしています。でも、もうお気づきでしょう。;)
レポートのテスターで固定されているドローダウンがポジションクローズ時のみであれば、マーケットで1つのオーダーを使用してもドローダウンは発生しないはずですが、そうではありません;)
ACCOUNT_PROFIT = Funds-balanceなので、この指標を計算に使わない理由はないと思うのですが・・・。
よろしくお願いします!
各(とする)日の最大 ドローダウンを求める必要があります(ファイルへの書き込みは1日に1回発生します) - MT4ターミナル。
最大ドローダウンはピークから現在の資金ドローダウンまでのチャート上の距離で、資金ドローダウンは現在の損失額です。
次のようなコードを書きました。
if(Analiz_Prosadki==true)
{
if(ContolSavaTXT==1)
{
ProfitNew=0;
ProfitMin=0;
ContolSavaTXT=0;
}
if(ContolSavaTXT==0)
{
ProfitNew=AccountInfoDouble(ACCOUNT_PROFIT);
BalansNew== AccountInfoDouble(ACCOUNT_BALANCE); //Текузее значение баланса
if (BalansNew>BalansMax) BalansMax=BalansNew;
if (ProfitNew<ProfitMin && BalansNew>=BalansMax) ProfitMin=ProfitNew;
if (ProfitNew<ProfitMin && BalansNew<BalansMax) ProfitMin=ProfitNew-(BalansMax-BalansNew);
}
ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitMin); // Пишем информацию в файл - функция возвращает 1
}
しかし、あるチャートでは正しく表示され、他のチャートでは表示されない。 同時に、チャートのビジュアルも同じである。
コードかロジックに間違いがあったのでしょうが、どれが原因かわかりません。
コードに間違いを発見しました。
BalansNew=AccountInfoDouble(ACCOUNT_BALANCE);
しかし、それでもポティックの計算とテスターの結果が異なる原因を解決するには至りませんでした。
ボリスさんの理論を株式計算で確認したところ、結果もマイナスでした。
if(Analiz_Prosadki==true)
{
if(ContolSavaTXT==1)
{
ProfitNew=0;
ContolSavaTXT=0;
}
if(ContolSavaTXT==0)
{
BalansNew=AccountInfoDouble(ACCOUNT_EQUITY); //Текущее значение баланса
if (BalansNew>BalansMax) BalansMax=BalansNew;
if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax;
if (ProfitNew<ProfitMin) ProfitMin=ProfitNew;
}
ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitNew); // Пишем информацию в файл - функция возвращает 1
}
ところで、1ロットしか取引していないのに、テスターのチャート上でequityとbalanceがずれているのは、どうしたことでしょう。
コードに間違いがありました。
BalansNew=AccountInfoDouble(ACCOUNT_BALANCE);
しかし、それでも、計算されたエクイティとテスターの結果が異なる原因を解決するには至りませんでした。
ボリスさんの理論を株式計算で確認したところ、結果もマイナスでした。
if(Analiz_Prosadki==true)
{
if(ContolSavaTXT==1)
{
ProfitNew=0;
ContolSavaTXT=0;
}
if(ContolSavaTXT==0)
{
BalansNew=AccountInfoDouble(ACCOUNT_EQUITY); //Текущее значение баланса
if (BalansNew>BalansMax) BalansMax=BalansNew;
if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax;
if (ProfitNew<ProfitMin) ProfitMin=ProfitNew;
}
ContolSavaTXT=Printer.Write((string)TimeCurrent(),ProfitNew); // Пишем информацию в файл - функция возвращает 1
}
ところで、1ロットしか取引していない場合、チャート上のテスターでは、equityとbalanceがどのように非同期化されるのかがよくわかりません。
エクイティとバランスがどのようにずれているのか」を理解するためには、バランスとは何か、エクイティとは何かを理解する必要があります。
残高 - アカウントの持分額。
エクイティ - 現在の、口座の変動する金額です。
あなたのテスターにも同じ機能があり、ドローダウンを修正しますが、あなたが望むような形ではありません。
つまり、最大ドローダウンを計算するためには、その値を格納するための静的変数 またはグローバル 変数を宣言し、この変数をあなたのコードのように書き換える必要があるのです。
これが今、あなたが書いたものです...。
if (BalansNew>BalansMax) BalansMax=BalansNew; // Если новое значение эквити больше зафиксированного в прошлый раз - перезапишем значение переменной
// но это не просадка, это максимальная прибыль
if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; // А здесь BalansNew уже равно BalansMax и эта строка не выполняется никогда...
maxとminの2つの変数を作り、そこに値を書き込む必要があります。
そして、ここで声を大にして思うことがあります。当日の分ではなく、注文を閉じるときにファイルに書き込んで、変数を書き換えたほうがいいのでは?このときEquityはbalanceと等しいので、maxとminが書かれている変数をゼロにする必要があります。
エクイティとバランスがどのようにずれているか」を理解するためには、バランスとは何か、エクイティとは何かを理解する必要があります。
残高とは、口座にある一定の資金量のことです。
エクイティ - 現在の、口座の変動する金額です。
今書いているテスターにも同じ機能があり、ドローダウンが修正されますが、思い通りにはいきません。
つまり、最大ドローダウンを計算するためには、その値を格納するための静的変数 またはグローバル 変数を宣言し、この変数をあなたのコードと同じように書き換える必要があるのです。
それが今書いてあることなんですね...。
if (BalansNew>BalansMax) BalansMax=BalansNew; // Если новое значение эквити больше зафиксированного в прошлый раз - перезапишем значение переменной
// но это не просадка, это максимальная прибыль
if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; // А здесь BalansNew уже равно BalansMax и эта строка не выполняется никогда...
maxとminの2つの変数を作り、そこに値を書き込む必要があります。
そして、ここで声を大にして思うことがあります。当日の分ではなく、注文を閉じるときにファイルに書き込んで、変数を書き換えた方がいいのでは?このとき、equityはbalanceと等しく、maxとminが書かれている変数をゼロにする必要があります。
リクエストに応えていただき、ありがとうございました
グローバル変数は実際の市場操作に関係するものです。私はテスト情報が必要で、それが理由で悩んだわけではありません。
残高と資本とは、もちろん分かっているのですが、ドローダウンの計算に失敗しました。 私のコードサンプルを見ると、残高と資金の両方を最大、残高と資金を最小とするようにしたことが分かります。
不等式if (BalansNew<BalansMax) ProfitNew=BalansNew-BalansMax; が満たされないのはなぜだと思いますか?それは新しいバランスの最大値に達したときにバー上で満たされないだけです(または株式 - まだ真実ではない)、しかしその時点で私は利益のドローダウンProfitMin=ProfitNewを修正 します。
一日のファイルを記録することは、最大ドローダウンが通常注文を閉じる瞬間に到達しないため、より関連性が高く、目標はExpert Advisorの作業に必要な平均金額を計算することである。