汎用クラスライブラリ - バグ、説明、質問、使用上の特徴、提案 - ページ 16 1...91011121314151617181920212223...38 新しいコメント Artyom Trishkin 2017.12.11 11:51 #151 fxsaber面白いですね。そして、ここで質問です。今の実装が気に入らなくて、手を加えたんです。曲がっているに決まっている。オリジナルのバイブルを入手するにはどうすればよいですか?こちら-1702年から ファイル: Generic.zip 44 kb fxsaber 2017.12.11 11:58 #152 アルチョム・トリシキンこちら-1702年からありがとうございました。開発者に質問します。ストレートにこだわる私としては...。 Vasiliy Sokolov 2017.12.11 11:59 #153 例2:ネット口座で複数のEAを取引する場合ネットポジショニングは、同じシンボルで同時に複数のExpert Advisorを取引する人にとっては、頭の痛い問題です。両方のEAがヘッジにあるが、ネットポジションの不在が本当に彼らが市場にないことを示すものではないことを理解する必要がある状況に対処するために、複雑なコードを生成します。一つの解決策は、各専門家の総ポジションに対する貢献度を計算することである。そのためには、履歴全体を分析し、それぞれのユニークなメディジーにどのような契約数が属しているかを計算する必要があります。0.0であれば専門家は市場から退場、マイナスであれば専門家はショート、プラスであればロングとなります。実際には、CHashMapを使用して、すべての取引をマジックオーダーで分解し、その数量を加算するだけなので、非常に簡単なことです。以下に、ごく簡単なコード(プロトタイプ)をスケッチしてみました。//+------------------------------------------------------------------+ //| NettoByMagic.mq5 | //| Copyright 2017, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2017, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #include <Generic\HashMapGen.mqh> CHashMap<ulong, double> PositionsByMagic; int prev_deals = 0; //+------------------------------------------------------------------+ //| Добавляет новый объем и его меджик | //+------------------------------------------------------------------+ void AddVolume(ulong magic, double volume) { double cur_volume = 0.0; if(PositionsByMagic.TryGetValue(magic, cur_volume)) PositionsByMagic.TrySetValue(magic, cur_volume+volume); else PositionsByMagic.Add(magic, volume); } //+------------------------------------------------------------------+ //| Добавляет новые сделки в словарь | //+------------------------------------------------------------------+ void ParseDeals() { HistorySelect(0, TimeCurrent()); for(int i = prev_deals; i < HistoryDealsTotal(); i++) { ulong ticket = HistoryDealGetTicket(i); if(HistoryDealGetString(ticket, DEAL_SYMBOL)!= Symbol()) continue; ENUM_DEAL_TYPE deal_type = (ENUM_DEAL_TYPE)HistoryDealGetInteger(ticket, DEAL_TYPE); double volume = 0.0; if(deal_type == DEAL_TYPE_BUY) volume = HistoryDealGetDouble(ticket, DEAL_VOLUME); else if(deal_type == DEAL_TYPE_SELL) volume = HistoryDealGetDouble(ticket, DEAL_VOLUME)*(-1); else continue; ulong magic = HistoryDealGetInteger(ticket, DEAL_MAGIC); AddVolume(magic, volume); } prev_deals = HistoryDealsTotal(); } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnTick() { ParseDeals(); for(int i = 0, k = 0; i < PositionsByMagic.Count(); i++) { ulong magic = PositionsByMagic.GetKeyAt(i); double valume = PositionsByMagic.GetValueAt(i); if(k == 10) break; } } //+------------------------------------------------------------------+注目!簡略化のため、コードは現在のシンボルのネットボリュームのみを計算します。また、現在の実装のCHashMapには列挙型のイテレータがないので、急遽、そのようなイテレータを作りました。変更後のCHashMapは添付ファイルのとおりです。 ファイル: HashMapGen.mqh 25 kb Alexey Oreshkin 2017.12.11 11:59 #154 fxsaberテスターの速度は、取引に重要なのでしょうか?そうであれば、HashMapはTSの開発・実行速度を上げるので、取引にも影響する。テスター、最適化とトレーディングは別物です。1と同じアイデアが取引され、最適化されていますが、実装が劇的に異なる場合があり、それはあまりにも議論の余地のないものです。しかし、データの保存や抽出、少なくともオプティマイザのためのこれらの効率的なアルゴリズムを使用する必要があるタスクの具体例は、取引のために以来、誰もが例を与えることができますか? fxsaber 2017.12.11 12:02 #155 アレクセイ・オレシキン自動売買システムで取引しようと思ったら、少なくともオプティマイザには、こうしたデータの保存と検索に関する効率的なアルゴリズムが必要となるようなタスクの例は、取引には存在しないので、挙げることはできない。 トレーディング、自動売買システム、ストラテジーテストに関するフォーラム 汎用クラスライブラリ - バグ、説明、問題、使用例、提案 fxsaber さん 2017.12.08 22:46 より現実的なテスターケース(2000トレード、1,000,000シングルヒストリーアクセス)の場合、結果は以下のようになります。2017.12.05 00:00:00 Time[Print(SumProfit(Deals,GetDealProfitFull))] = 122969 2017.12.05 00:00:00 Time[SetHashMap()] = 816 2017.12.05 00:00:00 4829800340.792288 2017.12.05 00:00:00 Time[Print(SumProfit(Deals,GetDealProfitHashClear))] = 23852 2017.12.05 00:00:00 Time[HistorySelect(0,INT_MAX)] = 1 2017.12.05 00:00:00 4829800340.792288 2017.12.05 00:00:00 Time[Print(SumProfit(Deals,GetDealProfitClear))] = 1144271パスあたり約100msの短縮を実現例えば、10,000回のフルパスでOptimizeを実行した場合、Hashバリアントは15分早く 終わります。 fxsaber 2017.12.11 12:07 #156 ワシリー・ソコロフ例2:ネット口座で複数のEAを取引する場合 フォゲットprev_deals = HistoryDealsTotal();良い例です!本当に便利です。 Vasiliy Sokolov 2017.12.11 12:16 #157 fxsaber フォゲット良い例です確かに便利です。修正しました。 fxsaber 2017.12.11 12:20 #158 他人のものを使って依存するニュアンスを整理するよりも、自分で作った方が楽なバイクがある。ジェネリックはそういうバイクではありません。早く正確に書けない。完成させればいいだけの話なのだが。 Alexey Oreshkin 2017.12.11 12:22 #159 fxsaber 素晴らしい理論的な例です実際に、何千ものトレードを運用したことがある人はいますか?p.s.私は、それがガラクタであり、誰も必要としていないことを証明したいわけではありません。リアルトレードのための価値を理解しようとしている。私は理論家では全くなく、純粋な実践者なのです。 Vasiliy Sokolov 2017.12.11 12:27 #160 アレクセイ・オレシキン実際に、何千回もトレードした人はいるのでしょうか?オン・フォート・エブリファースト 1...91011121314151617181920212223...38 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
面白いですね。そして、ここで質問です。今の実装が気に入らなくて、手を加えたんです。曲がっているに決まっている。オリジナルのバイブルを入手するにはどうすればよいですか?
こちら-1702年から
こちら-1702年から
ありがとうございました。開発者に質問します。ストレートにこだわる私としては...。
例2:ネット口座で複数のEAを取引する場合
ネットポジショニングは、同じシンボルで同時に複数のExpert Advisorを取引する人にとっては、頭の痛い問題です。両方のEAがヘッジにあるが、ネットポジションの不在が本当に彼らが市場にないことを示すものではないことを理解する必要がある状況に対処するために、複雑なコードを生成します。一つの解決策は、各専門家の総ポジションに対する貢献度を計算することである。そのためには、履歴全体を分析し、それぞれのユニークなメディジーにどのような契約数が属しているかを計算する必要があります。0.0であれば専門家は市場から退場、マイナスであれば専門家はショート、プラスであればロングとなります。実際には、CHashMapを使用して、すべての取引をマジックオーダーで分解し、その数量を加算するだけなので、非常に簡単なことです。以下に、ごく簡単なコード(プロトタイプ)をスケッチしてみました。
注目!簡略化のため、コードは現在のシンボルのネットボリュームのみを計算します。また、現在の実装のCHashMapには列挙型のイテレータがないので、急遽、そのようなイテレータを作りました。変更後のCHashMapは添付ファイルのとおりです。
テスターの速度は、取引に重要なのでしょうか?そうであれば、HashMapはTSの開発・実行速度を上げるので、取引にも影響する。
テスター、最適化とトレーディングは別物です。
1と同じアイデアが取引され、最適化されていますが、実装が劇的に異なる場合があり、それはあまりにも議論の余地のないものです。しかし、データの保存や抽出、少なくともオプティマイザのためのこれらの効率的なアルゴリズムを使用する必要があるタスクの具体例は、取引のために以来、誰もが例を与えることができますか?
自動売買システムで取引しようと思ったら、少なくともオプティマイザには、こうしたデータの保存と検索に関する効率的なアルゴリズムが必要となるようなタスクの例は、取引には存在しないので、挙げることはできない。
トレーディング、自動売買システム、ストラテジーテストに関するフォーラム
汎用クラスライブラリ - バグ、説明、問題、使用例、提案
fxsaber さん 2017.12.08 22:46
より現実的なテスターケース(2000トレード、1,000,000シングルヒストリーアクセス)の場合、結果は以下のようになります。
1パスあたり約100msの短縮を実現例えば、10,000回のフルパスでOptimizeを実行した場合、Hashバリアントは15分早く 終わります。
例2:ネット口座で複数のEAを取引する場合
prev_deals = HistoryDealsTotal();
良い例です!本当に便利です。
フォゲット
良い例です確かに便利です。
修正しました。
他人のものを使って依存するニュアンスを整理するよりも、自分で作った方が楽なバイクがある。
ジェネリックはそういうバイクではありません。早く正確に書けない。完成させればいいだけの話なのだが。
素晴らしい理論的な例です実際に、何千ものトレードを運用したことがある人はいますか?
p.s.私は、それがガラクタであり、誰も必要としていないことを証明したいわけではありません。リアルトレードのための価値を理解しようとしている。私は理論家では全くなく、純粋な実践者なのです。
実際に、何千回もトレードした人はいるのでしょうか?
オン・フォート・エブリファースト