//+------------------------------------------------------------------+//| ChartEvent function |//+------------------------------------------------------------------+voidOnChartEvent(constint id, // идентификатор событияconstlong &lparam, // параметр события типа longconstdouble &dparam, // параметр события типа doubleconststring &sparam) // параметр события типа string
{
if(id==CHARTEVENT_MOUSE_MOVE)
{
int subwin =WRONG_VALUE; // Номер окна, в котором находится курсорdatetime time =NULL; // Время соответствующее координате Xdouble level =0.0; // Уровень (цена) соответствующий координате Y//---if(ChartXYToTimePrice(0,(int)lparam,int(dparam),subwin,time,level))
{
int bars_total=Bars(Symbol(),Period(),time,TimeCurrent());
//---Comment("x: ",lparam,"; y: ",(int)dparam,"; subwin: ",subwin,"; time: ",time,"; level: ",level,"\n",
"indicator value: ",buffer2[bars_total]);
}
}
}
例題のMathRandは、スケールの仕組みを示すためだけに作りました。原文では、あるトレーダーの著者の方法論を使って、そこに数値レベルの計算をさせていました。当初は1~5まで作りたかったのですが、MT4でもDRAW_NONEでバッファにそのような値を入れても適切なスケールにならなかったのです。それを負にして、最小 値を0に固定したら、問題は解決しました。MT5にインジケータを移植する際、この解決策も機能しないように見えました。Voldemarさんのおっしゃる通りPointを掛けなければなりませんでした。
ところで、すっかり忘れていました。))
こんな風に試してみてください。
インジケータ計算 >>
あなたの例は曲がっていて、それを直そうとはしない。修正したら確認します。
実使用のためのコードであれば、修正します。しかし、このコードは問題を実証するためだけに作られたものであり、それは成功裏に行われました。きれいにしても、結果には影響しないので、もったいないです。
ところで、すっかり忘れていました。))
こんな風に試してみてください。
indicator_plots=1の場合とINDICATOR_CALCULATIONの 場合の両方を試しました。
PlotIndexSetInteger(1, PLOT_SHOW_DATA, true)に関係なく、2番目のバッファの読みがデータウィンドウから消えて しまいました。
servicedeskにエラーを報告してみて、そこで応答を待つことができます。
indicator_plots=1、INDICATOR_CALCULATIONSの 両方で試しました。
を指定しても、2番目のバッファの読みは、データウィンドウから消えて しまいます。
しかし、スケーリングの問題は、この方法で解決されます。そこで、servicedeskにリクエストを作成し、データウィンドウにそのようなバッファを表示する機能を追加するだけでよいのです。
そして、こんな風にやってみるのもいい。
//---
OnInit()の中で、追加する必要があります。
そこで、単純にデータウィンドウにそのようなバッファを表示する機能を追加するリクエストをservicedeskに作成することができます。
DRAW_NONEバッファ値のロジックは、レンダリング値のロジックとは定義が異なり、グラフィカルな値ではないので、それを考慮したスケーリングは論理的でない、と説明したところです。彼らがどのように問題を解決したいのか、あるいはこのままにしておきたいのか、私には関係ないことです。
DRAW_NONEバッファの値のロジックは、レンダリング値のロジックとは定義上異なり、グラフィカルな値ではないので、それを考慮したスケーリングは論理的でないのです。そして、彼らがこの問題をどう解決したいのか、あるいはこのままにしておきたいのかは、私には関係ないことなのです。
前の記事のオプションは適切ではないのでしょうか?念のため、すべてそのままにしておきます。)
前の記事のオプションは適切ではないのでしょうか?念のため、すべてそのままにしておきます。)
もちろんアドバイスありがとうございます。私も何かヒントを出そうと思えば出しますが、まずはデータウィンドウの値を見ることに抵抗はありません。次に、このインジケータのバッファの 値を他のインジケータやExpert Advisorで使用する必要がありますが、何か、計算用のバッファを作ると、iCustomを通してその値を取得することができなくなるような気がします。
その結果、2つ目のバッファの値にPointを掛けることで問題を解決しています
DRAW_NONEバッファの値のロジックは、レンダリング値のロジックとは定義上異なり、グラフィカルな値ではないので、それを考慮したスケーリングは論理的でないのです。彼らがこの問題をどう解決したいのか、あるいはこのままにしておきたいのか、私には関係ないことです。
すべては、値を表示する場所に依存します。表示を別ウィンドウにした場合、計算されたバッファの値は表示されなくても問題ありません。すべての値がこのウィンドウに収まることに変わりはありません。その結果、スケールが故障してしまうことがあります。
論理的ではない - 同意するが、修正される可能性は低い。
もちろんアドバイスありがとうございます、何か松葉杖を作ろうと思えば私も考えますが、まずはデータウィンドウで値を見ることに抵抗はありません。そして第二に、このインジケータのバッファの 値を他のインジケータやExpert Advisorで使う必要があるのですが、何か、計算用のバッファを作ると、iCustomを通してその値を取得することができなくなるような気がするのです。