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

 
Владимир Казаков #:

表現をアクションに分解してみると...。と、なんと結果は同じ!!!?

だから、型の削減と同じすべて私が好きなように何かが動作しません

専門家と理解者の誰かが問題だったかを説明 することができますか!
まあ、エラーを繰り返さないために))。

追記:以下は、この形式で同じ式が同じように動作します。

排除方法は、intの愚直なまでのダブル。

うまくいったかな?

double a = (double) ((d*pow(10,_Digits-2))*(180/M_PI)*(double) coefAngle);
double a = (double) ((d*pow(10,_Digits-2))*(180.0/M_PI)*(double) coefAngle);
 

はじめまして、mt5のロボットについてアドバイスをお願いします。

配列のインデックスが、インジケータ・バッファの ように、現在のバーに対するシフトの値と一致する必要があるのです。

どうすればいいのか?

 
Andrey Sokolov #:

はじめまして、mt5のロボットについてアドバイスをお願いします。

配列のインデックスが、インジケータ・バッファの ように、現在のバーに対するシフトの値と一致する必要があるのです。

どうすればいいのか?

配列セットAsSeries

 
Vitaly Muzichenko #:

配列セットAsSeries

ありがとうございます。 これはインジケーターだけでなく、ロボットでも使えるのでしょうか?

 
Andrey Sokolov #:

ありがとうございます。 これはインジケーターだけでなく、ロボットでも使えるのでしょうか?

あなたの問題がわからないが、配列を反転させる

 
Vitaly Muzichenko #:

あなたの問題がわからないが、配列を反転させる

インジケータ・バッファの ように、現在のバーに対するシフト値と一致するように配列のインデックスが必要 です。

インジケーターのように、新しいローソク足が出現した後に、ローソク足と一致する指標値が必要です。

 
Andrey Sokolov #:

インジケータバッファの ように、現在のバーに対するシフト値と一致するように配列のインデックスが必要 です。

インジケーターのように、新しいローソク足が出現した後に、ローソク足と一致する指標値を取得する必要があります。

試してみてください、うまくいくはずです

 
Vitaly Muzichenko #:

試してみてください、うまくいくはずです。

こうはいかないんです。インデックス0に300と書き、新しいローソク足が表示されたらインデックス1に300となるはずですが、なりません。

#property strict

int bars;
double arr[];

int OnInit()//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////OnInit()
{
   Comment("");
   
   bars = Bars(NULL, 0);
   bool series = ArraySetAsSeries(arr, true);
   int size = ArraySize(arr);
   int res = ArrayResize(arr, bars);
   arr[0] = 300;

   return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason)//////////////**////////*OnDeinit()****////////////////////*************OnDeinit()
{       
        Comment("");  
}//+------------------------------------------------------------------+
void OnTick()//////////////***OnTick()****///*************OnTick()**********/////////////////////////////OnTick()
{
   if(bars!=Bars(NULL, 0))
   {
        bars=Bars(NULL, 0);
        int res = ArrayResize(arr, bars);
   }
   
   Comment(TimeCurrent(), "  ", bars, "  ", arr[0], "  ", arr[1], "  ", arr[2], "  " , arr[3]);
}//+------------------------------------------------------------------+

自分は新しいローソク足でループ内の配列全体を「シフト」して書くことができますが、チャートを扱うための言語は、おそらく、何か標準的なものがあるのでしょう。

 
Andrey Sokolov #:

このようなことはありません。インデックス0に300と書き、新しいローソク足が現れたらインデックス1に300となるはずですが、そうではありません。

新しいローソク足でループ内の配列全体を「ずらす」ことは自分でも書けるのですが、チャートを扱う言語では、おそらく標準的なものがあるのでしょう。

反転するけど、意味がない。

#property strict

int bars;
double arr[]={};

int OnInit()//////////////***OnInit()****///*************OnInit()*******/////////***/////////////////////OnInit()
{
   Comment("");
   
   bars = Bars(NULL, 0);
   int size = ArraySize(arr);
   int res = ArrayResize(arr, bars);
   arr[res-1] = 300;
   ArraySetAsSeries(arr, true);
   return(INIT_SUCCEEDED);
}//+------------------------------------------------------------------+
void OnDeinit(const int reason)//////////////**////////*OnDeinit()****////////////////////*************OnDeinit()
{       
        Comment("");  
}//+------------------------------------------------------------------+
void OnTick()//////////////***OnTick()****///*************OnTick()**********/////////////////////////////OnTick()
{
static int res;
   if(bars!=Bars(NULL, 0))
   {
        bars=Bars(NULL, 0);
        res = ArrayResize(arr, bars);
   }
   
   Print(res, "  ", arr[0], "  ", arr[1], "  ", arr[2]);
}//+------------------------------------------------------------------+

別の方法で充填する必要がある

 
Andrey Sokolov #:

このようなことはありません。インデックス0に300と書き、新しいローソク足が現れたらインデックス1に300となるはずですが、そうではありません。

新しいローソク足でループ内の配列全体を「ずらす」ことは自分でも書けるのですが、チャートを扱う言語では、おそらく標準的な ものがあるのでしょう。

はい、定番中の定番・・・配列に追加、配列から削除です。配列は動的であることが望ましい。詳しくはドキュメントを見てください、どのように書かれているかは覚えていませんが...。