//+------------------------------------------------------------------------------------------+//+------------------------------------------------------------------------------------------+//| script program start function |//+------------------------------------------------------------------------------------------+#property show_inputs //выводим перед запуском скрипта окно свойствexternint position=0; //внешняя переменная: смещение файлового указателя ОТ НАЧАЛА ФАЙЛА (в БАЙТАХ)//---------------------------------------------------------------------------------------- 1 -int start() //функция start
{ //начало startdouble Timestart=GetTickCount(); //переменная, с помощью которой вычисляется время (в милисекундах) начала выполнения эксперта string name="Копия Запись чисел в файл.csv"; //имя создаваемого файлаbool h; //переменная: значение функции FileIsEndingbool h_l; //переменная: значение функции FileIsLineEndingint error; //переменная: ошибкаint handle=FileOpen(name,FILE_CSV|FILE_WRITE,';'); //открываем заданный файл n записываем туда данныеint запись=FileWrite(handle,DoubleToStr(1.3584,4)); //записываем цены OHLC в файл csv (в преобразованном виде, т.е в виде текста)FileClose(handle); //закрываем файл//---------------------------------------------------------------------------------------- 2 -
handle=FileOpen(name,FILE_CSV|FILE_READ,';'); //открываем заданный файлbool pos=FileSeek(handle,position,SEEK_SET); //смещаем от начала вправо указатель файлаdouble чтение=FileReadNumber(handle); //считываем число из текущей позиции (уже измененной функцией FileSeek) файлового указателяint size=FileSize(handle); //вычисляем размер заданного файла
h=FileIsEnding(handle); //устанавливаем текущее значение переменной h
h_l=FileIsLineEnding(handle); //устанавливаем текущее значение переменной h_l
error=GetLastError(); //значение ошибки, производимой функцией FileIsEndingif(error!=0)Alert("Текущая ошибка ",error); //если код текущей ошибки не равен 0, то получаем номер текущей ошибкиFileClose(handle); //закрываем файл//----------------------------------------------------------------------------------------- 3 -Comment("Размер файла ",name," составил ",size," байт",
"\nФункция FileSeek вернула: ",pos,
"\nФункция FileReadNumber(handle) вернула: ",чтение,
"\nФункция FileIsLineEnding(handle) вернула: ",h_l,
"\nФункция FileIsEnding(handle) вернула: ",h,
"\nСкрипт выполнялся всего ",GetTickCount()-Timestart," миллисекунд, из них: ",MathFloor((GetTickCount()-Timestart)/1000)," секунд ",((GetTickCount()-Timestart)/1000-MathFloor((GetTickCount()-Timestart)/1000))*1000," миллисекунд");//печать сообщения на экран//----------------------------------------------------------------------------------------- 4 -return(0); //выход из start
} //конец start//-------------------------------------- КОНЕЦ START -------------------------------------- 5 -
文字列定数はPCのメモリで8バイトを占め、変換後の数値は1つしかないので、ファイルポインタを8バイト右にずらすと4099エラー(ファイルの末尾に到達したことを意味します)になることは理解しています。また、FileIsEnding関数が同じ理由(ファイルの終了に達した)で1(true)を返したことも理解しています。しかし、FileIsLineEnding関数が0(false、つまりファイルポインタが行末に到達していない)を返した理由がわからないのです。結局、MQLの本に書いてある例え(ファイルポインタはテキストカーソルとほぼ同じ)を元に、ファイルの終わりは文字列の終わりでもあると推論しました。しかし、FileIsEndingとFileIsLineEndingがファイルポインタがファイルの終わりに達したときに異なる値を持つことを考慮すると、私はWHAT IS FILE Pointerの観点から困っています。
ちょっと気になるのですが、注文が入らないということは、何かの間違いではないでしょうか?そして、おそらくそれを読んで修正することができないのでは?
/*テイクとストップをゼロにした注文を出し、それを修正する。
狙ったわけではないのですが、過去ログがきれいなんですよねー。
" ストップ "の問題なら、単なる保険オプション
それが、丸太がきれいになっているんです
"ストップ "を問うなら、万一のための保険の選択肢として
ストップやテイクオーバーなしで注文を出して、開いたかどうか見ているのです
このタイプの取引口座では、証券会社でストップとテイクを設定することは、事前に設定したゼロ値を修正することによってのみ可能です。
ストップやテイクオーバーのない注文を出して、開いたかどうか見てみましょう
このタイプの取引口座では、DCにストップとテイクを設定することは、事前に設定したゼロ値を変更することによってのみ可能です。
ありがとうございます、助かります。
0で口座を開設し、ストップを導入して修正する必要があることがわかりました。
ありがとうございます、助かります。
0から口座を開設し、ストップを入力して修正する必要があるということですね。
これらのパラメーターの値がゼロの注文を開き、開いた注文を修正することでパラメーターを変更する必要があります。
これらのパラメータをゼロにして注文を開き、開いた注文を修正することによって、これらのパラメータを変更します。
エラー 検出やエラー 処理を誰もやってくれないので、ログはきれいなままです。
Спасибо, стопы устанавливаются в точностью до символов графика, т.е. 0,00001 или с точностью до 0,0001?
MarketInfoはあなたの手の中にあります。
誰もあなたの質問に向き合おうとしない。もちろん、その気になれば、もっと前から答えられることではありますが。
こんにちは...FileIsEnding関数と FileIsLineEnding関数について 質問です。FileIsEnding関数とFileIsLineEnding関数の動作を理解するために、次のようなスクリプトを書きました。
ブロック1-2では、1.3584という数字(DoubleToStr関数がテキストに変換してくれる)を開いてファイルに書き込んでいます。
ブロック3-4では、ファイルを開いて、そこに書かれた数字を読んでいる。
外部変数extern int positionは、FileIsEnding関数とFileIsLineEnding関数の動作とファイルポインタの意味を理解しようと、FileTell関数を使ってファイルポインタを移動することを想定しています。
MQL4.communityの本には、ファイルポインタはテキストカーソルのアナログであると書かれています。
しかし、このスクリプトを数回実行し、外部変数postitonを1に変更する(つまり、ファイルポインタをファイルの先頭から1バイト右に移動する)たびに、Comment関数は以下のようなメッセージを出力する。
postiton=7とすると、以下のようなメッセージになります。
postiton=8とすると、以下のようなメッセージになります。
文字列定数はPCのメモリで8バイトを占め、変換後の数値は1つしかないので、ファイルポインタを8バイト右にずらすと4099エラー(ファイルの末尾に到達したことを意味します)になることは理解しています。また、FileIsEnding関数が同じ理由(ファイルの終了に達した)で1(true)を返したことも理解しています。しかし、FileIsLineEnding関数が0(false、つまりファイルポインタが行末に到達していない)を返した理由がわからないのです。結局、MQLの本に書いてある例え(ファイルポインタはテキストカーソルとほぼ同じ)を元に、ファイルの終わりは文字列の終わりでもあると推論しました。しかし、FileIsEndingとFileIsLineEndingがファイルポインタがファイルの終わりに達したときに異なる値を持つことを考慮すると、私はWHAT IS FILE Pointerの観点から困っています。
質問です。
1.ファイルポインターとは何ですか?
2.行末とファイル終端が一致しないのはなぜですか(ファイルポインタがファイル終端に到達したとき)?
P.S. フォーラムを乱雑にしないために、事前に回答をお願いします。
1.ファイルポインターとは何ですか?
2.行末とファイル終端が一致しない(ファイルポインタがファイル終端に到達したとき)のはなぜですか?
P.S. フォーラムを乱雑にするわけではありませんが、ご回答をよろしくお願いします。
1.ファイルポインタは、実際には文字入力時のカーソルです
2.誰が一致させろと言った? 文字列の終端記号である'˶'とファイル終端記号である'EOF'は別の文字です。文末文字(フルストップ)や段落末尾文字(改行文字)のようなものです。まずフルストップがあり、これは行の終わりを意味する。そして、段落の最後が来る。
こんにちは。idnikatorの書き方には問題があり、基本的にバッファ用の配列が2つあります。
質量1
質量2
そして、配列の各要素の データは、小さな数字でカウントされ、つまり、15、27、41、14などの値になっています。
配列の型をint型にして、各要素を実行すると、配列の値が計算値に対応していることがわかりますが、型がInt型の場合は、ウインドウにインジケータ線が表示されないのです。
配列の型をdoubleにすると、214565454、43654534532、24325235232など、どこから来たのかわからない値が多く格納されます。計算値と全く一致しない。
何が問題なのでしょうか?