初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 930

 
ascerdfg:
可能なのでしょうか。

に置き換えます。

なぜダメなのか?もちろん、できますよ。

 
double Open[3];

int Ind_Handle;

int OnInit()
  {
      Ind_Handle=iCustom(_Symbol,_Period,"Pop"); // Pop.ex5
      if(Ind_Handle==INVALID_HANDLE)
        {
         Print(" Не удалось получить хендл индикатора");
         return(INIT_FAILED);
        }
   
   return(INIT_SUCCEEDED);
  }


void OnTick()
  {
 
      CopyBuffer(Ind_Handle,0,1,1,Open);
      Print("Open0 ",Open[0]);
  }

Prints: "Open0 1.797693134862316e+308".

インジケーターバッファーの セル番号とインデックスの両方を変更しましたが。

インジケータに整数があるのは確かです。なぜこのように印刷されるのでしょうか?

 
ascerdfg:

Prints: "Open0 1.797693134862316e+308".

インジケーターバッファーの セル番号とインデックスの両方を変更しましたが。

インジケータに整数があるのは確かです。なぜこのように印刷されるのでしょうか?

配列宣言後に ArraySetAsSeries を true にするか、サイズ 1 の配列を宣言する。
 
void OnTick()
  {
     int i;
     double price=.5;
     double Open[];
      ArraySetAsSeries(Open,true);

      Print("Кол-во ",BarsCalculated(Ind_Handle));
      Print("хэндл ",Ind_Handle);
      CopyBuffer(Ind_Handle,0,0,100,Open);
                 
      
    for(i=0; i<100; i++)
    {
        if(Open[i]!=EMPTY_VALUE)
        {
            price=Open[i];
            break;
        }
    }
           
      Print(price);
  }
うまくいかない、常に0.5を書き込んでいる。ずっと最大数のバッファを取得し続ける。
 
ascerdfg:
役に立たない、常に0.5を書き込む。最大数で常にバッファがあることが判明。

正確な回答が必要な場合は、正しく質問してください:インジケータのコードとExpert Advisorのコードを提供してください。今は、WHAT、WHO、WHEREが明確ではありません :)

 

ロア - インジケーター

rrr - アドバイザー

ファイル:
Pop.mq5  38 kb
ppp.mq5  4 kb
 
ascerdfg:

Ror - インジケータ

rrr - EA

インジケーターを書き直す - まず、ストップワードがないか確認する。次に、できるだけシンプルにする - 例えば、現在のバーの番号と同じ数字をインジケーターバッファーに 入力するなど。

得られるものarray[0]=0.0、array[1]=1.0、...といった具合です。これにより、VERY、VERYは指標からのデータ受信を理解するプロセスを簡素化することができます。3つ目 - インジケーターバッファを1つだけ残す。

 

この関数で更新されたシンボルを明示的に指定する方法を教えてください。例:EURUSD.m

//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates(void)
  {
//--- refresh rates
   if(!m_symbol.RefreshRates())
     {
      Print("RefreshRates error");
      return(false);
     }
//--- protection against the return value of "zero"
   if(m_symbol.Ask()==0 || m_symbol.Bid()==0)
      return(false);
//---
   return(true);
  }
//+------------------------------------------------------------------+
 

こんにちは。

Market用のインジケーターの作り方をご存知ですか?

拡張子が.mq5のファイルと、拡張子が.mqhのインクルードファイルがあります。

私が理解する限り、リソース経由で.mqhファイルを添付することはできません、私は本当に手動ですべてを1つのファイルに変換する必要がありますか?

新しいバージョンがあったらどうしよう :?クレイジーです +)))

ありがとうございます。

 
EgorKim:

この関数で更新されたシンボルを明示的に指定する方法を教えてください。例:EURUSD.m

続いて、「なぜここでシンボルを明示的に指定する必要があるのか」という質問です。

この関数を使用する場合、OnInitでm_symbolにシンボルを割り当てる必要があります。

   if(!m_symbol.Name(Symbol())) // sets symbol name
      return(INIT_FAILED);
   RefreshRates();

この場合、Expert Advisorを「EURUSD.m」のシンボルで実行すると、m_symbolは自動的に「EURUSD.m」に設定されます。

理由: