エラー、バグ、質問 - ページ 106 1...99100101102103104105106107108109110111112113...3185 新しいコメント Sergey Gritsay 2010.08.22 19:22 #1051 Rosh:これは、SymbolNameに書いて あるように、MarketWatchにない文字が対象になっているのでしょう。 予期せぬ結果を得たシンボル名を出力し、MarketWatchのリストと比較します。 すべてのシンボルはMarketWatchに存在し、特に、#AAタイプの商品に対してはゼロを返すので、私は特にスクリプトにfalseを入れました。string symbol=SymbolName(i,false); MarketWatchウィンドウにシンボルがない場合、関数if(SymbolInfoTick(symbol,last_tick)) がエラー 4302 を返した場合、この関数の正常な動作のためにシンボルが MarketWatch ウィンドウに存在しなければならないことが、ヘルプに明記されていないためです。 削除済み 2010.08.22 19:42 #1052 sergey1294:...この機能を正常に動作させるためには、MarketWatchウィンドウにツールが表示されている必要があることは、ヘルプに記載されていません。ヘルプは本当に普通の例とボトルネックで人員を配置する必要があります。追記また、言語を変更した後に、ベースのEAが動かなくなる(あるいはコンパイルエラーが発生する)という事態もよくあります。 gumgum 2010.08.22 21:57 #1053 今日気づいたのですが...MT5(access.metatrader5.com:443)EURJPY、日足です。 例えばGBPJPY、日足:ここではすべて順調です。 そして、こちらはEURJPY、あるMT4 DCのDailyのスクリーンショットです。 その差は肉眼でもわかる...。これはどうしたら直るのでしょうか? 削除済み 2010.08.23 00:09 #1054 Rosh:これはおそらく、MarketWatchに存在しないシンボルを対象にしているのだと思いますが、SymbolNameについては、こう書かれています。 予期せぬ結果を得たシンボル名を出力し、MarketWatchのリストと比較します。MarketWatch に存在しないシンボルについては、SymbolInfoTick() はエラーERR_MARKET_SELECT_ERROR "Symbol not selected in MarketWatch" (コード 4302 ) を返しました。MarketWatchでは、EURUSDとGBPUSDのみ選択されています。初歩的な実行では、SymbolInfoTick()は選択されていないシンボルに対してエラー ERR_MARKET_SELECT_ERRORを 返すことが示されています。IS 0 1 (EURUSD,M15) 01:53:21 ************************************************ MF 0 1 (EURUSD,M15) 01:53:21 Инструмент - EURUSD RR 0 1 (EURUSD,M15) 01:53:21 Валюта депозита = USD RG 0 1 (EURUSD,M15) 01:53:21 Базовая валюта = EUR QM 0 1 (EURUSD,M15) 01:53:21 Валюта маржи = EUR CH 0 1 (EURUSD,M15) 01:53:21 Маржа для покупки = 1271.23 QG 0 1 (EURUSD,M15) 01:53:21 Маржа для продажи = 1271.05 CQ 0 1 (EURUSD,M15) 01:53:21 ************************************************ JQ 0 1 (EURUSD,M15) 01:53:21 Инструмент - GBPUSD HQ 0 1 (EURUSD,M15) 01:53:21 Валюта депозита = USD EH 0 1 (EURUSD,M15) 01:53:21 Базовая валюта = GBP RN 0 1 (EURUSD,M15) 01:53:21 Валюта маржи = GBP MI 0 1 (EURUSD,M15) 01:53:21 Маржа для покупки = 1553.53 DP 0 1 (EURUSD,M15) 01:53:21 Маржа для продажи = 1553.25 MG 0 1 (EURUSD,M15) 01:53:21 ************************************************ LR 0 1 (EURUSD,M15) 01:53:21 Инструмент - USDCHF NG 0 1 (EURUSD,M15) 01:53:21 Валюта депозита = USD NJ 0 1 (EURUSD,M15) 01:53:21 Базовая валюта = USD EQ 0 1 (EURUSD,M15) 01:53:21 Валюта маржи = USD RI 0 1 (EURUSD,M15) 01:53:21 SymbolInfoTick() failed, error = 4302 GL 0 1 (EURUSD,M15) 01:53:21 ************************************************ PE 0 1 (EURUSD,M15) 01:53:21 Инструмент - USDJPY DL 0 1 (EURUSD,M15) 01:53:21 Валюта депозита = USD DF 0 1 (EURUSD,M15) 01:53:21 Базовая валюта = USD OL 0 1 (EURUSD,M15) 01:53:21 Валюта маржи = USD HL 0 1 (EURUSD,M15) 01:53:21 SymbolInfoTick() failed, error = 4302 QH 0 1 (EURUSD,M15) 01:53:21 ************************************************ ...ところで、 sergey1294さんのログの最後のデータブロックは、他のものと異なっています。まず、SymbolInfoTick()は今回も同じエラーコードを返していますし、次に、-このデータブロックでは、商品、基準通貨、証拠金通貨が何か奇妙な名前になっていると思いませんか?これはバグなのでしょうか?このおかしさに全く気づかなかったのでしょうか?CE 0 OrderCalcMargin (EURUSD,M1) 20:44:27 ************************************************ IG 0 OrderCalcMargin (EURUSD,M1) 20:44:27 Инструмент - LS 0 OrderCalcMargin (EURUSD,M1) 20:44:27 Валюта депозита = USD DD 0 OrderCalcMargin (EURUSD,M1) 20:44:27 Базовая валюта = CL 0 OrderCalcMargin (EURUSD,M1) 20:44:27 Валюта маржи = RG 0 OrderCalcMargin (EURUSD,M1) 20:44:27 SymbolInfoTick() failed, error = 4302 Sergey Gritsay 2010.08.23 00:35 #1055 最後のデータブロックについては、これはループのちょっとした不具合で、最後のデータクエリで存在しない商品にアクセスしたため、入金通貨 以外のすべてのフィールドが空になっています。 Документация по MQL5: Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете www.mql5.com Стандартные константы, перечисления и структуры / Состояние окружения / Информация о счете - Документация по MQL5 削除済み 2010.08.23 00:57 #1056 sergey1294: 最後のデータブロックについては、ブルートフォースループが少し不具合を起こし、最後のデータクエリで存在しないシンボルにアクセスしたため、預金通貨 以外のすべてのフィールドが空になっています。 どうですか?つまり、ログは与えられたコードのバージョンのものではないのですね。コードから判断すると、そこそこ問題ない。あるいは、SymbolsTotal()は1つの値を返しますが、スクリプトの実行中、サイクルの途中のどこかで、ひどい事故によって、サーバー部分を設定するブローカーが、利用可能なシンボルを1つ削除し、SymbolsTotal()は-スクリプトが要求すれば-新しい値を返し、ひとつ少なくなりますが、ループ終了条件は、変数 Total に格納された古い値に基づいているので、今は存在しないシンボルにアクセスする最後の反復で、該当関数は空のラインを返すのでしょうか。:)これまでは、これを実現するために、このシナリオしか出てきませんでした。:) Sergey Gritsay 2010.08.23 04:13 #1057 どうしてそうなったかわからないが、まだ起きてはいない Yedelkin 2010.08.23 07:51 #1058 simpleton: ...そして,計算された値は明示的にulongに変換されます.正確にulongに、キャストされる値が非負であることが保証 されているからです。 整数型にキャストされる際、実数型の小数部は破棄される。四捨五入ではなく、端数を切り捨てることで、最大ロットの価値を増加させない ことを保証しているのであり、フリーマージンが可能なのである。それこそが、私たちに必要なことなのです。Simpleton さん、私も似たような方法をとりましたが、int型への明示的な変換を使いました。最大可能ロットは、ブローカーやディーラーによって、あるいは自己資金の大きさ によって制限されると想定していました。だから、intを使えば十分なはずです。この方法(intを使った "下から "の丸め方)に落とし穴はないでしょうか? 削除済み 2010.08.23 20:23 #1059 デベロッパースクリプトにパラメータを表示させるにはどうしたらいいでしょうか(新しい条件のために常にコードを変更するのは億劫なので)......? gumgum 2010.08.23 20:26 #1060 Interesting:デベロッパースクリプトにパラメータを表示させるにはどうしたらいいでしょうか(新しい条件のために常にコードを変更するのは億劫なので)......?#property script_show_inputs 1...99100101102103104105106107108109110111112113...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
これは、SymbolNameに書いて あるように、MarketWatchにない文字が対象になっているのでしょう。
予期せぬ結果を得たシンボル名を出力し、MarketWatchのリストと比較します。...この機能を正常に動作させるためには、MarketWatchウィンドウにツールが表示されている必要があることは、ヘルプに記載されていません。
ヘルプは本当に普通の例とボトルネックで人員を配置する必要があります。
追記
また、言語を変更した後に、ベースのEAが動かなくなる(あるいはコンパイルエラーが発生する)という事態もよくあります。
今日気づいたのですが...MT5(access.metatrader5.com:443)
EURJPY、日足です。
例えばGBPJPY、日足:ここではすべて順調です。
そして、こちらはEURJPY、あるMT4 DCのDailyのスクリーンショットです。
その差は肉眼でもわかる...。
これはどうしたら直るのでしょうか?
これはおそらく、MarketWatchに存在しないシンボルを対象にしているのだと思いますが、SymbolNameについては、こう書かれています。
予期せぬ結果を得たシンボル名を出力し、MarketWatchのリストと比較します。MarketWatch に存在しないシンボルについては、SymbolInfoTick() はエラーERR_MARKET_SELECT_ERROR "Symbol not selected in MarketWatch" (コード 4302 ) を返しました。MarketWatchでは、EURUSDとGBPUSDのみ選択されています。初歩的な実行では、SymbolInfoTick()は選択されていないシンボルに対してエラー ERR_MARKET_SELECT_ERRORを 返すことが示されています。
ところで、 sergey1294さんのログの最後のデータブロックは、他のものと異なっています。まず、SymbolInfoTick()は今回も同じエラーコードを返していますし、次に、-このデータブロックでは、商品、基準通貨、証拠金通貨が何か奇妙な名前になっていると思いませんか?
これはバグなのでしょうか?このおかしさに全く気づかなかったのでしょうか?
最後のデータブロックについては、ブルートフォースループが少し不具合を起こし、最後のデータクエリで存在しないシンボルにアクセスしたため、預金通貨 以外のすべてのフィールドが空になっています。
どうですか?つまり、ログは与えられたコードのバージョンのものではないのですね。
コードから判断すると、そこそこ問題ない。
あるいは、SymbolsTotal()は1つの値を返しますが、スクリプトの実行中、サイクルの途中のどこかで、ひどい事故によって、サーバー部分を設定するブローカーが、利用可能なシンボルを1つ削除し、SymbolsTotal()は-スクリプトが要求すれば-新しい値を返し、ひとつ少なくなりますが、ループ終了条件は、変数 Total に格納された古い値に基づいているので、今は存在しないシンボルにアクセスする最後の反復で、該当関数は空のラインを返すのでしょうか。:)
これまでは、これを実現するために、このシナリオしか出てきませんでした。:)
...そして,計算された値は明示的にulongに変換されます.正確にulongに、キャストされる値が非負であることが保証 されているからです。
整数型にキャストされる際、実数型の小数部は破棄される。四捨五入ではなく、端数を切り捨てることで、最大ロットの価値を増加させない ことを保証しているのであり、フリーマージンが可能なのである。それこそが、私たちに必要なことなのです。
デベロッパー
スクリプトにパラメータを表示させるにはどうしたらいいでしょうか(新しい条件のために常にコードを変更するのは億劫なので)......?
デベロッパー
スクリプトにパラメータを表示させるにはどうしたらいいでしょうか(新しい条件のために常にコードを変更するのは億劫なので)......?
#property script_show_inputs