"ダミー "からの質問 - ページ 235 1...228229230231232233234235236237238239240241242...277 新しいコメント --- 2013.01.31 14:18 #2341 lazarev-d-m:これに変更 動作しているようです。配列がシリアライズされていない。だから、これなんです。Buffer[i+1]=Buffer[i]+delta;未来窺い同じ理由で、0バールを再計算しないのです。 Denis Lazarev 2013.01.31 15:03 #2342 sergeev:配列がシリアライズされていない。というわけで、これなんです。未来を覗き見る0からスタートしないのと同じ理由で、0バールの再計算はしません。私の0気圧は、計算式に従って計算されていません。Buffer[0]=price[0]; そして、値動きに基づいて、インジケータがトレンドに追いつくようになる価格が指標から離れて移動し、移動しない場合たとえば、ろうそくの指標の"期間"の間に価格をキャッチアップしますが、これは私のためにMAに代わる一種である。 --- 2013.01.31 15:40 #2343 lazarev-d-m: 私にとってはMAの代替品です。 1バー先まで見渡せるので、この選択肢は安心して捨てられます。 Konstantin Chernov 2013.01.31 16:19 #2344 私の最初の指標。シンボルを0から100まで拡大縮小したい。私は正しいことをしているのだろうか?また、現在のバーを再計算しないようにするにはどうしたらよいでしょうか (テスターではカクつきますが、チャート上ではカクつきません)。 #property indicator_separate_window #property indicator_minimum 0 #property indicator_maximum 100 #property indicator_buffers 1 #property indicator_plots 1 //--- plot Label1 #property indicator_label1 "Main" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- indicator buffers double MainBuffer[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- indicator buffers mapping SetIndexBuffer(0,MainBuffer,INDICATOR_DATA); IndicatorSetString(INDICATOR_SHORTNAME,"NormSymbol"); IndicatorSetInteger(INDICATOR_DIGITS,2); ArrayInitialize(MainBuffer, EMPTY_VALUE); //--- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int first,bar,nLowBar=0,nHighBar=0; int nVizCount = (int)ChartGetInteger(0, CHART_VISIBLE_BARS); if(prev_calculated==0) // проверка на первый старт расчёта индикатора { first=0; // стартовый номер для расчёта всех баров } else { first=prev_calculated-1; // стартовый номер для расчёта новых баров } //---- основной цикл расчёта индикатора for(bar=first; bar<rates_total; bar++) { nLowBar =ArrayMinimum(low, bar, nVizCount); nHighBar=ArrayMaximum(high, bar, nVizCount); if(nLowBar>0 && nHighBar>0 && high[nHighBar]-low[nLowBar]!=0) { MainBuffer[bar]=((close[bar] -low[nLowBar])/(high[nHighBar]-low[nLowBar]))*100; } else { MainBuffer[bar]=EMPTY_VALUE; } } //--- return value of prev_calculated for next call return(rates_total); } Yedelkin 2013.01.31 16:37 #2345 Konstantin83: 現在のバーを再計算しないようにする方法 現在のバーの開始時刻を 記憶し、入力されるティックの同じ値と比較します。値が一致しない場合のみ、現在のバーの値を再計算する。私なら初期化ブロックに入れます。 nVizCount = (int)ChartGetInteger(0, CHART_VISIBLE_BARS); で、変数はプログラムのグローバルレベルで宣言されることになる。int first,bar,nLowBar=0,nHighBar=0, nVizCount; Konstantin Chernov 2013.01.31 16:47 #2346 Yedelkin:現在のバーの開始時刻を 記憶し、入力されるティックの同じ値と比較します。値が一致しない場合のみ、現在のバーの値を再計算する。私なら、これを初期化ブロックに入れます。 ありがとうございます。一般的にはこれでいいのでしょうか? Yedelkin 2013.01.31 17:08 #2347 Konstantin83: そして、一般的にはすべて正しいのですか? 他には何も気づいていません。記事からは、同様の構造がうかがえる。ゼロによる除算の チェックがあります。はい、再計算しないように、私の記憶ではprev_calculatedとrates_totalを比較することも可能です。 Konstantin Chernov 2013.01.31 17:48 #2348 Yedelkin:他には何も気づいていません。記事からは、同様の構造がうかがえる。ゼロによる除算のチェックがあります。はい、再計算しないように、私の記憶ではprev_calculatedとrates_totalを比較することも可能です。 ターミナルを閉じてから再起動 すると、インジケータが線を引かないのですが、なぜかわかりますか?他の時間軸に切り替えた場合は、描画されます。 Yedelkin 2013.02.01 06:18 #2349 Konstantin83: インジケーターを表示した端末を終了し、端末を再起動 するとインジケーターが線を描かなくなるのですが、なぜかわかりますか?他の時間軸に切り替えた場合は、描画されます。 端末は、起動時にデータベースをサーバーと同期させるなど、「立ち上がる」ための時間が必要です。同時にインジケータを起動した場合、インジケータ計算の ためのデータがない場合があります。最も簡単な方法は、OnInit()に2〜3秒の遅延を挿入することです。 一般に、問題箇所を検索する際には、重要な情報はすべて印刷することが望ましいとされています。のように if(nLowBar<0) Print("Ошибка, nLowBar=",nLowBar,", prev_calculated=",prev_calculated,", bar=",bar); Yedelkin 2013.02.02 07:38 #2350 Yedelkin: forward666 :ビジュアライゼーションが必要ライブ取引に関するヘルプはまだ見つかっていません。デモ口座でポジションを開いたり閉じたりしてみてください。 ここでは、https://www.mql5.com/ru/forum/6343/page96#comment_419028。 1...228229230231232233234235236237238239240241242...277 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
これに変更
動作しているようです。配列がシリアライズされていない。
だから、これなんです。
Buffer[i+1]=Buffer[i]+delta;
未来窺い
同じ理由で、0バールを再計算しないのです。
配列がシリアライズされていない。
というわけで、これなんです。
未来を覗き見る
0からスタートしないのと同じ理由で、0バールの再計算はしません。
私の0気圧は、計算式に従って計算されていません。
そして、値動きに基づいて、インジケータがトレンドに追いつくようになる
価格が指標から離れて移動し、移動しない場合たとえば、ろうそくの指標の"期間"の間に価格をキャッチアップしますが、これは私のためにMAに代わる一種である。
lazarev-d-m:
私にとってはMAの代替品です。
私の最初の指標。シンボルを0から100まで拡大縮小したい。私は正しいことをしているのだろうか?また、現在のバーを再計算しないようにするにはどうしたらよいでしょうか (テスターではカクつきますが、チャート上ではカクつきません)。
現在のバーの開始時刻を 記憶し、入力されるティックの同じ値と比較します。値が一致しない場合のみ、現在のバーの値を再計算する。
私なら初期化ブロックに入れます。
で、変数はプログラムのグローバルレベルで宣言されることになる。
現在のバーの開始時刻を 記憶し、入力されるティックの同じ値と比較します。値が一致しない場合のみ、現在のバーの値を再計算する。
私なら、これを初期化ブロックに入れます。
他には何も気づいていません。記事からは、同様の構造がうかがえる。ゼロによる除算の チェックがあります。
はい、再計算しないように、私の記憶ではprev_calculatedとrates_totalを比較することも可能です。
他には何も気づいていません。記事からは、同様の構造がうかがえる。ゼロによる除算のチェックがあります。
はい、再計算しないように、私の記憶ではprev_calculatedとrates_totalを比較することも可能です。
端末は、起動時にデータベースをサーバーと同期させるなど、「立ち上がる」ための時間が必要です。同時にインジケータを起動した場合、インジケータ計算の ためのデータがない場合があります。最も簡単な方法は、OnInit()に2〜3秒の遅延を挿入することです。
一般に、問題箇所を検索する際には、重要な情報はすべて印刷することが望ましいとされています。のように
Yedelkin:
ライブ取引に関するヘルプはまだ見つかっていません。デモ口座でポジションを開いたり閉じたりしてみてください。
ここでは、https://www.mql5.com/ru/forum/6343/page96#comment_419028。