MQL4、MQL5に関する初心者からの質問、アルゴリズムやコードに関するヘルプ、ディスカッションなど。 - ページ 240 1...233234235236237238239240241242243244245246247...1953 新しいコメント Alexey Viktorov 2017.06.28 14:05 #2391 Санек:1) - ファイル 11112222.txt を開き、そこからデータを読み込む部分です。//=================================BUY========================================= int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения2) - 次に、handle2>0であれば、その条件となります。 if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY {3)-ここが理解できないところです。 Print(FileReadString(handle2));4) - この部分はファイルを閉じます。 FileClose(handle2); // закрытие текстового файла5) - handle2>0 の条件を満たす、つまりファイル 11112222.txt に 1 が含まれているので、買い注文が 出される。 //ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку { OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ FileClose(handle2); // закрытие текстового файла } else Print("NE USPESHNO!!!"); FileClose(handle2); // закрытие текстового файла }//=================================конец кода BUY========================================= どの部分が混同してしまったのでしょうか?1) ファイルを開くが、中身は読まない。2) ファイルのハンドルは、常にゼロより大きい。したがって、ファイルが存在すれば、その内容にかかわらず、常にこの条件が成立する。3)これはまさにファイルの中身を読んでいるのです。数字を読み取るのならともかく、文字列を読み取るのは理解できないが...。しかし、それでも別の問題が発生することがあります。あとは、一連の動作を記述することがメインとなります。4)もちろん、ファイルを閉じなければならないので、閉じます。そして、第3節を読んだ内容によって次の節だけ条件付けが必要ですが、第2節は必要ありません。 Artyom Trishkin 2017.06.28 14:09 #2392 Alexey Viktorov:1) ファイルを開くが、その内容は読み込まない。2)ファイルハンドルは常に0より大きい。したがって、ファイルが存在すれば、その内容にかかわらず、常にこの条件が成立する。3)これはまさにファイルの中身を読んでいるのです。でも、数字を読むならともかく、文字列を読むのは理解できない...。しかし、それでも別の問題を参照することができます。あとは、一連の動作を記述することがメインとなります。4) ファイルはもちろん閉じなければならないし、閉じている最中である。そして、第3節を読んだ内容によって次の節だけが条件となるはずですが、第2節はそうではありません。いや...INVALID_HANDLEの値は-1です。それは、ファイルオープニングエラーが発生した時に、売りシグナルが出るのですが・・・。その他の定数パラメータや変数の状態を示すために使用される特殊な定数。以下の値を設定することができる。定数商品説明価値NULL任意の型のNull。また、空文字列の状態も示す0EMPTYパラメータが空の状態であることを示す-1EMPTY_VALUEインジケーターバッファに空値がある2147483647 (0x7FFFFFF)CLR_NONE, clrNONE色なし。デフォルト値、空値へのポインタ。カスタムインジケータで 使用-1CHARTS_MAXターミナルで同時に開くことのできるチャートの最大数100INVALID_HANDLE不適切なハンドル-1IS_DEBUG_MODEデバッグモードでのmq5-programのサインデバッグモードで0でなければ0is_profile_modeプロファイリングモードでのmq5-programのサインプロファイリングモードで0でない場合,0となります。ホールアレイ配列の最後まで残っている要素数,つまり配列全体を処理することを表す0WRONG_VALUE定数は暗黙のうちに任意の列挙型にキャストすることができます。-1 [アーカイブ!】どんなルーキーの質問でも、フォーラムを散らかさないように。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 2. Any questions from newcomers 名前付き定数 - その他の定数 cripple 2017.06.28 14:28 #2393 このスレッドを見ていなかったので、新しいスレッドを作成しました。https://www.mql5.com/ru/forum/206126 を見てください。 Как в тестере стратегий получить TimeGMT(); 2017.06.28www.mql5.com Справочник MQL5, Дата и время, TimeGMT TimeGMT - При работе в тестере стратегий время TimeGMT() всегда равно моделируемому серверному времени TimeT... Санек 2017.06.28 14:43 #2394 Alexey Viktorov:1) ファイルを開くが、その内容は読み込まない。2) ファイルハンドルは常に0より大きい。そのため、ファイルが存在すれば、その内容にかかわらず、常にその条件が成立します。3)これはまさにファイルの中身を読んでいるのです。でも、数字を読むならともかく、文字列を読むのは理解できない...。しかし、それでも別の問題を参照することができます。あとは、一連の動作を記述することがメインとなります。4) ファイルはもちろん閉じなければならないし、閉じている最中である。そして、3の項目で読み取った内容によって、次の項目だけが条件となるはずですが、2の項目は条件となりません。MQLの達人たちへ - もし問題なければ、このコードで私を助けてください!検索エンジンで半日を費やしましたが、似たようなものを見つけられませんでした。ほんの数行なのでしょうが、経験者にとっては数分のことです))) igorbel 2017.06.28 19:19 #2395 c++のDLLは、どのようにmql4から文字列を受け取り、char*に変換することができますか?struct MqlStr { int len; char *string; }; static int proc_func(char* Name); MT4_EXPFUNC int __stdcall myfunc(MqlStr sym_name) { proc_func(sym_name[0].string); } int proc_func(char* Name) { } これは正しいコードですよね? toni_stark 2017.06.28 20:51 #2396 こんにちは、皆さん、アドバイスをお願いします。1年ほど前に書いたEAが うまく動作していました。今までずっと使っていなかった。どうしたらいいのか、わからないのです。ビルドを変えたからということでいいのでしょうか?現在、Build 1090を使用しています。 Konstantin Erin 2017.06.28 20:58 #2397 Санек: MQLの達人へ - もしあなたがこのコードで私を助けるのが難しいのでなければ、私は半日を費やして検索エンジンで掘り返してみましたが、似たようなものを見つけることができません。数行で済むようで、知識のある人にとっては3分 程度の問題です)))2時間かかりました。システムをひとつひとつチェックしていかなければならないのです。隣接するチャートで両方のEAを一度に実行する - すべてが表示されます。Expert Advisor 1 =ファイルに書き 込む//+------------------------------------------------------------------+ //| Запись в файл -1 0 1 1.mq4 | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Инициализация - установка интервала таймера | //+------------------------------------------------------------------+ void OnInit() { EventSetTimer(7); } //+------------------------------------------------------------------+ //| Деинициализация - удаление метки | //+------------------------------------------------------------------+ void OnDeinit(const int Зачем) { ObjectDelete("Семафор"); } //+------------------------------------------------------------------+ //| По таймеру каждые 7 секунд | //+------------------------------------------------------------------+ void OnTimer() { int x=0; if(rand()<20000) { x=1; if(rand()<16000) x=-1; } ObjectCreate("Семафор",OBJ_LABEL,0,0,0); ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0); // Создание ObjectSet("Семафор", OBJPROP_CORNER, 3); // В правый нижний угол ObjectSet("Семафор", OBJPROP_XDISTANCE, 0); // Координата X ObjectSet("Семафор", OBJPROP_YDISTANCE, 40); // Координата Y ObjectSetText("Семафор",(string)x+" Открываю",20,"Arial",Yellow); ChartRedraw(0); Sleep(2000); int handle = FileOpen("123.txt", FILE_BIN | FILE_WRITE); if(handle == -1) { ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon); ChartRedraw(0); return; } ObjectSetText("Семафор",(string)x+" Записываю",20,"Arial",DeepSkyBlue); ChartRedraw(0); FileWriteInteger(handle, x, 4); Sleep(2000); ObjectSetText("Семафор","",20,"Arial",White); ChartRedraw(0); FileClose(handle); }EA 2 = ファイルを読む//+------------------------------------------------------------------+ //| Чтение файла -1 0 1 2.mq4 | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Инициализация - установка интервала таймера | //+------------------------------------------------------------------+ void OnInit() { EventSetTimer(1); } //+------------------------------------------------------------------+ //| Деинициализация - удаление метки | //+------------------------------------------------------------------+ void OnDeinit(const int Зачем) { ObjectDelete("Семафор"); } //+------------------------------------------------------------------+ //| По таймеру каждую секунду | //+------------------------------------------------------------------+ void OnTimer() { int x=0; ObjectCreate("Семафор",OBJ_LABEL,0,0,0); ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0); // Создание ObjectSet("Семафор", OBJPROP_CORNER, 2); // В правый нижний угол ObjectSet("Семафор", OBJPROP_XDISTANCE, 0); // Координата X ObjectSet("Семафор", OBJPROP_YDISTANCE, 40); // Координата Y ObjectSetText("Семафор","",20,"Arial",Yellow); ChartRedraw(0); Sleep(500); int handle = FileOpen("123.txt", FILE_BIN | FILE_READ); // Получаем НОМЕР файла в ОС if(handle == -1) // Если производится запись, файл занят, будет ошибка { ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon); ChartRedraw(0); return; } x = FileReadInteger(handle,4); // Получаем СОДЕРЖИМОЕ файла ObjectSetText("Семафор",(string)x+" Прочитал",20,"Arial",DeepSkyBlue); ChartRedraw(0); FileClose(handle); } 削除済み 2017.06.29 00:21 #2398 toni_stark:こんにちは、皆さん、アドバイスをお願いします。1年ほど前に書いたEAが うまく動作していました。今までずっと使っていなかった。どうしたらいいのか、わからないのです。ビルドを変えたからということでいいのでしょうか?現在、Build 1090を使用しています。可能性は十分にありますね、いろいろな工夫がされています。まず、コンパイルエラーがないかを確認します。Directiveの#PropertyStrictを使用した場合。 Artyom Trishkin 2017.06.29 00:33 #2399 Vladimir Zubov: いろいろな工夫があったかもしれませんね。まず、コンパイルエラーがないかを確認します。Directive「#PropertyStrict」で。そのような指令はありません。ありますね。#property strict toni_stark 2017.06.29 17:27 #2400 Vladimir Zubov: いろいろな工夫があったかもしれませんね。まず、コンパイルエラーがないかを確認します。Directive「#PropertyStrict」で。アルチョム・トリシキンそのような指令はありません。ありますね。しかし、私のコンピュータにある拡張子がex4のEAファイルはMetaEditorで開く ことができません。その理由は何なのか、教えてください。 1...233234235236237238239240241242243244245246247...1953 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
1) - ファイル 11112222.txt を開き、そこからデータを読み込む部分です。
//=================================BUY=========================================
int handle2 = FileOpen("11112222.txt", FILE_CSV|FILE_READ, ";");//код открывает файл для чтения
2) - 次に、handle2>0であれば、その条件となります。
if(handle2>0) // если в файле больше 0, то есть 1, то открывать BUY
{
3)-ここが理解できないところです。
Print(FileReadString(handle2));
4) - この部分はファイルを閉じます。
FileClose(handle2); // закрытие текстового файла
5) - handle2>0 の条件を満たす、つまりファイル 11112222.txt に 1 が含まれているので、買い注文が 出される。
//ОТКРЫТИЕ ОРДЕРА НА ПОКУПКУ
if(OrdersTotal() == 0) // если нет открытых ордеров то открывать ордер на покупку
{
OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 0, 0); // первым указывается ЛОСЬ, вторым ПРОФИТ
FileClose(handle2); // закрытие текстового файла
}
else
Print("NE USPESHNO!!!");
FileClose(handle2); // закрытие текстового файла
}
//=================================конец кода BUY=========================================
1) ファイルを開くが、中身は読まない。
2) ファイルのハンドルは、常にゼロより大きい。したがって、ファイルが存在すれば、その内容にかかわらず、常にこの条件が成立する。
3)これはまさにファイルの中身を読んでいるのです。数字を読み取るのならともかく、文字列を読み取るのは理解できないが...。しかし、それでも別の問題が発生することがあります。あとは、一連の動作を記述することがメインとなります。
4)もちろん、ファイルを閉じなければならないので、閉じます。
そして、第3節を読んだ内容によって次の節だけ条件付けが必要ですが、第2節は必要ありません。
1) ファイルを開くが、その内容は読み込まない。
2)ファイルハンドルは常に0より大きい。したがって、ファイルが存在すれば、その内容にかかわらず、常にこの条件が成立する。
3)これはまさにファイルの中身を読んでいるのです。でも、数字を読むならともかく、文字列を読むのは理解できない...。しかし、それでも別の問題を参照することができます。あとは、一連の動作を記述することがメインとなります。
4) ファイルはもちろん閉じなければならないし、閉じている最中である。
そして、第3節を読んだ内容によって次の節だけが条件となるはずですが、第2節はそうではありません。
いや...INVALID_HANDLEの値は-1です。
それは、ファイルオープニングエラーが発生した時に、売りシグナルが出るのですが・・・。
その他の定数
パラメータや変数の状態を示すために使用される特殊な定数。以下の値を設定することができる。
定数
商品説明
価値
NULL
任意の型のNull。また、空文字列の状態も示す
0
EMPTY
パラメータが空の状態であることを示す
-1
EMPTY_VALUE
インジケーターバッファに空値がある
2147483647 (0x7FFFFFF)
CLR_NONE, clrNONE
色なし。デフォルト値、空値へのポインタ。カスタムインジケータで 使用
-1
CHARTS_MAX
ターミナルで同時に開くことのできるチャートの最大数
100
INVALID_HANDLE
不適切なハンドル
-1
IS_DEBUG_MODE
デバッグモードでのmq5-programのサイン
デバッグモードで0でなければ0
is_profile_mode
プロファイリングモードでのmq5-programのサイン
プロファイリングモードで0でない場合,0となります。
ホールアレイ
配列の最後まで残っている要素数,つまり配列全体を処理することを表す
0
WRONG_VALUE
定数は暗黙のうちに任意の列挙型にキャストすることができます。
-1
このスレッドを見ていなかったので、新しいスレッドを作成しました。https://www.mql5.com/ru/forum/206126 を見てください。
1) ファイルを開くが、その内容は読み込まない。
2) ファイルハンドルは常に0より大きい。そのため、ファイルが存在すれば、その内容にかかわらず、常にその条件が成立します。
3)これはまさにファイルの中身を読んでいるのです。でも、数字を読むならともかく、文字列を読むのは理解できない...。しかし、それでも別の問題を参照することができます。あとは、一連の動作を記述することがメインとなります。
4) ファイルはもちろん閉じなければならないし、閉じている最中である。
そして、3の項目で読み取った内容によって、次の項目だけが条件となるはずですが、2の項目は条件となりません。
MQLの達人たちへ - もし問題なければ、このコードで私を助けてください!検索エンジンで半日を費やしましたが、似たようなものを見つけられませんでした。
ほんの数行なのでしょうが、経験者にとっては数分のことです)))
c++のDLLは、どのようにmql4から文字列を受け取り、char*に変換することができますか?
これは正しいコードですよね?こんにちは、皆さん、アドバイスをお願いします。1年ほど前に書いたEAが うまく動作していました。今までずっと使っていなかった。どうしたらいいのか、わからないのです。ビルドを変えたからということでいいのでしょうか?現在、Build 1090を使用しています。
数行で済むようで、知識のある人にとっては3分 程度の問題です)))
2時間かかりました。システムをひとつひとつチェックしていかなければならないのです。隣接するチャートで両方のEAを一度に実行する - すべてが表示されます。Expert Advisor 1 =ファイルに書き 込む
//+------------------------------------------------------------------+ //| Запись в файл -1 0 1 1.mq4 | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Инициализация - установка интервала таймера | //+------------------------------------------------------------------+ void OnInit() { EventSetTimer(7); } //+------------------------------------------------------------------+ //| Деинициализация - удаление метки | //+------------------------------------------------------------------+ void OnDeinit(const int Зачем) { ObjectDelete("Семафор"); } //+------------------------------------------------------------------+ //| По таймеру каждые 7 секунд | //+------------------------------------------------------------------+ void OnTimer() { int x=0; if(rand()<20000) { x=1; if(rand()<16000) x=-1; } ObjectCreate("Семафор",OBJ_LABEL,0,0,0); ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0); // Создание ObjectSet("Семафор", OBJPROP_CORNER, 3); // В правый нижний угол ObjectSet("Семафор", OBJPROP_XDISTANCE, 0); // Координата X ObjectSet("Семафор", OBJPROP_YDISTANCE, 40); // Координата Y ObjectSetText("Семафор",(string)x+" Открываю",20,"Arial",Yellow); ChartRedraw(0); Sleep(2000); int handle = FileOpen("123.txt", FILE_BIN | FILE_WRITE); if(handle == -1) { ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon); ChartRedraw(0); return; } ObjectSetText("Семафор",(string)x+" Записываю",20,"Arial",DeepSkyBlue); ChartRedraw(0); FileWriteInteger(handle, x, 4); Sleep(2000); ObjectSetText("Семафор","",20,"Arial",White); ChartRedraw(0); FileClose(handle); }EA 2 = ファイルを読む
//+------------------------------------------------------------------+ //| Чтение файла -1 0 1 2.mq4 | //+------------------------------------------------------------------+ //+------------------------------------------------------------------+ //| Инициализация - установка интервала таймера | //+------------------------------------------------------------------+ void OnInit() { EventSetTimer(1); } //+------------------------------------------------------------------+ //| Деинициализация - удаление метки | //+------------------------------------------------------------------+ void OnDeinit(const int Зачем) { ObjectDelete("Семафор"); } //+------------------------------------------------------------------+ //| По таймеру каждую секунду | //+------------------------------------------------------------------+ void OnTimer() { int x=0; ObjectCreate("Семафор",OBJ_LABEL,0,0,0); ObjectCreate("Семафор", OBJ_LABEL, 0, 0, 0); // Создание ObjectSet("Семафор", OBJPROP_CORNER, 2); // В правый нижний угол ObjectSet("Семафор", OBJPROP_XDISTANCE, 0); // Координата X ObjectSet("Семафор", OBJPROP_YDISTANCE, 40); // Координата Y ObjectSetText("Семафор","",20,"Arial",Yellow); ChartRedraw(0); Sleep(500); int handle = FileOpen("123.txt", FILE_BIN | FILE_READ); // Получаем НОМЕР файла в ОС if(handle == -1) // Если производится запись, файл занят, будет ошибка { ObjectSetText("Семафор","Ошибка",20,"Arial",Salmon); ChartRedraw(0); return; } x = FileReadInteger(handle,4); // Получаем СОДЕРЖИМОЕ файла ObjectSetText("Семафор",(string)x+" Прочитал",20,"Arial",DeepSkyBlue); ChartRedraw(0); FileClose(handle); }こんにちは、皆さん、アドバイスをお願いします。1年ほど前に書いたEAが うまく動作していました。今までずっと使っていなかった。どうしたらいいのか、わからないのです。ビルドを変えたからということでいいのでしょうか?現在、Build 1090を使用しています。
可能性は十分にありますね、いろいろな工夫がされています。まず、コンパイルエラーがないかを確認します。Directiveの#PropertyStrictを使用した場合。
いろいろな工夫があったかもしれませんね。まず、コンパイルエラーがないかを確認します。Directive「#PropertyStrict」で。
そのような指令はありません。
ありますね。
いろいろな工夫があったかもしれませんね。まず、コンパイルエラーがないかを確認します。Directive「#PropertyStrict」で。
そのような指令はありません。
ありますね。
しかし、私のコンピュータにある拡張子がex4のEAファイルはMetaEditorで開く ことができません。その理由は何なのか、教えてください。