標準のインジケーターが上書きされるのか!? - ページ 2 1234567 新しいコメント Forex Trader 2006.10.31 20:34 #11 ロシュ(・∀・)さんの言うとおりです。書きたかっただけなのに、先を越されてしまいました(いつものことですが)。でも。私のインジケータは関係ない、別の問題がある。通貨ペアごとに異なる描画で(データは常にUSDCHFから取得し、常にバーの最初、00分に)、リアルタイムで表示されます。小節番号は常に1です。だから、バグがあるんです。はい、あります。そして、それが修正されるまでは、そのようなものをリスクなくテストして使うことはできません。 実は、私の指標はさらに単純化することができます。単純にUSDCHFのOpen[0]を別ウィンドウで作成し、このインディケータをEURUSDとAUDUSDに接続します。しばらくすると(1時間足チャートでは数時間後)ダイバージェンスが現れ始めるでしょう。 Forex Trader 2006.10.31 20:38 #12 ロシュ(・∀・)さんの言うとおりです。書きたかっただけなのに、先を越されてしまいました(いつものことですが)。でも。私のインジケータは関係ない、別の問題がある。通貨ペアごとに異なる描画で(データは常にUSDCHFから取得し、常にバーの最初、00分に)、リアルタイムで表示されます。小節番号は常に1です。だから、バグがあるんです。はい、あります。そして、それが直るまでは、そのようなものをリスクなくテストして使うことはできない。<br /> translate="no">です。 実は、私の指標はさらに単純化することができます。単純にUSDCHFのOpen[0]を別ウィンドウで作成し、このインディケータをEURUSDとAUDUSDに接続します。しばらくすると(1時間足チャートでは数時間後)乖離が現れ始める。 あなたの作品を見ているだけでも楽しいです :)あなたのスタイルは変わっておらず、明確に書いている...。自分のために :) Forex Trader 2006.10.31 20:55 #13 Quarkのバージョン、手直し。 //+------------------------------------------------------------------+ //| QuarkBug.mq4 | //| Quark | //| http://www.metaquotes.ru/forum/7790/ | //+------------------------------------------------------------------+ #property copyright "Quark" #property link "http://www.metaquotes.ru/forum/7790/" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Lime #property indicator_color2 Aqua #property indicator_color3 Red // indicator parameters extern int nPeriod = 6; double arrOpen[]; double arrMa[]; double arrMyMa[]; int nExtCountedBars = 0; double dUsdChf, dUsdChfPrev; //////////////////////// //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators string strIndicatorShortName = "Test(" + Symbol() + " " + nPeriod + ")"; IndicatorShortName(strIndicatorShortName); // drawing settings SetIndexStyle(0, DRAW_LINE); SetIndexBuffer(0,arrOpen); SetIndexLabel(0,"arrOpen"); SetIndexStyle(1, DRAW_LINE); SetIndexBuffer(1,arrMa); SetIndexLabel(1,"arrMa"); SetIndexStyle(2, DRAW_LINE); SetIndexBuffer(2,arrMyMa); SetIndexLabel(2, "arrMyMa"); IndicatorDigits(MarketInfo("USDCHF",MODE_DIGITS)); // indicator buffers mapping //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { //---- if(Bars <= nPeriod) return(0); nExtCountedBars = IndicatorCounted(); if(nExtCountedBars < 0) return(-1); int nPos = Bars - nExtCountedBars - 1; double dPr = 2.0 / (nPeriod + 1.0); while(nPos > 0) { dUsdChf = iMA("USDCHF", 0, nPeriod, 0, MODE_EMA, PRICE_OPEN, nPos - 1); dUsdChfPrev = iMA("USDCHF", 0, nPeriod, 0, MODE_EMA, PRICE_OPEN, nPos); arrOpen[nPos - 1] = iOpen("USDCHF", 0, nPos - 1); arrMa[nPos - 1] = dUsdChf; arrMyMa[nPos - 1] = arrOpen[nPos - 1] * dPr + arrMyMa[nPos] * (1 - dPr); nPos--; if (nPos<2) Print("nPos=",nPos); } //---- return(0); } //+------------------------------------------------------------------+ Forex Trader 2006.10.31 21:01 #14 もうちょっとだけあるんだけどな :) GBPUSD M5とGBPJPY M5の2つのペアを持っています。そこで気づいたのですが、Quarkは経験豊富なユーザーであるため、エラーをより深く隠してしまったのです :) 指数移動平均の計算式を確認しましたが、正しいです。でも... このコードでは、新しいバーが GBPJPY(インジケータがホバリングしている場所)で開かれると、新しいバーがUSDCHF(Open[]が読み込まれる場所)で開かれると仮定しています。 本当にそうなのでしょうか? そのため、誤差が数日単位で徐々に現れてくるのですが、これは差が蓄積される時間が必要なためです。すべて明確に説明したつもりですが? Forex Trader 2006.10.31 21:17 #15 そして、これがビジュアル結果です。 Forex Trader 2006.10.31 21:37 #16 3つのグラフを使ったバージョンはさらにわかりやすくなっています。 Forex Trader 2006.11.01 07:55 #17 ロッシュ、脱帽です。そして、約束通り、謝罪します。特に開発者の方々へ。 諺にもあるように、「怒った、間違った、全部取り消す」。;о) 本当に「穴」を責める。ところで、あなたの例では、「穴」は2001.12.25の1つだけですが、2005.03.14はすべてのバーが存在しているのが興味深いです。 なぜ8時間分の引用が消えてしまったのか、まだ推測の域を出ませんが、それはまた別の話です。 いずれにせよ、どうもありがとうございました。:о) Forex Trader 2006.11.01 09:42 #18 問題はここで少し異なっている :)<br / translate="no"> 私は2つのペアを持っている - GBPUSD M5とGBPJPY M5。そこで気づいたのですが、Quarkは経験豊富なユーザーであるため、エラーをより深く隠してしまったのです :) 指数移動平均の計算式を確認しましたが、正しいです。でも... このコードでは、新しいバーがGBPJPY(インジケータがホバリングしている場所)で開かれると、新しいバーがUSDCHF(Open[]が読み込まれる場所)で開かれると仮定しています。 本当にそうなのでしょうか? そのため、誤差が数日単位で徐々に現れてくるのですが、これは差が蓄積される時間が必要なためです。すべて明確に説明したつもりですが? 私のスタイルは...どうだろう。もっとうまくやりたかったんです。どうしたんですか?批評を受け付けます。建設的である :) ここでは、MAを一切使わない、新しいバリエーションをご紹介します。iOpen(USDCHF)とiCloseを描画しています。 さて、バーのオープン時間の 違いによる誤差の蓄積についてです。形式的には、Open[0]は何があっても同じです(hh:00で形成されます)。しかし、実際には、チャート上のバーがすでに到着していて(最初のティック、つまり)、USDCHF(指標通貨)がまだ到着していない場合はどうでしょうか。あの...適切に構築されたコードであれば、サーバーに問い合わせると思うのですが、それが行われていない場合、そう、前(1時間前)のOpen(非常に間違っている!!)か最後のティックの値(これもあまり良くない)が使用されます。だから、ロシュの言うことは正しいのかもしれない。 ただし、これで誤差が蓄積されることはありません(MAを構築しているわけではなく、建値を描画しているだけです)。 この問題を調べるために、2つのチャートにiCloseも描画する新しいインジケータを設置しました。 この場合でも、乖離がある可能性があることをお断りしておきます。例えば、ある通貨の最後のティックが非常に遅れていて、チャート上のOpenが、その通貨のCloseよりも早く来る場合です。 この問題を調査するために、私は前のバーのOpenを描画するインジケータに3つ目のバッファを追加しました。これらのデータは、常に時計上で同期されることは誰もが認めるところでしょう。一方の通貨がOpen[0]で、もう一方の通貨がまだOpen[1]でないとは考えにくいですからね。 #property copyright "Copyright Quark" #property link "" #property indicator_separate_window #property indicator_buffers 3 #property indicator_color1 Lime #property indicator_color2 Red #property indicator_color3 Aqua // indicator parameters extern int nPeriod = 6; double arrOpen[]; double arrClose1[]; double arrOpen1[]; int nExtCountedBars = 0; //////////////////////// int init() { string strIndicatorShortName = "Test(" + Symbol() + " " + nPeriod + ")"; IndicatorShortName(strIndicatorShortName); // drawing settings SetIndexStyle(0, DRAW_LINE); SetIndexShift(0, 0); SetIndexStyle(1, DRAW_LINE); SetIndexShift(1, 0); SetIndexStyle(2, DRAW_LINE); SetIndexShift(2, 0); IndicatorDigits(4); // indicator buffers mapping SetIndexBuffer(0, arrOpen); SetIndexBuffer(1, arrClose1); SetIndexBuffer(2, arrOpen1); return(0); } /////////////////////////// int start() { if(Bars <= nPeriod) return(0); nExtCountedBars = IndicatorCounted(); if(nExtCountedBars < 0) return(-1); int nPos = Bars - nExtCountedBars - 1; while(nPos > 0) { arrOpen[nPos - 1] = iOpen("USDCHF", 0, nPos - 1); arrClose1[nPos - 1] = iClose("USDCHF", 0, nPos); arrOpen1[nPos - 1] = iOpen("USDCHF", 0, nPos); nPos--; } return(0); } もし上記の推論が正しいのであれば、他の通貨のデータを使用する際には十分注意する必要があることがわかります。開発者が(ヘルパーでもどこでもいいから)何らかの推奨事項を書いてくれるといいんだけど。 テストの結果は12時間後くらいに掲載します。 Forex Trader 2006.11.01 09:45 #19 クオーク、聞いてなかったのか? Forex Trader 2006.11.01 10:42 #20 <br /> 翻訳="no"> クォーク、聞こえなかったのか。 意味がわからない、説明してくれ。 1234567 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
実は、私の指標はさらに単純化することができます。単純にUSDCHFのOpen[0]を別ウィンドウで作成し、このインディケータをEURUSDとAUDUSDに接続します。しばらくすると(1時間足チャートでは数時間後)ダイバージェンスが現れ始めるでしょう。
実は、私の指標はさらに単純化することができます。単純にUSDCHFのOpen[0]を別ウィンドウで作成し、このインディケータをEURUSDとAUDUSDに接続します。しばらくすると(1時間足チャートでは数時間後)乖離が現れ始める。
あなたの作品を見ているだけでも楽しいです :)あなたのスタイルは変わっておらず、明確に書いている...。自分のために :)
GBPUSD M5とGBPJPY M5の2つのペアを持っています。そこで気づいたのですが、Quarkは経験豊富なユーザーであるため、エラーをより深く隠してしまったのです :) 指数移動平均の計算式を確認しましたが、正しいです。でも... このコードでは、新しいバーが GBPJPY(インジケータがホバリングしている場所)で開かれると、新しいバーがUSDCHF(Open[]が読み込まれる場所)で開かれると仮定しています。
本当にそうなのでしょうか? そのため、誤差が数日単位で徐々に現れてくるのですが、これは差が蓄積される時間が必要なためです。すべて明確に説明したつもりですが?
諺にもあるように、「怒った、間違った、全部取り消す」。;о)
本当に「穴」を責める。ところで、あなたの例では、「穴」は2001.12.25の1つだけですが、2005.03.14はすべてのバーが存在しているのが興味深いです。
なぜ8時間分の引用が消えてしまったのか、まだ推測の域を出ませんが、それはまた別の話です。
いずれにせよ、どうもありがとうございました。:о)
本当にそうなのでしょうか? そのため、誤差が数日単位で徐々に現れてくるのですが、これは差が蓄積される時間が必要なためです。すべて明確に説明したつもりですが?
私のスタイルは...どうだろう。もっとうまくやりたかったんです。どうしたんですか?批評を受け付けます。建設的である :)
ここでは、MAを一切使わない、新しいバリエーションをご紹介します。iOpen(USDCHF)とiCloseを描画しています。
さて、バーのオープン時間の 違いによる誤差の蓄積についてです。形式的には、Open[0]は何があっても同じです(hh:00で形成されます)。しかし、実際には、チャート上のバーがすでに到着していて(最初のティック、つまり)、USDCHF(指標通貨)がまだ到着していない場合はどうでしょうか。あの...適切に構築されたコードであれば、サーバーに問い合わせると思うのですが、それが行われていない場合、そう、前(1時間前)のOpen(非常に間違っている!!)か最後のティックの値(これもあまり良くない)が使用されます。だから、ロシュの言うことは正しいのかもしれない。
ただし、これで誤差が蓄積されることはありません(MAを構築しているわけではなく、建値を描画しているだけです)。
この問題を調べるために、2つのチャートにiCloseも描画する新しいインジケータを設置しました。
この場合でも、乖離がある可能性があることをお断りしておきます。例えば、ある通貨の最後のティックが非常に遅れていて、チャート上のOpenが、その通貨のCloseよりも早く来る場合です。
この問題を調査するために、私は前のバーのOpenを描画するインジケータに3つ目のバッファを追加しました。これらのデータは、常に時計上で同期されることは誰もが認めるところでしょう。一方の通貨がOpen[0]で、もう一方の通貨がまだOpen[1]でないとは考えにくいですからね。
もし上記の推論が正しいのであれば、他の通貨のデータを使用する際には十分注意する必要があることがわかります。開発者が(ヘルパーでもどこでもいいから)何らかの推奨事項を書いてくれるといいんだけど。
テストの結果は12時間後くらいに掲載します。
意味がわからない、説明してくれ。