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

 
Alexey Viktorov:

超自然的なことは何もないんです。通常のOBJ_BITMAP_LABELに、リソースとして好きなものを入れてください。Kanvasは、OBJ_BITMAP_LABELでも 動作します。

でも、あなたのやり方は、初心者の開発者にとってはずっと簡単です。

言いたいことはわかりました、ありがとうございます。
 
Alexey Viktorov:

メッセージにコードを挿入 する方法については、こちらをご覧ください。

そして質問ですが、CopyTicksRangeのドキュメントを読んでみてください。

#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

MqlTick Tick_Mql[];

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

//---

ulong from_msc = TimeCurrent() - 10000;
ulong to_msc = TimeCurrent();
int Ticks = CopyTicksRange(_Symbol,Tick_Mql,COPY_TICKS_ALL,from_msc,to_msc);
  }
//+------------------------------------------------------------------+
動作しない。OnTickが呼ばれるたびに、変数Ticksの結果は0になります。
 
Boris:
うまくいかないんです。OnTickが呼ばれるたびに、変数Ticksの結果は0になります。

本当にエントリー時に過去のティックが必要なのですか?10秒はそれほど長い時間ではないので、実際の刻み目とその数を数えて待つとよいでしょう。

一般的には、最初の1秒間は2つの変数が必要で、9秒間に何回ティックがあったかを記憶して合計し、次の1秒間はティックを数え、最初のものを引き、最後のものを足すというものです。結果は、配列または変数に格納する必要があります。

 
Valeriy Yastremskiy:

本当にエントリー時に過去のティックが必要なのですか?10秒はそれほど長い時間ではないので、実際の刻み目とその数を数えて待つとよいでしょう。

一般的には、最初の1秒間は2つの変数が必要で、9秒間に何回ティックがあったかを記憶して合計し、次の1秒間はティックを数え、最初のものを引き、最後のものを足すというものです。これらの結果は、配列または変数に保存されます。

これはCopyTicksとCopyTicksRange関数ではできないことが判明しましたか?

ありがとうございます。

 
Boris:
動作しない。OnTickが呼ばれるたびに、変数Ticksの結果は0になります。

ドキュメントを読む!!!

それとも、すべてのドキュメントを一枚一枚ここにコピーしてほしいのか?

フロムエムシー

[in] 刻み目を要求する日付。1970年01月01日からのミリ秒単位で指定 する。from_msc パラメータが 指定されない場合は、ヒストリーの先頭から刻みを返すtime >= from_msc のティックが返される。

to_msc

[in] 刻印が要求される日付。1970年01月01日からのミリ秒単位で指定 する。time <= to_msc のティックが返される。パラメータto_msc 指定されない場合、ヒストリの終わりまでのすべてのティックが与えられる

 
Valeriy Yastremskiy:

本当にエントリー時に過去のティックが必要なのですか?10秒はそれほど長い時間ではないので、実際の刻み目とその数を数えて待つとよいでしょう。

一般的には、最初の1秒間は2つの変数が必要で、9秒間に何回ティックがあったかを記憶して合計し、次の1秒間はティックを数え、最初のものを引き、最後のものを足すというものです。結果を配列または変数に保存します。

なぜ、そのようなアドバイスをするのか。

 
Boris:

では、CopyTicks関数やCopyTicksRange関数ではできないのでしょうか?

ありがとうございます。

はい、できます。ドキュメントを読んで、ドキュメントでわからないことを聞く。そうすれば、より早く真実にたどりつけるでしょう)。

 
Alexey Viktorov:

なぜ、そのようなアドバイスをするのか。

自分でもやっています。ショートアクションを自分で修正できるのに、なぜ構造物に手を出すのか。

 
Valeriy Yastremskiy:

自分でもやっています。ショートアクションを自分で修正できるのに、なぜ構造物に手を出すのか。

そして、右手の小指で左耳を掻く・・・教えてあげようかな・・・必要かな?自分がやっていることを他人に教えるな..........................スルー。

 
Valeriy Yastremskiy:

できます。ドキュメントを読んでから、ドキュメントでわからないことを聞く。それが真実への近道である)。

それで...ドキュメントを読む(もう一度)。

#property copyright "Copyright 2021, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"

MqlTick Tick_Mql[];
ulong ten_msc =(ulong)TimeCurrent()-10000; // 1 секунда = 1000 милисекунд
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {

//---

ulong from_msc = (ulong)TimeCurrent() - 10000;
ulong to_msc = (ulong)TimeCurrent();
int Ticks = CopyTicksRange(_Symbol,Tick_Mql,COPY_TICKS_ALL,from_msc,to_msc); //(с текущего времени - 10 сек назад)
// либо CopyTicks(_Sybol,Tick_Mql,COPY_TICKS_ALL,from_msc,0); //(все тики от 10 сек назад до настоящего времени)
  }

質問です。どうしたんですか?CopyTicksRangeでもCopyTicksでもカウントされません。