//--------------------------------------------------------------------// timetablenews.mq4// Предназначен для использования в качестве примера в учебнике MQL4.//--------------------------------------------------------------- 1 --int start() // Спец. функция start
{
//--------------------------------------------------------------- 2 --int Handle, // Файловый описатель
Stl; // Стиль вертикальной линииstring File_Name="News.csv", // Имя файла
Obj_Name, // Bмя объекта
Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Text, // Текст описания события
Str_DtTm; // Дата и время события(строка)datetime Dat_DtTm; // Дата и время события(дата)color Col; // Цвет вертикальной линии//--------------------------------------------------------------- 3 --
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()
}
//--------------------------------------------------------------- 4 --while(FileIsEnding(Handle)==false)// До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
Text =FileReadString(Handle);// Текст описания событияif(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Dat_DtTm =StrToTime(Str_DtTm); // Преобразование типа данных
Instr =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символа
Stl=STYLE_DOT; // Для всех - стиль пунктир
Col=DarkOrange; // Для всех - цвет такойif(Instr==One || Instr==Two) // А для событий по нашему ..
{ // .. финансовому инструменту..
Stl=STYLE_SOLID; // .. такой стиль..
Col=Red; // .. и такой цвет верт. линии
}
//--------------------------------------------------------- 7 --
Obj_Name="News_Line "+Str_DtTm; // Имя объектаObjectCreate(Obj_Name,OBJ_VLINE,0,Dat_DtTm,0);//Создаем объект..ObjectSet(Obj_Name,OBJPROP_COLOR, Col); // ..и его цвет,..ObjectSet(Obj_Name,OBJPROP_STYLE, Stl); // ..стиль..ObjectSetText(Obj_Name,Text,10); // ..и описание
}
//--------------------------------------------------------------- 8 --FileClose( Handle ); // Закрываем файлPlaySound("bulk.wav"); // Звуковое сопровождениеWindowRedraw(); // Перерисовываем объектыreturn; // Выход из start()
}
//--------------------------------------------------------------- 9 --
正しく理解できていますか?ファイルポインタは、テキスト記号によって流入されるのではなく(例えば:text| where | is file pointer)、例えば、text wherek is "to" character, k-th is highlighted by file pointerのように、式を伴うポインタである。これが文字列の必要性を説明している(p.164参照)。
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
if(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
こんにちは。ファイルポインタについての質問です。MQL4.communityに あるMQL4 ブックの「Standard Functions」セクションに、ファイルからデータを読み込んで、シンボルウィンドウにグラフィックオブジェクトを表示するためのスクリプト「File Operations」の例が掲載されています。
以下、Book onMQL4 でこのスクリプトを解析すると、「指定されたチェック(ブロック5-6の最後の2行)が外されると、実行時に余分なオブジェクトが作成 される」という文言があります。そして、その後に初めてwhile ループの終了条件が発動し、制御がブロック8-9に渡される」。
正しく理解できていますか?ファイルポインタは、テキスト記号によって流入されるのではなく(例えば:text| where | is file pointer)、例えば、text wherek is "to" character, k-th is highlighted by file pointerのように、式を伴うポインタである。これが文字列の必要性を説明している(p.164参照)。
確かに。最後の反復処理で、LASTオブジェクトを作成した後
2007.05.11 18:30;JPY
の場合,ファイルポインタは最後のオブジェクトの位置にある,つまり
2007.05.11 18:30;円 工業生産
(oは"o"文字、kはファイルインデックス).これは 、ファイル ポインタがファイルの終端ではなく、そのファイルの最後の文字にあるため です。そして、最初の2行が実行されると、ファイルポインタは空のスペースに移動し、もし行が無ければ
を実行すると、スクリプトは空の説明と0に 対応する時間座標を持つグラフィック(すなわちライン)を作成します。 これは、「指定されたチェック(ブロック5-6の最後の2行)が削除されると、実行時に余分なオブジェクトが作成 されます」というフレーズを意味します。"
質問:私の理解は正しいですか?
a) ファイルポインタの定義。
b)「指定されたチェック(ブロック5-6の最後の2行)が削除さ れると、プログラム実行時に余分なオブジェクトが 生成される」という文言の意味。そして、その後に初めてwhile ループの終了条件が発動し、制御が8-9ブロックに渡されることになる」。
P.S. フォーラムを散らかさないために、事前にあなたの答えをありがとうございました。
皆さん!!1時間足のバーを開く関数を教えてください!!(前のローソクのオープンを判断する必要があります)if (TimeMinute(TimeCurrent())==m && TimeSeconds(TimeCurrent())==n) なぜかm=1 n=1では動きませんが、お願いします!誰が気にするの・・・?
https://docs.mql4.com/ru/series
ご意見ありがとうございます!しかし、1時間足のローソクが開いたかどうかを知るための関数がよくわかりません...。
アイタイム
アイタイム
EAがエラー0を出し続けています。アドバイス - 原因を確認する方法、この場所を見つける方法?
エラー0は、エラーがないことを示します。
プリント(アラート)をやめよう =)
一つの数式が何度も繰り返される場合、数式を短く書くにはどうしたらよいのでしょうか?
一つの数式が何度も繰り返される場合、数式を短く書くにはどうしたらよいのでしょうか?
機能を使う