無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
興味深いスクリプト?
それではリンクにそれを投稿してください。-
他の人にそれを評価してもらいます
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
エキスパート

Demo_FileWriteArray - MetaTrader 5のためのエキスパート

ビュー:
734
評価:
(23)
パブリッシュ済み:
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

i-Monday_Sig i-Monday_Sig

「Monday(月曜日)」システムの参入シグナル

Demo_FileGetInteger Demo_FileGetInteger

このスクリプトはFileGetInteger()関数の使用例を実証します。

Demo_FileReadArray Demo_FileReadArray

このスクリプトはFileReadArray()関数の使用例を実証します。

X Bar Clear Close Trend X Bar Clear Close Trend

以前のバーの極値を閉じるブレイクスルーパターンに基づいた代替のトレンド指標