[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 1069

 
goldtrader:

では、個別の(それぞれの)取引におけるドローダウンが、バランス/エクイティのグラフに表示されないことを証明する簡単な実験をしてみましょう。

2行のコードでExpert Advisorを書いてみましょう。

2010年5月1日から2010年8月1日までのEURUSD D1チャートで実行してみましょう。1.2200でユーロをストップなしで買い、1.3000で利食いする必要があります。バランス/エクイティチャートと可視化チャートでドローダウンを確認できます。

ご覧のように、可視化チャート(スクリーンショットの上)ではドローダウンが表示され、バランス/エクイティ・チャートでは表示されません。そこにあるのは、たった一つのトレード。テスターレポートを見てみよう。

テスターレポートでは、ドローダウンはFIGURINGとなっています。

これで疑問は晴れたでしょうか?

.

おそらく、「なぜそのようにするのか」という疑問があると思いますが、これは私たちユーザーではなく、MT4の開発者に向けた質問です。私の意見では、バランス・エクイティ・チャートはオーバーベットを表示しないので、これは間違っています。

アレクサンダーさん、ありがとうございました。とても詳しくて丁寧な仕事ぶり、本当にありがとうございました。MT4の開発者はここに答えないのですか?
 

同僚よ、もしかしたら誰かがこれに出くわしたかもしれない。

同時に開くファイルの数に制限はありますか?4はOK、5は開いているが書き込まない。何が問題なのかがわからない。

 

問題があるのです。指標となるコリドーの上限(買い)または下限(売り)を通過したら、取引を開始する必要があります。

double barier = 0.08; // 回廊の境界線.

R() - インジケータ関数

上下限の境界を 越えた状態を確認する機能。

int RFilter()

{

if ( R(2)> -barier && R(1) < -barier ) return (-1);

if ( R(2)< barier && R(1)> barier ) return (1);

}

インジケータが境界線を通過すると、エキスパートアドバイザーは直ちにポジションをオープンします(どの境界線であっても)。上がれば買い、下がれば売り。

 
dzhini:

問題があるのです。取引は、インジケータのコリドーの上限(買い)または下限(売り)を通過するときに開始される必要があります。

...

実際には、インジケータが境界線を通過すると、EAが直ちにポジションを開くことが起こります(どれでもかまいません)。上がれば買い、下がれば売り。

バリアブル変数の値を少し増やす
 
costy_:

目利きの方に質問です

テスター用に独自の取引ツールを作成することはできますか?

EURUSD30_2.fxtを私のに置き換えるなどしてください。

metaquotes ╱╱2.fxt

simple_csv2fxtを作成しようとしましたが、testerが独自のファイルに置き換えてしまいました。

もしかしたら、どなたか作成経験のある方がいらっしゃるかもしれませんね、ありがとうございます。

あるある、あるある。そして、良い 記事があります。
 
Reshetov:
バリアブル変数の値を少し増やす
役に立たなかった。符号の割り当てミスが原因ではないか?
 
dzhini:
参考にならない。符号の割り当てミスが原因ではないか?

明らかに情報量が少ないので、コーヒーのカスでも読んでください。

1. インジケータまたはオシレータ。

2.オシレーターの場合、リミットがあるのかないのか?もしそうなら、その高みと低みは何なのか?

3.おそらく問題は、上記の関数のコードではなく、その解釈のコードにあるのではないでしょうか?

ここにはテレパスはいないし、あなたが持っている必要な情報はすべて分類されているので、質問が答えになります。つまり、提供された情報に基づけば、変数を増やせば問題は解決したはずです。

 
Reshetov:

明らかに情報不足なので、コーヒーのカスでも読んでください。

1. インジケータまたはオシレータ。

2.発振器であれば、制限されているのかいないのか?もしそうなら、その最大値と最小値は?

3.おそらく問題は、上記の関数のコードではなく、その解釈のコードにあるのではないでしょうか?

ここにはテレパスはいないし、必要な情報はすべて秘密とマークされているので、質問が答えになるのです。I.e. 一見して、提供された情報から判断すると、変数を増やせば問題が解決するはずです。

これは、次のような式を持つ指標です。

double R(int shift)
{
double coef1 = 100.0 * (iMA(NULL, 0, perfast, 0,MODE_LWMA, PRICE_CLOSE, shift) - iMA(NULL, 0, perslow, 0, MODE_LWMA, PRICE_CLOSE, shift)))* iATR(NULL, 0, perslow, shift);
double coef2 = coef1 / iMA(NULL, 0, perslow, 0, MODE_LWMA, PRICE_CLOSE, shift) / iATR(NULL, 0, perslow, shift)です。
double main =(MathExp(2.0 * coef2) - 1.0) / (MathExp(2.0 * coef2) + 1.0);

を返します(main)。

}

制約がある。(-1;1)

 
dzhini:

この数式を使ったインジケーターです。

double R(int shift)
{
double coef1 = 100.0 * (iMA(NULL, 0, perfast, 0,MODE_LWMA, PRICE_CLOSE, shift) - iMA(NULL, 0, perslow, 0, MODE_LWMA, PRICE_CLOSE, shift)))* iATR(NULL, 0, perslow, shift);
double coef2 = coef1 / iMA(NULL, 0, perslow, 0, MODE_LWMA, PRICE_CLOSE, shift) / iATR(NULL, 0, perslow, shift)です。
double main = (MathExp(2.0 * coef2) - 1.0) / (MathExp(2.0 * coef2) + 1.0);

を返します(main)。

}

制約がある。(-1;1)

コメントに記載されている条件に従って、機能が正しく動作することが必要です。

int RFilter()

{

if ( R(2)> -barier && R(1)< -barier ) return (-1); // 前のバーの指標値が下のバーより高く、現在のものがこのバーより低い場合、ショートポーズをとる。

if ( R(2)< barier && R(1)> barier ) return (1); // インディケータ値が前のバーで上限バリアの下にあり、現在のバーでその上にある場合、ロングポーズをとる。

return(0); // それ以外の場合は何もしない。

}

 
Reshetov:

そうすれば、コメントにある条件に対して、あなたの関数が正しく動作するはずです。

int RFilter()

{

if ( R(2)> -barier && R(1) < -barier ) return (-1); // 前のバーの指標値が下のバーより高く、現在の指標がこのバーより低い場合、ショートポーズをとる。

if ( R(2)< barier && R(1)> barier ) return (1); // インディケータ値が前のバーで上限バリアの下にあり、現在のバーでその上にある場合、ロングポーズをとる。

return(0); // それ以外の場合は何もしない。

}

でも、うまくいかない :(