MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 433

 
Alekseu Fedotov:

というくらいにシンプルです。

void OnStart()
  {
// Формируем время  
   Alert("14.30  позавчерашнего дня = ",StrToTime(TimeToStr(iTime(NULL,1440,2),TIME_DATE)+" "+"14:30"));

//14.30  позавчерашнего дня
   datetime time=StrToTime(TimeToStr(iTime(NULL,1440,2),TIME_DATE)+" "+"14:30");

//Бар 14.30  позавчерашнего дня
   int     shift=iBarShift(NULL,0,time);

//Машка 14.30  позавчерашнего дня  
   double ma=iMA(NULL,0,13,0,MODE_SMMA,PRICE_MEDIAN,shift);

   Alert("Машка 14.30  позавчерашнего дня = ",DoubleToString(ma,Digits));

こんな感じです。


アレクセウ・フェドートフ 残念ながら、これではありません。TFでバーナンバーを取得し、同じTFを使っても、もう一つ必要(ここが問題)。我々は、TF(例えば30)とバー番号を取得し、次にTF(1440)とMAを取得する必要があり、TF 30とこのバーから始まる。 それはあなたが今(14.30)TF 1440とMAを取得したい場合のようなものです。今は-問題ないが、数日前に移すとなると、それはそれで問題だ。

 
STARIJ:
M1、M5、......と使っていけばいいんです。- を確認する。mt5にはティック履歴があるので、補間を使うといいかもしれません。利益が出る場所を教えていただければ、もう一度見てみます。

今起きていることとして遡及的にテクニカル分析を行い、結果を見る必要がありますね。つまり、昨日14時30分にTF1dでMAのテクニカル分析を行い、今日は昨日のMAによる値動きの結果が出たということです。 今日TF1440を使って昨日の視点で見れば、テクニカル分析のデータが異なるので、結果も異なることが予想されるのです。

 
Roman Sharanov:

ローソク足の高値から200p上のポイントに矩形を 描き、1本先の時間を計りたいのですが、どうすればよいですか?

コードを書いたのですが、なぜ長方形の左の点が動かないのかがわかりません?右はハイの後ろにスライドさせる。

関数の予期せぬ動作...先ほど、すでに存在するオブジェクトの名前を付けて作成しようとしたところ、エラーが返され、既存のパラメータを新しいものに変更することができませんでした。しかし、現在はどうやら変更が加えられているようで、high[0]が変更されたり、新しいバーが現れるたびに、high[1]はすでに異なる値を持っており、新しい長方形を作成する際にパラメータの1つが変更されます。

方法はとても簡単で、オブジェクトを作成する前に存在を確認することです。

 
STARIJ:

移動する



いいえ、このコードでは何も描画しません。

 
Roman Sharanov: いいえ、このコードでは何も描画されません。

私のファイル全体を見てください。

ファイル:
PR.mq4  3 kb
 
STARIJ:

私のファイルを見てください


なるほど、MQL4をお持ちなのですね :)
時系列で配列を作ったらうまくいった、なぜうまくいかなかったのかがまだわからない

 
Boss11: 今起きていることとして遡及的にテクニカル分析を行い、結果を見る必要がありますね。つまり、昨日14時30分にTF1dでMAのテクニカル分析を行い、今日は昨日のMAによる値動きの結果が出たとして、今日TF1440を使って昨日の視点で見れば、テクニカル分析のデータが異なるので、結果も異なることが予想される。

TF1440はすべてクリアですが、M1は誤差が大きいとお書きになっていますが?

 
STARIJ:

TF1440ではすべてクリアーですが、M1では大きな誤差があるとのことですが?


M1では試していませんが、誤差が少なくなるのではと思います。M1->M5は、M30->1dよりも精度が高くなります。

 

具体的な質問に対する答えをアドバイスしてください。ボリンジャーをやり直します。

数行の変更で、バーが描画されない。なんだ、対数か。

https://research-journal.org/economical/analiz-razlichnyx-metodov-ocenki-istoricheskoj-volatilnosti-dlya-opcionnoj-torgovli/ からのボラティリティの計算式

int start()
  {
   int    i,k,counted_bars=IndicatorCounted();
   double deviation;
   double sum,oldval,newres,oldpos;
//----
   if(Bars<=BandsPeriod) return(0);
//---- initial zero
   if(counted_bars<1)
      for(i=1;i<=BandsPeriod;i++)
        {
         MovingBuffer[Bars-i]=EMPTY_VALUE;
         UpperBuffer[Bars-i]=EMPTY_VALUE;
         LowerBuffer[Bars-i]=EMPTY_VALUE;
        }
//----
   int limit=Bars-counted_bars;
   if(counted_bars>0) limit++;
   for(i=0; i<limit; i++)
      MovingBuffer[i]=iMA(NULL,0,BandsPeriod,BandsShift,MODE_EMA,PRICE_WEIGHTED,i);
//----
   i=Bars-BandsPeriod+1;
   if(counted_bars>BandsPeriod-1) i=Bars-counted_bars-1;
   while(i>=0)
     {
      sum=0.0;
      k=i+BandsPeriod-1;
      oldval=MovingBuffer[i];
      oldpos=i;
      while(k>=i)
        {
         //newres=Close[k]-oldval;
         //sum+=newres*newres;
          sum+=log(fabs(High[k]/Close[k]))*log(fabs(High[k]/Open[k]))+log(fabs(Low[k]/Close[k]))*log(fabs(Low[k]/Open[k]));
         k--;
        }
      deviation=BandsDeviations*MathSqrt(fabs(sum/BandsPeriod));
      UpperBuffer[i]=oldval+deviation;
      LowerBuffer[i]=oldval-deviation;
      i--;
     }
ファイル:
 

グラフィカルオブジェクトを削除 する方法を教えてください。変数値から名前が構成される縦線があります。

string name=="test1"; string Vertline="line_"+name; ObjectCreate(0,VertLine,OBJ_VLINE,0,time,cena); test1という名前の縦線だけを削除するにはどうしたらよいでしょうか?

理由: