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

 
Alexey Kozitsyn:
ファイルを通して、例えば...

差し支えなければ、もう少し詳しく教えてください。

削除済み  
виталик:

もしよろしければ、もう少し詳しく教えてください。

引用符を引くには、コピー機能を使用します。

https://www.mql5.com/ru/docs/series

それから、https://www.mql5.com/ru/docs/files は、ファイル操作へのリンクです。

Документация по MQL5: Файловые операции
Документация по MQL5: Файловые операции
  • www.mql5.com
Файловые операции - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
こんばんは、「レール」のパターンを作っているのですが、うまくいきません...どこが悪いかわかりますか?ありがとうございました。
ファイル:
jzogyr2.mq4  6 kb
 
sviter-pro:
こんばんは、「レール」のパターンを作っているのですが、うまくいきません...どこが悪いかわかりますか?ありがとうございました。

int OnInit()
  {

   SetIndexBuffer(0,BuyTrain); SetIndexStyle(0,DRAW_ARROW,EMPTY,RazmerStrelok,coloru); SetIndexArrow(0,159); SetIndexEmptyValue(0,EMPTY_VALUE);
   SetIndexBuffer(1,SelTrain); SetIndexStyle(1,DRAW_ARROW,EMPTY,RazmerStrelok,colord); SetIndexArrow(1,159); SetIndexEmptyValue(1,EMPTY_VALUE);

   return(INIT_SUCCEEDED);
  }

そして、これらの条件は決して満たされることはありません

   double high2=0.0,high3=0.0,high4=0.0,high5=0.0,high6=0.0,high7=0.0,size1=0.0,size2=0.0,body1=0.0,body2=0.0;

      if(Close1<Open1 && Close2>Open2
         && MathAbs(High1-High2)<=5*Point
         && high3<high2
         && high4<high2
         && high5<high2
         && high6<high2
         && high7<high2
         && body1 >= size1 * 0.7
         && body2 >= size2 * 0.7
         && size1 >= 20 * Point && size2 >= 20 * Point)
        {
         BuyTrain[i]=low[i]-OtstupStrelok*Point;
        }
      if(Close1>Open1
         && Close2<Open2
         && MathAbs(Low1-Low2)>=5*Point
         && high3>high2
         && high4>high2
         && high5>high2
         && high6>high2
         && high7>high2
         && body1 <= size1 * 0.7
         && body2 <= size2 * 0.7
         && size1 <= 20 * Point
         && size2 <= 20 * Point)
        {
         SelTrain[i]=high[i]-OtstupStrelok*Point;
        }
 

こんにちは!タスクはこうです - 次の01.00時間までに何本のバーがあるか判断する必要があります。今まではループでやっていましたが、iBarShiftで なんとかやった方が正しいかも?もしかしたら、まったく違うことをする方が正しいのかもしれませんね。

      int ShiftBar=0;
      for(int cnt=0; cnt<100; cnt++)
        {
         int hour=TimeHour(iTime(Symbol(),PERIOD_M30,cnt));
         if(hour==1)
           {
            ShiftBar=cnt;
            break;
           }
        }
        Print("ShiftBar= ",ShiftBar);
 
Nauris Zukas:

こんにちは!タスクはこうです - 次の01.00時間までに何本のバーがあるか判断する必要があります。今まではループでやっていましたが、iBarShiftでなんとかやった方が正しいかも?もしかしたら、まったく別の方法で行う方が正しいのかもしれませんね。

将来的にmql5への移行をスムーズに行うためには、両言語で使用される関数を使用するのがよいでしょう。バーの本数を 検索する場合は

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

実は、iBarShift()の方がcycleよりもうまくいくのです。

Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
  • docs.mql4.com
Bars - Доступ к таймсериям и индикаторам - Справочник MQL4
 
Alexey Viktorov:

将来的にmql5への移行をスムーズに行うためには、両言語で使用されている関数を使用するのがよいでしょう。バーの本数を 検索する場合は

iBarShift()は、cycleよりもこのタスクをうまく処理することができます。

はい、しかし、問題は最も近い01.00時間を見つけることです。どのように見つけるのでしょうか?
int iBarShift(
string symbol,// シンボル
inttimeframe, // 期間
datetimetime, // time ?????????
bool exact=false // モード
);
 
Nauris Zukas:
はい、しかし、問題は最も近い01.00時間を見つけることです。どのように判断するのですか?
int iBarShift(
string symbol,// シンボル
inttimeframe, // 期間
datetimetime, // time ?????????
bool exact=false // モード
);

トレーディング、自動売買システム、ストラテジーテストに関するフォーラム

MQL4に関する初心者向けの質問、アルゴリズムやコードに関するヘルプやディスカッションなど

アレクセイ・ビクトロフ さん 2017.07.27 13:54

将来的にmql5への移行をできるだけ楽にしたい場合は、両言語で利用可能な関数を使用することです。バーの本数を 検索するには

int  Bars(
   string           symbol_name,     // имя символа
   ENUM_TIMEFRAMES  timeframe,       // период
   datetime         start_time,      // с какой даты
   datetime         stop_time        // по какую дату
   );

原理的には、iBarShift()はサイクルよりもこのタスクをうまく処理することができます。

現在のバータイムがstop_timeとして指定された場合、指定された時間から 現在の 時間までのバーの数を返します。

ただ問題は、指定した時間のバーがあったとして、得られた値が何倍になるか、あるいは1倍少なくなるか、などという余計なことでメモリセルをいっぱいにすることは決してしないことです。ただ、毎回チェックしています。

 
Alexey Viktorov:

stop_time に現在のバータイムが指定されている場合、指定された時刻から 現在の 時刻までのバータイムを返します。

ただ問題は、指定した時間以下のバーを含めて、値が何に等しくなるのか、といった不要なものでメモリセルを詰まらせることは決してしないことです。ただ、毎回チェックしています。

これは皆理解しているのですが、質問の中に入ってみてください。指定された時間を どのように見つけるか。私の場合、最も近い01.00 時間を見つける必要があります。どうやって書き出すの?
datetime start_time, // 何月何日から?

 
Nauris Zukas:

これは皆理解しているのですが、質問の中に入ってみてください。指定された時間を どのように見つけるのか。私の場合、最も近い01.00 時間を見つける必要があります。どうやって書き出すの?
datetime start_time, // 何月何日から?

 datetime t=StringToTime("01:00");
 int b=Bars(_Symbol, PERIOD_M30, t, TimeCurrent());
現在の時刻 17時8分には33と表示されています。例:時刻01:00のバーナンバーは32になります。