This whole idea is that let's let I have directories with files for processing at "..\MQL5Files00dir_01" address. Using your wonderful code, I get path to these folders in array and want to access these files, knowing exactly what files should be processed, and I have to write the path, example "MQL5Files↘TEST.".csv "と入力すると、"MQL5⇄Files00⇄dir_01A⇄"と返されます。
This whole idea is that let's let I have directories with files for processing at "..\MQL5Files00dir_01" address. Using your wonderful code, I get path to these folders in array and want to access these files, knowing exactly what files I need to process, and I need to set path to these files, for example "MQL5╱Files00↩dir_01╱test.".csv "と入力すると "MQL5⇄Files00⇄dir_01A↩"と返ってくるので、これを修正して、さらにコードに適用できる最適パスを返せるかどうか聞いています。
//+------------------------------------------------------------------+//| Script program start function |//+------------------------------------------------------------------+voidOnStart()
{
//--- неправильный способ открытия файлаstringterminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
stringfilename=terminal_data_path+"\\MQL5\\Files\\"+"fractals.csv";int filehandle=FileOpen(filename,FILE_WRITE|FILE_CSV);
if(filehandle<0)
{
Print("Неудачная попытка открыть файл по абсолютному пути");
Print("Код ошибки ",GetLastError());
}
//--- правильный способ работы в "файловой песочнице"ResetLastError();
filehandle=FileOpen("fractals.csv",FILE_WRITE|FILE_CSV);
if(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(), EnumToString(_Period));
FileClose(filehandle);
Print("FileOpen OK");
}
elsePrint("Операция FileOpen неудачна, ошибка ",GetLastError());
//--- еще один пример с созданием вложенной директории в MQL5\Files\string subfolder="Research";
filehandle=FileOpen(subfolder+"\\fractals.txt",FILE_WRITE|FILE_CSV);
if(filehandle!=INVALID_HANDLE)
{
FileWrite(filehandle,TimeCurrent(),Symbol(), EnumToString(_Period));
FileClose(filehandle);
Print("Файл должен быть создан в папке "+terminal_data_path+"\\"+subfolder);
}
elsePrint("Операция FileOpen неудачна, ошибка ",GetLastError());
}
[in] Имя открываемого файла, может содержать подпапки. Если файл открывается для записи, то указанные подпапки будут созданы в случае их отсутствия. [in] значение, используемое в качестве разделителя в txt или csv-файле. Если для csv-файла разделитель не указан, то по умолчанию используется символ табуляции. Если для txt-файла разделитель не...
どこで使うか?
This whole idea is that let's let I have directories with files for processing at "..\MQL5Files00dir_01" address. Using your wonderful code, I get path to these folders in array and want to access these files, knowing exactly what files should be processed, and I have to write the path, example "MQL5Files↘TEST.".csv "と入力すると、"MQL5⇄Files00⇄dir_01A⇄"と返されます。
どこで使うか?
This whole idea is that let's let I have directories with files for processing at "..\MQL5Files00dir_01" address. Using your wonderful code, I get path to these folders in array and want to access these files, knowing exactly what files I need to process, and I need to set path to these files, for example "MQL5╱Files00↩dir_01╱test.".csv "と入力すると "MQL5⇄Files00⇄dir_01A↩"と返ってくるので、これを修正して、さらにコードに適用できる最適パスを返せるかどうか聞いています。
ダブルスラッシュの意味を理解していないだけで、構文上では1つの文字が2つで表記されます:最初のスラッシュコマンド、2番目のスラッシュ何。
\n, \r, \t, \", \ はこの規則で設定される文字である。すなわち、パスには常にスラッシュが1つ含まれます。
ダブルスラッシュの意味を理解していないだけで、構文上は1つの文字で、最初のスラッシュコマンド、2番目のスラッシュ何と2つで表現されます。
\n, \r, \t, \", \ はこの規則で設定される文字である。すなわち、パスの中に常にスラッシュが1つある。
私は何かを見逃していることを除外しないが、私は1つではなく、2つのスラッシュをファイルパスを生成するために必要です。
私が何かを誤解している可能性は排除できませんが、ファイルパスを生成するにはスラッシュが1つではなく、2つ必要です。
スラッシュは2つも必要ありません。
ログにスラッシュを1つ、2つ、3つ出力してみて ください。その時、理解できるかもしれません。スラッシュは2つも必要ありません。
ログにスラッシュを1つ、2つ、3つ出力してみてください。そうすれば、理解できるかもしれません。はい、スラッシュがコマンドであることは理解していますが、パスを書く必要があり、そのためにダブルスラッシュを使っています。
これがその道筋です。
配列Folders[0]に文字列を取得しました。
00\dir_01\A\
同じ名前で異なるディレクトリにあるファイルに、配列のインデックスを変えて アクセスしたい。
が、このコマンドはエラーになりますよね?
それはもったいない。
こんにちは。
MQL4からMQL5に切り替えようとしているのですが、最後に閉じた位置がわかりません。
MQL5では、注文を出すとオーダーになり、オープンするとポジションになり、論理的にはポジション履歴に入り、削除された保留オーダーは オーダー履歴に入るはずですが、ディールのオーダー履歴しか見られず、クローズしたポジションがどこにあるのか分かりません。
こんな風にやってみました。
ただし、オープンポジションとクローズドポジションの両方が表示されます。ORDER_TYPEが常に4を表示しており、これもよくわからない。
ORDERをDEALに変更してみましたが、こちらもうまくいきません。
どうか、助けてください!何が悪いのでしょうか?
ウラジミール、ありがとうございます。私はすでにCsymbolInfo クラスのRefreshRates 関数 を知っています。作品でも見たし、入門書でも読んだことがある。
OnTickで この関数を呼び出し、 Commentで 価格値を出力していることも、例から見て明らかです。OnInitで現在のシンボルを 確認する手順も、私には明確 です。
新しいバーを使った例を待つ間、あなたの例で練習をしてみようと思います、私は実践で使ったことがありません。試してみます。
そのため、この例は新しいバーが誕生した瞬間にのみ動作します。
この例では、静的変数PrevBars、prev_ask、prev_bidを 使用しています。静的変数の本質は
static キーワードで宣言されたローカル 変数は、その関数の有効 期間中、値を保持 します。その後の関数の呼び出しでは、これらのローカル変数に直前の呼び出し時の値が格納されます。
つまり、3つの静的変数(PrevBars,prev_ask,prev_bid)はOnTick関数内で宣言されたローカル変数で、以前にOnTick関数に入ったときの値が格納されています。
PrevBars には、前のバーの時刻が格納される。この時刻は、現在のバーの時刻であるtime_0と 比較される。PrevBarsがtime_0と 等しい限り、現在のバーにいることになり、OnTick関数を終了します。前のバーの価格を格納する変数も同じです。まず、前の価格と現在の価格を表示し、現在の価格を変数prev_ask とprev_bid に書き込んでいます。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
初心者からのFAQ MQL5 MT5 MetaTrader 5
アレクセイ・ヴャズミキン さん 2018.12.05 00:39
スラッシュコマンドなんだろうけど、パスを書かないといけない。
以下、パスとします。
Folders[0]配列に文字列を取得しました。
00\dir_01\A\
同じ名前で異なるディレクトリにあるファイルに、配列のインデックスを変えて アクセスしたい。
が、このコマンドはエラーになりますよね?
エラーは発生しません。ダブルスラッシュの意味がまだわかってないんだな
はい、スラッシュがコマンドであることは理解していますが、パスを書く必要があり、そのためにダブルスラッシュを使っています。
以下はその例です。
配列Folders[0]に文字列を取得しました。
同じ名前で異なるディレクトリにあるファイルに、配列のインデックスを変えて アクセスしたい。
が、このコマンドはエラーになりますよね?
Alexey、ドキュメントから例を挙げてみましょう。
と入力し、サンプルコードで強調表示されている2つの文字列変数を表示します。違いを見つけて、ダブルスラッシュはプログラムコードにしか書かれていないが、コンパイル時には1つだけ残り、ファイルパスには1つだけ使われることを理解する。