[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 410 1...403404405406407408409410411412413414415416417...631 新评论 PapaYozh 2012.10.02 10:59 #4091 7777877: 在 MQL教程 ,在标准函数一章的图形操作部分,有一个函数WindowHandle,描述如下。"......返回包含指定图形的窗口(窗口手柄)的系统描述符"。 问题:"窗柄 "是什么意思(它是什么),有什么用? P.S.为了不给论坛添乱,提前感谢您的回答 响应。 窗口描述符是一个数字。 需要一个窗口描述符来操作一个窗口 Lowech 2012.10.02 11:27 #4092 int start() { for (int i=OrdersHistoryTotal()-1;i>=0; i--) { if( OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) { if (TimeDay (OrderOpenTime())==Day() && TimeMonth(OrderOpenTime())==Month() && TimeYear (OrderOpenTime())==Year()) if(OrderType()==OP_SELL && OrdersTotal()==0 || OrdersHistoryTotal()==0) { OrderSend( Symbol(), OP_BUY, 0.1, Ask, 5,Bid-25*Point,Bid+25*Point, "", 0, 0, Blue ); } if( OrderType()==OP_BUY && OrdersTotal()==0 || OrdersHistoryTotal()==0) { OrderSend( Symbol(), OP_SELL, 0.1, Bid, 5,Ask-25*Point,Ask+25*Point, "", 0, 0, Red ); } } } return(0); } 你好!代码有问题!!我需要订单一个接一个地打开卖出,海湾,卖出等,但计数是在白天完成的,第二天由一个新的,不考虑前一天的开单顺序!这是一个新的一天,一个新的周期!上面的代码我认为它应该是这样的!除了EA没有打开任何订单!不明白什么是错的...告诉我,如果你知道!! [删除] 2012.10.02 12:45 #4093 如何正确地做到这一点。 我想在新的一天到来时关闭挂单,如果它们没有被执行...我写了它,但它不工作。错误4051 if (iTime(Symbol(),PERIOD_D1,0) != New_Day_DateTime) { New_Day_DateTime = iTime(Symbol(),PERIOD_D1,0); GlobalVariableSet("gNew_Day_DateTime",New_Day_DateTime); for( i=1;i<=OrdersTotal(); i++) { if (OrderSelect(i-1,SELECT_BY_POS)==true) { if (OrderSymbol()!= Symb) continue; Tip=OrderType(); if (Tip==0) continue; Limit_Stop=Tip; if (OrderMagicNumber()==3) {Ticket_B=OrderTicket();} } } while(true) { if (Limit_Stop==-1) { break; } Ans_B=OrderDelete(Ticket_B); if (Ans_B==true) { break; } } for ( i=1; i<=OrdersTotal(); i++) { if (OrderSelect(i-1,SELECT_BY_POS)==true) { if (OrderSymbol()!= Symb) continue; Tip=OrderType(); if (Tip==1) continue; if (OrderMagicNumber()==4) {Ticket_S=OrderTicket();} } } while(true) { if (Limit_Stop==-1) { break; } Ans_S=OrderDelete(Ticket_S); if (Ans_S==true) { break; } } Mikhail Kozhemyako 2012.10.02 13:00 #4094 Egori4: 当你打开一个挂单,设置一个到期时间,例如23:59,该订单将自行关闭。 nt OrderSend ( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0,datetime expiration=0, color arrow_color=CLR_NONE) Victor Nikolaev 2012.10.02 15:36 #4095 lowech: 你好!代码有问题!!我需要订单一个接一个地打开卖出,海湾,卖出等,但计数是在白天完成的,第二天由一个新的,不考虑前一天的开单顺序!这是一个新的一天,一个新的周期!上面的代码我认为它应该是这样的!除了EA没有打开任何订单!不明白什么是错的...告诉我,如果你知道!! 而且为什么要打开订单,特别是在历史上是空的情况下。并学习如何人性化地插入代码,我不喜欢编辑别人的帖子。 [删除] 2012.10.02 16:11 #4096 Sepulca: 谢谢你!我会努力... neo777 2012.10.03 09:36 #4097 如何添加到该顾问中 //+------------------------------------------------------------------+ //| CCI.mq4 | //| Copyright 2012, MetaQuotes Software Corp. //| http://www.metaquotes.net | //+------------------------------------------------------------------+ #property copyright"Copyright 2012, MetaQuotes Software Corp. #属性链接 "http://www.metaquotes.net" 外来的双重LotTrend = 0.1; 外部int TP=100。 extern int SL=250。 //+------------------------------------------------------------------+ //|专家初始化功能| //+------------------------------------------------------------------+ int init() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家去初始化功能| //+------------------------------------------------------------------+ int deinit() { //---- //---- return(0); } //+------------------------------------------------------------------+ //|专家启动功能| //+------------------------------------------------------------------+ int start() { 如果(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)。 { 如果(Bid>iMA(Symbol(),PERIOD_M15,100,0,1,4,0) ) { OrderSend(Symbol(),OP_BUY,LotTrend,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green) } 如果(Bid<iMA(Symbol(),PERIOD_M15,100,0,1,4,0) ) { OrderSend(Symbol(),OP_SELL,LotTrend,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green)。 } } //---- return(0); } //+------------------------------------------------------------------+ 1.只在蜡烛收盘时进行交易(当价格穿越SMA时)。 [ARCHIVE!] Any rookie question, [存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要路过。没有你就无处可去 - 3. 非滞后工具 Vladero 2012.10.03 10:18 #4098 你好!我有一个关于MQL4指标的问题,我不能完全理解。例如,我有一个简单的分形指标。 //+===========================================================================+ //| FRAC.mq4 | //+===========================================================================+ // Параметры: // // По умолчанию frac_5 - оранжевый, frac_3 - темно-синий. //----- // History - определяет на сколько глубоко в историю вам нужно отображение // индикатора (в количестве свечей). Минимальное значение = 2. //----- // frac_3 - если значение "on", то frac_3 отображается, иначе нет. //----- // frac_5 - если значение "on", то frac_5 отображается, иначе нет. //+===========================================================================+ #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 MidnightBlue #property indicator_color2 MidnightBlue #property indicator_color3 Orange #property indicator_color4 Orange //----- extern int history = 500; extern string frac_3 = "on"; extern string frac_5 = "on"; extern int metka = 20; //----- double FRAC_3_POS[]; double FRAC_3_NEG[]; double FRAC_5_POS[]; double FRAC_5_NEG[]; //+===========================================================================+ int init() { SetIndexBuffer (0, FRAC_3_POS); SetIndexStyle (0, DRAW_ARROW, 0, 3); SetIndexArrow (0, 217); //----- SetIndexBuffer (1, FRAC_3_NEG); SetIndexStyle (1, DRAW_ARROW, 0, 3); SetIndexArrow (1, 218); //----- SetIndexBuffer (2, FRAC_5_POS); SetIndexStyle (2, DRAW_ARROW, 0, 3); SetIndexArrow (2, 217); //----- SetIndexBuffer (3, FRAC_5_NEG); SetIndexStyle (3, DRAW_ARROW, 0, 3); SetIndexArrow (3, 218); return(0); } //+===========================================================================+ int start() { int i,Counted_bars; Counted_bars = IndicatorCounted(); i = Bars - Counted_bars - 1; if (history < 2) history = 2; if (i > history - 1) i = history - 1; //i=Bars - 1; //----- if (Digits <= 3) double K = 0.01; else K = 0.0001; while (i >= 0) { double FR_3P=0, FR_3N=0, FR_5P=0, FR_5N=0; //----- if (High[i+1] >= High[i+2] && High[i+1] >= High[i]) FR_3P = High[i+1] + metka*K; //----- if (Low[i+1] <= Low[i+2] && Low[i+1] <= Low[i]) FR_3N = Low[i+1] - metka*K; //----- if (High[i+2] >= High[i+4] && High[i+2] >= High[i+3] && High[i+2] >= High[i+1] && High[i+2] >= High[i]) FR_5P = High[i+2] + metka*K; //----- if (Low[i+2] <= Low[i+4] && Low[i+2] <= Low[i+3] && Low[i+2] <= Low[i+1] && Low[i+2] <= Low[i]) FR_5N = Low[i+2] - metka*K; //----- if (frac_3 != "on") { FR_3P = EMPTY; FR_3N = EMPTY; } //----- if (frac_5 != "on") { FR_5P = EMPTY; FR_5N = EMPTY; } //----- FRAC_3_POS[i+1] = FR_3P; FRAC_3_NEG[i+1] = FR_3N; FRAC_5_POS[i+2] = FR_5P; FRAC_5_NEG[i+2] = FR_5N; i--; } return(0); } //+===========================================================================+ 如果你以这种形式编译,它在扩展左图边界和加载历史时开始出现故障,并在不应该出现的地方显示标记(见附件的截图)。如果我们注释掉代码的一部分。 if (history < 2) history = 2; if (i > history - 1) i = history - 1; 然后这些故障就会消失...在加载历史记录时,如果你只填充指标数组中的 "非空 "元素,并且不在没有标签的地方重置指标值,也会出现同样的故障。 为什么会发生这种情况?事实证明,为什么在加载历史记录时有必要重新计算整个指标?为什么我必须将数组中的 "空 "元素的值置空? 如果条形图的索引是从左到右,在历史加载时,条形图的索引会发生变化,指标会在没有重新计算的情况下错误地显示,那么我们就能理解这个故障......但在MT4中,条形图的索引是从右到左的,所以,在加载历史记录时,之前的那些条形图的索引应该是保持不变的(指标值也是如此),那为什么要重新计算指标,这些标记的转变是怎么来的? Alexey Oreshkin 2012.10.03 11:24 #4099 同事们,能否请你们回答以下问题? 我用手开了4个买单,我运行一个EA,在买入价时删除已设定的订单,滑点是100点,在一个循环中删除,线程占用检查和报价更新都存在。为什么在循环中没有删除所有的订单?日志显示,删除需要对start()函数进行几次初始化 int start() { Print("Пришёл новый тик"); int total=OrdersTotal(); Print("Всего ордеров = "+total); for (int i=0;i<total;i++) if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { //Print("Всего ордеров = "+OrdersTotal()); Print("удаляем ордер = "+i+" тикет ордера = "+OrderTicket()); while(IsTradeContextBusy()) { Print("Торговый поток занят"); Sleep(100); } RefreshRates(); OrderClose(OrderTicket(),OrderLots(),Bid,100,0); Print("ошибка="+GetLastError()); } return(0); } 这里是EA的日志。 17:16:59 temp EURUSD,M1: 加载成功 17:17:51 temp EURUSD,M1: 新勾股到达 17:17:51 temp EURUSD,M1: 订单总数=4 17:17:51 temp EURUSD,M1: 删除订单=0勾股订单=2808657 17:17:52 temp EURUSD,M1: 关闭#2808657购买1。00 EURUSD at 1.28969 at price 1.28973 17:17:52 temp EURUSD,M1: error=0 17:17:52 temp EURUSD,M1: remove order = 1 ticket order = 2808659 17:17:52 temp EURUSD,M1: close #2808659 buy 1.00 EURUSD at 1.28974 at price 1.28975 17:17:52 temp EURUSD,M1: Error=0 17:17:54 temp EURUSD,M1: New tick arrived 17:17:54 temp EURUSD,M1: Total orders = 2 17:17:54 temp EURUSD,M1: Remove order = 0 tick order = 2808658 17:17:54 temp EURUSD,M1: close #2808658 buy 1.00 EURUSD at 1.28969 at price 1.28976 17:17:54 temp EURUSD,M1: Error=0 17:17:56 temp EURUSD,M1: New tick came 17:17:56 temp EURUSD,M1: Total orders = 1 17:17:56 temp EURUSD,M1: Remove order = 0 tick order = 2808660 17:17:56 temp EURUSD,M1: close #2808660 buy 1.00 EURUSD at 1.28976 at price 1.28977 17:17:56 temp EURUSD,M1: error=0 [ARCHIVE!] Any rookie question, Experts: Smart AC Trader Tough communication problems Рустам 2012.10.03 11:28 #4100 展开循环: for(i=OrdersTotal()-1;i>=0;i--){ 1...403404405406407408409410411412413414415416417...631 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
在 MQL教程 ,在标准函数一章的图形操作部分,有一个函数WindowHandle,描述如下。"......返回包含指定图形的窗口(窗口手柄)的系统描述符"。
问题:"窗柄 "是什么意思(它是什么),有什么用?
P.S.为了不给论坛添乱,提前感谢您的回答
响应。
窗口描述符是一个数字。
需要一个窗口描述符来操作一个窗口
你好!代码有问题!!我需要订单一个接一个地打开卖出,海湾,卖出等,但计数是在白天完成的,第二天由一个新的,不考虑前一天的开单顺序!这是一个新的一天,一个新的周期!上面的代码我认为它应该是这样的!除了EA没有打开任何订单!不明白什么是错的...告诉我,如果你知道!!
当你打开一个挂单,设置一个到期时间,例如23:59,该订单将自行关闭。
nt OrderSend ( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0,datetime expiration=0, color arrow_color=CLR_NONE)
你好!代码有问题!!我需要订单一个接一个地打开卖出,海湾,卖出等,但计数是在白天完成的,第二天由一个新的,不考虑前一天的开单顺序!这是一个新的一天,一个新的周期!上面的代码我认为它应该是这样的!除了EA没有打开任何订单!不明白什么是错的...告诉我,如果你知道!!
而且为什么要打开订单,特别是在历史上是空的情况下。并学习如何人性化地插入代码,我不喜欢编辑别人的帖子。
如何添加到该顾问中
//+------------------------------------------------------------------+
//| CCI.mq4 |
//| Copyright 2012, MetaQuotes Software Corp.
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright"Copyright 2012, MetaQuotes Software Corp.
#属性链接 "http://www.metaquotes.net"
外来的双重LotTrend = 0.1;
外部int TP=100。
extern int SL=250。
//+------------------------------------------------------------------+
//|专家初始化功能|
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//|专家启动功能|
//+------------------------------------------------------------------+
int start()
{
如果(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==False)。
{
如果(Bid>iMA(Symbol(),PERIOD_M15,100,0,1,4,0)
)
{
OrderSend(Symbol(),OP_BUY,LotTrend,Ask,0,Ask-SL*Point,Ask+TP*Point,0,0,0,Green)
}
如果(Bid<iMA(Symbol(),PERIOD_M15,100,0,1,4,0)
)
{
OrderSend(Symbol(),OP_SELL,LotTrend,Bid,0,Bid+SL*Point,Bid-TP*Point,0,0,0,Green)。
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
1.只在蜡烛收盘时进行交易(当价格穿越SMA时)。
如果你以这种形式编译,它在扩展左图边界和加载历史时开始出现故障,并在不应该出现的地方显示标记(见附件的截图)。如果我们注释掉代码的一部分。
然后这些故障就会消失...在加载历史记录时,如果你只填充指标数组中的 "非空 "元素,并且不在没有标签的地方重置指标值,也会出现同样的故障。
为什么会发生这种情况?事实证明,为什么在加载历史记录时有必要重新计算整个指标?为什么我必须将数组中的 "空 "元素的值置空?
如果条形图的索引是从左到右,在历史加载时,条形图的索引会发生变化,指标会在没有重新计算的情况下错误地显示,那么我们就能理解这个故障......但在MT4中,条形图的索引是从右到左的,所以,在加载历史记录时,之前的那些条形图的索引应该是保持不变的(指标值也是如此),那为什么要重新计算指标,这些标记的转变是怎么来的?
同事们,能否请你们回答以下问题?
我用手开了4个买单,我运行一个EA,在买入价时删除已设定的订单,滑点是100点,在一个循环中删除,线程占用检查和报价更新都存在。为什么在循环中没有删除所有的订单?日志显示,删除需要对start()函数进行几次初始化
这里是EA的日志。
17:16:59 temp EURUSD,M1: 加载成功
17:17:51 temp EURUSD,M1: 新勾股到达
17:17:51 temp EURUSD,M1: 订单总数=4
17:17:51 temp EURUSD,M1: 删除订单=0勾股订单=2808657
17:17:52 temp EURUSD,M1: 关闭#2808657购买1。00 EURUSD at 1.28969 at price 1.28973
17:17:52 temp EURUSD,M1: error=0
17:17:52 temp EURUSD,M1: remove order = 1 ticket order = 2808659
17:17:52 temp EURUSD,M1: close #2808659 buy 1.00 EURUSD at 1.28974 at price 1.28975
17:17:52 temp EURUSD,M1: Error=0
17:17:54 temp EURUSD,M1: New tick arrived
17:17:54 temp EURUSD,M1: Total orders = 2
17:17:54 temp EURUSD,M1: Remove order = 0 tick order = 2808658
17:17:54 temp EURUSD,M1: close #2808658 buy 1.00 EURUSD at 1.28969 at price 1.28976
17:17:54 temp EURUSD,M1: Error=0
17:17:56 temp EURUSD,M1: New tick came
17:17:56 temp EURUSD,M1: Total orders = 1
17:17:56 temp EURUSD,M1: Remove order = 0 tick order = 2808660
17:17:56 temp EURUSD,M1: close #2808660 buy 1.00 EURUSD at 1.28976 at price 1.28977
17:17:56 temp EURUSD,M1: error=0
展开循环: