"先ほども言ったように、資料では「Tick size in points」と謳っていますが、これは明らかに不正確です。値段の単位でも あるのです。"
太字のゴードンの部分がよくわからないのですが・・・。もし説明してくれるなら...
Point = 0.00001としましょう。MODE_TICKSIZEがポイントであれば、例えばMarketInfo(Symbol(),MODE_TICKSIZE) return 1となり、1*Point=1*0.00001=0.00001と解釈されるでしょう。しかし、MarketInfo(Symbol(),MODE_TICKSIZE)が返す値はそうではなく、(例えば)0.00001を返すので、これは価格を表す値であって、Pointsを表す値ではない のです。ドキュメントには「Tick size in points」とありますが、これは明らかに不正確です(おそらくロシア語からの翻訳のミスでしょう)。
switch(CalculatedSymbolType) // Determine the tickvalue for the financial instrument based on the instrument's SymbolType (major, cross, etc)
{
case1 : Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(Symbol(),MODE_BID),6)," (Tick value in the deposit currency - base)"); break;
case2 : Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE),6)," (Tick value in the deposit currency - counter)"); break;
case3 : Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(CalculatedCounterPairForCross,MODE_BID),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Base to Counter)"); break;
case4 : Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(CalculatedCounterPairForCross,MODE_BID),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Base to Counter)"); break;
case5 : Print("Calculated TICKVALUE = ",DoubleToStr(MarketInfo(CalculatedCounterPairForCross,MODE_BID)*MarketInfo(Symbol(),MODE_POINT)*MarketInfo(Symbol(),MODE_LOTSIZE),6)," (Tick value in the deposit currency - ",AccountCurrency()," is Counter to Counter)"); break;
default : Print("Error encountered in the SWITCH routine for calculating tickvalue of financial instrument ",Symbol()); // The expression did not generate a case value
}
gordonの "ほとんど常に "に明確化を追加すると、私はすぐにこれが正しくないFXの金融商品を考えることはできませんが、ブローカーが金属やインデックスなどを提供する場合はほとんど当てはまりません。例えば、Alpari の金の契約では、TICKSIZE は 0.05 です (Pointは 0.01 です)。私の知る限り、MarketInfo(Symbol(),MODE_POINT) = MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS)) となります。
jjcさん、ご回答ありがとうございます。
それは、私たちが10進数を計算や数字の知覚に数学的な慣習として使っているからだと思います。もし、16進数で計算すると、1進数で終わるという便利さがありません。例えば、5cmを何mとするかは、100分の1の換算係数を掛けるだけで良いのです。(5cm * 0.01 --> 0.05m ) -- 10[cmの単位]を10回縦断することになるのです。しかし、16進数で計算した場合。4のモジュラスで6〜16回をフルカウントする必要があります。
つまり、Pointは10進数の変換係数なのです。市場慣例では、例えばGBPUSDの現在の価格 比が1.3535である場合、それは我々/彼らは1ポンドを1.3535米ドルで購入する際の5位の10進変換値が貿易経済にとって重要ではないと判断したからにほかなりません。しかし、その取引がより大きく(おそらくヤード値で)、頻繁に行われるのであれば、我々/彼らはそれを追いかけるでしょう。その場合、我々/彼らは、価格比があるべき最小のペニーにそれを追いかけるでしょう。例えば、1.3535665のように。
だから、私はPointが常にあなたがそれを等しくするように= MathPow(10, -MarketInfo(Symbol(), MODE_DIGITS))になることに同意します。
EDIT : 皆さんすみません、初稿は通りました。ADDで投稿できませんでした。これでよかったら...。
添付の rar ファイルに含まれています。私はあなたが使用法の質問があると確信しています、離れて発射。
フィリップ、感謝してもしきれません!これは凄すぎる!私はこれを理解するのに時間が必要です。でも、一目見ただけで、コメントがすべて明確で、エクセルファイルも問題なく理解できます。これは、私の武器になるものです。この作品をコミュニティのフィリップと共有することは、とても寛大なことです。本当にありがとうございます。
その通りです。しかし、誤差の割合は、単純にスプレッド(ポイント)をアスク価格で割ったものです(通貨ペアによりますが、0.02%~0.05%)...最後の1円まで計算したい場合にのみ重要なのです。
とても興味深いです
あなたの質問が現在書かれているように、簡単な答えはイエスです - USDなしのすべてのクロスは、あなたの基準を満たします。つまり、クロス通貨ペアを提供すると同時に、クロスペアのカウンター通貨と口座の額面通貨を含む必要な通貨ペアを提供しないブローカーに遭遇したことがありますか?
その答えは「ノー」です。それには理由があり、ブローカーは単にできないからです。ブローカーができない理由は、ブローカーはここで説明した方程式と同じ基本的な価格のつながりに縛られているからです。
例えば、お客様がユーロ建ての口座を持っていて、GBPUSDを1ロット購入したとします。GBPUSDのカウンター通貨はUSDです。したがって、GBPUSDのポジションの利益/損失を計算するために、ブローカー(およびお客様)はEURUSDの価格も知る必要があります。(EURはお客様の口座通貨、USDはお客様がポジションを建てたクロスペアのカウンター通貨です)
ブローカーがEURUSDを提供ペアとして持っていない場合、MT4ターミナルはあなたのポジションの変動損益をティックバイティックで計算することができません。したがって、あなたの口座の通貨を含む主要通貨ペアを提供することなく、クロスペアを取引する能力を提供するブローカーを見つけることはありません(あなたの口座の額面との関係)。
はい、私の質問に対する後者の解釈は正しいものです。私の表現が悪かったですね。これで、通貨ペアの 特性について、もう少し理解が深まりそうです。ありがとうございます...
カメオ
"ポイント(MODE_POINT)は最小の 価格変動です"、したがって、明らかにそれは1で終わらなければなりません。
そうですね、ちょっとくだらない説明ですね。しかし、私は、TICK_SIZEが常に1で終わるとは限らないので、ポイントはTICK_SIZEによって特徴的に異なることを強調したかっただけです。ブローカーは、その価値が変動/経済的価値に合うと見るものにサイズを変更します。
"先ほども言ったように、資料では「Tick size in points」と謳っていますが、これは明らかに不正確です。値段の単位でも あるのです。"
太字のゴードンの部分がよくわからないのですが・・・。もし説明が必要なら...
"MODE_TICKVALUE : 基準比率に換算したカウンター・カレンシーの現在値。"
この定義が不明確です...(英語は母国語ではないのでしょうか?)
はい、第二言語です。しかし、それは過去や未来に無意味なおしゃべりの文字列を生成することになると障害であることが証明されていません))))
次回の投稿で説明したいと思います。時間がないので、申し訳ありません。Gordonさん、いつもありがとうございます。太字のゴードンの部分がよくわからないのですが・・・。もし説明してくれるなら...
そのスレッドは矛盾した情報で一杯です。
バローボーイ- 買値および/または売値の変化
Rosh- "新しい価格 "のイベント
kminler- 各ティックは、クローズド・トレードを表します。
puncher- 刻み目は1ピップです。
ティックに関する他のスレッドや議論を読んだ後、私は、ティックに含まれるのは新しいビッドとアスクだけであり、それ自体には価格差がなく、新しい価格だけであり、最後のティックと1ピップの差、ピップ差なし、数ピップ差である可能性があり、特定の価値はないとの結論に達しました。
しかし、現在、1ピップの値を計算する方法を調査しているところ、MarketInfo MODE_TICKVALUEという静的な設定値に出会いました。これは、多くの人がティックについて言うことと矛盾しており、単に価格の変化を伝えるもので、特定の量ではありません。したがって、MODE_TICKVALUEというものがあるはずがなく、多くの人が間違っていて1ティックが実際に1ピップと同じ特定の値を持っていなければ、意味を成さないでしょう。私の問題は、適切な文書がないことです。何が正しくて何が間違っているのか、どうやって見つけるのでしょうか。フォーラムのスレッドには情報がありますが、その多くは事実よりも意見や推測に基づいています。ほとんどの場合、それは重要ではありませんが、このように大雑把で矛盾した情報に基づいてプログラムを書こうとすると、生活が非常に難しくなります。
そうですね、これは私も危惧しているところです。
私の研究のフォローアップをするためにここに戻ってきただけで、明日もう一度これを読まなければなりません。 睡眠不足とPCの前にいる時間の長さで、すでに読書障害に陥っています。
わあ、今、ここの読み物を全部追いかけました。 私は本当に疲れていて、まだこの問題にどう対処したらよいのかわかりません。
私の懸念が理解されたようなので、簡単に言いますが、EAがどのシンボルであっても、最小値から次の値への値動き(別名、x.0001からx.0002まで)を正確に計算する方法が欲しいのです。(例えば、100,000の契約と400:1のレバレッジの場合、EURUSDは10コストと予想されます。
その代わり、私は2つのマニュアル取引の達人マネーマネジメント式を持っています私はピップ値を取得し、2セットのマネーマネジメント関数を作成するためにあなたの関数を 使用して適用することができます。 私は他の方法も研究しています。 私が考えているのは、様々な達人に基づいた選択肢を含むマネー・マネージャー・パッケージを作り、ユーザーが自分に合ったものを選択できるようにすることです。
だから、誰かが私にピップ値を得ることができる関数を考え出すことができれば、私は本当に感謝します。 正直、MT4の標準機能でないのが不思議なくらいです。
pointが例えば1.1234-1.1233の値で、その結果の貨幣価値を出してくれるのなら、これは私が求めているものです。 私にとって、ここでのポイントという用語は、ピップという用語と同じように良いものです。
私はレバレッジの値を変更できるようにしたいので、これはパラメータにする必要があります。
さて、もう53時間も起きているのですから、少し休まないといけませんね。 新しいリリースのための打ち込みに忙しく、完全に洗脳されています。
だから、私は簡単に言うと、私たちは私の懸念を理解しているように見えるので、私は正確にEAがあるかもしれないシンボルに従って最小値の1から次(別名x.0001からx.0002まで)の価格変動の値を計算する方法が欲しいという提案はまだ残っています。
6ページにわたって語られたことを一部要約すると、価格の最小の動きはMODE_TICKSIZEで与えられ、全ロットあたりの現金価値はMODE_TICKVALUEで与えられます。ただし、3つの注意点があります。
例えば、Point = 0.00001 とします。MODE_TICKSIZE がポイント単位であれば、たとえば MarketInfo(Symbol(),MODE_TICKSIZE) が 1 を返すように すれば、1*ポイント = 1*0.00001=0.00001 と解釈されるでしょう。しかし、MarketInfo(Symbol(),MODE_TICKSIZE)が返す値はそうではなく、例えば0.00001を返すので、これは価格を表す値であって、Pointsを表す値ではありません。これは明らかにドキュメントのミスです(おそらくロシア語からの翻訳のミスでしょう)。
この場合の桁数は、Pointを整数で表します。
私の懸念が理解されたようなので簡単に言いますが、EAがどのシンボルであっても、最小値から次の値への値動き(別名、x.0001からx.0002まで)を正確に計算する方法が欲しいという申し出はまだ残っています。(例えば、100,000の契約と400:1のレバレッジの場合、EURUSDのコストは10またはその程度になると予想されます。
5ページ目に添付したrarファイルに含まれるincludeファイルをチェックしてみてください...私があなたの質問を誤解していなければ、この両方を行います。
edit: 具体的には以下のようなコードです。
Analyze Currency Symbol 2010.06.07.mqh "というタイトルのインクルードファイルを使って、tickvalueの 場合は、次のようになります。
1. intSymbolType()関数を 呼び出す。
int CalculatedSymbolType=SymbolType();
2. CounterPairForCross()関数を呼び出します。
string CalculatedCounterPairForCross=CounterPairForCross();
次に、そのシンボルの現在の市場価格でのtickvalueを計算します。
通貨記号の解析 2010.06.07.mqh」というタイトルのインクルードファイルを使ってレバレッジを かける場合、次のようになります。
1. int SymbolType()関数を呼び出す。
int CalculatedSymbolType=SymbolType();
BasePairForCross()関数を呼び出します。
string CalculatedBasePairForCross=BasePairForCross();
次に、SymbolLeverage() を呼び出して、シンボルの現在の市場価格でのシンボル固有のレバ レッジを計算します。
MODE_TICKSIZEは ポイント数で、正確にはPoint(s)です。MODE_TICKSIZEは常にPointのX倍です。1、2、5、35などです。[...]