エラー、バグ、質問 - ページ 32

 
今、私も不具合があるんです・・・。再コンパイルするまでは、最後の小節がレンダリングされます。
 
Interesting:

唯一の正しい方法は、とてもシンプルです。

100%動作するインジケータを書き、それは「シンボル」パラメータなしで古典的に行われます、つまり、現在のシンボルと期間を使用して計算されます。

その後、Expert Advisor(メカニカルワークがある場合)や電卓(NON-CALCULATING INSTRUMENTのグラフに情報を表示したい場合)でこのBASIC電卓が呼び出されます。

追記

そうでなければ、電卓や別の関数で追加計算をし、その結果を現在のグラフデータにリンクさせなければならないとしたら...。

検討に値する提案 です。

しかし、もちろん一般的な論理からすれば、右手で左耳を掻くようなものです(ただし、あなたのためではなく、開発者のためのものです)。

なぜ、非ネイティブの楽器のデータを呼び出す必要があるのですか?

どうせカスタムインジケーターを作って、必要なシンボルから呼び出すのなら、一般的には「買おう」という結論になりますね。

しかし、再び、私はJPYのデータでEURの準備ができている指標を呼び出す(例えば、円には十分な履歴がありません)。

同じインディケータを探しても、この長さのデータが含まれていない場合、どのように表示されるのでしょうか?

Переход на новые рельсы: пользовательские индикаторы в MQL5
Переход на новые рельсы: пользовательские индикаторы в MQL5
  • 2009.11.23
  • Андрей
  • www.mql5.com
Я не буду перечислять все новые возможности и особенности нового терминала и языка. Их действительно много, и некоторые новинки вполне достойны освещения в отдельной статье. Вы не увидите здесь кода, написанного по принципам объектно-ориентированного программирования — это слишком серьезная тема для того, чтобы просто быть упомянутой в контексте как дополнительная вкусность для кодописателей. В этой статье остановимся подробней на индикаторах, их строении, отображении, видах, а также особенностях их написания по сравнению с MQL4.
 

ここで、実行可能な選択肢を紹介します。

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_plots   1
//--- plot LRma
#property indicator_label1  "LRma"
#property indicator_type1   DRAW_LINE
#property indicator_color1  Red
#property indicator_style1  STYLE_SOLID
#property indicator_width1  1
input string             symbol      ="EURJPY";
input int                MA_Period   =25;          // период MA
input int                MA_shift    =0;           // сдвиг индикатора
input ENUM_APPLIED_PRICE price       =PRICE_OPEN;  // тип цены 
//--- indicator buffers
double  LRma[],L[],S[],iPoint,iiMA;

int Lwma,Sma;// Хендлы машек
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexBuffer(0,LRma,INDICATOR_DATA);
   Lwma=iMA(symbol,0,MA_Period+1,MA_shift,MODE_LWMA,price);
   Sma=iMA(symbol,0,MA_Period+1,MA_shift,MODE_SMA,price);
   iPoint=1.0/SymbolInfoDouble(symbol,SYMBOL_POINT);
   iiMA=1.0/MA_Period;
   IndicatorSetString(INDICATOR_SHORTNAME,"LRma_symbol_"+symbol);
//---
   int count=(int)SeriesInfoInteger(symbol,0,SERIES_BARS_COUNT);
   while(BarsCalculated(Lwma)<count){}
   while(BarsCalculated(Sma)<count){}
   ArraySetAsSeries(L,true);
   ArraySetAsSeries(S,true);
   ArraySetAsSeries(LRma,true);
   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 count=rates_total-prev_calculated;
   if(count>1)count=(int)SeriesInfoInteger(symbol,0,SERIES_BARS_COUNT);
   if(count==0)count=1;
   while(BarsCalculated(Lwma)<count){}
   while(BarsCalculated(Sma)<count){}
   if(CopyBuffer(Lwma,0,0,count,L)!=-1)
     {
      if(CopyBuffer(Sma,0,0,count,S)!=-1)
        {
         for(int i=0;i<MathMin(ArraySize(LRma),ArraySize(L));i++)
            LRma[i]=(L[i]-S[i])*6*iPoint*iiMA;
        }
     }
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+
 

もうひとつ、頭の痛いことを付け加えればいい。インジケータがあるチャート上にあるが、 が別のチャートのものである場合、バーの数が異なる可能性があることを考慮する必要があります。

  1. バーの本数が 異なる場合があること。 、すでに考慮されていると思います。
  2. ある楽器の履歴の25本が月曜日で、別の楽器の履歴が金曜日であることを考慮に入れてください。
  3. 最初の2つの問題を解決しても、ある楽器では新しい小節がすでに始まっていて、別の楽器ではまだ始まっていないという、時間による同期が残っています......。
  4. このインジケータは、新しいティックの到着時にのみ動作します。つまり、 数ティックのチャート上でハングアップした場合、他のチャートの0バーが問題となります...。
  5. もし、0本のバーを数えるのをやめて、完了したものだけを数えるようにしたら、さらにいくつかの落とし穴がありそうです...。
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
Документация по MQL5: Доступ к таймсериям и индикаторам / Bars
  • www.mql5.com
Доступ к таймсериям и индикаторам / Bars - Документация по MQL5
 
Prival:

もうひとつ、頭の痛いことを付け加えればいい。あるチャートに表示されているインジケータが、別のチャートから表示されている場合、それを考慮する必要があります。

  1. バーの本数が 異なる場合があること。すでに考慮済みだと思います。
  2. ある楽器の履歴の25本が月曜日で、別の楽器の履歴が金曜日であることを考慮に入れてください。
  3. 最初の2つの問題を解決しても、時間による同期があり、ある楽器では新しいバーがすでに始まっていて、別の楽器ではまだ始まっていない......。
  4. このインジケータは、新しいティックが到着したときのみ動作します。つまり、ティックの少ないチャートでハングアップすると、他のチャートの0バーで問題が発生します...
  5. もし、0本のバーを数えるのをやめて、完了したものだけを数えるようにしたら、さらにいくつかの落とし穴があることになります......。

嬉しいお言葉をありがとうございます :o)
 

バグです。説明ATSは常にマーケットにある(ダブルロット0.2によるロールオーバー)

テストモード 全チックすべてが正常です。

テストモード、価格を開くことによって。 同じ作品。

なぜか2つの取引に分かれてしまう。表示方法が悪いだけかもしれないが、そんなことはないはずだ。

 
Alexandr2385:

こんにちは、私はMT5ターミナルで深刻な問題を抱えています。ターミナルを起動すると、価格線(ビッド)だけが動き、ローソク足(バー)は描画・変化していません。それゆえ、チャートを変えることなく価格が動くのです。この問題はどうすれば解決できるのでしょうか?実際、MT4ではすべて正常に動作していますよ。ターミナルを再インストールしてみましたが、ダメでしたいくつかのブローカーでこのような問題が発生したのですが、このような場合どうしたらよいか教えてください。
どなたか開発者の方で、この質問に答えられる方はいらっしゃいますか?それとも別のスレッドで聞いた方がいいのでしょうか?
ファイル:
1.png  31 kb
 
Alexandr2385:
どなたか開発者の方にお答えいただけないでしょうか。それとも別のスレッドで聞いた方がいいのでしょうか?
+1 私も同じものを見たことがありますが、今は正常に動作しているようなので、修正されたのでしょう
 
SHOOTER777:

+1 私も同じものを見たことがありますが、今は正常に動作しているようなので、修正されたのでしょう

ああ、不思議なことに、今はもうないんだ、いつまであるのかわからないけど......。

 
Prival:

もうひとつ、頭の痛いことを付け加えればいい。あるチャートに表示されているインジケータが、別のチャートから表示されている場合、それを考慮する必要があります。

  1. バーの本数が 異なる場合があること。すでに考慮済みだと思います。
  2. ある楽器の履歴の25本が月曜日で、別の楽器の履歴が金曜日であることを考慮に入れてください。
  3. 最初の2つの問題を解決しても、時間による同期があり、ある楽器では新しいバーがすでに始まっていて、別の楽器ではまだ始まっていない......。
  4. このインジケータは、新しいティックが到着したときのみ動作します。つまり、ティックの少ないチャートでハングアップすると、他のチャートの0バーで問題が発生します...
  5. 0本のバーを数えるのをやめて、完成したものだけにすると、さらにいくつかの落とし穴が......。

穴や歴史の問題については、私も同感です。

正常な動作と周期の同期がとれていれば、新しいバーは(論理的には)同時に開始されるはずですが...。