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

 
実データでのデバッグ時に「指定されたシンボルが選択されていません」というエラーが発生するのですが、どのような原因が考えられるか教えてください。
ありがとうございました。
MT5
 
IlyaDemidenko:
実データで「指定されたシンボルは選択されていません」というデバッグエラーが発生しますが、何が原因でしょうか?
ありがとうございました。
MT5

テスト前(MetaEditorからテストを実行する前)に、MetaEditorの設定から「Debug」タブを見ます。このタブでは、テストに使用されるシンボルを確認できます。

次にターミナルを開き、選択したシンボルが「マーケットウォッチ」ウィンドウに表示されているかどうかを確認します。


 
Vladimir Karputov:

テスト前(MetaEditorからテストを実行する前)に、MetaEditorの設定から「Debug」タブを見ます。このタブでは、テストに使用されるシンボルを確認できます。

今度はターミナルを開いて、選択したシンボルが「マーケットウォッチ」ウィンドウに表示されているかどうかを確認します。

ありがとうございました。)
プロセス開始 ))

 
こんにちは。最終日17時30分時点の価格です。どうすれば調べられるのですか?つまり、午後5時30分の任意のバーの終値 です。
 
bij:
こんにちは。最終日17:30時点の価格です。それを知るには?つまり、午後5時30分の任意のバーの終値 です。

CopyOpenを 読む(第二の起動形式)。

 
Vladimir Karputov:

CopyOpenを 読む(第二の起動形式)。

ありがとうございます、time=D'2018.07.26 17:30'以外の時刻の設定方法が分かりませんでした。

        time=???;      //Как сюда передать 17:30 прошлого дня?
        int barIndex = iBarShift(NULL,PERIOD_M1, time);        // Определение индекса бара, соответствующего времени time
        double openPrice = CopyOpen(NULL, PERIOD_M1, barIndex);// Определение Bid цены открытия бара barIndex
 
bij:

ありがとうございます。時間の設定の仕方は気づきませんでした。

簡単なスクリプトを作っただけです。

//+------------------------------------------------------------------+
//|                                                  TestOpenDay.mq5 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                             https://mql5.com/ru/users/artmedia70 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://mql5.com/ru/users/artmedia70"
#property version   "1.00"
#property script_show_inputs
//--- enums
enum ENUM_DAY
  {
   DAY_CURRENT,            // Сегодня
   DAY_YESTERDAY,          // Вчера
   DAY_BEFORE_YESTERDAY    // Позавчера
  };
//--- input parameters
input ENUM_DAY InpDay      =  DAY_YESTERDAY; // День:
input uint     InpHours    =  17;            // Часы
input uint     InpMinutes  =  30;            // Минуты
//--- global variables
datetime day;
int      day_shift;
int      hours;
int      minutes;
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---
   hours=int(InpHours> 23 ? 23 : InpHours);
   minutes=int(InpMinutes>59 ? 59 : InpMinutes);
   day_shift=(int)InpDay;
   day=iTime(NULL,PERIOD_D1,day_shift);
   Print("Сегодня: ",TimeToString(TimeCurrent(),TIME_DATE),", день: ",InputDayToString(),", дата/время: ",TimeToString(GetTime(day)));
//---
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
datetime GetTime(const datetime time)
  {
   MqlDateTime tm;
   if(!TimeToStruct(time,tm))
      return 0;
   tm.hour=hours;
   tm.min=minutes;   
   return StructToTime(tm);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
string InputDayToString(void)
  {
   return(InpDay==DAY_CURRENT? "Сегодня" : InpDay==DAY_YESTERDAY ? "Вчера" : "Позавчера");
  }
//+------------------------------------------------------------------+

ログには、選択した日とその起動後の日付と時間が表示されます。

 
Artyom Trishkin:

簡単なスクリプトを作っただけです。

ログには、選択した曜日とその日付、起動後の時刻が表示されます。

ありがとうございます!毎日、17:30の値段に履歴でインジケーターの線を入れたいのですが、どうしたらいいですか?毎日設定する方法は?すべての日付を書かず、17:30という時間だけを書くこと。

こうして毎日、その日の終値に ラインを引いています。

 if(!TrendCreate(0,"close"+time[i],0,iTime(NULL,PERIOD_D1,i+1),iClose(NULL,PERIOD_D1,i+1),iTime(NULL,PERIOD_D1,i),0,clrLime,STYLE_SOLID,2,false,false,false,false,0))
        {
         continue;
        }
 
bij:

ありがとうございます!毎日、17:30の値段に履歴でインジケーターの線を入れたいのですが、どうしたらいいですか?毎日設定する方法は?

こうして、毎日、その日の終値に 設定しています。

過去の日付(年、月、日)が現在の日付と等しくなく、時、分が設定されたものと等しい場合、行を入れる。

または:前の日付(年、月、日)が現在の日付と等しい場合、または時、分が設定されたものと等しくない場合は、続行します。

いずれにせよ、スキップが発生します - 選択した時間枠のすべてのバーが設定された時刻を持つわけではありません。

 
Artyom Trishkin:

過去の日付(年、月、日)が現在の日付と一致せず、かつ、時、分が指定された日付と一致する場合、その日付と時刻を表示します。

if(iTime(NULL,PERIOD_D1,i+1)!=iTime(NULL,PERIOD_D1,i)&& here how to write?)

理由: