//+------------------------------------------------------------------+string lSymbol;
int init ()
{
lSymbol = Symbol();
return (0);
}
int deinit()
{return(0);}
int start()
{
double MacdCurrent, MacdPrevious, SignalCurrent;
double SignalPrevious, MaCurrent, MaPrevious;
double bid, ask, point, digits;
int cnt, ticket, total;
total = SymbolOrdersTotal (lSymbol);
if (total<1);
{
bid = MarketInfo(lSymbol,MODE_BID);
ask = MarketInfo(lSymbol,MODE_ASK);
point = MarketInfo(lSymbol,MODE_POINT);
digits= MarketInfo(lSymbol,MODE_DIGITS);
这就是主要部分的模样
for(cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // check for opened position OrderSymbol()==lSymbol()) // check for symbol
{
if(OrderType()==OP_BUY) // long position is opened
{
// should it be closed?if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious &&
MacdCurrent>(MACDCloseLevel*point))
{
OrderClose(OrderTicket(),OrderLots(),bid,3,Violet); // close positionreturn(0); // exit
}
// check for trailing stopif(TrailingStop>0)
{
if(bid-OrderOpenPrice()>point*TrailingStop)
{
if(OrderStopLoss()<bid-point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),bid-point*TrailingStop,OrderTakeProfit(),0,Green);
return(0);
}
}
}
}
else// go to short position
{
// should it be closed?if(MacdCurrent<0 && MacdCurrent>SignalCurrent &&
MacdPrevious<SignalPrevious && MathAbs(MacdCurrent)>(MACDCloseLevel*point))
{
OrderClose(OrderTicket(),OrderLots(),ask,3,Violet); // close positionreturn(0); // exit
}
// check for trailing stopif(TrailingStop>0)
{
if((OrderOpenPrice()-ask)>(point*TrailingStop))
{
if((OrderStopLoss()>(ask+point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),ask+point*TrailingStop,OrderTakeProfit(),0,Red);
return(0);
}
}
}
}
}
}
return(0);
}
int SymbolOrdersTotal(string lSymbol)
{
int Res=0;
int total=OrdersTotal();
for (int i=0;i<total;i++)
{
if (OrderSelect(i, SELECT_BY_POS))
{
if (OrderSymbol()==lSymbol)
{
Res++;
}
}
}
return(Res);
}
// the end.
对不起,什么定界符?
句号和逗号。那么,列表的定界符是不同的,逗号和分号。
尝试用正确的分隔符导入。或者用正确的分隔符重做区域设置。祝好运
谢谢!!!! 是的,那里有一个点。 你如何将区域设置改为正确的分隔符?
谢谢!!!
对不起,你能给我一个关于这些定界符的最后一个帖子的链接吗!?
谷歌、Yandexed--试图通过Home-number-number格式来应用数字格式,但没有任何结果。不要手动覆盖zapatye的四百个点!强大和聪明的表现,但哑巴!
呃,我开采了!
谢谢!!!
对不起,你能给我一个关于这些隔板的最后一个帖子的链接吗!?
我有一个简单的问题,但我仍然不明白关闭多个订单的本质。)
请解释一下,为什么第一个变体的代码与第二个变体的工作方式相同(在第一个变体中,通过select_by_pos,所有4个未平仓的交易都通过第0个指数被关闭,但在第二个变体中,第1和第2、第3和第4个指数被关闭)。
我需要一些有用的手册或其他东西,看看人们是如何关闭订单的,这样他们就不会错过,或者一本关于如何正确关闭订单以及select_by_pos如何工作的手册),因为我可以看到到处都是一些截断的例子,在帮助中没有关于其使用的例子。)
我可以给你一个很好的关于MQL4编程的视频教程)。
方案1(在这个变体中,所有4个未结订单在测试期间都被关闭,尽管所有4个订单在关闭时都被选择为指数0)。
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL)。
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket() ,OrderLots() ,Bid,5) 。
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)
{
OrderClose(OrderTicket() ,OrderLots(),Bid,5) ;
}
第二种方案(所有4笔交易在此也被关闭,但指数1、2、3和4)。
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL);
OrderSend(Symbol(),OP_BUY,1,Bid,5,NULL,NULL)。
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket() ,OrderLots() ,Bid,5) 。
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))
{
OrderClose(OrderTicket(),OrderLots(),Bid,5);
}
if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)
{
OrderClose(OrderTicket() ,OrderLots(),Bid,5) ;
}
晚上好,我在为一个多货币MACD专家顾问寻求帮助。EA正确地遵循了开仓 标准,但 "在条件下 "的平仓并不成功。我当然已经开始使用追踪止损,但正确的收盘并没有让我休息。
这就是主要部分的模样
而这是一个封闭的街区。请帮助我找到这个错误!
该目录是否存在?
是的,都在专家文件夹中...并在测试者文件夹中。
但是截图还是不能用。