程序库: MT4Orders - 页 18 1...111213141516171819202122232425...95 新评论 fxsaber 2017.12.04 11:42 #171 可以在公式合成器 上编写交易函数。让我们以三角套利为例。我们可以在一分钟内通过图形用户界面手工创建一个这样的符号,或者在一秒钟内通过脚本创建一个这样的符号并在其上运行套利 TS。// 同步公式套利顾问 #include <MT4Orders.mqh> #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) void OnTick() { if (Bid > 1) OrderSend(_Symbol, OP_SELL, 1, Bid, 0, 0, 0); else if (Ask < 1) OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0); } fxsaber 2017.12.07 09:03 #172 通过 CloseBy 快速平仓 交易、自动交易系统和交易策略测试论坛 一次关闭多个交易 fxsaber, 2017.12.07 09:01 // MQL4&5 代码 #include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006 #property strict string CorrectSymbol( string &Symb ) { return(Symb = ((Symb == NULL) || (Symb == "")) ? _Symbol: Symb); } bool PlaceHedge( const string Symb ) { double Lots = 0; for (int i = OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && (OrderType() <= OP_SELL) && (OrderSymbol() == Symb)) Lots += OrderType() ? OrderLots() : -OrderLots(); Lots = NormalizeDouble(Lots, 2); return(((Lots > 0) && (OrderSend(Symb, OP_BUY, Lots, SymbolInfoDouble(Symb, SYMBOL_ASK), 100, 0, 0, "HEDGE") > 0)) || ((Lots < 0) && (OrderSend(Symb, OP_SELL, -Lots, SymbolInfoDouble(Symb, SYMBOL_BID), 100, 0, 0, "HEDGE") > 0)) || !Lots); } bool CloseAll( string Symb = NULL ) { int Type = 0; long Ticket = 0; bool Res = PlaceHedge(CorrectSymbol(Symb)); for (int i = OrdersTotal() - 1; !IsStopped() && Res && (i >= 0); i--) if (OrderSelect(i, SELECT_BY_POS) && (OrderType() <= OP_SELL) && (OrderSymbol() == Symb)) { if (!Ticket) { Ticket = OrderTicket(); Type = OrderType(); } else if ((OrderType() != Type) && (Res = OrderCloseBy(Ticket, OrderTicket()) && PlaceHedge(Symb))) { Ticket = 0; i = OrdersTotal(); } } return(Res); } void OnStart() { CloseAll(); } Kirill Belousov 2017.12.11 07:49 #173 fxsaber: 关于交易、自动交易系统和测试交易策略的论坛 图书馆:MT4Orders fxsaber, 2017.09.26 09:56 pm. 错别字#define MODE_DIGITS SYMBOL_TRADE_STOPS_LEVEL#define MODE_DIGITS SYMBOL_DIGITS fxsaber 2017.12.11 08:15 #174 Kirill Belousov:一个错字是的,这个例子 中有一个错字。我现在无法更正,因为论坛引擎不允许这样做。当然,示例中的错字不会影响库本身。 --- 2017.12.12 20:52 #175 fxsaber:是的,这个例子 中有一个错字。我现在无法更正,因为论坛引擎不允许这样做。已更正 fxsaber 2017.12.12 22:16 #176 o_o:已更正。谢谢! Kirill Belousov 2017.12.14 13:59 #177 在mql4_to_mql5.mqh 包含器中。double MarketInfo(const string Symb,const int Type) { switch(Type) { case MODE_BID: return(::SymbolInfoDouble(Symb, ::SYMBOL_BID)); case MODE_ASK: return(::SymbolInfoDouble(Symb, ::SYMBOL_ASK)); case MODE_DIGITS: return((double)::SymbolInfoInteger(Symb, ::SYMBOL_DIGITS)); case MODE_SPREAD: return((double)::SymbolInfoInteger(Symb, ::SYMBOL_SPREAD)); case MODE_STOPLEVEL: return((double)::SymbolInfoInteger(Symb, ::SYMBOL_TRADE_STOPS_LEVEL)); case MODE_LOTSIZE: return(::SymbolInfoDouble(Symb, ::SYMBOL_TRADE_CONTRACT_SIZE)); } return(-1); } return(0); fxsaber 2017.12.14 14:16 #178 Kirill Belousov:在mql4_to_mql5.mqh 文件夹中#include <MQL4_to_MQL5.mqh> // 仅用于本例这只是一个示例,仅与描述中的某些 EA 转换相关。在这次讨论中,这些库已被证明比 MarketInfo 和其他解决方案要好得多。在描述中有一个非常重要的备注,版主(不是我)强调了这一点警告。该库只包含一个文件 - MT4Orders.mqh。所有其他文件均附有使用库的示例。使用该库并不需要这些文件。 fxsaber 2017.12.23 11:05 #179 关于交易、自动交易系统和测试交易策略的论坛 库:MT4Orders fxsaber, 2017.09.03 18:52 // 更改列表: // 03.09.2017: // 添加:已添加 OrderTicketOpen() - MT5 开仓交易票据 // OrderOpenReason() - MT5 开仓交易的原因(开仓原因) //OrderCloseReason() - MT5 平仓交易的原因(平仓原因)应用程序示例 交易、自动交易系统和交易策略测试论坛 最后两个订单 fxsaber, 2017.12.23 11:02 #include <MT4Orders.mqh> // 返回因 "原因 "关闭的最后一笔金额交易的票据 int GetLastHistoryPositions( long &Tickets[], int Amount = INT_MAX, const ENUM_DEAL_REASON Reason = DEAL_REASON_SL ) { int Count = ArrayResize(Tickets, 0); for (int i = OrdersHistoryTotal() - 1; (i >= 0) && (Count < Amount); i--) if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && (OrderCloseReason() == Reason)) Tickets[ArrayResize(Tickets, ++Count) - 1] = OrderTicket(); return(Count); } void OnStart() { long Tickets[]; // 在 SL 上完成的最后两笔交易 for (int i = GetLastHistoryPositions(Tickets, 2) - 1; i >= 0; i--) Print(Tickets[i]); } Yevgen Butov 2018.01.04 22:29 #180 您好!说明中写道:"因此,在 MT5 的SELECT_BY_TICKET 模式下,OrderSelect 在极少数情况下(在测试器中)可能无法选择 MT4 中预期的内容。"您能详细说明是在哪种情况下吗? 1...111213141516171819202122232425...95 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
可以在公式合成器 上编写交易函数。
让我们以三角套利为例。我们可以在一分钟内通过图形用户界面手工创建一个这样的符号,或者在一秒钟内通过脚本创建一个这样的符号
并在其上运行套利 TS。
交易、自动交易系统和交易策略测试论坛
一次关闭多个交易
fxsaber, 2017.12.07 09:01
关于交易、自动交易系统和测试交易策略的论坛
图书馆:MT4Orders
fxsaber, 2017.09.26 09:56 pm.
一个错字
是的,这个例子 中有一个错字。我现在无法更正,因为论坛引擎不允许这样做。
当然,示例中的错字不会影响库本身。
是的,这个例子 中有一个错字。我现在无法更正,因为论坛引擎不允许这样做。
已更正
已更正。
谢谢!
在mql4_to_mql5.mqh 包含器中。
在mql4_to_mql5.mqh 文件夹中
这只是一个示例,仅与描述中的某些 EA 转换相关。在这次讨论中,这些库已被证明比 MarketInfo 和其他解决方案要好得多。
在描述中有一个非常重要的备注,版主(不是我)强调了这一点
警告。
该库只包含一个文件 - MT4Orders.mqh。所有其他文件均附有使用库的示例。使用该库并不需要这些文件。
关于交易、自动交易系统和测试交易策略的论坛
库:MT4Orders
fxsaber, 2017.09.03 18:52
应用程序示例
交易、自动交易系统和交易策略测试论坛
最后两个订单
fxsaber, 2017.12.23 11:02
您好!说明中写道:"因此,在 MT5 的SELECT_BY_TICKET 模式下,OrderSelect 在极少数情况下(在测试器中)可能无法选择 MT4 中预期的内容。"您能详细说明是在哪种情况下吗?