無料でロボットをダウンロードする方法を見る
Twitter上で私たちを見つけてください。
私たちのファンページに参加してください
私たちのファンページに参加してください
記事を気に入りましたか?MetaTrader 5ターミナルの中でそれを試してみてください。
Demo_FileReadDatetime - MetaTrader 5のためのインディケータ
- ビュー:
- 916
- 評価:
- パブリッシュ済み:
- 2016.09.29 12:22
- アップデート済み:
- 2016.11.22 07:34
- このコードに基づいたロボットまたはインジケーターが必要なら、フリーランスでご注文ください フリーランスに移動
この指標は、ローカル端末のフォルダのサブディレクトリにあるファイルから売買シグナルを読み取りそれらを上下矢印の形で表示します。シグナルファイルの取得にはDemo_FileWriteスクリプトを実行します。端末ローカルフォルダはTerminalInfoString()関数の呼び出しによって取得できます。
PrintFormat("The path to the terminal local folder: %s\\Files\\",TerminalInfoString(TERMINAL_DATA_PATH));指標はデータの取得にFileReadDatetime()関数に加えてFileReadNumber()及びFileReadBool()関数を使います。
コード:
#property indicator_chart_window #property indicator_buffers 2 #property indicator_plots 2 //---- Label1 をプロットする #property indicator_label1 "UpSignal" #property indicator_type1 DRAW_ARROW #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 4 //---- Label2 をプロットする #property indicator_label2 "DownSignal" #property indicator_type2 DRAW_ARROW #property indicator_color2 clrRed #property indicator_style2 STYLE_SOLID #property indicator_width2 4 //--- データ読み取りパラメータ input string InpFileName="MACD.csv"; // ファイル名 input string InpDirectoryName="Data"; // ディレクトリ名 //--- グローバル変数 int ind=0; // インデックス double upbuff[]; // 上向き矢印の指標バッファ double downbuff[]; // 下向き矢印の指標バッファ bool sign_buff[]; // シグナル配列(true - 買、false - 売) datetime time_buff[]; // シグナル到着時の配列 int size=0; // シグナル配列のサイズ //+------------------------------------------------------------------+ //| カスタム指標初期化関数 | //+------------------------------------------------------------------+ int OnInit() { //--- ファイルを開く ResetLastError(); int file_handle=FileOpen(InpDirectoryName+"//"+InpFileName,FILE_READ|FILE_CSV); if(file_handle!=INVALID_HANDLE) { PrintFormat("%s file is open for reading",InpFileName); //--- 初めにシグナルの数を読む size=(int)FileReadNumber(file_handle); //--- 配列へメモリを割り当てる ArrayResize(sign_buff,size); ArrayResize(time_buff,size); //--- ファイルからデータを読む for(int i=0;i<size;i++) { //--- シグナルの時刻 time_buff[i]=FileReadDatetime(file_handle); //--- シグナル値 sign_buff[i]=FileReadBool(file_handle); } //--- ファイルを閉じる FileClose(file_handle); } else { PrintFormat("Failed to open %s file, Error code = %d",InpFileName,GetLastError()); return(INIT_FAILED); } //--- 配列の結合 SetIndexBuffer(0,upbuff,INDICATOR_DATA); SetIndexBuffer(1,downbuff,INDICATOR_DATA); //--- PLOT_ARROW での描画のためにシンボルコードを設定 PlotIndexSetInteger(0,PLOT_ARROW,241); PlotIndexSetInteger(1,PLOT_ARROW,242); //---- チャートでは表示されない指標値を設定 PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,0); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| カスタム指標反復関数 | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { ArraySetAsSeries(time,false); ArraySetAsSeries(high,false); ArraySetAsSeries(low,false); //--- まだ処理されてないバーのループ for(int i=prev_calculated;i<rates_total;i++) { //--- デフォルト値は0 upbuff[i]=0; downbuff[i]=0; //--- まだデータがあるかをチェック if(ind<size) { for(int j=ind;j<size;j++) { //--- 日付が同じならファイルの値を使用する if(time[i]==time_buff[j]) { //--- シグナルに合わせて矢印を描画する if(sign_buff[j]) upbuff[i]=high[i]; else downbuff[i]=low[i]; //--- カウンタを増やす ind=j+1; break; } } } } //--- 次の呼び出しのためのprev_calculatedの返し値 return(rates_total); }
MetaQuotes Ltdによってロシア語から翻訳されました。
元のコード: https://www.mql5.com/ru/code/1627
Demo_FileWrite
このスクリプトはFileWrite() 関数の使用例を実証します。
X Bar Clear Close Trend以前のバーの極値を閉じるブレイクスルーパターンに基づいた代替のトレンド指標
Demo_FileWriteDouble
このスクリプトはFileWriteDouble()関数の使用例を実証します。
Demo_FileReadDoubleこの指標はFileReadDouble() 関数の使用例を実証します。