MT4ファイルの機能置換。 - ページ 10

 

ファイル交換について

外部シグナルを利用するEAをStrategy Testerで テストしたいのですが、スレッドによるとStrategy Testerではネイティブのファイルハンドリングが機能しないとのことです。そこで、このスレッドで提供されているDLLを使用してみました。私が処理したい入力は、以下のようなファイルです。

2007-01-02;EURUSD;2.InstPipDown;;Yes

2007-01-02;USDJPY;1.InstPipUp;;Yes

2007-01-02;USDCHF;1.InstPipUp;;Yes

2007-01-03;EURUSD;2.InstPipDown;;Yes

2007-01-03;EURUSD;4.PipMax1Down;;Yes

2007-01-03;GBPUSD;4.PipMax1Down;;Yes

2007-01-04;USDJPY;8.PipRevBear;;Yes

2007-01-05;EURUSD;5.PipMax2Up;;Yes

2007-01-05;USDJPY;1.InstPipUp;;Yes

自分でファイルを作成するので、他の種類のデリミタを使うことができます。

一度に1つの「レコード」を取得するために、DLLをどのように使用すればよいですか?個々のフィールドのパージングを行うことができます。

EOFに到達したことを知るにはどうしたらよいですか?

いくつかのバリエーションを試しましたが、一貫性のない結果が得られ、時にはゴミが出ます。例のようにデータを書き込むのはうまくいくのですが、データを読み込みたいのです。

 

まあ、粘り強いのは当たり前です。

数時間後、私はこれを発見しました。

ファイルハンドラは、他のプログラムで作成したファイルを開くことを拒否しています。開くと-1が返されます。デモで作成されたファイル(mt4.log)を使い、私のコンテンツをそこにコピーすると、オープンは機能します。なぜなのかわかりません。奇妙な

私は「レコード」を固定長にして、「レコード」の長さに、各レコードの末尾の「CRLF」を調整するために2を加えたものを読みました。ファイルの長さをレコードの長さで割って、ループして、すべてのレコードを配列に取り込みました。

以下はそのコードである。

int init()

{

文字列 inArr[500];

int file;

int filesize;

int records;

int i;

file = gFileOpen("c:\mt4.log",READ);

// Print(file)します。

filesize = gFileSize(file);

// Print(filesize)を実行します。

records = filesize/25;

// Print(records)します。

for(i=1;i<=records;i++)

{

inArr = gFileRead(file,25);

}

gFileClose(file);

Print(inArr[filesize-1]); //最後の1つをチェックする。

return(0);

}

 

fileoutputを使ったインジケーター

こんにちは、トレーダーとプログラマーの皆さん。

新しいインジケータのコード生成の手助けをお願いします。

このインジケータは、関連する情報をファイルに書き出すことができるはずですが、それは新しいローソクを開いた後にのみ書き出す必要があります。

これはRAPID-Iを使用して外部で行われる必要があります。

そして、ろうそくの終値がどのような確率になるかを学ぶためにいくつかの他の情報を持つ。

素晴らしいプロジェクトになると思いますが、あまりにも簡単なことなので、私は愚かな(または怠惰な) :-)を行うには。

PriNova

 

datetime timeprev=0; init() の前に。

if(timeprev==Time[0])とする。

return(0)とします。

timeprev=Time[0];start()の直下。

で、終わりです。

 

とても早い回答で助かりました。

ありがとうございました。

 

ライブラリからmove関数が 削除された理由

CodersGuruです。

あなたがいなければ、私はクライアントをサポートする仕事をすることができなかったでしょうから、あなたは私がクライアントから受ける賞賛の多くに値します。

チュートリアルで言及されているように、Move機能が実装されていない理由は何ですか?

4つのサービスに再び感謝します。

ジョン・マックグローリン

 

gFileRead

こんにちは。

mtguru1.dllのソースコードを見て、gFileRead()関数が動作しないことを発見しました。私は間違っているのでしょうか?

gFileRead()は、ファイルから読み込んだ文字列を格納するためにローカル変数を使用します。関数が戻るとき、その変数へのポインタを返しますが、ローカル変数pbufferがスコープ外になるため、このポインタは有効なものである可能性があります。

そのため、MQL4のEAからすると、次のような命令はクラッシュするはずです。

string buffer = gFileRead( handle, 50 );

というような命令が出てくるはずで、それが動くとしたら不思議なものです・・・。

追伸:以前、間違ったスレッドに投稿してしまったことがあります。https://www.mql5.com/en/forum/172885。

 

Errata Corrige:

......しかし、このポインタは有効なものである可能性があります......。

しかし、このポインタは有効なものではありません

 

exeファイルを実行する

こんにちは。

簡単なことをしたい(と思った)のですが。EAから単純に外部プログラムを開きたい(起動したい)のです。(EA内ではありません)

ということで、一応、例を挙げておきます。例えば、EA内であることが起きたら、Microsoft Wordを開きたいとします。

以前これをやったことがあるのですが、スクリプトが見つからず、2時間かけてWebを探しました。次回はコードを安全な場所に保存しておきます。

 

何か質問がありますか?

2008.10.21 01:54:34 Fundamental Trader DailyFX_MQL4 v0.02: handle 2 does not exist in FileClose" というエラーが出てしまいました。

どうすればいいのでしょうか?