エラー、バグ、質問 - ページ 2585

 
Nikolai Semko:

インジケーターハンドルは どこで、どのタイミングで削除 するのですか?

不要になり次第そしてOnDeinitの前。

 
fxsaber:

不要になったらすぐに。そしてOnDeinitの前。

それこそ、不要になったらすぐに削除しています。OnDeinitが機能しない場合、プログラムに削除されることを伝えるにはどうしたらよいですか?

 
Nikolai Semko:

それこそ、不要になったらすぐに削除しています。OnDeinitが機能しない場合、プログラムはどのようにして削除されたことを知ることができるのでしょうか?

実際のタスクを教えてください。

 
fxsaber:

本当の問題は、私に教えてほしいのです。

本当の問題は、自分のハンドルネームは必要ないので、取得しないようにするだけで、簡単に解決しました。

Total = ChartIndicatorsTotal(0,0);
for (int i=0; i<Total; i++) 
  {
      string name=ChartIndicatorName(0,0,i);
      if (name!=MQLInfoString(MQL_PROGRAM_NAME)) 
         handle[i] = ChartIndicatorGet(0,0,name);
  }

自分のハンドルネームが必要だとしたら...と考えているところです。

そんな問題もあったのですが、記憶にありません。

 
Nikolai Semko:

ただ、もし自分のハンドルネームが必要だとしたら...。

そんな仕事もあったのですが、覚えていません。

Init_Syncにはそのようなニーズがあります。

 

ランダム化手法により、mqlの文字列、const wchar_t*型の文字列に普通にコピーすることを定義しています。
memcpy関数にこのパラメータを指定すると、mqlは文字列を漏れなく受信するようになった。

memcpy( out, data, wcslen(data) * (sizeof(char)*3) );

つまり、2バイトのsizeof(wchar_t)の代わりに、3バイトを使用していたのです。
mql の文字列が正しく const wchar_t * 文字列へのポインタを取るようになった。
大丈夫でしょうか?

しかし、興味深いことに、自称リテラル文字列はsizeof(wchar_t)で正しく渡される。
 
Roman:

適当に、mqlの文字列への通常のコピーを、const wchar_t* 型の文字列と定義しました。
memcpy関数にこのようなパラメータをつけると、mqlは文字列でも、漏れなく受信 するようになりました。

つまり、2バイトのsizeof(wchar_t)の代わりに、3バイトを使用していたのです。
mqlの文字列が正しくconst wchar_t* stringへのポインタを取るようになりました
正常でしょうか?

しかし、面白いことに、自分で書いたリテラル文字列はsizeof(wchar_t)で正しく渡されるのです。

なぜ、通常のwcscpyの代わりにmemcpyが 使われるのですか?

 
Ilyas:

なぜ、通常のwcscpyの代わりにmemcpyを使うのですか?

memcpyはRenateの 例文にあるように使用されました。
他のコピー機能を使っても同じ問題が発生します。
これらの関数による動作は、この投稿とこの
可能な限りのコピー機能を試した。

 
テスター(metaquot demo hedge server)で任意の日付の100000バーM15 EURUSDが読めません。


void OnInit()
  {
    datetime first_date;
   SeriesInfoInteger(_Symbol,_Period,SERIES_FIRSTDATE,first_date);
   int bars=Bars(_Symbol,_Period);
   Print("First date ",first_date," - ",bars," bars");
   
   datetime time[];
   CopyTime(_Symbol,PERIOD_M15,D'2015.01.01',100000,time);
   Print("rows=",100000," =? ",ArraySize(time));
   Print("Load data from ",D'2015.01.01'," =? ",time[0]," to ",time[ArraySize(time)-1],", rows=",100000," =? ",ArraySize(time));
//---

  }
 
void OnTick(){


}

は約37,000バーを読み取ります。ターミナルで実行すると、100000本のバーをすべて読み取ります。


サーバーからページングコードを追加してみた https://www.mql5.com/ru/docs/series/timeseries_access#synchronized

しかし、何も変わりません。

この100000本のバーをテスターで読み取るにはどうしたらいいのでしょうか?

Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
Документация по MQL5: Доступ к таймсериям и индикаторам / Организация доступа к данным
  • www.mql5.com
Прежде чем ценовые данные будут доступны в терминале MetaTrader 5, их необходимо получить и обработать. Для получения данных требуется подключение к торговому серверу MetaTrader 5. Данные поступают с сервера по запросу терминала в виде экономно упакованных блоков минутных баров. Механизм обращения к серверу за данными не зависит от того, каким...
 
elibrarius:

この10万本の棒はどのように計算するのですか?

まずは記事を読むことから始めましょうhttps://www.mql5.com/ru/articles/239

Основы тестирования в MetaTrader 5
Основы тестирования в MetaTrader 5
  • www.mql5.com
Идея автоматической торговли привлекательна тем, что торговый робот может без устали работать 24 часа в сутки и семь дней в неделю. Робот не знает усталости, сомнений и страха,  ему не ведомы психологические проблемы. Достаточно четко формализовать торговые правила и реализовать их в виде алгоритмов, и робот готов неустанно трудиться. Но прежде...