[警告は閉鎖されました!】フォーラムを乱雑にしないために、どんな初心者の質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしでは、どこにも行けない。 - ページ 471

 
Axmed писал(а)>>


CSV -カンマで 区切られた値。デリミタは「,」がデフォルトである。を使った分離はあまり使われないし、MQL4でもサポートされているかどうかわからない。


intFileOpen() 文字列ファイル名, int mode, int delimiter=';')
入出力用のファイルを開きます。オープンしたファイルのファイルディスクリプタを返すか、失敗した場合は-1を返す。GetLastError() を呼び出すと、エラーに関する詳細な情報を得ることができます。
Note: ファイルは、terminal_directory encryptes files( expert testing の場合はterminal_directorytester-cryptes files) フォルダまたはそのサブフォルダでのみ開くことができます。
FILE_BINモードとFILE_CSVモードは同時に使用できません。
FILE_WRITE と FILE_READ を組み合わせない場合、長さゼロのファイルを開くことになる。開く前のファイルにデータがあったとしても、破棄されます。既存のファイルにデータを追加する必要がある場合、FILE_READ|FILE_WRITEの組み合わせでファイルを開く必要があります。
FILE_READ と FILE_WRITE を組み合わせない場合、ファイルが既に存在する場合のみオープンされる。ファイルが存在しない場合、FILE_WRITE を使用して作成することができる。
同じ実行ファイル内で同時に開くことができるファイルは32個までです。あるモジュールで開いたファイルのディスクリプタは、他のモジュール(ライブラリ)には転送できません。
パラメータ
ファイル名 - Filename - ファイル名です。
モード - 開封の方法。FILE_BIN、FILE_CSV、FILE_READ、FILE_WRITEというように、1つの値、または複数の値の組み合わせで指定することが可能です。
デリミタ - csvファイルのデリミタ文字。デフォルトでは、';'文字が適用されます。
 int handle; handle=FileOpen("my_data.csv",FILE_CSV|FILE_READ,';'); if(handle<1) { Print("File my_data.dat not detected, last error ", GetLastError()); return(false); }.

ヘルプも読んでみてください。
 
Axmed >>:


Что конкретно Вам не понравилось в том что я пишу?..

すべて間違っている。
";" - この文字がデフォルトのデリミタとみなされます。
FileReadString - 文字列全体ではなく、ファイル内の現在のポインタ位置から次のセパレータまでを読み取ります。

 

こんにちは、カスタムインジケータから 必要な変数を呼び出す方法を教えてください。 GlobalVariableSet() / GlobalVariableGet() を試しましたが、他のEAからは動作しますが、インジケータからは動作しません。よろしくお願いします。

 
kara100 писал(а)>>

こんにちは、カスタムインジケータから必要な変数を呼び出す方法を教えてください。 GlobalVariableSet() / GlobalVariableGet() を試しましたが、他のEAからは動作しますが、インジケータからは動作しません。よろしくお願いします...


どの変数を、どの指標から取得したいのか?
 

MPからの価格(228行目) - (価格)レベルの値が必要です。

ファイル:
ymp_1.mq4  6 kb
 
kara100 писал(а)>>

MPからの価格(228行目) - 値(価格)レベルが必要です。


変数 prise をグローバルレベルに移動し、関数 start() の最初に文字列 GlobalVariableSet("55", prise); を置き、他のプログラムから double x=GlobalVariableGet("55") を取得してみます。

 
Techno писал(а)>>


変数 prise をグローバルレベルに移動し、関数 start() の最初に文字列 GlobalVariableSet("55", prise); を置き、他のプログラムから double x=GlobalVariableGet("55") を取得しようとします。


試してみたが...。グローバル変数が記述されていない、つまりグローバル変数がインジケータから出てこない、と書いてあるのですが...。>> もう一度やってみます。

 
kara100 писал(а)>>


試してみた感想は...。には、グローバル変数が記述されていない、つまり、インジケータからグローバル変数が出てこない、と書かれています...。>> もう一度やってみます。


コードを修正したら、ここに投稿してください。
 
文字列をダブルに変換する方法を教えてください。
StrToDouble()が動作しない :(

Handle=FileOpen(File_Name,FILE_CSV|FILE_READ,";");// Открытие файла
if(Handle<0) // Неудача при открытии файла
{
if(GetLastError()==4103) // Если файла не существует,..
Alert("Нет файла с именем ",File_Name);//.. извещаем трейдера
else // При любой другой ошибке..
Alert("Ошибка при открытии файла ",File_Name);//..такое сообщ
PlaySound("Bzrrr.wav"); // Звуковое сопровождение
return; // Выход из start()
}
k=0;
while(FileIsEnding(Handle)==false) // До тех пор, пока файловый ..
{ // ..указатель не в конце файла
//--------------------------------------------------------- 5 --
ss1[k] = (FileReadString(Handle));
x1[k]=StrToDouble(ss1[k]);//
ss2[k] = (FileReadString(Handle));
rr1[k] = (FileReadString(Handle));
rr2[k] = (FileReadString(Handle));
k=k+1;
if(FileIsEnding(Handle)==true) // Файловый указатель в конце
break; // Выход из чтения и рисования
}
FileClose( Handle ); // Закрываем файл
PlaySound("bulk.wav"); // Звуковое сопровождение
//-----------------------------------------------
Alert(" ", ss1[0], " ", ss2[0], " ", rr1[0], " ", rr2[0], " x1== ", x1[0] );

文字列配列は、通常、ファイルから入力します。 しかし、これらの文字列をdoubleに変換する必要があります。
しています。
x1[k]=StrToDouble(ss1[k]);
しかし、Alert に出力すると x1[0] = 0 となり、間違っています。つまり、どこかで型変換に間違いがあるのです...

この状況を解決するにはどうしたらいいでしょうか?
 
Morzh09 >>:

Друзья, спасибо большое, что откликнулись. уточнение, как преобразовать string в double?
StrToDouble() - не прокатывает :(
Строковые массивы заполняются из файла нормально. Но, необходимо преобразовать эти строки в double.
делаю это:
x1[k]=StrToDouble(ss1[k]);
но, при выводе в Алерте, x1[0] = 0, что неправильно. то есть, где-то тут ошибка в преобразовании типов...

Как такую ситуацию исправить?

スクリプト全体を掲載していただけませんか?変数配列の宣言などでということです。