[ARCHIVE]フォーラムを乱立させないために、どんなルーキーの質問でも。プロフェッショナルの皆さん、通り過ぎないでください。あなたなしではどこにも行けない - 5. - ページ 348 1...341342343344345346347348349350351352353354355...432 新しいコメント Viktar Dzemikhau 2013.05.18 11:11 #3471 FAQ: なぜ、ポジションではなく、注文のチケットを記憶しないのか。また、そのような注文がない場合、直接転送ではどうなるのか。ゼロの注文は削除されるのか。 すでに試しました。これもうまくいきません。//+-------------------------------------------------------------------------------------+ //| Удаление несработанных отложеннык шортов | //+-------------------------------------------------------------------------------------+ void DeletePendingSells(int& amountOfCurrPending) { int total = OrdersTotal() - 1, ordersToDelete = level - amountOfCurrPending, // Количество отложек, которые требуется удалить s_ticket = 1, // Тикет искомого ордера amountOfCurrPendingBuys = 0; // Количество текущих отложек на покупку amountOfCurrPendingSells = 0; // Количество текущих отложек на продажу double OOP = 20.0; // Зададим значение цены открытия отложки, которой не может быть.. if (ordersToDelete == 0) return (0); for (int i=total; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != i_magic) continue; if(OrderType() != OP_SELLSTOP) continue; // Работает только с шортовыми ордерами if (OOP > OrderOpenPrice()) { OOP = OrderOpenPrice(); // Ищется ордер, с минимальной ценой открытия s_ticket = OrderTicket(); // Получаем тикет ордера с минимальной ценой открытия } } if (s_ticket != -1) { OrderDelete(s_ticket,Black); } return (0); } Рустам 2013.05.18 11:37 #3472 hoz: 以前にも試したことがあります。これもダメなんです。 もっと気をつけなければならないことがある。//+-------------------------------------------------------------------------------------+ //| Удаление несработанных отложеннык шортов | //+-------------------------------------------------------------------------------------+ void DeletePendingSells(int& amountOfCurrPending) { int total = OrdersTotal() - 1, ordersToDelete = level - amountOfCurrPending, // Количество отложек, которые требуется удалить s_ticket = 1, // Тикет искомого ордера amountOfCurrPendingBuys = 0; // Количество текущих отложек на покупку amountOfCurrPendingSells = 0; // Количество текущих отложек на продажу double OOP = 20.0; // Зададим значение цены открытия отложки, которой не может быть.. if (ordersToDelete == 0) return (0); for (int i=total; i>=0; i--) { if (!OrderSelect(i,SELECT_BY_POS)) continue; if (OrderSymbol() != Symbol()) continue; if (OrderMagicNumber() != i_magic) continue; if(OrderType() != OP_SELLSTOP) continue; // Работает только с шортовыми ордерами if (OOP > OrderOpenPrice()) { OOP = OrderOpenPrice(); // Ищется ордер, с минимальной ценой открытия s_ticket = OrderTicket(); // Получаем тикет ордера с минимальной ценой открытия } } if (s_ticket != -1) { OrderDelete(s_ticket,Black); } return (0); } Viktar Dzemikhau 2013.05.18 14:34 #3473 ついに動いた!原理的にはうまくいったし、前のバージョンもそうだった。主なバグは、関数そのものではなく、関数の呼び出しに ありました。プロの目から見ると、静的変数でない限り、つまり値を特定しておく必要がない限り、関数に入るときはすべての変数をゼロにすべきですよね? Artyom Trishkin 2013.05.18 17:32 #3474 hoz:ついに動いた!原理的にはうまくいったし、前のバージョンもそうだった。主なバグは、関数そのものではなく、関数の呼び出しにありました。プロの目から見ると、静的なもの、つまり値を特定しておく必要がないもの以外は、関数に入るときにすべての変数をゼロにする必要がありますよね?関数内の変数を、関数が誤動作しないような値や、最も見つけにくいエラーで初期化する。私は通常、変数の目的に応じて、0か-1のどちらかを使用します。もし、関数内の変数に、見つかった位置のインデックスを格納するのであれば、それを -1 に初期化します。これを0に初期化すると、正しい位置を探し、それがない場合にも、インデックス0の位置を選ぶ ことができます。 -1の場合は、位置が選ばれません。これは、エラーを見つけるのが難しい例の一つで、関数内はすべて正しいように見えるが、出力はまったく間違っている......というものです。で、EAが思った通りのオーダー・ポジションで動かない...。 Рустам 2013.05.18 19:49 #3475 つまり、プログラマはその関数が何のためにあり、どのような操作を行うのかを明確に理解しなければならない。そして、その関数を頭の中から追い出し、その中にあるものを忘れてしまい、「ブラックボックス」として使用しなければならないのだ。関数が使用するすべての変数は、引数として関数に渡さなければなりません。グローバル変数を 引数として渡さずに使用することは、それが例えばExterns(MTの場合)である場合にのみ正当化されます。関数内でグローバルを変更することは容認できません。戻り値が1つでも欠けている場合は、引数リストで変数を参照渡ししてください。 つまり、もしこの関数を捨てなければならなくなったとしても、この関数内のグローバルはすべて変更されているので、削ぎ落とされたバージョンがなぜ動作しないかを覚えておく必要はないのです。これは、万が一やり直しが発生しても、連鎖反応が起きないようにすることが目的です ANDREY 2013.05.19 07:59 #3476 みなさん、こんにちは。Pound-Enのテスト。この注文は、ストップロスよりも早くテイクプロフィットでクローズする必要がありました。しかし、私の注文はなぜかTake Profitで決済されませんでした。question: なぜ私の注文は、取引機能で 規定されているように、利益確定で終了しなかったのでしょうか?モデリング方法 - すべてのティック。リンク先の例http://clip2net.com/s/55pdDUほとんどの場合、取引は10ピップスストップで終了します。つまり、価格とストップの間の許容最小距離とはおそらく関係がないように思えるのです。他に何か理由があるのでしょうか?ありがとうございます。 Alexander Ashikhmin 2013.05.19 17:42 #3477 インジケータからグローバル変数 へのデータ取り込みの支援を約します。6.5 ドルEUR 6.6GBP 3.3などよろしくお願いします。/*デコンパイルは削除されます。警告*/. Viktar Dzemikhau 2013.05.19 17:54 #3478 FAQ:つまり、プログラマはその関数が何のためにあり、どのような操作を行うのかを明確に理解しなければならない。そして、その関数を頭の中から追い出し、その中にあるものを忘れてしまい、「ブラックボックス」として使用しなければならないのだ。関数が使用するすべての変数は、引数として関数に渡さなければなりません。グローバル変数を引数として渡さずに使用することは、それが例えばExterns(MTの場合)である場合にのみ正当化されます。関数内でグローバルを変更することは容認できません。戻り値が1つでも欠けている場合は、引数リストで変数を参照渡ししてください。 つまり、もしこの関数を捨てなければならなくなったとしても、この関数内のグローバルはすべて変更されているので、削ぎ落とされたバージョンがなぜ動作しないかを覚えておく必要はない。これはすべて、もし私がやり直すことになっても、連鎖反応を起こさないようにするためです。 ありがとうございます!そして、アルテムさん、もちろんです。理屈ではわかっていても、経験不足で気づかないことがある、そんな指摘に目を開かされました。ただ、他にも誤解があるようです。EAにグローバル変数が ある場合、関数内では引数として渡すだけで使えるようにする、と書いてありましたね。グローバル変数(externsではない)を作る理由はあるのでしょうか...引数で渡さなければならない場合、長い依存関数のチェーンは多くの引数を集め、引数を持つ関数名が非常に長くなってしまいます。そしてまた、グローバル変数を作り、それを参照で関数に渡して好きなことをし、参照でグローバルに戻すことができますよね?今日、あなたの投稿を読んで、私はそれを考え始め、いくつかの変数をグローバルから関数に移しました。そして、これらの変数が、私が宣言した関数とは関係のない別の関数で必要であることに気づきました。ここであなたの話を聞けば"グローバルと関数を変えるのはNG "ということは、必要な変数を直接取得する関数を別の場所で呼び出せばいいことが判明したのでしょうか?しかし、それはすでにコードを、いわばいい加減なものにしています。関数は必要なときに必要なだけ呼び出されるようにしたいものです。例えば、全鉱石を検索する機能、買い注文、売り注文などです。1回のティックに1回だけ呼び出され、それ以上は呼び出されないと考えるのが妥当である。しかし、最初に呼び出された場合、順序検索関数が返すこれらの変数を使用するすべての関数が、そのパラメータで渡せるわけではありません。そうすると、やはりグローバル変数に戻るのか、それとも? Serg16 2013.05.20 10:00 #3479 iHigh(Symbol(),timeframe,shift)のシフト値の上限が 1000に 制限されている問題を解決 する方法を教えてください。iTime(Symbol(),timeframe,1001)は1970.01.01 00:00を与える。 neo333 2013.05.20 14:14 #3480 一体どうやってアラートをオフにするのでしょうか? なぜスペースバーを押した後、それは ?(!%"?:) ビープ音を鳴らし続けるのでしょうか? 1...341342343344345346347348349350351352353354355...432 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
なぜ、ポジションではなく、注文のチケットを記憶しないのか。また、そのような注文がない場合、直接転送ではどうなるのか。ゼロの注文は削除されるのか。
すでに試しました。これもうまくいきません。
以前にも試したことがあります。これもダメなんです。
ついに動いた!原理的にはうまくいったし、前のバージョンもそうだった。主なバグは、関数そのものではなく、関数の呼び出しに ありました。
プロの目から見ると、静的変数でない限り、つまり値を特定しておく必要がない限り、関数に入るときはすべての変数をゼロにすべきですよね?
ついに動いた!原理的にはうまくいったし、前のバージョンもそうだった。主なバグは、関数そのものではなく、関数の呼び出しにありました。
プロの目から見ると、静的なもの、つまり値を特定しておく必要がないもの以外は、関数に入るときにすべての変数をゼロにする必要がありますよね?
関数内の変数を、関数が誤動作しないような値や、最も見つけにくいエラーで初期化する。
私は通常、変数の目的に応じて、0か-1のどちらかを使用します。もし、関数内の変数に、見つかった位置のインデックスを格納するのであれば、それを -1 に初期化します。これを0に初期化すると、正しい位置を探し、それがない場合にも、インデックス0の位置を選ぶ ことができます。 -1の場合は、位置が選ばれません。これは、エラーを見つけるのが難しい例の一つで、関数内はすべて正しいように見えるが、出力はまったく間違っている......というものです。で、EAが思った通りのオーダー・ポジションで動かない...。
つまり、プログラマはその関数が何のためにあり、どのような操作を行うのかを明確に理解しなければならない。そして、その関数を頭の中から追い出し、その中にあるものを忘れてしまい、「ブラックボックス」として使用しなければならないのだ。
関数が使用するすべての変数は、引数として関数に渡さなければなりません。グローバル変数を 引数として渡さずに使用することは、それが例えばExterns(MTの場合)である場合にのみ正当化されます。関数内でグローバルを変更することは容認できません。戻り値が1つでも欠けている場合は、引数リストで変数を参照渡ししてください。
つまり、もしこの関数を捨てなければならなくなったとしても、この関数内のグローバルはすべて変更されているので、削ぎ落とされたバージョンがなぜ動作しないかを覚えておく必要はないのです。これは、万が一やり直しが発生しても、連鎖反応が起きないようにすることが目的です
みなさん、こんにちは。
Pound-Enのテスト。
この注文は、ストップロスよりも早くテイクプロフィットでクローズする必要がありました。
しかし、私の注文はなぜかTake Profitで決済されませんでした。
question: なぜ私の注文は、取引機能で 規定されているように、利益確定で終了しなかったのでしょうか?
モデリング方法 - すべてのティック。
リンク先の例
http://clip2net.com/s/55pdDU
ほとんどの場合、取引は10ピップスストップで終了します。
つまり、価格とストップの間の許容最小距離とはおそらく関係がないように思えるのです。
他に何か理由があるのでしょうか?
ありがとうございます。
インジケータからグローバル変数 へのデータ取り込みの支援
を約します。
6.5 ドル
EUR 6.6
GBP 3.3
など
よろしくお願いします。
/*デコンパイルは削除されます。警告*/.
つまり、プログラマはその関数が何のためにあり、どのような操作を行うのかを明確に理解しなければならない。そして、その関数を頭の中から追い出し、その中にあるものを忘れてしまい、「ブラックボックス」として使用しなければならないのだ。
関数が使用するすべての変数は、引数として関数に渡さなければなりません。グローバル変数を引数として渡さずに使用することは、それが例えばExterns(MTの場合)である場合にのみ正当化されます。関数内でグローバルを変更することは容認できません。戻り値が1つでも欠けている場合は、引数リストで変数を参照渡ししてください。
つまり、もしこの関数を捨てなければならなくなったとしても、この関数内のグローバルはすべて変更されているので、削ぎ落とされたバージョンがなぜ動作しないかを覚えておく必要はない。これはすべて、もし私がやり直すことになっても、連鎖反応を起こさないようにするためです。
ありがとうございます!そして、アルテムさん、もちろんです。理屈ではわかっていても、経験不足で気づかないことがある、そんな指摘に目を開かされました。
ただ、他にも誤解があるようです。EAにグローバル変数が ある場合、関数内では引数として渡すだけで使えるようにする、と書いてありましたね。
グローバル変数(externsではない)を作る理由はあるのでしょうか...引数で渡さなければならない場合、長い依存関数のチェーンは多くの引数を集め、引数を持つ関数名が非常に長くなってしまいます。
そしてまた、グローバル変数を作り、それを参照で関数に渡して好きなことをし、参照でグローバルに戻すことができますよね?
今日、あなたの投稿を読んで、私はそれを考え始め、いくつかの変数をグローバルから関数に移しました。そして、これらの変数が、私が宣言した関数とは関係のない別の関数で必要であることに気づきました。ここであなたの話を聞けば"グローバルと関数を変えるのはNG "ということは、必要な変数を直接取得する関数を別の場所で呼び出せばいいことが判明したのでしょうか?しかし、それはすでにコードを、いわばいい加減なものにしています。関数は必要なときに必要なだけ呼び出されるようにしたいものです。例えば、全鉱石を検索する機能、買い注文、売り注文などです。1回のティックに1回だけ呼び出され、それ以上は呼び出されないと考えるのが妥当である。しかし、最初に呼び出された場合、順序検索関数が返すこれらの変数を使用するすべての関数が、そのパラメータで渡せるわけではありません。そうすると、やはりグローバル変数に戻るのか、それとも?
iHigh(Symbol(),timeframe,shift)のシフト値の上限が 1000に 制限されている問題を解決 する方法を教えてください。
iTime(Symbol(),timeframe,1001)は1970.01.01 00:00を与える。