mql5言語の特徴、微妙なニュアンスとテクニック - ページ 173 1...166167168169170171172173174175176177178179180...247 新しいコメント Alexey Viktorov 2020.04.09 11:59 #1721 fxsaber: 上記を更新しました。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム mql5の特性、ヒントとコツ fxsaber, 2020.04.09 13:13 全く遭遇していないようですね。ドキュメンテーションをご覧ください。1回のご注文で2巻までとなります。 これらはライブリミッターです。1番目の数字は元の容量、2番目の数字は注ぎ足した容量です。イコールになったり、削除されたりするとすぐに履歴に残ります。 1つの注文を2つに分けて実行するのでは?未実行ボリュームが同じなのはおかしいと思います。 fxsaber 2020.04.09 12:04 #1722 Alexey Viktorov: 1つの注文を2つに分けて実行するのでは?未実行ボリュームが同じなのはおかしいと思います。 偶然の一致。マグカップも違うんですよ。 fxsaber 2020.04.09 12:05 #1723 fxsaber: 生きている時のオーダーモードには秩序がありえません。死んだら......元々言われているように、最初の処刑の時期があります。 歴史に発見。 fxsaber 2020.04.10 12:13 #1724 fxsaber: CloseByで折りたたむと、マジコンが無くなるようです。チェックが必要です。 これが、以下の最初のコードが動作しない原因のようです。 トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム MQL5でヒストリープロフィット? fxsaber さん 2017.08.26 19:16 MQL5 double Profit( void ) { double Res = 0; if (HistorySelect(0, INT_MAX)) for (int i = HistoryDealsTotal() - 1; i >= 0; i--) { const ulong Ticket = HistoryDealGetTicket(i); if((HistoryDealGetInteger(Ticket, DEAL_MAGIC) == MagicNumber) && (HistoryDealGetString(Ticket, DEAL_SYMBOL) == Symbol())) Res += HistoryDealGetDouble(Ticket, DEAL_PROFIT); } return(Res); } MQL5 + MQL4 #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 double Profit( void ) { double Res = 0; for (int i = OrdersHistoryTotal() - 1; i >= 0; i--) if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderMagicNumber() == MagicNumber) && (OrderSymbol() == Symbol())) Res += OrderProfit(); return(Res); } マジックで利益を数えるのは問題なさそうです。 fxsaber 2020.04.21 20:04 #1725 注文価格は正規化されているが、取引は正規化されていない。そんなお得な情報をスクリプトが見つけてくれる。void OnStart() { if (HistorySelect(0, INT_MAX)) for (int i = HistoryDealsTotal() - 1; i >= 0; i--) // Перебираем все сделки { const ulong Ticket = HistoryDealGetTicket(i); // Тикет сделки const double Price = HistoryDealGetDouble(Ticket, DEAL_PRICE); // Цена сделки if (NormalizeDouble(Price, 5) != Price) // Если цена сделки не нормализована, Print(Ticket); // печатаем тикет сделки. } } fxsaber 2020.04.23 17:51 #1726 MT5がリアルタイムで自動的に配置するポジションのオープン/クローズの矢印は、TradeTransaction-eventsをベースにしています。 たった今、これらのイベント(十数ポジションの開閉)が、一瞬の接続障害でターミナルに届かなかったのを確認しました。あまりの偶然に、PCに向かっていて、目で見て確認しました。そのため、対応する矢印はありません。 また、ここで時々言われているように、戦闘用EAではOnTradeTransactionは 当てになりません。OrderSendAsyncを扱うための信頼できるパブリックなメカニズムがないのは残念です。 Igor Makanu 2020.04.23 18:03 #1727 fxsaber: OrderSendAsyncを扱うための信頼できるパブリックなメカニズムがないのは残念です。 サービスはトレードに アクセスできるのか?- であれば、10msごとに監視し、イベントをチャートに送ることが可能です ヘルプを見て、サービスが追加されたのかなと思ったのですが、去年もこんな感じだったような気がします。 -指標、Expert Advisor、スクリプトとは対照的に、チャートにバインドする必要のないプログラムです。スクリプトと同様、サービスは起動イベント以外のイベントを処理しない。サービスを開始するには、そのコードにOnStartハンドラ関数が含まれている必要があります。サービスは Start 以外のイベントを受け付けませんが、EventChartCustom を使用してチャート自体にカスタム イベントを送信することができます。 UPD:サービススクリプトを書き上げました。 struct SOrderInfo { int positionstotal; int orderstotal; int historyorderstotal; bool operator==(const SOrderInfo &v){return(positionstotal==v.positionstotal && orderstotal==v.orderstotal && historyorderstotal==v.historyorderstotal);} }; //+------------------------------------------------------------------+ int OnStart() { SOrderInfo CurrState = UpdateOrdersInfo(); SOrderInfo LastState = CurrState; while(!IsStopped()) { Sleep(10); CurrState = UpdateOrdersInfo(); if(CurrState == LastState) continue; LastState = CurrState; Print("Orders changed!"); } return(0); } //+------------------------------------------------------------------+ SOrderInfo UpdateOrdersInfo() { SOrderInfo result; result.positionstotal = PositionsTotal(); result.orderstotal = OrdersTotal(); result.historyorderstotal = HistoryOrdersTotal(); return(result); } //+------------------------------------------------------------------+ いくつかの注文を開き、手動で閉じた。 Andrey Khatimlianskii 2020.04.24 22:41 #1728 Igor Makanu: サービスはトレードに アクセスできるのか?- であれば、10msごとに監視して、チャートにイベントを送ることが可能です。 これは、ソウトロニックでの同じオーバーランと何ら変わりません。ただ、カウントの比較だけでは不十分で、内部が変わっている可能性があります。 fxsaber 2020.04.25 05:33 #1729 Andrey Khatimlianskii: オウレットニクの同じやりすぎと変わらない。ただ、量を比較するだけではダメで、内部が変わることもある。 Alertersのようなサービスは非常に良いですね。チャートは必要ありません、Terminalで自動的に起動します。アカウント間の切り替えのシチュエーションを工夫すればいいのです。 サービスはコンバットアドバイザーになることも可能です。GUIがないと、どうしても不便なんです。 Igor Makanu 2020.04.25 07:06 #1730 Andrey Khatimlianskii: オウレットニクの同じやりすぎと変わらない。ただ、量を比較するだけではダメで、内部が変わることもある。 が違います。 いわゆる制御・管理業務があります EA-マネジメント、サービス-コントロール コントロールは余計なものであってはならない - システムのすべてのリソースを取ってしまい、コントロールの代わりに不安定なシステムを得ることになります。 イベントの重要性を定義する必要があります。例えば、注文のクローズとオープニングは制御が必要な重要なイベントですが、TPとSLの変更は以前と同様に行うことができます(数回の失敗があっても、次のティックで再挑戦するため、そのままにしておきます)。 で、ご指摘の、すべてをコントロールする方法は、SQLiteで注文の状態を繰り返すことが可能ですが、その場合、サービスやEAとデータベースの同期の問題が発生します...。余計なお世話 EAのターミナルからOnTradeTransaction イベントを取得し、EAでの追加制御のためにサービスからOnChartEventイベントを生成する、というようなシンプルな仕組みにすべきと思います。 1...166167168169170171172173174175176177178179180...247 新しいコメント 理由: キャンセル 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
上記を更新しました。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
mql5の特性、ヒントとコツ
fxsaber, 2020.04.09 13:13
全く遭遇していないようですね。ドキュメンテーションをご覧ください。1回のご注文で2巻までとなります。
これらはライブリミッターです。1番目の数字は元の容量、2番目の数字は注ぎ足した容量です。イコールになったり、削除されたりするとすぐに履歴に残ります。
1つの注文を2つに分けて実行するのでは?未実行ボリュームが同じなのはおかしいと思います。
1つの注文を2つに分けて実行するのでは?未実行ボリュームが同じなのはおかしいと思います。
偶然の一致。マグカップも違うんですよ。
生きている時のオーダーモードには秩序がありえません。死んだら......元々言われているように、最初の処刑の時期があります。
歴史に発見。
CloseByで折りたたむと、マジコンが無くなるようです。チェックが必要です。
これが、以下の最初のコードが動作しない原因のようです。
トレーディング、自動売買システム、トレーディング戦略のテストに関するフォーラム
MQL5でヒストリープロフィット?
fxsaber さん 2017.08.26 19:16
マジックで利益を数えるのは問題なさそうです。
MT5がリアルタイムで自動的に配置するポジションのオープン/クローズの矢印は、TradeTransaction-eventsをベースにしています。
たった今、これらのイベント(十数ポジションの開閉)が、一瞬の接続障害でターミナルに届かなかったのを確認しました。あまりの偶然に、PCに向かっていて、目で見て確認しました。そのため、対応する矢印はありません。
また、ここで時々言われているように、戦闘用EAではOnTradeTransactionは 当てになりません。OrderSendAsyncを扱うための信頼できるパブリックなメカニズムがないのは残念です。
OrderSendAsyncを扱うための信頼できるパブリックなメカニズムがないのは残念です。
サービスはトレードに アクセスできるのか?- であれば、10msごとに監視し、イベントをチャートに送ることが可能です
ヘルプを見て、サービスが追加されたのかなと思ったのですが、去年もこんな感じだったような気がします。
-指標、Expert Advisor、スクリプトとは対照的に、チャートにバインドする必要のないプログラムです。スクリプトと同様、サービスは起動イベント以外のイベントを処理しない。サービスを開始するには、そのコードにOnStartハンドラ関数が含まれている必要があります。サービスは Start 以外のイベントを受け付けませんが、EventChartCustom を使用してチャート自体にカスタム イベントを送信することができます。
UPD:サービススクリプトを書き上げました。
いくつかの注文を開き、手動で閉じた。
サービスはトレードに アクセスできるのか?- であれば、10msごとに監視して、チャートにイベントを送ることが可能です。
これは、ソウトロニックでの同じオーバーランと何ら変わりません。ただ、カウントの比較だけでは不十分で、内部が変わっている可能性があります。
オウレットニクの同じやりすぎと変わらない。ただ、量を比較するだけではダメで、内部が変わることもある。
Alertersのようなサービスは非常に良いですね。チャートは必要ありません、Terminalで自動的に起動します。アカウント間の切り替えのシチュエーションを工夫すればいいのです。
サービスはコンバットアドバイザーになることも可能です。GUIがないと、どうしても不便なんです。オウレットニクの同じやりすぎと変わらない。ただ、量を比較するだけではダメで、内部が変わることもある。
が違います。
いわゆる制御・管理業務があります
EA-マネジメント、サービス-コントロール
コントロールは余計なものであってはならない - システムのすべてのリソースを取ってしまい、コントロールの代わりに不安定なシステムを得ることになります。
イベントの重要性を定義する必要があります。例えば、注文のクローズとオープニングは制御が必要な重要なイベントですが、TPとSLの変更は以前と同様に行うことができます(数回の失敗があっても、次のティックで再挑戦するため、そのままにしておきます)。
で、ご指摘の、すべてをコントロールする方法は、SQLiteで注文の状態を繰り返すことが可能ですが、その場合、サービスやEAとデータベースの同期の問題が発生します...。余計なお世話
EAのターミナルからOnTradeTransaction イベントを取得し、EAでの追加制御のためにサービスからOnChartEventイベントを生成する、というようなシンプルな仕組みにすべきと思います。