事前計算された - ページ 10 1...34567891011121314 新しいコメント Alexey Viktorov 2016.10.19 07:47 #91 Dmitry Fedoseev: そんなことはない。数本のバーの接続が切れ、数本のバーがゴミで初期化されなくなります。アレクセイ・コジツィン 上記のドミトリーの言うように、数小節の接続が切れたか...。ところで、prev_calculatedは、接続に失敗した場合にも0を返すのでしょうか?どうやらこの時、確かに通信が途絶えていたようだ。2016.10.19 04:46:13.770 Network '4092672': scanning network finished 2016.10.19 04:45:37.260 Network '4092672': scanning network for access points 2016.10.19 04:45:36.630 Network '4092672': trading has been enabled - hedging mode 2016.10.19 04:45:36.630 Network '4092672': terminal synchronized with MetaQuotes Software Corp. 2016.10.19 04:45:36.000 Network '4092672': previous successful authorization performed from 31.173.80.3 on 2016.10.18 17:51:14 2016.10.19 04:45:36.000 Network '4092672': authorized on MetaQuotes-Demo through Access Point SG Singapore (ping: 583.86 ms) 2016.10.19 04:42:57.680 Network '4092672': connection to MetaQuotes-Demo lostそして、ブレークがあった場合、prev_calculatedは0を返すことがほとんどである。さて、長い休みでしたが、他のprev_calculatedのnullの原因は何でしょうか?この線から。2016.10.18 23:51:34.895 Network '4092672': scanning network finished 2016.10.18 23:51:20.865 Network '4092672': scanning network for access pointsこのような貿易記録以外には、上記のような記録はありません。2016.10.19 00:00:36.066 Trades '4092672': cancel order #103987819 buy stop 0.10 USDJPY at 103.977 sl: 103.377 tp: 104.077また、prev_calculatedの0化回数については、前回の記事で確認できます。 prev_calculated ASCTrend system かなり専門的ですが。MT5、Journlに記録される出力ログについて Alexey Viktorov 2016.10.19 07:58 #92 Alexey Kozitsyn:潜在的には、ここに原因があるのかもしれません。if(rates_total > prev_calculated) { minEquity = 0; maxEquity = 0; } minEquity = NormalizeDouble(fmin((minEquity == 0 ? bal : minEquity), equity), 2); maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);新しいバーが 届いたら、値を0にリセットする--結構です。しかし、その場合、minEquityと0が等しいかどうかをチェックすることになり、これは推奨されません。私の言葉を証明するために、ここにあなたの画像を掲載します。おっしゃるとおり「ゴミ」の値が、ほぼゼロになっていることがおわかりいただけると思います。 もちろん、「ゴミ箱」の値で画像にデータウィンドウを追加した方が良いですよ。なぜこの方法が推奨されないのか、詳しく教えてください。この(minEquity ==0? bal : minEquity)の部分は、minEquity ==0であれば、先に取得したbalの値を返し、 minEquityの値は関数fmin()が終了するまで変化しない。このような書き方は少し危険だとは思いますが...。が、問題はそこではありません。 削除済み 2016.10.19 08:15 #93 Alexey Viktorov:なぜこの方法が推奨されないのか、もう少し詳しく説明してください。この (minEquity ==0? bal : minEquity) の部分は、もし minEquity ==0 ならば、先に得られた bal の値を返します; minEquity の値は関数 fmin() が終了するまで変わりません。この書き方はちょっと危険だということには同意しますが...。が、問題はそこではありません。 minEquity ==0.の場合、同じ数のダブルを比較 することになります。このことが、値が0になったことの説明になるかもしれません。 Alexey Viktorov 2016.10.19 08:40 #94 Alexey Kozitsyn: 具体的には、minEquity==0。ダブった数値の等しさで比較 してるんですね。そう考えると、値が0になったのも納得がいくかもしれません。なるほど、正解はminEquity ==0.0 なんですね.慣れないうちはそして最後の一文は全く理解できない。0にする値は? 削除済み 2016.10.19 08:48 #95 Alexey Viktorov:なるほど、正解はminEquity ==0.0 なんですね.慣れないうちはそして最後の一文は全く理解できない。0にする値は?しかし、暗黙の型変換がエラーの原因になるかどうかはわかりません。実数の型の 比較のことです。すなわちここでは、安全のために、このように書きます。CompareDoubles( minEquity, 0.0 );bool CompareDoubles(double number1,double number2) { if(NormalizeDouble(number1-number2,8)==0) return(true); else return(false); } Alexey Viktorov 2016.10.19 09:04 #96 Alexey Kozitsyn:しかし、私は暗黙の型変換がエラーを引き起こす可能性があるかどうかは知りません。つまり、ここでは、信頼性を高めるために、このように書きます。CompareDoubles( minEquity, 0.0 );bool CompareDoubles(double number1,double number2) { if(NormalizeDouble(number1-number2,8)==0) return(true); else return(false); } はい、私のバージョンでは、小数点以下2桁でお金を数えます。これは、そんなにきめ細かいことをするための見積もりではありません。 削除済み 2016.10.19 09:14 #97 Alexey Viktorov: はい、私のバージョンでは、小数点以下2桁でお金を数えます。これは引用ではないので、そんなに正確なことは言えません。几帳面さではなく、正確さが重要なのです。あなたの場合、バッファにゼロの値が書き込まれることになるかもしれません。そのような精度を求めないのであれば、この方法でやってください。if(rates_total > prev_calculated) { minEquity = -1.0; maxEquity = 0.0; } minEquity = NormalizeDouble(fmin((minEquity < 0 ? bal : minEquity), equity), 2); maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);そうすれば、エラーは発生しません。 Alexey Viktorov 2016.10.19 09:26 #98 Alexey Kozitsyn:几帳面さではなく、正確さが重要なのです。あなたの場合、バッファにゼロの値が書き込まれることになるかもしれません。その精度を求めないのであれば、この方法でやってください。if(rates_total > prev_calculated) { minEquity = -1.0; maxEquity = 0.0; } minEquity = NormalizeDouble(fmin((minEquity < 0 ? bal : minEquity), equity), 2); maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);その場合、誤りはないでしょう。どうして私はこんなにバカなんだろう?minEquityを0以外の値で初期化した方が良いとは、どうしてわからなかったのでしょう。そうすれば、すべてが簡単になる......。if(rates_total > prev_calculated) { minEquity = DBL_MAX; maxEquity = 0.0; } minEquity = NormalizeDouble(fmin(minEquity, equity), 2); maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);maxEquity =DBL_MIN を使用することもできます。 削除済み 2016.10.19 09:27 #99 Alexey Viktorov:どうして私はこんなにバカなんだろう?minEquityを0以外の値で初期化した方が良いとは、どうしてわからなかったのでしょう。そうすれば、すべてが簡単になるのに・・・。if(rates_total > prev_calculated) { minEquity = DBL_MAX; maxEquity = 0.0; } minEquity = NormalizeDouble(fmin(minEquity, equity), 2); maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2); まあ...ぐらい Alexey Viktorov 2016.10.19 09:31 #100 Alexey Kozitsyn: まあ...それとも... それはあまり問題ではありません。どうにか回避できてはいるが、インジケータ起動時にインジケータバッファに ゴミが入るのはおかしい。 1...34567891011121314 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そんなことはない。数本のバーの接続が切れ、数本のバーがゴミで初期化されなくなります。
上記のドミトリーの言うように、数小節の接続が切れたか...。ところで、prev_calculatedは、接続に失敗した場合にも0を返すのでしょうか?
どうやらこの時、確かに通信が途絶えていたようだ。
2016.10.19 04:45:37.260 Network '4092672': scanning network for access points
2016.10.19 04:45:36.630 Network '4092672': trading has been enabled - hedging mode
2016.10.19 04:45:36.630 Network '4092672': terminal synchronized with MetaQuotes Software Corp.
2016.10.19 04:45:36.000 Network '4092672': previous successful authorization performed from 31.173.80.3 on 2016.10.18 17:51:14
2016.10.19 04:45:36.000 Network '4092672': authorized on MetaQuotes-Demo through Access Point SG Singapore (ping: 583.86 ms)
2016.10.19 04:42:57.680 Network '4092672': connection to MetaQuotes-Demo lost
そして、ブレークがあった場合、prev_calculatedは0を返すことがほとんどである。
さて、長い休みでしたが、他のprev_calculatedのnullの原因は何でしょうか?
この線から。
2016.10.18 23:51:20.865 Network '4092672': scanning network for access points
このような貿易記録以外には、上記のような記録はありません。
また、prev_calculatedの0化回数については、前回の記事で確認できます。
潜在的には、ここに原因があるのかもしれません。
{
minEquity = 0;
maxEquity = 0;
}
minEquity = NormalizeDouble(fmin((minEquity == 0 ? bal : minEquity), equity), 2);
maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);
新しいバーが 届いたら、値を0にリセットする--結構です。しかし、その場合、minEquityと0が等しいかどうかをチェックすることになり、これは推奨されません。
私の言葉を証明するために、ここにあなたの画像を掲載します。おっしゃるとおり「ゴミ」の値が、ほぼゼロになっていることがおわかりいただけると思います。
もちろん、「ゴミ箱」の値で画像にデータウィンドウを追加した方が良いですよ。なぜこの方法が推奨されないのか、詳しく教えてください。
この(minEquity ==0? bal : minEquity)の部分は、minEquity ==0であれば、先に取得したbalの値を返し、 minEquityの値は関数fmin()が終了するまで変化しない。
このような書き方は少し危険だとは思いますが...。が、問題はそこではありません。
なぜこの方法が推奨されないのか、もう少し詳しく説明してください。
この (minEquity ==0? bal : minEquity) の部分は、もし minEquity ==0 ならば、先に得られた bal の値を返します; minEquity の値は関数 fmin() が終了するまで変わりません。
この書き方はちょっと危険だということには同意しますが...。が、問題はそこではありません。
具体的には、minEquity==0。ダブった数値の等しさで比較 してるんですね。そう考えると、値が0になったのも納得がいくかもしれません。
なるほど、正解はminEquity ==0.0 なんですね.慣れないうちは
そして最後の一文は全く理解できない。0にする値は?
なるほど、正解はminEquity ==0.0 なんですね.慣れないうちは
そして最後の一文は全く理解できない。0にする値は?
しかし、暗黙の型変換がエラーの原因になるかどうかはわかりません。実数の型の 比較のことです。すなわちここでは、安全のために、このように書きます。
bool CompareDoubles(double number1,double number2)
{
if(NormalizeDouble(number1-number2,8)==0) return(true);
else return(false);
}
しかし、私は暗黙の型変換がエラーを引き起こす可能性があるかどうかは知りません。つまり、ここでは、信頼性を高めるために、このように書きます。
bool CompareDoubles(double number1,double number2)
{
if(NormalizeDouble(number1-number2,8)==0) return(true);
else return(false);
}
はい、私のバージョンでは、小数点以下2桁でお金を数えます。これは引用ではないので、そんなに正確なことは言えません。
几帳面さではなく、正確さが重要なのです。あなたの場合、バッファにゼロの値が書き込まれることになるかもしれません。そのような精度を求めないのであれば、この方法でやってください。
{
minEquity = -1.0;
maxEquity = 0.0;
}
minEquity = NormalizeDouble(fmin((minEquity < 0 ? bal : minEquity), equity), 2);
maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);
そうすれば、エラーは発生しません。
几帳面さではなく、正確さが重要なのです。あなたの場合、バッファにゼロの値が書き込まれることになるかもしれません。その精度を求めないのであれば、この方法でやってください。
{
minEquity = -1.0;
maxEquity = 0.0;
}
minEquity = NormalizeDouble(fmin((minEquity < 0 ? bal : minEquity), equity), 2);
maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);
その場合、誤りはないでしょう。
どうして私はこんなにバカなんだろう?minEquityを0以外の値で初期化した方が良いとは、どうしてわからなかったのでしょう。そうすれば、すべてが簡単になる......。
{
minEquity = DBL_MAX;
maxEquity = 0.0;
}
minEquity = NormalizeDouble(fmin(minEquity, equity), 2);
maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);
maxEquity =DBL_MIN を使用することもできます。
どうして私はこんなにバカなんだろう?minEquityを0以外の値で初期化した方が良いとは、どうしてわからなかったのでしょう。そうすれば、すべてが簡単になるのに・・・。
{
minEquity = DBL_MAX;
maxEquity = 0.0;
}
minEquity = NormalizeDouble(fmin(minEquity, equity), 2);
maxEquity = NormalizeDouble(fmax(maxEquity, equity), 2);
まあ...それとも...