エラー、バグ、質問 - ページ 2412 1...240524062407240824092410241124122413241424152416241724182419...3185 新しいコメント Andrey Dik 2019.03.24 12:45 #24111 Andrey Barinov:そして、デバッグする。トランザクションチケットを印刷 し、そこで実際に何が選択されたかをテスターで確認する。ディールタイプの フィルタを追加してくださいよ。ロットが正しく表示されているので、チケットは正しく選択されています。 Andrey Barinov 2019.03.24 12:47 #24112 Andrey Dik:ロットが正しいので、チケットも正しい。いいえ、InとOutの両方のトレードが同じロットです。しかし、利益はそうではありません。 以下は私のコードです。効くんです。 //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ ulong LastOutDealTicket(const string symbol,const uint magic) { //=============== long lasttime=0; //=============== //=============== ulong ticket=0; //=============== //=============== #ifdef __MQL5__ //=============== ::HistorySelect(0,TimeCurrent()+60); //=============== const int deals=::HistoryDealsTotal(); //=============== for(int i=deals-1;i>=0;i--) { //=============== const ulong tempticket=::HistoryDealGetTicket(i); //=============== //=============== if(::HistoryDealGetInteger(tempticket,DEAL_ENTRY)!=DEAL_ENTRY_OUT || ::HistoryDealGetString(tempticket,DEAL_SYMBOL)!=symbol || ::HistoryDealGetInteger(tempticket,DEAL_MAGIC)!=magic)continue; //=============== //=============== if(::MQLInfoInteger(MQL_TESTER))return(tempticket); //=============== //=============== if(::HistoryDealGetInteger(tempticket,DEAL_TIME)<=lasttime)continue; //=============== //=============== ticket=tempticket; lasttime=::HistoryDealGetInteger(tempticket,DEAL_TIME); //=============== } //=============== #endif //=============== //=============== #ifdef __MQL4__ //=============== const int ordershistory=OrdersHistoryTotal(); //=============== for(int i=ordershistory-1;i>=0;i--) { //=============== if(!::OrderSelect(i,SELECT_BY_POS,MODE_HISTORY) || ::OrderSymbol()!=symbol || ::OrderMagicNumber()!=magic || (::OrderType()!=OP_SELL && ::OrderType()!=OP_BUY))continue; //=============== //=============== if(::MQLInfoInteger(MQL_TESTER))return(::OrderTicket()); //=============== //=============== if(::OrderCloseTime()<=lasttime)continue; //=============== //=============== ticket=::OrderTicket(); lasttime=::OrderCloseTime(); //=============== } //=============== #endif //=============== //=============== return(ticket); //=============== } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ double LastClosedProfit(const string symbol,const uint magic) { //=============== const ulong lastoutticket=::LastOutDealTicket(symbol,magic); //=============== //=============== if(lastoutticket<=0)return(0); //=============== //=============== double result=0; //=============== //=============== #ifdef __MQL5__ //=============== result=::HistoryDealGetDouble(lastoutticket,DEAL_PROFIT); //=============== #endif //=============== //=============== #ifdef __MQL4__ //=============== if(::OrderSelect((int)lastoutticket,SELECT_BY_TICKET,MODE_HISTORY))result=::OrderProfit(); //=============== #endif //=============== //=============== return(result); //=============== } Andrey Dik 2019.03.24 13:06 #24113 Andrey Barinov:いいえ、InとOutの両方のトレードが同じロットです。利益は、そうではありません。 以下は私のコードです。効くんです。 を試してみましたが、あなたのコードも0.0になりました))) この口座はどちらかというと、ヘッジされています。 Andrey Barinov 2019.03.24 13:21 #24114 Andrey Dik:を試してみましたが、あなたのコードも0.0になりました))) この口座はどちらかというと、ヘッジされています。2009年版をすべてチェックしたところです。私のコードは、あるべきものを出しています。もし0を出したら、そこには0があるということです。 Andrey Dik 2019.03.24 13:57 #24115 Andrey Barinov:2009年のビルドですべてを確認したところ私のコードは、出すべきものを出しているのです。もし、0を出したら、そこには0があるということです。どうして、履歴の中にゼロでない結果のクローズド・トレードがあり、それが0を与えるのか。 削除済み 2019.03.24 15:26 #24116 Andrey Barinov:アンドレイ・ディク DC側に問題がある可能性があります。 Andrey Dik 2019.03.24 15:30 #24117 Alexey Kozitsyn: DC側に問題がある可能性があります。テスターで、MetaquotesとRoboで試しました。 Andrey Dik 2019.03.24 15:50 #24118 間違いを見つけた...私のミスは、ポジションクローズ 関数にmajikを渡さず、オープン関数に渡したことで、結果的にmajikで取引が選択できなかったことです...。 Andrey Pogoreltsev 2019.03.25 13:14 #24119 CSymbolInfoを多通貨で使用する場合、初期化時にNameメソッドで呼び出される。 if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE,m_tick_value)) return(false); if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE_PROFIT,m_tick_value_profit)) return(false); if(!SymbolInfoDouble(m_name,SYMBOL_TRADE_TICK_VALUE_LOSS,m_tick_value_loss)) return(false); テスト中、USDCADのシンボル エラーが発生します。 no prices for symbol Vladimir Karputov 2019.03.25 13:17 #24120 Andrey Pogoreltsev:CSymbolInfoを多通貨で使用する場合、初期化時にNameメソッドで呼び出される。 テスト中はUSDCADのシンボルにエラーが発生します。 私たちが話していることを理解している人はいるのでしょうか? 1...240524062407240824092410241124122413241424152416241724182419...3185 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
そして、デバッグする。トランザクションチケットを印刷 し、そこで実際に何が選択されたかをテスターで確認する。ディールタイプの フィルタを追加してくださいよ。
ロットが正しく表示されているので、チケットは正しく選択されています。
ロットが正しいので、チケットも正しい。
いいえ、InとOutの両方のトレードが同じロットです。しかし、利益はそうではありません。
以下は私のコードです。効くんです。
いいえ、InとOutの両方のトレードが同じロットです。利益は、そうではありません。
以下は私のコードです。効くんです。
を試してみましたが、あなたのコードも0.0になりました)))
この口座はどちらかというと、ヘッジされています。を試してみましたが、あなたのコードも0.0になりました)))
この口座はどちらかというと、ヘッジされています。2009年版をすべてチェックしたところです。私のコードは、あるべきものを出しています。もし0を出したら、そこには0があるということです。
2009年のビルドですべてを確認したところ私のコードは、出すべきものを出しているのです。もし、0を出したら、そこには0があるということです。
どうして、履歴の中にゼロでない結果のクローズド・トレードがあり、それが0を与えるのか。
DC側に問題がある可能性があります。
DC側に問題がある可能性があります。
テスターで、MetaquotesとRoboで試しました。
CSymbolInfoを多通貨で使用する場合、初期化時にNameメソッドで呼び出される。
テスト中、USDCADのシンボル エラーが発生します。
no prices for symbol
CSymbolInfoを多通貨で使用する場合、初期化時にNameメソッドで呼び出される。
テスト中はUSDCADのシンボルにエラーが発生します。
私たちが話していることを理解している人はいるのでしょうか?