ライブラリ: MT4Orders - ページ 89

 
hini #:
MT4ORDERS_LIBRARYに問題があります。非同期の OrderCloseAsync 関数が期待どおりに動作しないようです。 注文のクローズは、同期 OrderClose 関数と同様に時間がかかります。MT4ORDERS_LIBRARYを無効にする(コメントアウトする)と、複数の注文を決済する速度が大幅に向上します。

お言葉に添えるよう、引数をご用意ください。

#define  MT4ORDERS_LIBRARY // library-mode: #import "MT4Orders.ex5".
#include <MT4Orders.mqh> //https://www.mql5.com/ja/code/16006

void OnStart()
{
  for (uint i = OrdersTotal(); (bool)i--;)
    if (OrderSelect(i, SELECT_BY_POS))
      OrderCloseAsync(OrderTicket(), OrderLots(), OrderClosePrice(), 0);
}


結果

2025.04.15 13:32:39.830 Scripts script Test7 (AUDUSD,M1) loaded successfully
2025.04.15 13:32:39.879 Trades  '160568384': market buy 2.61 AUDUSD, close #2326299400売り 2.61 AUDUSD 0.63547
2025.04.15 13:32:39.879 Trades  '160568384': market buy 2.61 AUDUSD, close #2326299399売り 2.61 AUDUSD 0.63546
2025.04.15 13:32:39.879 Trades  '160568384': market buy 2.61 AUDUSD, close #2326299398売り 2.61 AUDUSD 0.63547
2025.04.15 13:32:39.879 Scripts script Test7 (AUDUSD,M1) removed
2025.04.15 13:32:39.916 Trades  '160568384': accepted market buy 2.61 AUDUSD, close #2326299400売り 2.61 AUDUSD 0.63547
2025.04.15 13:32:39.917 Trades  '160568384': accepted market buy 2.61 AUDUSD, close #2326299399売り 2.61 AUDUSD 0.63546
2025.04.15 13:32:39.918 Trades  '160568384': accepted market buy 2.61 AUDUSD, close #2326299398売り 2.61 AUDUSD 0.63547
2025.04.15 13:32:39.977 Trades  '160568384': deal 0.63553 で #2314930857 の買い 2.61 AUDUSD 完了 (#2326299404 の注文に基づく)
2025.04.15 13:32:39.977 Trades  '160568384': order 0.63553 で #2326299404 の買い 2.61 / 2.61 AUDUSD 済 98.354 ms
2025.04.15 13:32:39.978 Trades  '160568384': deal 0.63553 で #2314930858 AUDUSD 2.61 の買い 完了 (#2326299403 の注文に基づく)
2025.04.15 13:32:39.978 Trades  '160568384': order 0.63553 における #2326299403 の買い 2.61 / 2.61 AUDUSD 完了 99.783 ms
2025.04.15 13:32:39.980 Trades  '160568384': deal 0.63553 の #2314930859 AUDUSD 2.61 の買い 完了 (#2326299405 の注文に基づく)
2025.04.15 13:32:39.982 Trades  '160568384': order 0.63553 における #2326299405 の買い 2.61 / 2.61 AUDUSD 完了:103.313 ms


指定した関数は正しく動作します。

 
hini #:
なぜ注文を削除したのか?

「たまたまです

 
fxsaber #:

あなたの言うことの論拠を示してください。


結果は?


指定された機能は正しく動作します。

すみません、間違えました。
 
 (XAUUSDcent,M1)        Before ::HistoryOrderSelect(Result.order):
 (XAUUSDcent,M1)        MT4ORDERS::OrderSendBug = 27180
 (XAUUSDcent,M1)        Result.deal = 0
 (XAUUSDcent,M1)        
 (XAUUSDcent,M1)        Line = 1822
 (XAUUSDcent,M1)        Before MT4ORDERS::HistoryDealSelect(Result):
 (XAUUSDcent,M1)        MT4ORDERS::OrderSendBug = 27180
 (XAUUSDcent,M1)        Result.deal = 0
 (XAUUSDcent,M1)        
 (XAUUSDcent,M1)        Alert: OrderSend(42689505) - BUG!
 (XAUUSDcent,M1)        Alert: Please send the logs to the coauthor - https://www.mql5.com/en/users/fxsaber
 (XAUUSDcent,M1)        Alert: C:\Program Files\Mohicans Markets MT5 Terminal\MQL5\Logs\20250428.log
 (XAUUSDcent,M1)        MT4Orders.mqh
 (XAUUSDcent,M1)        Version = 2025.04.09
 (XAUUSDcent,M1)        Compiler = 4885 X64 Regular Release.
 (XAUUSDcent,M1)        __DATE__ = 2025.04.27 00:00:00
 (XAUUSDcent,M1)        ::AccountInfoString(ACCOUNT_SERVER) = MohicansMarkets-Live
 (XAUUSDcent,M1)        (ENUM_ACCOUNT_TRADE_MODE)::AccountInfoInteger(ACCOUNT_TRADE_MODE) = ACCOUNT_TRADE_MODE_REAL (2)
 (XAUUSDcent,M1)        (bool)::TerminalInfoInteger(TERMINAL_CONNECTED) = true
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_PING_LAST) = 224789
 (XAUUSDcent,M1)        ::TerminalInfoDouble(TERMINAL_RETRANSMISSION) = 0.08792420146452849
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_BUILD) = 4885
 (XAUUSDcent,M1)        (bool)::TerminalInfoInteger(TERMINAL_X64) = true
 (XAUUSDcent,M1)        ::TerminalInfoString(TERMINAL_CPU_NAME) = Intel Xeon Gold 6133  @ 2.50 GHz
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_CPU_CORES) = 2
 (XAUUSDcent,M1)        TerminalInfoString(TERMINAL_CPU_ARCHITECTURE) = AVX2 + FMA3
 (XAUUSDcent,M1)        (bool)::TerminalInfoInteger(TERMINAL_VPS) = false
 (XAUUSDcent,M1)        (ENUM_PROGRAM_TYPE)::MQLInfoInteger(MQL_PROGRAM_TYPE) = PROGRAM_EXPERT (2)
 (XAUUSDcent,M1)        ::TimeCurrent() = 2025.04.28 05:27:28
 (XAUUSDcent,M1)        ::TimeTradeServer() = 2025.04.28 05:27:29
 (XAUUSDcent,M1)        MT4ORDERS::TimeToString(MT4ORDERS::GetTimeCurrent()) = 2025.04.28 05:27:28.531
 (XAUUSDcent,M1)        MT4ORDERS::TimeToString(PrevTimeCurrent) = 2025.04.28 05:27:28.531
 (XAUUSDcent,M1)        PrevTick = Symb = XAUUSDcent time = 2025.04.28 05:27:28.531 bid = 3275.34 ask = 3275.63 last = 0.00 volume = 0 1030 TICK_FLAG_BID TICK_FLAG_ASK FLAG_UNKNOWN (1024)
 (XAUUSDcent,M1)        CurrentTick = ::SymbolInfoTick(Symb, Tick) = true Symb = XAUUSDcent time = 2025.04.28 05:27:28.531 bid = 3275.34 ask = 3275.63 last = 0.00 volume = 0 1030 TICK_FLAG_BID TICK_FLAG_ASK FLAG_UNKNOWN (1024)
 (XAUUSDcent,M1)        ::SymbolInfoString(Request.symbol, SYMBOL_PATH) = Metal_Cent\XAUUSDcent
 (XAUUSDcent,M1)        ::SymbolInfoString(Request.symbol, SYMBOL_DESCRIPTION) = Gold vs US Dollar
 (XAUUSDcent,M1)        ::PositionsTotal() = 6
 (XAUUSDcent,M1)        ::OrdersTotal() = 0
 (XAUUSDcent,M1)        ::HistorySelect(0, INT_MAX) = true
 (XAUUSDcent,M1)        ::HistoryDealsTotal() = 184
 (XAUUSDcent,M1)        ::HistoryOrdersTotal() = 182
 (XAUUSDcent,M1)        ::HistoryDealGetTicket(::HistoryDealsTotal() - 1) = 39031651
 (XAUUSDcent,M1)        DEAL_ORDER = 42689505
 (XAUUSDcent,M1)        DEAL_TIME_MSC = 2025.04.28 05:27:28.763
 (XAUUSDcent,M1)        ::HistoryOrderGetTicket(::HistoryOrdersTotal() - 1) = 42689505
 (XAUUSDcent,M1)        ORDER_TIME_DONE_MSC = 2025.04.28 05:27:28.763
 (XAUUSDcent,M1)        MT4ORDERS::GetFirstOrderTicket() = 42588472
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_MEMORY_AVAILABLE) = 3377
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_MEMORY_PHYSICAL) = 2047
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_MEMORY_TOTAL) = 4094
 (XAUUSDcent,M1)        ::TerminalInfoInteger(TERMINAL_MEMORY_USED) = 717
 (XAUUSDcent,M1)        ::MQLInfoInteger(MQL_HANDLES_USED) = 109
 (XAUUSDcent,M1)        ::MQLInfoInteger(MQL_MEMORY_LIMIT) = 8388608
 (XAUUSDcent,M1)        ::MQLInfoInteger(MQL_MEMORY_USED) = 4
 (XAUUSDcent,M1)        MT4ORDERS::IsHedging = true
 (XAUUSDcent,M1)        Res = true
 (XAUUSDcent,M1)        MT4ORDERS::OrderSendBug = 27180
 (XAUUSDcent,M1)        Request.action = TRADE_ACTION_DEAL (1)
 (XAUUSDcent,M1)        Request.magic = 228
 (XAUUSDcent,M1)        Request.order = 0
 (XAUUSDcent,M1)        Request.symbol = XAUUSDcent
 (XAUUSDcent,M1)        Request.volume = 0.01
 (XAUUSDcent,M1)        Request.price = 3275.63
 (XAUUSDcent,M1)        Request.stoplimit = 0.0
 (XAUUSDcent,M1)        Request.sl = 0.0
 (XAUUSDcent,M1)        Request.tp = 0.0
 (XAUUSDcent,M1)        Request.deviation = 99
 (XAUUSDcent,M1)        Request.type = ORDER_TYPE_BUY (0)
 (XAUUSDcent,M1)        Request.type_filling = ORDER_FILLING_FOK (0)
 (XAUUSDcent,M1)        Request.type_time = ORDER_TIME_GTC (0)
 (XAUUSDcent,M1)        Request.expiration = 1970.01.01 00:00:00
 (XAUUSDcent,M1)        Request.comment = XAUUSDcent 首单  组 6
 (XAUUSDcent,M1)        Request.position = 0
 (XAUUSDcent,M1)        Request.position_by = 0
 (XAUUSDcent,M1)        Result.retcode = 10009
 (XAUUSDcent,M1)        Result.deal = 39031651
 (XAUUSDcent,M1)        Result.order = 42689505
 (XAUUSDcent,M1)        Result.volume = 0.01
 (XAUUSDcent,M1)        Result.price = 3275.63
 (XAUUSDcent,M1)        Result.bid = 0.0
 (XAUUSDcent,M1)        Result.ask = 0.0
 (XAUUSDcent,M1)        Result.comment = Request executed 253.856 + 11.577 (27180) ms.
 (XAUUSDcent,M1)        Result.request_id = 3625362990
 (XAUUSDcent,M1)        Result.retcode_external = 0
 (XAUUSDcent,M1)        MT4ORDERS::ByPass: Amount = 0/22912 = 0.00%, Time(mcs) = 0/202546 = 0.00%, TimeAvg = 8 mcs, MaxInterval = 30019 mcs., Bugs = 1
 (XAUUSDcent,M1)        MT4ORDERS::OrderSend_MaxPause = 1000000
 
こんにちは、
過去に、この美しく強力なライブラリを使用してMT4プロジェクトを MT5に変換することに成功しました。今日、同じプロジェクトを再開した後、いくつかのコンパイルエラーが発生しました。英語版とロシア語版の両方で「MT4Orders.mqh」ファイルを更新しようとしました。また、"MT4Orders "ファイルだけで新しい空のプロジェクトを作成しましたが、コンパイルエラーは解決されませんでした。私は何を間違えているのでしょうか?ありがとうございます。
ファイル:
MT4Orders.png  127 kb
 

ターミナルの最新ビルドで

parameter convertion type 'const int' to 'const uint &' is not allowed MT4Orders.mqh 1866 44

   long MT4HISTORY::operator[](const uint&) MT4Orders.mqh 768 8

parameter convertion type 'const long' to 'const ulong &' is not allowed MT4Orders.mqh 1867 37

   bool MT4ORDERS::HistorySelectDeal(const ulong&) MT4Orders.mqh 828 15

sign/unsignタイプが互いにキャストされず、MT4Ordersが収集されない。




 

確かにミスはあった。


 
// 変更リスト:
// 03.06.2025
// 修正:MQL5_b5050の特殊性を考慮した。
 
Pegaso #:
MT4Orders.mqh」ファイルを英語版とロシア 語版の両方で更新しようとしました。

更新をお願いします。