無料でロボットをダウンロードする方法を見る
Telegram上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
Demo_FileWriteArray - MetaTrader 5のためのエキスパート
- ビュー:
- 768
- 評価:
- パブリッシュ済み:
- 2016.09.29 12:21
- アップデート済み:
- 2016.11.22 07:34
- このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
エキスパートアドバイザーは、ティックごとに売買価格を取得し「prices」構造体配列に記録します。構造体配列のデータは20ティックごとにFileWriteArray()関数によってファイルに書き込まれます。データは、ローカル端末のフォルダのサブディレクトリ内のバイナリファイルに記録されます。端末ローカルフォルダはTerminalInfoString()関数の呼び出しによって取得できます。
PrintFormat("The path to the terminal local folder: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));チャートからエキスパートアドバイザーを削除する場合は、エキスパートアドバイザーがその作業を終了した後のまだファイルに書かれていないデータがファイルに書き込まれます。
コード:
//--- 入力パラメータ input string InpFileName="data.bin"; input string InpDirectoryName="SomeFolder"; //+------------------------------------------------------------------+ //| 価格データを格納する構造体 | //+------------------------------------------------------------------+ struct prices { datetime date; // データ double bid; // 売値 double ask; // 買値 }; //--- グローバル変数 int count=0; int size=20; string path=InpDirectoryName+"//"+InpFileName; prices arr[]; //+------------------------------------------------------------------+ //| エキスパート初期化関数 | //+------------------------------------------------------------------+ int OnInit() { //--- 配列へのメモリ追加 ArrayResize(arr,size); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| エキスパート初期化解除関数 | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- count<n の場合、残り数を書く WriteData(count); } //+------------------------------------------------------------------+ //| エキスパートティック関数 | //+------------------------------------------------------------------+ void OnTick() { //--- データを配列に保存する arr[count].date=TimeCurrent(); arr[count].bid=SymbolInfoDouble(Symbol(),SYMBOL_BID); arr[count].ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK); //--- 現在のデータを表示する Print("Date = ",arr[count].date," Bid = ",arr[count].bid," Ask = ",arr[count].ask); //--- カウンタを増やす count++; //--- 配列がすでに記入済みなら、データをファイルに書いてゼロで書きなおす if(count==size) { WriteData(size); count=0; } } //+------------------------------------------------------------------+ //| 配列の n 要素をファイルに書く | //+------------------------------------------------------------------+ void WriteData(const int n) { //--- ファイルを開く ResetLastError(); int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- 配列データをファイルの終わりに書く FileSeek(handle,0,SEEK_END); FileWriteArray(handle,arr,0,n); //--- ファイルを閉じる FileClose(handle); } else Print("Failed to open the file, error ",GetLastError()); }
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/1620
Demo_FileReadArray
このスクリプトはFileReadArray()関数の使用例を実証します。
X Bar Clear Close Trend以前のバーの極値を閉じるブレイクスルーパターンに基づいた代替のトレンド指標