The Collective FXのデモフィードを見れば、問題の範囲がわかると思いますが、そこでは、異なる流動性プロバイダーの独立したフィード(複数のソースからの単一の合意フィードとは対照的)を、それぞれ独自の通貨ペアサフィックス(ついにサフィックスの用途が見つかったか)で組み合わせてテストしています。つまり、1つのプラットフォームの中で、EURUSD_fxやEURUSDm、EURUSD_dbfxを好きなように選択することができるようになるのです。これだけでも、4桁の価格設定と5桁の価格設定のものがあり、戦略に大きな穴が開くことになる。
if (Digits == 3 || Digits == 5)」は、2種類のブローカー、つまり全ピップスフィードと1/10ピップスフィードを持つブローカーだけを取得するという単純な前提で動作するため、ほぼすべてをカバーすることになります。このケースは、2/3/4/5の通貨ペアとブローカーをカバーしています。
私は、壊れないフールプルーフのコードを書こうとしているのです。
もしフールプルーフを求めるのであれば、私はsymbols.rawのファイル構造には賭けない。これは「内部的」なもので、文書化されていないファイル構造なんだ。将来のバージョンで変更されないという保証はない。
7bitさん、こんにちは。
防弾コードを作ろうとするのは正しいと思いますが、常に限界があります。
The Collective FXのデモフィードを見れば、問題の範囲がわかると思いますが、そこでは、異なる流動性プロバイダーの独立したフィード(複数のソースからの単一の合意フィードとは対照的)を、それぞれ独自の通貨ペアサフィックス(ついにサフィックスの用途が見つかったか)で組み合わせてテストしています。つまり、1つのプラットフォームの中で、EURUSD_fxやEURUSDm、EURUSD_dbfxを好きなように選択することができるようになるのです。これだけでも、4桁の価格設定と5桁の価格設定のものがあり、戦略に大きな穴が開くことになる。
if (Digits == 3 || Digits == 5)」は、2種類のブローカー、つまり全ピップスフィードと1/10ピップスフィードを持つブローカーだけを取得するという単純な前提で動作するため、ほぼすべてをカバーすることになります。このケースは、2/3/4/5の通貨ペアとブローカーをカバーしています。
参考までに、例外となるようなケースを見たことがありますか?金の場合、ずっと2桁の気配値で、新しい1/10pipブローカーは3桁で気配値を出しているので、このケースでも十分カバーできます。
例外を見つけたら、そのように処理し、その特定の問題をハードコードして、解決策を見つけることをお勧めします。
ゴールドの場合、ずっと2桁の提示で、新しい1/10pipブローカーは3桁で提示するので、このケースでも十分カバーできます。
この時、私は「3か5」のアプローチは根本的な欠陥があるに違いないと判断し、より良いものを探し始めました。
4桁のブローカーで1桁のゴールドを見たことがあります。[これは、私が「3桁か5桁か」というアプローチに根本的な欠陥があると判断し、何か良い方法はないかと探し始めた瞬間でした。
一般的に3桁、5桁のブローカーであるAlpari UKでは、金は0.05のティックサイズで2DPに呈示されます。このフォーラムのどこかで、米国債を取引している人が3DPにクォートされているという記述を見たことがあります。しかし、そのような場合、ティックサイズは0.001ではありません。
一つの可能なルートは、シンボルの精度が3/5桁であることと、ティックサイズが0.001/0.00001であることを確認することです。あるいは、正確に何を達成しようとしているかによりますが、最初の6文字が2つの既知の通貨記号で構成されていることをチェックすることによって、FX通貨ペアを 検出することを試みることもできます(つまり、認識された通貨のハードコードされたリストを使用する)。また、MODE_PROFITCALCMODEを使用して、先物/株式/その他とは対照的にFXシンボルを検出することができるかもしれませんが、これはブローカー間で信頼できない可能 性があります。
私は今、あまりにADDでこれを理解することができません :)), しかし、誰かが興味を持っている場合、私が参照しているいくつかのリンクは次のとおりです。
- Aisから。LotSize,
- fbjから :レバレッジ、マージンなど
解答のセオリーは1ページの一番下にあります。みなさんがくだらないと思ってわざわざコメントしなかったのでなければ、
。
個人的な話ですが、先の投稿は理解できませんでした。7bitの元の質問は、次のようなシナリオをどのように扱うかを尋ねているのだと思います:「ユーザーが値をpipsで入力する外部パラメータが あります。場合によっては、ユーザーが考えているピップサイズはブローカーが報告するMODE_TICKSIZEと異なります。例えば、ブローカーは0.00001のティックサイズを持っていますが、ユーザーはピップ0.0001を呼び出しています。ユーザーの心理を読み取り、ユーザーが入力したピップ値をいつ、どれだけ調整する必要があるかを判断する信頼性の高い方法はありますか?ほとんどのブローカーがシンボルを5DPに引用しているにもかかわらず、例えばEURUSDの1ピップは一般に0.0001と見なされるという半恣意的な慣習の問題なのです。
EDIT: ...これが金などが厄介な理由です、合意された慣習が少ないからです。Alpari UKでは、金は0.05刻みで動いています。もし、トレーダーを対象に「これは何ピップスか」というアンケートをとったら、次の4つの答えにそれぞれそれなりの票数が集まると思うんです。5、1、0.5、0.05です。
単純に(数学的にはそれほど単純ではないかもしれませんが)、与えられた価格に対して1ポイントが何であるかを計算し、それが価格のどの桁にあるかを決定すればよいのではないでしょうか?
これを実現する簡単な方法は、ある価格に1点を加え、それを自分の乗数+同じ価格と比較し、結果が同じでなければ乗数を増やし、それらが一致するまでループさせることです。
Ruptor,
微妙な表現で、初めて読んだときはピンと来なかったかも。今でもそうです))。もう少し詳しくお願いします。
GCIのようなブローカーは、S&P500、IBM、Intel、Disneyのような未来のシンボルもリストアップしています。
この場合、百聞は一見にしかずです。pipxは、1ポイントを1/10000にするためにポイントを掛けるもので、通常の取引に使われる値です。
通貨がそのペアに対してその価値の10倍も上下に動けば、それはまだ馬鹿にできないが、それはFXのブローカー桁に不浸透だと私は思う。
[...] これはまだ、通貨がそのペアに対してその価値の10倍上下に動く場合、馬鹿にできないが、FXのブローカー桁には不滅だと思う。
これには率直に言って困惑しています。例えば、USDJPYの価格が90以下になった場合、このコードは3/5DPブローカーで異なるpipx値を報告し始めるでしょう。
現時点では、USDJPYが約92.5で、Point = 0.001の3/5DPブローカーで、tmpx/pipxは次のように評価されます。
もしUSDJPYの価格が90を下回ったら(例えば89.5)、評価は次のようになる:
- 89.5 / 10000 = 0.00895
- 0.00895 / 0.001 = 8.95
- MathCeil() は tmpx を 9 に丸めます。
- pipx は 10 ではなく 1 に設定されたままです
言い換えれば、私が完全に理解していない理由で、このコードのpipの定義は価格の 変化に敏感で、その倍率はブローカーの設定に基づくのではなく(単に)価格に基づいて1桁から別の桁に反転します。この1週間、時間帯によって異なる結果が出たことでしょう。2/4DPブローカーでは、pipxは1〜10の間で変化するのではなく、ずっと1のままです。