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

 
Vladimir Karputov:
夜間、要求されたシンボルに対して取引所が機能することは間違いないですか?

端末が持っていない特定の時間に強制的にティックを送るのではなく、リクエストを送るだけなのです。

from=0,// 刻み目を要求する日付

count=0// 受信するティック数

そして、履歴そのものが送られてくるんですね。

 
VANDER:

端末が持っていない特定の時間に強制的にティックを送るのではなく、リクエストを送るだけなのです。

from=0,// 刻み目を要求する日付

count=0// 受信するティック数

そして、履歴そのものが送られてくるんですね。

要求されたシンボルの取引が終了している場合(夜間など)、要求されたシンボルのティックはどこから来るのでしょうか?
 

確認したところ、Expert Advisorが動作しているメインシンボルRTS-12.19については、最後のティックが23時59分30秒、SBRF-12.19が23時52分21秒だったので、ティックをダウンロードできなかったのでしょう?

また、SymbolInfoTick関数がスマート化を手助けする面白さとは?

 
VANDER:

確認したところ、Expert Advisorが動作しているメインシンボルRTS-12.19については、最後のティックが23時59分30秒、SBRF-12.19が23時52分21秒だったので、ティックをダウンロードできなかったのでしょう?

そして、それを理解するのに役立つSymbolInfoTick関数の面白さとは?

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

初心者からのFAQ MQL5 MT5 MetaTrader 5

ウラジミール・カルプトフ, 2019.12.08 13:20

要求されたシンボルの入札が終了した場合(夜間など)、要求されたシンボルはどこからそのティックを取得するのでしょうか?

 
VANDER:

確認したところ、Expert Advisorが動作しているメインシンボルRTS-12.19については、最後のティックが23時59分30秒、SBRF-12.19が23時52分21秒だったので、ティックをダウンロードできなかったのでしょう?

また、SymbolInfoTick関数の面白さは?

ここで、EAを紹介します。

//+------------------------------------------------------------------+
//|                                                  CopyTicks_1.mq5 |
//|                              Copyright © 2015, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2015, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.100"
#property description "Сравнение трёх режимов получения тиков"
//--- input parameters
input string   name  = "RTSSiZ9";      // символ по которому запрашиваем тики
input int      ticks = 3000;           // количество запрашиваемых тиков
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
  SymbolSelect(name,true);
//--- succeed
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- массив для приема тиков
   MqlTick ExTicks[];
//--- запросим тики
   ResetLastError();
   int copied=CopyTicks(name,ExTicks,COPY_TICKS_ALL,0,ticks);
//--- если тики получены, то выведем на график значения Bid и Ask
   Print("Получено тиков: ",copied," код ошибки: ",GetLastError());
   if(copied>1)
     {
      Print("Тик: ",ExTicks[0].time," bid: ",ExTicks[0].bid," ask: ",ExTicks[0].ask," last: ",ExTicks[0].last," [0]");
      Print("Тик: ",ExTicks[copied-1].time," bid: ",ExTicks[copied-1].bid," ask: ",ExTicks[copied-1].ask," last: ",ExTicks[copied-1].last," [",copied-1,"]");
     }
  }
//+------------------------------------------------------------------+

RTSSRZ9で動作中(こちらはSBRF-Dec19) -以下はその設定です。


RTSSiZ9(こちらはSi-Dec19)でティックを要求する。

結果

2019.08.30 07:00:00   Получено тиков: -1 код ошибки: 4004
2019.08.30 07:00:01   Получено тиков: 2 код ошибки: 0
2019.08.30 07:00:01   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]
2019.08.30 07:00:01   Тик: 2019.08.30 07:00:01 bid: 22552.0 ask: 22697.0 last: 0.0 [1]
2019.08.30 07:00:02   Получено тиков: 3 код ошибки: 0
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:02 bid: 22425.0 ask: 22856.0 last: 0.0 [2]
2019.08.30 07:00:02   Получено тиков: 4 код ошибки: 0
2019.08.30 07:00:02   Тик: 2019.08.30 07:00:00 bid: 22552.0 ask: 22697.0 last: 0.0 [0]

等々


つまり、実際のサーバーではすべてがうまくいくのです。うまくいかない場合:1.デモサーバーではなく、実際のサーバーで作業すること、2.コードを確認する

ファイル:
 

この口座は本物以上です、私はこの口座で取引しています。私はあなたのコードを使用し、さらにすべての設定を正確に設定し、あなたは笑うでしょう、ここで完全なログです。


2019.12.08 21:08:38.787 MetaTester 5 started on 127.0.0.1:3000
2019.12.08 21:08:38.790 initialization finished
2019.12.08 21:08:39.088 login (build 2265)
2019.12.08 21:08:39.120 4372 bytes of account info loaded
2019.12.08 21:08:39.120 1482 bytes of tester parameters loaded
2019.12.08 21:08:39.120 1212 bytes of input parameters loaded
2019.12.08 21:08:39.138 29043 bytes of symbols list loaded
2019.12.08 21:08:39.138 expert file added: Experts\CopyTicks_1.ex5. 16437 bytes loaded
2019.12.08 21:08:39.152 6116 Mb available, 76 blocks set for ticks generating
2019.12.08 21:08:39.152 initial deposit 10000.00 USD, leverage 1:100
2019.12.08 21:08:39.153 successfully initialized
2019.12.08 21:08:39.153 37 Kb of total initialization data received
2019.12.08 21:08:39.153 Intel Core i5-3450  @ 3.10 GHz, 8157 MB
2019.12.08 21:08:39.198 RTS-12.19: symbol to be synchronized
2019.12.08 21:08:39.199 RTS-12.19: symbol synchronized, 4120 bytes of symbol info received
2019.12.08 21:08:39.199 RTS-12.19: history synchronization started
2019.12.08 21:08:39.201 RTS-12.19: load 33 bytes of history data to synchronize in 0:00:00.000
2019.12.08 21:08:39.201 RTS-12.19: history synchronized from 2018.01.12 to 2019.12.06
2019.12.08 21:08:39.201 RTS-12.19: ticks synchronization started
2019.12.08 21:08:39.202 RTS-12.19: load 40 bytes of tick data to synchronize in 0:00:00.000
2019.12.08 21:08:39.202 RTS-12.19: history ticks synchronized from 2019.01.03 to 2019.12.05
2019.12.08 21:08:39.205 RTS-12.19,H1: history cache allocated for 2480 bars and contains 971 bars from 2018.01.12 13:00 to 2019.08.29 23:00
2019.12.08 21:08:39.205 RTS-12.19,H1: history begins from 2018.01.12 13:00
2019.12.08 21:08:39.207 RTS-12.19,H1 (Open-Broker): generating based on real ticks
2019.12.08 21:08:39.207 RTS-12.19,H1: testing of Experts\CopyTicks_1.ex5 from 2019.08.30 00:00 to 2019.11.26 00:00 started with inputs:
2019.12.08 21:08:39.207   name=SBRF-12.19
2019.12.08 21:08:39.207   ticks=3000
2019.12.08 21:08:39.263 SBRF-12.19: symbol to be synchronized
2019.12.08 21:08:39.263 SBRF-12.19: symbol synchronized, 4120 bytes of symbol info received
2019.12.08 21:08:40.615 RTS-12.19 : real ticks begin from 2019.01.03 00:00:00
2019.12.08 21:08:55.958 2019.08.30 00:03:46   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:56.877 2019.08.30 00:03:46   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:57.764 2019.08.30 09:52:14   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:58.739 2019.08.30 10:00:01   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:08:59.784 2019.08.30 10:00:01   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:04.628 2019.08.30 10:00:03   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:05.579 2019.08.30 10:00:04   Получено тиков: -1 код ошибки: 4401
2019.12.08 21:09:06.596 2019.08.30 10:00:06   Получено тиков: -1 код ошибки: 4401

違うのは、夜から始まることくらいで、あとは朝でも同じです。

 
VANDER:

この口座は本物以上です、私はこの口座で取引しています。私はあなたのコードを使用し、さらにすべての設定を正確に設定し、あなたは笑うでしょう、ここで完全なログです。


違うのは夜から始まることくらいで、あとは朝になっても同じ...。

err_history_not_found

4401

要求された履歴が見つからない

SBRF-12.19は 何日から何日まで取引されているのですか? この日程は2019.08.30~2019.11.26の間ですか?

 
Vladimir Karputov:

err_history_not_found

4401

要求された履歴が見つからない

SBRF-12.19は いつから、いつまで取引されているのですか? これらの日付は、2019.08.30-2019.11.26の範囲に含まれますか?

はい、すべての日付で発生します。


忘れてください、私は私のための解決策を見つけました、関数を使用します。

SymbolInfoTick(необходимый символ)

すると、CopyTicks()がそれで動き出す。もしかしたら、私がチェックしていない他のブローカーでOpenchatが不具合を起こすかもしれない、もしかしたら、誰かの役に立つかもしれない。

 
VANDER:

そうですね、すべての日程で発生します。


OK、忘れてください、私は私のための方法を見つけた、前に機能を使用してください。

すると、CopyTicks()がそれで動き出します。もしかしたら、私がチェックしていない他のブローカーで不具合が出るかもしれませんし、もしかしたら、誰かの役に立つかもしれません。

明らかに取引サーバーに依存しますが、私の場合はうまくいきました。
もしかしたら、10年間はサーバー部分を更新しないのかもしれませんね。
 
fxsaber :

警告が出ないようにコードを修正すると何が防げるのか?

警告が600個もあると、エラーのある行を探さなければなりません(実際には、strictモードを有効にするともっと多くなります)。

そして、ほとんどすべての警告は無駄です。隠し変数や型変換に関するものが多いからです。もしかしたら、勘違いしている人がいるかもしれませんが、それは経験豊富なプログラマーにはあまりないことです。

Mt4は初心者にちょうどよかった。しかし、現在のmql5言語は、初心者 向けの目的もあるほど洗練されています。経験豊富なプログラマーは、明らかに理由があるものについて600行も書く必要はないのです。


もちろん、これは私の主観ですが、他の言語では、どの程度冗長なレベルを求めるかを決めることができます。

理由: