初心者の方からの質問 MQL5 MT5 MetaTrader 5 - ページ 1163 1...115611571158115911601161116211631164116511661167116811691170...1503 新しいコメント Vladimir Karputov 2019.12.10 19:29 #11621 Roman: 入力されているのであれば、その差は歴然です。 初期化された変数の読み込みは、関数の読み込みよりも常に高速です。 違いはありません。今はリンクが見つからないのですが......答えはずいぶん前に出ています。 Roman 2019.12.10 19:50 #11622 Vladimir Karputov: 違いはありません。今はリンクが見つからないのですが......答えはずいぶん前に出ています。 Juanとコンパイラの警告については、差はありません )) Alexey Viktorov 2019.12.10 22:16 #11623 Vladimir Karputov: 違いはありません。すべてをコンパイルすると、1つの呼び出しにまとまる。だから、すべて関数で やったほうが いいんです。 これも別スレ立ててpipsとポイントみたいに議論しようぜ...。そうすれば、みんなに何かできるかもしれない......。 お前ら自分の意見押し付けるの好きだな...。 削除済み 2019.12.11 08:59 #11624 多少のズレがあるMAがあります。MA_shift=5とする。 CopyBuffer に二重の 負のシフトが渡された場合のみ、チャートのゼロバーから MA の正しい値を得ることができるのはなぜですか? CopyBuffer(hMA, 0,-2*5, rates_total, MA_Buf); MA_Buf[0]に正しい値が入るようになりました。 Vladimir Karputov 2019.12.11 09:06 #11625 RickD: 多少のズレがあるMAがあります。MA_shift=5とする。 なぜ、CopyBuffer に二重の 負のシフトを渡した場合のみ、チャートのゼロバーから正しい MA の値を取ることができるのでしょうか? CopyBuffer(hMA, 0,-2*5, rates_total, MA_Buf); MA_Buf[0]に正しい値が入るようになりました。 まず絵を描いて、何をもって「ゼロバー」とするかは、shiftパラメータで指定します。 Igor Makanu 2019.12.11 09:19 #11626 Roman: 変数の読み出し、関数より速い。 そうではなく、_SymbolとSymbol()https://www.mql5.com/ru/forum/160683/page933#comment_12780905 とどちらが速いか調べてみました。 MQLのコード最適化は非常にクールなので、使いやすいものを使ってください。 私のテストでは、変数の記述場所や修飾子によってアクセス時間が異なることがありますが、原則的には特定のビルドでの実装に起因する2~5%の速度があります。 WinZip 2019.12.11 10:41 #11627 現在のシンボルの最後のトランザクションの結果を取得する最も簡単で速い方法を教えてください。なぜなら、ドキュメントを見るとすべてが複雑になっているからです。結果を得るためには、まず、必要な案件のチケットを見つける必要があります。チケットを見つけるためには、そのインデックスによって履歴から案件を探す必要があり、インデックスは履歴から検索する必要があり、シンボルによるフィルタリングも必要であることは言うまでもありません。 Vladimir Karputov 2019.12.11 10:51 #11628 WinZip: 現在のシンボルでの最後の取引の結果を簡単かつ迅速に取得する方法を教えてください。ドキュメントがすべてややこしいので。結果を得るためには、まず必要な取引のチケットを見つける必要があります。チケットを見つけるためには、そのインデックスによって履歴の中の取引を見つける必要があり、インデックスは履歴の中で探す必要があり、シンボルによってフィルタリングする必要があることは言うまでもないでしょう。 取引履歴に毎回アクセスするのを避けるには、OnTradeTransaction で以下のようなタイプで取引をキャッチします。 TRADE_TRANSACTION_DEAL_ADD - 取引を履歴に追加する //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction &trans, const MqlTradeRequest &request, const MqlTradeResult &result) { //--- get transaction type as enumeration value ENUM_TRADE_TRANSACTION_TYPE type=trans.type; //--- if transaction is result of addition of the transaction in history if(type==TRADE_TRANSACTION_DEAL_ADD) { long deal_ticket =0; long deal_order =0; long deal_time =0; long deal_time_msc =0; long deal_type =-1; long deal_entry =-1; long deal_magic =0; long deal_reason =-1; long deal_position_id =0; double deal_volume =0.0; double deal_price =0.0; double deal_commission =0.0; double deal_swap =0.0; double deal_profit =0.0; string deal_symbol =""; string deal_comment =""; string deal_external_id =""; if(HistoryDealSelect(trans.deal)) { deal_ticket =HistoryDealGetInteger(trans.deal,DEAL_TICKET); deal_order =HistoryDealGetInteger(trans.deal,DEAL_ORDER); deal_time =HistoryDealGetInteger(trans.deal,DEAL_TIME); deal_time_msc =HistoryDealGetInteger(trans.deal,DEAL_TIME_MSC); deal_type =HistoryDealGetInteger(trans.deal,DEAL_TYPE); deal_entry =HistoryDealGetInteger(trans.deal,DEAL_ENTRY); deal_magic =HistoryDealGetInteger(trans.deal,DEAL_MAGIC); deal_reason =HistoryDealGetInteger(trans.deal,DEAL_REASON); deal_position_id =HistoryDealGetInteger(trans.deal,DEAL_POSITION_ID); deal_volume =HistoryDealGetDouble(trans.deal,DEAL_VOLUME); deal_price =HistoryDealGetDouble(trans.deal,DEAL_PRICE); deal_commission =HistoryDealGetDouble(trans.deal,DEAL_COMMISSION); deal_swap =HistoryDealGetDouble(trans.deal,DEAL_SWAP); deal_profit =HistoryDealGetDouble(trans.deal,DEAL_PROFIT); deal_symbol =HistoryDealGetString(trans.deal,DEAL_SYMBOL); deal_comment =HistoryDealGetString(trans.deal,DEAL_COMMENT); deal_external_id =HistoryDealGetString(trans.deal,DEAL_EXTERNAL_ID); } else return; ENUM_DEAL_ENTRY enum_deal_entry=(ENUM_DEAL_ENTRY)deal_entry; if(deal_symbol==m_symbol.Name() && deal_magic==InpMagic) { if(deal_type==DEAL_TYPE_BUY || deal_type==DEAL_TYPE_SELL) { ... } } } } m_symbol.Name() - 現在のシンボル、InpMagic - Expert Advisorの一意の識別子です。 Каныбек Султан Уулу 2019.12.11 11:07 #11629 こんにちは、私はサイトとFacebookのメールに登録し、メタトレーダー5-4に入ることができない私は私のアカウントを補充するのに役立ちます。 Roman 2019.12.11 12:19 #11630 Igor Makanu: は事実ではなく、_SymbolとSymbol()のどちらが速いか調べたhttps://www.mql5.com/ru/forum/160683/page933#comment_12780905 つまり、アクセス時間は一長一短、MQLでのコード最適化は非常にクールなので、便利なものは何でも使ってください。 私のテストでは、変数の記述場所や修飾子によってアクセス時間が異なることがありますが、原則的には特定のビルドでの実装に書き留めることができる2〜5%の速度があり、それはビルド番号に依存します。 オプティマイザがうまく機能するのは認めるが、常にコンパイラのオプティマイザに頼るのは間違っている。 メモリレベル、初期化レベル、値の戻りレベルで、どのようにコードが実行されるか、前もって考えておく必要があります。 つまり、1回の操作で実行されるアクションの数を計算し、アクションの数が少なければ、コードは速くなる。そして、最適なコードを一気に書き上げることを実践してください。 短いコードであれば違いはないかもしれませんが、何百ものファイルがあるプロジェクトでは、その分遅れが出てきます。 とプロファイラーがあり、コードを書き換えるだけとなります。みんな自分でレーキを選んでいる))。 また、キーワードでグーグル検索 __inline __forceinline 不思議なことに、それらはmqlにundocumentedとして入っている。 1...115611571158115911601161116211631164116511661167116811691170...1503 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
入力されているのであれば、その差は歴然です。
初期化された変数の読み込みは、関数の読み込みよりも常に高速です。
違いはありません。今はリンクが見つからないのですが......答えはずいぶん前に出ています。
違いはありません。今はリンクが見つからないのですが......答えはずいぶん前に出ています。
Juanとコンパイラの警告については、差はありません ))
違いはありません。すべてをコンパイルすると、1つの呼び出しにまとまる。だから、すべて関数で やったほうが いいんです。
これも別スレ立ててpipsとポイントみたいに議論しようぜ...。そうすれば、みんなに何かできるかもしれない......。
お前ら自分の意見押し付けるの好きだな...。
多少のズレがあるMAがあります。MA_shift=5とする。
CopyBuffer に二重の 負のシフトが渡された場合のみ、チャートのゼロバーから MA の正しい値を得ることができるのはなぜですか?
CopyBuffer(hMA, 0,-2*5, rates_total, MA_Buf);
MA_Buf[0]に正しい値が入るようになりました。
多少のズレがあるMAがあります。MA_shift=5とする。
なぜ、CopyBuffer に二重の 負のシフトを渡した場合のみ、チャートのゼロバーから正しい MA の値を取ることができるのでしょうか?
CopyBuffer(hMA, 0,-2*5, rates_total, MA_Buf);
MA_Buf[0]に正しい値が入るようになりました。
まず絵を描いて、何をもって「ゼロバー」とするかは、shiftパラメータで指定します。
変数の読み出し、関数より速い。
そうではなく、_SymbolとSymbol()https://www.mql5.com/ru/forum/160683/page933#comment_12780905 とどちらが速いか調べてみました。
MQLのコード最適化は非常にクールなので、使いやすいものを使ってください。
私のテストでは、変数の記述場所や修飾子によってアクセス時間が異なることがありますが、原則的には特定のビルドでの実装に起因する2~5%の速度があります。
現在のシンボルでの最後の取引の結果を簡単かつ迅速に取得する方法を教えてください。ドキュメントがすべてややこしいので。結果を得るためには、まず必要な取引のチケットを見つける必要があります。チケットを見つけるためには、そのインデックスによって履歴の中の取引を見つける必要があり、インデックスは履歴の中で探す必要があり、シンボルによってフィルタリングする必要があることは言うまでもないでしょう。
取引履歴に毎回アクセスするのを避けるには、OnTradeTransaction で以下のようなタイプで取引をキャッチします。
TRADE_TRANSACTION_DEAL_ADD - 取引を履歴に追加する
m_symbol.Name() - 現在のシンボル、InpMagic - Expert Advisorの一意の識別子です。
は事実ではなく、_SymbolとSymbol()のどちらが速いか調べたhttps://www.mql5.com/ru/forum/160683/page933#comment_12780905
つまり、アクセス時間は一長一短、MQLでのコード最適化は非常にクールなので、便利なものは何でも使ってください。
私のテストでは、変数の記述場所や修飾子によってアクセス時間が異なることがありますが、原則的には特定のビルドでの実装に書き留めることができる2〜5%の速度があり、それはビルド番号に依存します。
オプティマイザがうまく機能するのは認めるが、常にコンパイラのオプティマイザに頼るのは間違っている。
不思議なことに、それらはmqlにundocumentedとして入っている。メモリレベル、初期化レベル、値の戻りレベルで、どのようにコードが実行されるか、前もって考えておく必要があります。
つまり、1回の操作で実行されるアクションの数を計算し、アクションの数が少なければ、コードは速くなる。そして、最適なコードを一気に書き上げることを実践してください。
短いコードであれば違いはないかもしれませんが、何百ものファイルがあるプロジェクトでは、その分遅れが出てきます。
とプロファイラーがあり、コードを書き換えるだけとなります。みんな自分でレーキを選んでいる))。
また、キーワードでグーグル検索