"Take Ask and Bid. "で、平均価格を算出する。スプレッドが奇数(3,5,7,9など)の場合は、平均価格をBidに近づけて等価する。"
タスクが設定されていない。
- 異様な広がりとはどういうことか。1,3,...,9 timesPoint か 1,3,...,17,57 times Point か? 四捨五入は単位セグメント内で動作する...
- closer to the Bid "とはどういう意味ですか?特に、スプレッドが43倍のPointなどの場合。Bidと何を同列に扱うかという話?
まず問題を明確にして、初めて明確な意思決定ができるのです。
同時に、偶数・奇数の話をしているのだから、この概念が意味を持つ整数に行くのが筋であろう。
doubleAsk,Bid,Middle; // Уже известные курсы Ask и Bid, вычисляемый средний курс int Mash,Spr; // Множитель перехода к целым числам. Для 4-разрядного EURUSD 10000. И целочисленный спред
Mash=MathRound(1.0/_Point); Spr=MathRound((Ask-Bid)*Mash); // Целочисленный спред // Придаем конкретность среднему курсу. Предполагаем, что "ближе к Бид" значит "ближайший меньший среднего арифметического Ask и Bid, кратный Point" Spr=Spr >> 1; // Целочисленный спред, деленный на 2 с отбрасыванием остатка Middle=Bid+Spr*_Point;
// Если предположение неверно, канва последующих разборов такая if ((Spr & 1) != 0)) { // Спред нечетный } else { // Спред четный }
はい。
ありがとうございました。
では、なぜ正規化やMathFloorがなくても動作するのでしょうか?
入力が0.95の場合?
{
double ask2 = 1.55557, ask3 = 1.55558, bid = 1.55555;
Print("(ask2 + bid)/2 = ", (ask2 + bid)/2);
Print("(ask3 + bid)/2 = ", (ask3 + bid)/2);
int avPrice_2 = (int)NormalizeDouble((ask2/_Point + bid/_Point)/2, 0);
int avPrice_3 = (int)NormalizeDouble((ask3/_Point + bid/_Point)/2, 0);
Print("avPrice_2 = ", avPrice_2);
Print("avPrice_3 = ", avPrice_3);
}/*******************************************************************/
2017.02.27 00:03:54.456 00 (EURUSD.m,H1) (ask3 + bid)/2 = 1.555565
2017.02.27 00:03:54.456 00 (EURUSD.m,H1) avPrice_2 = 155556
2017.02.27 00:03:54.456 00 (EURUSD.m,H1) avPrice_3 = 155557
"Take Ask and Bid. "で、平均価格を算出する。スプレッドが奇数(3,5,7,9など)の場合は、平均価格をBidに近づけて等価する。"
タスクが設定されていない。
- 異様な広がりとはどういうことか。1,3,...,9 timesPoint か 1,3,...,17,57 times Point か? 四捨五入は単位セグメント内で動作する...
- closer to the Bid "とはどういう意味ですか?特に、スプレッドが43倍のPointなどの場合。Bidと何を同列に扱うかという話?
まず問題を明確にして、初めて明確な意思決定ができるのです。
同時に、偶数・奇数の話をしているのだから、この概念が意味を持つ整数に行くのが筋であろう。
double Ask,Bid,Middle; // Уже известные курсы Ask и Bid, вычисляемый средний курс
int Mash,Spr; // Множитель перехода к целым числам. Для 4-разрядного EURUSD 10000. И целочисленный спред
Mash=MathRound(1.0/_Point);
Spr=MathRound((Ask-Bid)*Mash); // Целочисленный спред
// Придаем конкретность среднему курсу. Предполагаем, что "ближе к Бид" значит "ближайший меньший среднего арифметического Ask и Bid, кратный Point"
Spr=Spr >> 1; // Целочисленный спред, деленный на 2 с отбрасыванием остатка
Middle=Bid+Spr*_Point;
// Если предположение неверно, канва последующих разборов такая
if ((Spr & 1) != 0)) { // Спред нечетный
}
else { // Спред четный
}
"Take Ask and Bid. "で、平均価格を算出する。スプレッドが奇数(3,5,7,9など)の場合は、平均価格をBidに近づけて等価する。"
タスクが設定されていない。
実は、この作業は簡単なようで、小学生でもできる?:-) 私もそう思っていました。
しかし、サーバーからの価格設定やデータの正規化などには、意に介さない暗部があるものです。
私は9年間mqlでプログラミングをしていますが、正規化で問題になったことは一度もなく、1ミリポイントの精度でも常に正しく動作しています。
しかし、高い精度が求められる作業もあります。
そして、条件もあります。
名付けて。
そこで、もし残留があれば(スプレッドが均等でも残留する! :-))、低ポイント、すなわちBidに近い価格を平均化するような方法で価格を正規化しなければならない。
例えば、こんな感じです。
そして、すべてがシンプルに見える?私は2日間、自分が馬鹿でないことを祈り続けました。テール、ダブル、トリブル、ビブルについて 理解する........................。
しかし!同じ計算式で、偶数スプレッドと奇数スプレッドで-状況によっては-計算式が機能しなかった のです。(前述) .
通貨には使えて、石油には 使えないということも含めて。
日本円で動作し、ある時点で米ドルで動作しなくなる可能性が あります。
月の影響を見ているのでは? アフリカの天気は............................?
でも、計算式がうまくいったと確信すると、その1ミリポイントに気づかず、「バン、バン、バン」と 作業してしまい、その1ミリポイントは逃げ出すか、邪魔な2ミリポイントを呼び出すことになるんです。
IMHO
バカ、プログラマー不足、小学生......と思ってくれてもいいんです。といった具合に。
しかし、事実は変わらない。
ダブル値の組み合わせが異なるとエラーが発生します。同時に、フロートですべてがクリアになります。
まだ、わかっていないんです。ヘルプはとても良いもので、いつも助けを求めている、それが普通です。 そして、10年後にはコミュニティに助けを求めるかもしれません。これが普通です。そして、落とし穴がわかっている場合は呼びかけに応じる--これが普通です。
もちろん、そのようなテストをした上で、なぜそうなるのかを自分で理解するために「余分な調査」をすることになります。
皆様、ご対応いただきありがとうございました。
実は、この作業は簡単そうに見えて、小学生でもできるのでは?:-) 私もそう思っていました。
しかし、サーバーから取得した価格やデータの正規化など、意味もなく暗躍しているのです。
私は9年間mqlでプログラミングをしていますが、正規化で問題になったことは一度もなく、1ミリポイントの精度でも常に正しく動作しています。
しかし!同じ計算式で、偶数スプレッドと奇数スプレッドで-状況によっては-計算式が機能しなかった のです。(前述) .
異なる組み合わせで、2つの値を使用すると、エラーが発生します。同時に、フロートですべてがクリアになります。
Metakvoteによるデータの正規化は、一般的にどのような関係があるのでしょうか?この用語はプログラマーによって意味が異なり、丸めは全くしない。例えばIEEE規格754はこちら(http://www.softelectro.ru/ieee754.html)をご覧ください。 正規化されていない実数は、4バイト長の場合は1.17549421*10^(-38)まで、8バイト長の場合は4...*10^(-324)までですが、非常に稀で、もちろん授業の計算でも遭遇することはないでしょう。OrderSend を呼び出す必要がある場合は、この関数の要件に従って丸め込んでください。タスクで必要になるまで丸めを使用する必要はありません。
エラーはdoubleやfloatの形式ではなく、使用する演算で発生します。その数式で課題が解けなかったということは、その数式が課題に適していないことを物語っています。それ以上はない。正規化しない通常の計算では、どのようなエラーが発生するのか教えてください(上の投稿の部分です)。
Spr=MathRound((Ask-Bid)/_Point); Spr=Spr >>1; Middle=Bid+Spr*_Point。
実は、この作業は簡単なようで、小学生でもできる?:-) 私もそう思っていました。
しかし、サーバーから取得した価格やデータの正規化などには、そんな意味もないような闇があるのです。
私は9年間mqlでプログラミングをしていますが、正規化で問題になったことは一度もなく、1ミリポイントの精度でも常に正しく動作しています。
しかし、高い精度が求められる作業もあります。
そして、条件もあります。
名付けて。
そこで、もし残留があれば(スプレッドが均等でも残留する! :-))、低ポイント、すなわちBidに近い価格を平均化するような方法で価格を正規化しなければならない。
例えば、こんな感じです。
そして、すべてがシンプルに見える?私は2日間、自分が馬鹿でないことを祈り続けました。テール、ダブル、トリブル、ビブルについて 理解する........................。
しかし!同じ計算式で、偶数スプレッドと奇数スプレッドで-状況によっては-計算式が機能しなかった のです。(前述) .
通貨には使えて、石油には 使えないということも含めて。
日本円で動作し、ある時点で米ドルで動作しなくなる可能性が あります。
月の影響を見ているのでは? アフリカの天気は............................?
でも、計算式がうまくいったと確信すると、その1ミリポイントに気づかず、「バン、バン、バン」と 作業してしまい、その1ミリポイントは逃げ出すか、邪魔な2ミリポイントを呼び出すことになるんです。
IMHO
バカ、プログラマー不足、小学生......と思ってくれてもいいんです。といった具合に。
しかし、事実は変わらない。
ダブル値の組み合わせが異なるとエラーが発生します。同時に、フロートですべてがクリアになります。
まだ、わかっていないんです。ヘルプはとても良いもので、いつもお願いするのが普通です。 また、10年後に地域の方にお願いすることもあるかもしれません。これが普通です。そして、落とし穴がわかっている場合は呼びかけに応じる--これが普通です。
もちろん、そのようなテストをした上で、なぜそうなるのかを自分で理解するために「余分な調査」をすることになります。
皆様、ご対応いただきありがとうございました。