程序库: MT4Orders - 页 26 1...192021222324252627282930313233...95 新评论 fxsaber 2018.11.13 13:27 #251 ilvic:您能给我一个 mt4 变体的例子吗?https://www.mql5.com/zh/code/7712与您使用 Spreader 所做的类似不幸的是,MQL4_To_MQL5.mqh 没有创建转换和指标。但它们存在于代码中 //Caculate 指标 double fast1=iMA(NULL,0,mafastperiod,mafastshift,mafastmethod,mafastprice,1); double fast2=iMA(NULL,0,mafastperiod,mafastshift,mafastmethod,mafastprice,2); double slow1=iMA(NULL,0,maslowperiod,maslowshift,maslowmethod,maslowprice,1); double slow2=iMA(NULL,0,maslowperiod,maslowshift,maslowmethod,maslowprice,2); 我不会添加它。也许有人会同意。有关于此主题的文章。 ilvic 2018.11.16 18:02 #252 fxsaber 与 MT4 相比,它在 MT5 上的工作方式不正确。它打开交易后又立即关闭。 问题出在哪里? #ifdef __MQL5__ double MarketInfo( const string Symb, const ENUM_SYMBOL_INFO_DOUBLE Property ) { return(SymbolInfoDouble(Symb, Property)); } int MarketInfo( const string Symb, const ENUM_SYMBOL_INFO_INTEGER Property ) { return((int)SymbolInfoInteger(Symb, Property)); } #define StrToInteger StringToInteger #define StrToDouble StringToDouble #define MODE_MINLOT SYMBOL_VOLUME_MIN #define MODE_POINT SYMBOL_POINT #define MODE_BID SYMBOL_BID #define MODE_ASK SYMBOL_ASK void OnInit( void ) { init(); } #include <MT4Orders.mqh> #endif // __MQL5__ #include "simple_copier.mq4" 附加的文件: simple_copier.mq4 16 kb fxsaber 2018.11.16 23:23 #253 ilvic:fxsaber与 MT4 相比,它在 MT5 上的工作方式不正确。它打开交易后立即关闭。问题出在哪里?我快速查看了代码。奇怪的是,在 MT4 中写入了这样的条件 if(!OrderSend(symbol_,type_,LotNormalize(lot_),price_,slip,0,0,"C4F"+IntegerToString(ticket_))) Print("Error: ",GetLastError()," during setting the pending order.");永远无法打印。这段代码无疑是硬盘杀手。 我对其进行了跨平台调整。 附加的文件: simple_copier.mq4 9 kb ilvic 2018.11.18 23:21 #254 fxsaber 感谢您的帮助。但问题还是一样。 它打开一个订单,然后立即关闭。每秒钟都是如此,循环往复,从不间断。 在 mt4 上没有这个问题。 fxsaber 2018.11.18 23:34 #255 ilvic:感谢您的帮助。但问题还是一样。它打开一个订单,然后立即关闭。如此循环往复,每秒不停。在 mt4 上没有这样的问题。很遗憾,我没有机会了解您的问题。 fxsaber 2018.11.26 14:25 #256 // 更改列表: // 26.11.2018 // 修复:MT4 仓位的魔法和平仓注释:开仓交易的相应字段比平仓交易的相应字段具有更高的优先级。 // 修复:在计算 MT4 订单总数和 MT4 订单选择时,考虑 MT5 订单总数和 MT5 仓位总数的罕见变化。 //修复:MT5 不再考虑已开仓但尚未来得及删除的订单。突出显示。这种脚本 #include <MT4Orders.mqh> #include <Debug.mqh> //https://c.mql5.com/3/173/Debug.mqh #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) void OnStart() { OrderSend(_Symbol, OP_BUYLIMIT, 0.1, Ask, 0, 0, 0); int Total = _P(OrdersTotal()); while (!IsStopped()) { const int NewTotal = OrdersTotal(); if (Total != NewTotal) { _P(NewTotal); // 如果 (NewTotal < Total) // Alert("https://www.mql5.com/ru/forum/290673#comment_9493241"); Total = NewTotal; } } } 对冲账户曾经出现过 2018.11.26 15:27:46.513 void OnStart(), Line = 10: OrdersTotal() = 1 2018.11.26 15:27:56.128 void OnStart(), Line = 18: NewTotal = 2 2018.11.26 15:27:56.128 void OnStart(), Line = 18: NewTotal = 1 现在只有这个。 2018.11.26 15:30:29.224 void OnStart(), Line = 10: OrdersTotal() = 1 对于所有情况下的净值账户,我们尚未成功克服 MT5 原因(已执行订单未删除)。也就是说,程序库不知道如何(实际上也不应该)在所有情况下绕过 MT5 平台的缺陷。 fxsaber 2018.11.26 15:57 #257 关于交易、自动交易系统和测试交易策略的论坛图书馆:MT4 订单fxsaber, 2017.04.20 06:20 最新版本始终在这里。已更新。 fxsaber 2018.11.28 06:29 #258 fxsaber:该库无法(事实上也不应该)在所有情况下绕过 MT5 平台本身的缺陷。例如,本 建立头寸的 市场订单下达后,OrdersTotal 增加了一个。 订单执行后,OrdersTotal 减少了一个,但PositionsTotal 没有增加一个。也就是说,有一个仓位,但终端不知道。例如,既没有头寸也没有订单 - PositionsTotal = 0, OrdersTotal = 0。 您下达了市价订单。在这种情况下,PositionsTotal = 0, OrdersTotal = 1。 市价订单被执行 - 订单总数 = 0。但PositionsTotal = 0!遇到这种情况需要花费很大精力。要注意到这种情况更是难上加难。但 MT5 却创造了这种把戏。 MT4Orders 尝试尽可能避免这种情况,但并非总是可行。我们只能猜测,TS 的作者是否会考虑到纯 MQL5 或 SB 平台的此类缺陷。这不太可能。 fxsaber 2018.12.05 19:43 #259 // 演示如何手动向展示台发送交易指令。 #include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006 #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) bool IsModify() { static long PrevTime = 0; const long NewTime = FileGetInteger(__FILE__, FILE_MODIFY_DATE); const bool Res = (PrevTime != NewTime); if (Res) PrevTime = NewTime; return(Res); } bool CreateFile() { uchar Bytes[]; return(FileSave(__FILE__, Bytes) && IsModify()); } string GetCommand() { uchar Bytes[]; FileLoad(__FILE__, Bytes); return(CharArrayToString(Bytes)); } bool OrdersScan( const int Type ) { for (int i = ::OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && (OrderType() == Type)) return(true); return(false); } bool SendCommand( const string Command, const double Lot = 1, const int Offset = 100 ) { bool Res = false; if (Command == "open buy") Res = (OrderSend(_Symbol, OP_BUY, Lot, Ask, 0, 0, 0) > 0); else if (Command == "open sell") Res = (OrderSend(_Symbol, OP_SELL, Lot, Bid, 0, 0, 0) > 0); else if (Command == "open buylimit") Res = (OrderSend(_Symbol, OP_BUYLIMIT, Lot, Ask - Offset * _Point, 0, 0, 0) > 0); else if (Command == "open selllimit") Res = (OrderSend(_Symbol, OP_SELLLIMIT, Lot, Bid + Offset * _Point, 0, 0, 0) > 0); else if (Command == "close buy") Res = OrdersScan(OP_BUY) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); else if (Command == "close sell") Res = OrdersScan(OP_SELL) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); else if (Command == "close buylimit") Res = OrdersScan(OP_BUYLIMIT) && OrderDelete(OrderTicket()); else if (Command == "close selllimit") Res = OrdersScan(OP_SELLLIMIT) && OrderDelete(OrderTicket()); return(Res); } bool TesterManual() { static const bool IsVisual = MQLInfoInteger(MQL_VISUAL_MODE) && CreateFile(); return(IsVisual && IsModify() && SendCommand(GetCommand())); } void OnTick() { TesterManual(); } fxsaber 2018.12.06 09:04 #260 Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий Библиотеки:MT4Orders fxsaber, 2018.12.05 19:43 // 演示如何手动向展示台发送交易指令。 #include <MT4Orders.mqh> //https://www.mql5.com/ru/code/16006 #define Bid SymbolInfoDouble(_Symbol, SYMBOL_BID) #define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK) bool IsModify() { static long PrevTime = 0; const long NewTime = FileGetInteger(__FILE__, FILE_MODIFY_DATE); const bool Res = (PrevTime != NewTime); if (Res) PrevTime = NewTime; return(Res); } bool CreateFile() { uchar Bytes[]; return(FileSave(__FILE__, Bytes) && IsModify()); } string GetCommand() { uchar Bytes[]; FileLoad(__FILE__, Bytes); return(CharArrayToString(Bytes)); } bool OrdersScan( const int Type ) { for (int i = ::OrdersTotal() - 1; i >= 0; i--) if (OrderSelect(i, SELECT_BY_POS) && (OrderType() == Type)) return(true); return(false); } bool SendCommand( const string Command, const double Lot = 1, const int Offset = 100 ) { bool Res = false; if (Command == "open buy") Res = (OrderSend(_Symbol, OP_BUY, Lot, Ask, 0, 0, 0) > 0); else if (Command == "open sell") Res = (OrderSend(_Symbol, OP_SELL, Lot, Bid, 0, 0, 0) > 0); else if (Command == "open buylimit") Res = (OrderSend(_Symbol, OP_BUYLIMIT, Lot, Ask - Offset * _Point, 0, 0, 0) > 0); else if (Command == "open selllimit") Res = (OrderSend(_Symbol, OP_SELLLIMIT, Lot, Bid + Offset * _Point, 0, 0, 0) > 0); else if (Command == "close buy") Res = OrdersScan(OP_BUY) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); else if (Command == "close sell") Res = OrdersScan(OP_SELL) && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 0); else if (Command == "close buylimit") Res = OrdersScan(OP_BUYLIMIT) && OrderDelete(OrderTicket()); else if (Command == "close selllimit") Res = OrdersScan(OP_SELLLIMIT) && OrderDelete(OrderTicket()); return(Res); } bool TesterManual() { static const bool IsVisual = MQLInfoInteger(MQL_VISUAL_MODE) && CreateFile(); return(IsVisual && IsModify() && SendCommand(GetCommand())); } void OnTick() { TesterManual(); } 1...192021222324252627282930313233...95 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
您能给我一个 mt4 变体的例子吗?
https://www.mql5.com/zh/code/7712
与您使用 Spreader 所做的类似
不幸的是,MQL4_To_MQL5.mqh 没有创建转换和指标。但它们存在于代码中
我不会添加它。也许有人会同意。有关于此主题的文章。
fxsaber
与 MT4 相比,它在 MT5 上的工作方式不正确。它打开交易后又立即关闭。
问题出在哪里?
fxsaber
与 MT4 相比,它在 MT5 上的工作方式不正确。它打开交易后立即关闭。
问题出在哪里?
我快速查看了代码。奇怪的是,在 MT4 中写入了这样的条件
永远无法打印。这段代码无疑是硬盘杀手。
我对其进行了跨平台调整。
fxsaber
感谢您的帮助。但问题还是一样。
它打开一个订单,然后立即关闭。每秒钟都是如此,循环往复,从不间断。
在 mt4 上没有这个问题。
感谢您的帮助。但问题还是一样。
它打开一个订单,然后立即关闭。如此循环往复,每秒不停。
在 mt4 上没有这样的问题。
很遗憾,我没有机会了解您的问题。
突出显示。这种脚本
对冲账户曾经出现过
现在只有这个。
对于所有情况下的净值账户,我们尚未成功克服 MT5 原因(已执行订单未删除)。也就是说,程序库不知道如何(实际上也不应该)在所有情况下绕过 MT5 平台的缺陷。
关于交易、自动交易系统和测试交易策略的论坛
图书馆:MT4 订单
fxsaber, 2017.04.20 06:20
最新版本始终在这里。已更新。
例如,本
建立头寸的 市场订单下达后,OrdersTotal 增加了一个。
例如,既没有头寸也没有订单 - PositionsTotal = 0, OrdersTotal = 0。
您下达了市价订单。在这种情况下,PositionsTotal = 0, OrdersTotal = 1。
市价订单被执行 - 订单总数 = 0。但PositionsTotal = 0!
遇到这种情况需要花费很大精力。要注意到这种情况更是难上加难。但 MT5 却创造了这种把戏。
MT4Orders 尝试尽可能避免这种情况,但并非总是可行。我们只能猜测,TS 的作者是否会考虑到纯 MQL5 或 SB 平台的此类缺陷。这不太可能。
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки:MT4Orders
fxsaber, 2018.12.05 19:43