MQL5でOpen,Low,High,Closeのパラメータを取得するにはどうしたらいいですか? - ページ 8

 
Artyom Trishkin:

正確には見ませんが......時間がないんです。走らせて結果を見る、という「枠にはまらない」ものがあるのでは?しかし、今は ...はい、そしてスクリプトはすぐに動作せず、そのアイコンで強制的にPKMを閉じるまでハングアップします。そして初めて、そこにある何かが印刷されるのです。一般的に - マクロでは、何らかの理由で1つの手間がかかります。

そして、私の投稿には、テーマの虫が動くという意味があるのですね。

 
Artyom Trishkin:

正確には見ませんが......時間がありません。走らせて結果を見る、という「枠にはまらない」ものがあるのでは?しかし、今は ...はい、そしてスクリプトはすぐに動作せず、そのアイコンで強制的にPKMを閉じるまでハングアップします。そして初めて、そこにある何かが印刷されるのです。全てにおいて、マクロは面倒くさい。

あ、犬がいる!?

私のテストを見たか? ローマンもいるんだ

436秒分のテストがある=7分!?

;)

ZS: だから、悪戯に手を出したって言ったじゃないですか!...スクリプトは、「箱から出しても」動かないんですよ... ))))


ローマン

私の投稿をバグスレッドに入れるのは意味があるのでしょうか?

何の虫?- はWineやDebianでCPUコアをフルロードできないと書いていますが、どのOSのMTがあるのでしょうか?

 
Igor Makanu:

あ、ワンコがいる!?

私のテストを見たか? ローマンのもある。

436秒分のテストがある=7分!?

;)

ZS: だから、いたずらっ子が刺したって言ってるじゃないですか!...スクリプトは、「箱から出しても」動かないんですよ... ))))

Creepy :)

もっと休まないと...。

 
Igor Makanu:

あ、ワンコがいる!?

私のテストを見たか? ローマンのもある。

436秒分のテストがある=7分!?

;)

ZS: だから、いたずらな手で見つけたって言ったじゃないですか!...スクリプトは「箱から出しても」動かないんですよ... ))))


何の虫?- まあ、WineやDebianでCPUコアをフルロードできないことを書くと、どのOSのMTがあるんだ?

WindowsではもちろんMTですが、なんというか...。
Debian上のVS Codeで、他のコードの負荷をテストすると、全コアに負荷がかかるので、Debianのせいにするのは余計なお世話です。
ワインは、というか、MTは最適化されていないのかもしれませんね。したがって、Wineでは不完全なものです。
Wineの下には多くのリナックスユーザーがいます。

 
Igor Makanu:

あ、ワンコがいる!?

私のテストを見たか? ローマンのもある。

436秒分のテストがある=7分!?

;)

ZS: だから、いたずらっ子が刺したんだよ!...スクリプトは、「箱から出しても」動かないんだよ... ))))


よかったです。いたずらがなければ、最初のテストは5分で終わった。残りは20人で終わらなかった。クーラーが離陸し始め、隣のコーヒーが沸騰し始め...。とにかく、ノックアウトされた...
 
機能速度に関する評決は、どちらが速いですか?
 
Renat Akhtyamov:
機能の速さについては、どちらが速いという評価なのでしょうか?

CopyXXX()のようだが、CopyRates()ではない ようだ。同時に複数のデータが必要な場合 - CopyRates()

 
Artyom Trishkin:
よかったです。1回目のテストは5分でやんちゃな手つきもなく合格です。残りは20人でも終わらない。クーラーは離陸し始め、隣のコーヒーは沸騰し...。とにかく、ノックアウトされた...

うーん、バイトに組みたくないビットがあるのでは...基本的にもう選択肢はないのでは!))))

このスレッドがモデレーターの視線の下にあるのなら、何か手を打たないと・・・。 マクロは部品のために分解してしまいました。

アーテム、ちゃんと使えるの?

#property script_show_inputs

input ulong LoopCount=500000000;

// Позволяет, как в MT4, работать с таймсериями: Open[Pos], High[Pos], Low[Pos], Close[Pos], Time[Pos], Volume[Pos].
// А так же задает привычные MT4-функции: iOpen, iHigh, iLow, iClose, iTime, iVolume.
#define  DEFINE_TIMESERIE(NAME,FUNC,T)                                                                         \
  class CLASS##NAME                                                                                           \
  {                                                                                                           \
  public:                                                                                                     \
    static T Get(const string Symb,const int TimeFrame,const int iShift) \
    {                                                                                                         \
      T tValue[];                                                                                             \
                                                                                                              \
      return((Copy##FUNC((Symb == NULL) ? _Symbol : Symb, _Period, iShift, 1, tValue) > 0) ? tValue[0] : -1); \
    }                                                                                                         \
                                                                                                              \
    T operator[](const int iPos) const                                                                     \
    {                                                                                                         \
      return(CLASS##NAME::Get(_Symbol, _Period, iPos));                                                       \
    }                                                                                                         \
  };                                                                                                          \
                                                                                                              \
  CLASS##NAME  NAME;                                                                                           \
                                                                                                              \
  T i##NAME(const string Symb,const int TimeFrame,const int iShift) \
  {                                                                                                           \
    return(CLASS##NAME::Get(Symb,  TimeFrame, iShift));                                                        \
  }
//+------------------------------------------------------------------+
DEFINE_TIMESERIE(Volume,TickVolume,long)
DEFINE_TIMESERIE(Time,Time,datetime)
DEFINE_TIMESERIE(Open,Open,double)
DEFINE_TIMESERIE(High,High,double)
DEFINE_TIMESERIE(Low,Low,double)
DEFINE_TIMESERIE(Close,Close,double)
//+------------------------------------------------------------------+
void OnStart()
  {
   double c,buff[1];
   MqlRates rates[1];
   ulong i;
//-----   
   Print("Start test № 1...");
   Sleep(125);
   srand(GetTickCount());
   uint start=GetTickCount();
   for(i=0;i<LoopCount && !_StopFlag;i++)
      CopyClose(_Symbol,_Period,rand(),1,buff);
   printf("CopyClose : loops=%u , ms=%u",i,GetTickCount()-start);
//-----   
   Print("Start test № 2...");
   Sleep(125);
   srand(GetTickCount());
   start=GetTickCount();
   for(i=0;i<LoopCount && !_StopFlag;i++)
      c = iClose(NULL,0,rand());
   printf("iClose : loops=%u , ms=%u",i,GetTickCount()-start);
//-----   
   Print("Start test № 3...");
   Sleep(125);
   srand(GetTickCount());
   start=GetTickCount();
   for(i=0;i<LoopCount && !_StopFlag;i++)
      c = Close[rand()];
   printf("Close[i] : loops=%u , ms=%u",i,GetTickCount()-start);
//-----   
   Print("Start test № 4...");
   Sleep(125);
   srand(GetTickCount());
   start=GetTickCount();
   for(i=0;i<LoopCount && !_StopFlag;i++)
      CopyRates(_Symbol,_Period,rand(),1,rates);
   printf("CopyRates : loops=%u , ms=%u",i,GetTickCount()-start);
   Print("End script");
  }
//+------------------------------------------------------------------+

2019.07.30 19:42:16.639 tst_iXXX_Copy (EURUSD,H1) テスト#1開始...

2019.07.30 19:42:40.199 tst_iXXX_Copy (EURUSD,H1) CopyClose : loops=500000000 , ms=23422

2019.07.30 19:42:40.199 tst_iXXX_Copy (EURUSD,H1) テスト2回目開始...。

2019.07.30 19:43:26.953 tst_iXXX_Copy (EURUSD,H1) iClose: loops=500000000 , ms=46609

2019.07.30 19:43:26.953 tst_iXXX_Copy (EURUSD,H1) テスト3番を開始...

2019.07.30 19:44:12.274 tst_iXXX_Copy (EURUSD,H1) Close[i] : loops=500000000 , ms=45156

2019.07.30 19:44:12.274 tst_iXXX_Copy (EURUSD,H1) テスト#4開始...

2019.07.30 19:44:42.080 tst_iXXX_Copy (EURUSD,H1) CopyRates : loops=500000000 , ms=29656

2019.07.30 19:44:42.080 tst_iXXX_Copy (EURUSD,H1) スクリプトを終了します。

ファイル:
 
Renat Akhtyamov:
機能の速さについては、どちらが速いという評価でしょうか。

実験には実験がある。最後の5億回分のテストコールはこちらです。そうですね、違いがわかりますね。あとは1分間に何回ティックがあるか(~60)、1時間に何回ティックがあるか(~3600)、1日に何回あるか(~86400)、この23秒が5億回のコールでどれくらい動くかを計算するだけです ...

5 787日=23秒の利益?各ティックで 最速関数を使用した場合! )))))

イマイチ、便利なものを使って、誰の言うことも聞かない

 
Igor Makanu:

実験には実験がある。最後の5億回分のテストコールはこちらです。そうですね、違いがわかりますね。あとは1分間に何回ティックがあるか(~60)、1時間に何回ティックがあるか(~3600)、1日に何回あるか(~86400)、この23秒が5億回のコールでどれくらい動くかを計算するだけです ...

5 787日=23秒の利益?各ティックで 最速関数を使用した場合! )))))

イマイチ、便利なものを使って、誰の言うことも聞かない

4pcの方がコンパクトで読みやすいので、慣れました。

スピードや機能については文句のつけようがないので、大丈夫です。

;)

理由: