無料でロボットをダウンロードする方法を見る
Facebook上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
- ビュー:
- 988
- 評価:
- パブリッシュ済み:
- 2016.09.29 12:23
- アップデート済み:
- 2016.11.22 07:34
-
このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
このスクリプトは指定された銘柄の価格を取得して分析し、一定期間内の価格の動きのデータをバイナリファイルに書き込みます。データの書き込みにはFileWriteInteger() 関数が使われます。
データの値は初めに文字列に変換され、uchar型の配列に分けられて関数を使ってファイルに書き込まれます。
コード:
//--- スクリプト起動時に入力パラメータウィンドウを表示する #property script_show_inputs //--- 端末からデータを受け取るパラメータ input string InpSymbolName="EURUSD"; // 通貨ペア input ENUM_TIMEFRAMES InpSymbolPeriod=PERIOD_H1; // 時間軸 input datetime InpDateStart=D'2013.01.01 00:00'; // データコピー開始日 //--- データをファイルに書くためのパラメータ input string InpFileName="Trend.bin"; // ファイル名 input string InpDirectoryName="Data"; // ディレクトリ名 //+------------------------------------------------------------------+ //| スクリプトプログラム開始関数 | //+------------------------------------------------------------------+ void OnStart() { datetime date_finish=TimeCurrent(); double close_buff[]; datetime time_buff[]; int size; //--- エラー値をリセットする ResetLastError(); //--- それぞれのバーの終値を複製する if(CopyClose(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,close_buff)==-1) { PrintFormat("Failed to copy the values of close prices. Error code = %d",GetLastError()); return; } //--- それぞれのバーの終値を複製する if(CopyTime(InpSymbolName,InpSymbolPeriod,InpDateStart,date_finish,time_buff)==-1) { PrintFormat("Failed to copy the values of close prices. Error code = %d",GetLastError()); return; } //--- バッファサイズを受け取る size=ArraySize(close_buff); //--- 値を書き込むためにファイルを開く(ファイルが存在しない場合は自動的に作成される) ResetLastError(); int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_WRITE|FILE_BIN); if(file_handle!=INVALID_HANDLE) { PrintFormat("%s file is available for writing",InpFileName); PrintFormat("File path: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH)); //--- int up_down=0; // トレンドフラグ int arr_size; // arr 配列サイズ uchar arr[]; // uchar型の配列 //--- 時間値をファイルに書く for(int i=0;i<size-1;i++) { //--- 現在と次のバーの終値を比べる if(close_buff[i]<=close_buff[i+1]) { if(up_down!=1) { //--- FileWriteInteger を使用してデータ値をファイルに書く StringToCharArray(TimeToString(time_buff[i]),arr); arr_size=ArraySize(arr); //--- 初めにシンボル数を配列に書く FileWriteInteger(file_handle,arr_size,INT_VALUE); //--- シンボルを書く for(int j=0;j<arr_size;j++) FileWriteInteger(file_handle,arr[j],CHAR_VALUE); //--- トレンドフラグを変更する up_down=1; } } else { if(up_down!=-1) { //--- FileWriteInteger を使用してデータ値をファイルに書く StringToCharArray(TimeToString(time_buff[i]),arr); arr_size=ArraySize(arr); //--- 初めにシンボル数を配列に書く FileWriteInteger(file_handle,arr_size,INT_VALUE); //--- シンボルを書く for(int j=0;j<arr_size;j++) FileWriteInteger(file_handle,arr[j],CHAR_VALUE); //--- トレンドフラグを変更する up_down=-1; } } } //--- ファイルを閉じる FileClose(file_handle); PrintFormat("Data is written, %s file is closed",InpFileName); } else PrintFormat("Failed to open %s file, Error code = %d",InpFileName,GetLastError()); }
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/1635

この指標はFileReadInteger() 関数の使用例を実証します。

利益/損失を計算する電卓パネルデータは、行が移動された時やピップまたは預金通貨での参入価格、ロット、利益または損失のパラメータ値が入力フィールドで変更されるときに算出されます。