任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 78 1...717273747576777879808182838485...1178 新评论 Maxim Voronin 2013.08.19 05:37 #771 请按优先顺序答复。我有一个由柱状图显示的指标。当加入或重新连接后,它显示一个op-penny值。我已经在第一次启动时设置了条件,以重置数组的第0个单元。我把它设置为inite - 它没有帮助。我在启动时重置了它 - 好的。(我在开始时设置了条件:如果(GetLastError()==6)zas[0]=0.0; - 没有帮助。 Alekseu Fedotov 2013.08.19 06:12 #772 dikson1976-1: 请按优先顺序答复。我有一个由柱状图显示的指标。当加入或重新连接后,它显示一个op-penny值。我已经在第一次启动时设置了条件,以重置数组的第0个单元。我把它设置为inite - 它没有帮助。我在启动时重置了它 - 好的。(我在开始时设置了条件:如果(GetLastError()==6)zas[0]=0.0; - 没有帮助。 我不能没有代码。 Alekseu Fedotov 2013.08.19 06:24 #773 多佐尔。 试着以相反的顺序浏览一下这些订单。 for(i=OrdersTotal()-1;i>=0;i--) { OrderSelect(i,SELECT_BY_POS,MODE_TRADES); { // и тд } } Maxim Voronin 2013.08.19 06:38 #774 自己处理了。别紧张。谢谢大家。 Paladin80 2013.08.19 06:54 #775 Dozol: 朋友们,帮帮我吧。我需要关闭一个选定货币对的所有订单。这是我写的东西(EA代码的一部分)。 int Zakrit_vse() ... 使用SRC在论坛上粘贴代码 我把它粘贴在这里,也许你们会发现一些有趣的东西。 int Zakrit_vse() { if (OrdersTotal()>0) { for (int i=OrdersTotal()-1; i>=0; i--) { if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()!=Symbol()) continue; //--- Close pending orders if (OrderType()==OP_BUYLIMIT || OrderType()==OP_BUYSTOP || OrderType()==OP_SELLLIMIT || OrderType()==OP_SELLSTOP) { OrderDelete(OrderTicket(),CLR_NONE) Prov_oshibok(); return(0); } //--- Close opened position BUY if (OrderType()==OP_BUY) { RefreshRates(); OrderClose(OrderTicket(),OrderLots(),Bid,100,CLR_NONE); Prov_oshibok(); return(0); } //--- Close opened position SELL if (OrderType()==OP_SELL) { RefreshRates(); OrderClose(OrderTicket(),OrderLots(),Ask,100,CLR_NONE); Prov_oshibok(); return(0); } } } } } Mikhail Kozhemyako 2013.08.19 07:07 #776 Dozol: 朋友们,帮帮我吧。我需要关闭一个选定货币对的所有订单。以下是我所写的内容(EA代码的一部分)。 当一切都已经在你之前被发明的时候,为什么还要重新发明轮子。比如说。不要忘记这一点。 Alexey Semenov 2013.08.19 14:52 #777 帮助!我有一个外部通道指标的代码(当达到通道的上限时,交易打开卖出--当达到下限时关闭,以反向顺序买入)。不知道什么原因,它不能打开交易,我找不到错误。与另一个通道指标完美配合。我想马上指定所有的缓冲区都被设置。 代码见附件。 外置双Lots = 0.1。 外部字符串Comment = "TMA Canal2"。 外置 int TakeProfit = 20; 外来的int StopLoss = 20; 外部int Slippage = 2; // 滑移量 外来的int Magic = 124; 外部字符串Indi = "指标数据"。 外部字符串 TimeFrame = "当前的时间 框架。 外来的int TMAPeriod = 56; 外部int Price = PRICE_CLOSE; 外置双倍ATRMultiplier = 2.0。 外部intTRPeriod = 100。 外来的双倍TrendThreshold = 0.5。 外部 bool ShowCenterLine = false; 双重PriceHigh, PriceLow, SL, TP。 int票。 //+------------------------------------------------------------------+ //|专家初始化功能| //+------------------------------------------------------------------+ int init() { if (Digits ==3 || Digits ==3) // 用于五位数的经纪人 { TakeProfit *= 10。 StopLoss *= 10; 滑移*=10。 } return(0); } //+------------------------------------------------------------------+ //|计算未结头寸| //+------------------------------------------------------------------+ int CalculateCurrentOrders(string symbol) { int buys=0,sells=0。 //---- for(int i=0;i<OrdersTotal();i++) { 如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 如果(OrderSymbol()==Symbol() && OrderMagicNumber()==124) { 如果(OrderType()==OP_BUY) buys++; 如果(OrderType()==OP_SELL) sells++; } } //---- 退货订单量 if(buys>0) return(buys)。 否则返回(-sells)。 } //+------------------------------------------------------------------+ //| 检查未结订单的情况 | //+------------------------------------------------------------------+ 空白的CheckForOpen()。 { 双重PriceHigh, PriceLow。 int票。 //----,只为新棒的第一次抽动而去交易。 如果(Volume[0]>1)返回。 PriceHigh = iCustom (Symbol(, 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 1, 0); PriceLow = iCustom (Symbol(, 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 2, 0); 如果(Open[1]>PriceHigh || Close[1]>PriceHigh || High[1]>PriceHigh && Ask<=PriceHigh) { ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "TMA Canal2",124,0,Red)。 返回。 } //---- 购买条件 如果(Open[1]<PriceLow || Close[1]<PriceLow || Low[1]<PriceLow && Bid>=PriceLow) { ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "TMA Canal2",124,0,Blue); 返回。 } //---- } //+------------------------------------------------------------------+ //| 检查平仓的条件| //+------------------------------------------------------------------+ 空白的CheckForClose() { 双重PriceHigh, PriceLow。 //----,只为新酒吧的第一笔交易而去。 如果(Volume[0]>1)返回。 PriceHigh = iCustom (Symbol(, 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 1, 0); PriceLow = iCustom (Symbol(, 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 2, 0); for(int i=0;i<OrdersTotal();i++) { 如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break; 如果(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) 继续。 //---- 检查订单类型 如果(OrderType()==OP_BUY) { 如果(Open[1]>PriceHigh || Close[1]>PriceHigh || High[1]>PriceHigh) OrderClose(OrderTicket(),OrderLots(), Bid,3,White); 突破。 } 如果(OrderType()==OP_SELL) { if(Open[1]<PriceLow || Close[1]<PriceLow || Low[1]<PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White); 突破。 } } //---- } //+------------------------------------------------------------------+ //|启动功能| //+------------------------------------------------------------------+ 空白启动()。 { //---- 检查历史和交易情况 如果(Bars<100 || IsTradeAllowed()==false) 返回。 //---- 按当前符号计算未结订单 如果(CalculateCurrentOrders(Symbol())==0) CheckForOpen()。 否则CheckForClose()。 //---- } //+------------------------------------------------------------------+ 初学者的问题 MQL5 MT5 MetaTrader Any rookie question, so 新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 Boris 2013.08.20 09:35 #778 ZahvatkiN:我是mql4的新手,我擅长使用SL和TP,但是当我需要通过一个指标的交叉信号来关闭订单时,我有一个问题。 我不太明白OrderSelect()函数是如何工作的。我知道为了搜索一个订单,我们使用了一个循环,它在代码中,但在交易过程中发现,订单刚刚打开,立即关闭,因为打开买入的条件与关闭卖出的条件重合,如何解释它,这不应该做我不明白,请解释。 SRC 按钮是用来粘贴代码 的! 当你写完后,也要用文档 进行补充! 如有抄袭,请与作者联系,以便进行修改或进行工作! Mikhail Kozhemyako 2013.08.20 09:43 #779 我再补充一次。我告诉过你多少次了,要插入代码,使用最上面一行的按钮。 而坚持代码编写方式 是可取的,....。希望如此,但不是必须的。但大多数人更倾向于用易于理解的代码来回答。 ZahvatkiN 2013.08.20 09:53 #780 我是mql4的新手,我知道如何使用SL和TP,但是当我需要通过反向指标信号关闭订单时,我遇到了一个问题。我不知道OrderSelect()函数是如何工作的。我知道循环是用来搜索订单的,这在代码中是有的,但在交易过程中发现,订单刚开盘就马上平仓,因为开盘买入的条件与平仓卖出的条件重合,如何解释不应该这样做我不明白,请解释。 borilunad 谢谢你的提示,重新做了,那么你也可以把那个带引号的信息删掉,以免杂乱。 if(buy1sOpen()) { OrderSend(Symbol(), OP_BUY, lots, Ask, Slippage, 0, 0, "", magic, 0, Blue); } if(sell1sOpen()) { OrderSend(Symbol(), OP_SELL, lots, Bid, Slippage, 0, 0, "", magic, 0, Red); } for(int i=0; i<OrdersTotal(); i++) { OrderSelect(i,SELECT_BY_POS); if(buy1sClose()) { OrderClose(i, lots, Ask, Slippage, Blue); } if(sell1sClose()) { OrderClose(i, lots, Bid, Slippage, Red); } } } } bool buy1sOpen() { Sm1=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_MAIN,1); Ss1=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_SIGNAL,1); Sm2=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_MAIN,2); Ss2=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_SIGNAL,2); if(Sm1>Ss1 && Sm2<Ss2 && Sm1<30) return(true); return(false); } bool sell1sOpen() { Sm1=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_MAIN,1); Ss1=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_SIGNAL,1); Sm2=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_MAIN,2); Ss2=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_SIGNAL,2); if(Sm1<Ss1 && Sm2>Ss2 && Sm1>70) return(true); return(false); } bool buy1sClose() { Sm1=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_MAIN,1); Ss1=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_SIGNAL,1); Sm2=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_MAIN,2); Ss2=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_SIGNAL,2); if(Sm1<Ss1 && Sm2>Ss2 && Sm1>70) return(true); return(false); } bool sell1sClose() { Sm1=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_MAIN,1); Ss1=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_SIGNAL,1); Sm2=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_MAIN,2); Ss2=iStochastic(NULL,0,13,5,5,MODE_SMA,0,MODE_SIGNAL,2); if(Sm1>Ss1 && Sm2<Ss2 && Sm1<30) return(true); return(false); } 1...717273747576777879808182838485...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
请按优先顺序答复。我有一个由柱状图显示的指标。当加入或重新连接后,它显示一个op-penny值。我已经在第一次启动时设置了条件,以重置数组的第0个单元。我把它设置为inite - 它没有帮助。我在启动时重置了它 - 好的。(我在开始时设置了条件:如果(GetLastError()==6)zas[0]=0.0; - 没有帮助。
我不能没有代码。
多佐尔。
试着以相反的顺序浏览一下这些订单。
朋友们,帮帮我吧。我需要关闭一个选定货币对的所有订单。这是我写的东西(EA代码的一部分)。
int Zakrit_vse() ...
使用SRC在论坛上粘贴代码
我把它粘贴在这里,也许你们会发现一些有趣的东西。
朋友们,帮帮我吧。我需要关闭一个选定货币对的所有订单。以下是我所写的内容(EA代码的一部分)。
当一切都已经在你之前被发明的时候,为什么还要重新发明轮子。比如说。不要忘记这一点。
帮助!我有一个外部通道指标的代码(当达到通道的上限时,交易打开卖出--当达到下限时关闭,以反向顺序买入)。不知道什么原因,它不能打开交易,我找不到错误。与另一个通道指标完美配合。我想马上指定所有的缓冲区都被设置。
代码见附件。
外置双Lots = 0.1。
外部字符串Comment = "TMA Canal2"。
外置 int TakeProfit = 20;
外来的int StopLoss = 20;
外部int Slippage = 2; // 滑移量
外来的int Magic = 124;
外部字符串Indi = "指标数据"。
外部字符串 TimeFrame = "当前的时间 框架。
外来的int TMAPeriod = 56;
外部int Price = PRICE_CLOSE;
外置双倍ATRMultiplier = 2.0。
外部intTRPeriod = 100。
外来的双倍TrendThreshold = 0.5。
外部 bool ShowCenterLine = false;
双重PriceHigh, PriceLow, SL, TP。
int票。
//+------------------------------------------------------------------+
//|专家初始化功能|
//+------------------------------------------------------------------+
int init()
{
if (Digits ==3 || Digits ==3) // 用于五位数的经纪人
{
TakeProfit *= 10。
StopLoss *= 10;
滑移*=10。
}
return(0);
}
//+------------------------------------------------------------------+
//|计算未结头寸|
//+------------------------------------------------------------------+
int CalculateCurrentOrders(string symbol)
{
int buys=0,sells=0。
//----
for(int i=0;i<OrdersTotal();i++)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
如果(OrderSymbol()==Symbol() && OrderMagicNumber()==124)
{
如果(OrderType()==OP_BUY) buys++;
如果(OrderType()==OP_SELL) sells++;
}
}
//---- 退货订单量
if(buys>0) return(buys)。
否则返回(-sells)。
}
//+------------------------------------------------------------------+
//| 检查未结订单的情况 |
//+------------------------------------------------------------------+
空白的CheckForOpen()。
{
双重PriceHigh, PriceLow。
int票。
//----,只为新棒的第一次抽动而去交易。
如果(Volume[0]>1)返回。
PriceHigh = iCustom (Symbol(, 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 1, 0);
PriceLow = iCustom (Symbol(, 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 2, 0);
如果(Open[1]>PriceHigh || Close[1]>PriceHigh || High[1]>PriceHigh && Ask<=PriceHigh)
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "TMA Canal2",124,0,Red)。
返回。
}
//---- 购买条件
如果(Open[1]<PriceLow || Close[1]<PriceLow || Low[1]<PriceLow && Bid>=PriceLow)
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0, "TMA Canal2",124,0,Blue);
返回。
}
//----
}
//+------------------------------------------------------------------+
//| 检查平仓的条件|
//+------------------------------------------------------------------+
空白的CheckForClose()
{
双重PriceHigh, PriceLow。
//----,只为新酒吧的第一笔交易而去。
如果(Volume[0]>1)返回。
PriceHigh = iCustom (Symbol(, 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 1, 0);
PriceLow = iCustom (Symbol(, 0, "TMALine", TimeFrame, TMAPeriod, Price, ATRMultiplier, ATRPeriod, TrendThreshold, ShowCenterLine, 2, 0);
for(int i=0;i<OrdersTotal();i++)
{
如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
如果(OrderMagicNumber()!=124 || OrderSymbol()!=Symbol()) 继续。
//---- 检查订单类型
如果(OrderType()==OP_BUY)
{
如果(Open[1]>PriceHigh || Close[1]>PriceHigh || High[1]>PriceHigh) OrderClose(OrderTicket(),OrderLots(), Bid,3,White);
突破。
}
如果(OrderType()==OP_SELL)
{
if(Open[1]<PriceLow || Close[1]<PriceLow || Low[1]<PriceLow) OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
突破。
}
}
//----
}
//+------------------------------------------------------------------+
//|启动功能|
//+------------------------------------------------------------------+
空白启动()。
{
//---- 检查历史和交易情况
如果(Bars<100 || IsTradeAllowed()==false) 返回。
//---- 按当前符号计算未结订单
如果(CalculateCurrentOrders(Symbol())==0) CheckForOpen()。
否则CheckForClose()。
//----
}
//+------------------------------------------------------------------+
我是mql4的新手,我擅长使用SL和TP,但是当我需要通过一个指标的交叉信号来关闭订单时,我有一个问题。 我不太明白OrderSelect()函数是如何工作的。我知道为了搜索一个订单,我们使用了一个循环,它在代码中,但在交易过程中发现,订单刚刚打开,立即关闭,因为打开买入的条件与关闭卖出的条件重合,如何解释它,这不应该做我不明白,请解释。
SRC 按钮是用来粘贴代码 的!
当你写完后,也要用文档 进行补充!
如有抄袭,请与作者联系,以便进行修改或进行工作!
我再补充一次。我告诉过你多少次了,要插入代码,使用最上面一行的按钮。
而坚持代码编写方式 是可取的,....。希望如此,但不是必须的。但大多数人更倾向于用易于理解的代码来回答。
我是mql4的新手,我知道如何使用SL和TP,但是当我需要通过反向指标信号关闭订单时,我遇到了一个问题。我不知道OrderSelect()函数是如何工作的。我知道循环是用来搜索订单的,这在代码中是有的,但在交易过程中发现,订单刚开盘就马上平仓,因为开盘买入的条件与平仓卖出的条件重合,如何解释不应该这样做我不明白,请解释。
borilunad 谢谢你的提示,重新做了,那么你也可以把那个带引号的信息删掉,以免杂乱。