記事"MQL5 プログラミングの基礎: ファイル"についてのディスカッション - ページ 2 123 新しいコメント Rashid Umarov 2016.10.22 07:36 #11 Artyom Trishkin:mql5のヘルプにだけ、まだそれについての記述がない......。4ではあるのだろうか?FileSaveは 14日からすでにヘルプに載っています。サイトから手動でアップデートできる Rashid Umarov 2016.10.22 12:45 #12 Andrey F. Zelinsky:参考文献の分かりやすさについて少しコメントする。リファレンスの位置がすぐにはわからなかった(明らかな控えめな表現がある):いつものように批判する前にヘルプを読むべきだ。例題が役に立たないのであれば、どのような参考文献も無力です。void OnStart() { string filename=_Symbol+"_ticks.bin"; MqlTick ticks[];//--- int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save); if(copied!=-1) { PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied); //--- ティック履歴が同期されている場合、エラーコードはゼロになります。 if(!GetLastError()==0) PrintFormat("%s: Ticks are not synchronized, error=%d",_Symbol,copied,_LastError); //--- 刻みをファイルに書き込む if(!FileSave(filename,ticks,FILE_COMMON)) PrintFormat("FileSave() failed, error=%d",GetLastError()); } Rashid Umarov 2016.10.22 15:31 #13 Andrey F. Zelinsky:もしお望みなら、賞賛以外のことは一切書きません。もし私が賞賛し始めたら、皮肉だなどと言うだろう。私は喜べない。このフレーズがわかるならわかるintcommon_flag=0// ファイルフラグを指定すると、デフォルトではファイルは<data catalog>MQL5Filesフォルダに書き込まれる。 Renat Fatkhullin 2016.10.22 17:34 #14 Artyom Trishkin:mql5のヘルプにだけ、まだそれについての記述がない......。4ではあるのでしょうか? 残念ながら、4番目のバージョンでは何もありません。 fxsaber 2017.09.07 08:19 #15 ファイルとフォルダーのリストを取得する便利な関数を書いてみよう。残念ながら、この関数は完全なリスト(すべてのサブフォルダーとその中のファイルを含む)を提供しない。そのため、次のように追加する。string GetDirectory( const string FileName ) { int Pos = StringFind(FileName, "\\"); int LastPos = Pos; while (Pos >= 0) { LastPos = Pos; Pos = StringFind(FileName, "\\", Pos + 1); } return((LastPos >= 0) ? StringSubstr(FileName, 0, LastPos + 1) : ""); } // フィルターによる全ファイルのリストを返す int GetFileNames( string &FileNames[], int Pos = 0, string Filter = "*", const int Common_Flag = 0 ) { string FileName; const long handle = FileFindFirst(Filter, FileName, Common_Flag); if (handle != INVALID_HANDLE) { const string Directory = GetDirectory(Filter); Filter = StringSubstr(Filter, StringLen(Directory)); do { const string TmpFileName = Directory + FileName; ArrayResize(FileNames, Pos + 1); FileNames[Pos] = TmpFileName; Pos++; if (!FileIsExist(TmpFileName, Common_Flag)) Pos = GetFileNames(FileNames, Pos, TmpFileName + Filter, Common_Flag); } while (FileFindNext(handle, FileName)); FileFindClose(handle); } return(Pos); }フィルタの意味は記事と同じだ。アプリケーションの例// サンドボックスの構造全体をログに記録する。 void OnStart() { string FileNames[]; const int Amount = GetFileNames(FileNames); for (int i = 0; i < Amount; i++) Print(FileNames[i]); } fxsaber 2017.09.07 08:21 #16 一つの場所とトピックに 取引、自動取引システム、取引戦略のテストに関するフォーラム mql5言語の特徴、仕事の機微とテクニック fxsaber, 2017.08.15 17:30 // フォルダーを移動する。説明は FileMove -https://www.mql5.com/ja/docs/files/filemove と同じです。 bool FolderMove( const string FolderNameSrc, const string FolderNameDst, const int Common_Flag = 0, const int Mode_Flags = FILE_REWRITE ) { if (FolderNameSrc == FolderNameDst) return(false); string FileName; const long handle = ::FileFindFirst(FolderNameSrc + "\\*", FileName, Common_Flag); bool Res = false; if (handle != INVALID_HANDLE) { do { const string TmpFileNameSrc = FolderNameSrc + "\\" + FileName; const string TmpFileNameDst = FolderNameDst + "\\" + FileName; if (::FileIsExist(TmpFileNameSrc, Common_Flag)) Res = ::FileMove(TmpFileNameSrc, Common_Flag, TmpFileNameDst, Mode_Flags); else { const string TmpFileNameSrc2 = ::StringSubstr(TmpFileNameSrc, 0, ::StringLen(TmpFileNameSrc) - 1); const string TmpFileNameDst2 = ::StringSubstr(TmpFileNameDst, 0, ::StringLen(TmpFileNameDst) - 1); if (!FolderMove(TmpFileNameSrc2, TmpFileNameDst2, Common_Flag, Mode_Flags)) Res = ::FolderCreate(TmpFileNameDst2, Mode_Flags & FILE_COMMON); } } while (::FileFindNext(handle, FileName)); ::FileFindClose(handle); } return(::FolderDelete(FolderNameSrc, Common_Flag) && Res); } patheer 2017.12.04 20:51 #17 この記事は素晴らしい。 Sergey Savinkin 2018.05.13 14:17 #18 記事に誤字があります。関数「区切り文字を含むファイルを配列に読み込む」の説明の中で、構造体についての記述があります: struct SLine{ string line[]; }; となっているはずです(スクリプトではそうなっています): struct SLine{ string field[]; }; Rosimir Mateev 2018.07.25 18:56 #19 А как можно уменшить размер файла?BIN файл в которой поддерживаю какие то данни, потом делаю дефрагмент файла и наконец хочу умешнит его длина, потому что сзади уже есть лишное пространство.Как етого сделать?FileResize(int newSize) を使ってください。 Discussion of article "MQL5 どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - MetaTraderプログラムを簡単かつ迅速に開発するためのライブラリ(第19部): ライブラリメッセージのクラス WinProject 2019.06.04 23:38 #20 この記事、特に#property tester_fileについては、本当にありがとうございます。 123 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
mql5のヘルプにだけ、まだそれについての記述がない......。
4ではあるのだろうか?
FileSaveは 14日からすでにヘルプに載っています。
サイトから手動でアップデートできる
参考文献の分かりやすさについて少しコメントする。
リファレンスの位置がすぐにはわからなかった(明らかな控えめな表現がある):
いつものように批判する前にヘルプを読むべきだ。例題が役に立たないのであれば、どのような参考文献も無力です。
{
string filename=_Symbol+"_ticks.bin";
MqlTick ticks[];
//---
int copied=CopyTicks(_Symbol,ticks,COPY_TICKS_ALL,0,ticks_to_save);
if(copied!=-1)
{
PrintFormat(" CopyTicks(%s) copied %d ticks",_Symbol,copied);
//--- ティック履歴が同期されている場合、エラーコードはゼロになります。
if(!GetLastError()==0)
PrintFormat("%s: Ticks are not synchronized, error=%d",_Symbol,copied,_LastError);
//--- 刻みをファイルに書き込む
if(!FileSave(filename,ticks,FILE_COMMON))
PrintFormat("FileSave() failed, error=%d",GetLastError());
}
もしお望みなら、賞賛以外のことは一切書きません。もし私が賞賛し始めたら、皮肉だなどと言うだろう。私は喜べない。
このフレーズがわかるなら
わかる
intcommon_flag=0// ファイルフラグを指定すると、デフォルトではファイルは<data catalog>MQL5Filesフォルダに書き込まれる。
mql5のヘルプにだけ、まだそれについての記述がない......。
4ではあるのでしょうか?
残念ながら、この関数は完全なリスト(すべてのサブフォルダーとその中のファイルを含む)を提供しない。そのため、次のように追加する。
フィルタの意味は記事と同じだ。アプリケーションの例
一つの場所とトピックに
取引、自動取引システム、取引戦略のテストに関するフォーラム
mql5言語の特徴、仕事の機微とテクニック
fxsaber, 2017.08.15 17:30
この記事は素晴らしい。
記事に誤字があります。関数「区切り文字を含むファイルを配列に読み込む」の説明の中で、構造体についての記述があります:
となっているはずです(スクリプトではそうなっています):
А как можно уменшить размер файла?BIN файл в которой поддерживаю какие то данни, потом делаю дефрагмент файла и наконец хочу умешнит его длина, потому что сзади уже есть лишное пространство.Как етого сделать?FileResize(int newSize) を使ってください。