Alert(Sborinfo(Magic)); // Closse(Magic); if(Sborinfo(Magic)==0) { Print("количество ордеров ",Sborinfo(Magic)); MassivPrice(step); if(OrdersTotal()<2)// без таких условий tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,slippage,0,0,NULL,0,0,Green); if(tiket>=0) LastPrice=Ask; }
MassivPrice(step); if(OrdersTotal()<2)// без таких условий tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,slippage,0,0,NULL,0,0,Red); if(tiket>=0) LastPrice=Bid;
} //+------------------------------------------------------------------+ int Sborinfo(int magic) { kol=0; for(int i=0; i<OrdersTotal(); i++) { Print(" чему ровно кол " , kol ); if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==magic) { Print(" ордера после " , kol );
在测试器中,MT4散装货量也不充足
你能告诉我为什么每次打勾 都会打开吗?
{
Alert(Sborinfo(Magic));
if(Sborinfo(Magic)<=0)
{
MassivPrice(step);
tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,0,0,0,NULL,0,0,Blue);
if(tiket>=0)
LastPrice=Ask;
else LastPrice=-1;
}
MassivPrice(step);
tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,0,0,0,NULL,0,0,Red);
if(tiket>=0)
LastPrice=Bid;
else LastPrice=-1;
}
//+------------------------------------------------------------------+
int Sborinfo(int magic)
{
for(int i=0; i<OrdersTotal(); i++)
{
Print("колличество ордеров ",kol);
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==magic)
kol++;
}
Print("новые ордера ",kol);
return(kol);
}
你能告诉我为什么每次打勾 都会打开吗?
因为我总是在这种模式下测试
{
Alert(Sborinfo(Magic));
if(Sborinfo(Magic)<=0)
{
MassivPrice(step);
tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,0,0,0,NULL,0,0,Blue);
if(tiket>=0)
LastPrice=Ask;
else LastPrice=-1;
}
MassivPrice(step);
tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,0,0,0,NULL,0,0,Red);
if(tiket>=0)
LastPrice=Bid;
else LastPrice=-1;
}
//+------------------------------------------------------------------+
int Sborinfo(int magic)
{
for(int i=0; i<OrdersTotal(); i++)
{
Print("колличество ордеров ",kol);
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderMagicNumber()==magic)
kol++;
}
Print("новые ордера ",kol);
return(kol);
}
你能告诉我为什么每次勾选 都会打开吗?
因为代码就是这样写的。
简单地说,你的算法是这样的:如果没有订单,就打开买入,在每一个刻度,就打开卖出。
因为代码就是这样写的。
简单地说,你的算法是这样的:如果没有订单,就开一个买入,在每一个点,就开一个卖出。
// Closse(Magic);
if(Sborinfo(Magic)==0)
{
Print("количество ордеров ",Sborinfo(Magic));
MassivPrice(step);
if(OrdersTotal()<2)// без таких условий
tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,slippage,0,0,NULL,0,0,Green);
if(tiket>=0)
LastPrice=Ask;
}
MassivPrice(step);
if(OrdersTotal()<2)// без таких условий
tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,slippage,0,0,NULL,0,0,Red);
if(tiket>=0)
LastPrice=Bid;
}
//+------------------------------------------------------------------+
int Sborinfo(int magic)
{
kol=0;
for(int i=0; i<OrdersTotal(); i++)
{
Print(" чему ровно кол " , kol );
if(OrderSelect(i,SELECT_BY_POS) && OrderMagicNumber()==magic)
{
Print(" ордера после " , kol );
// kol++;
}
}
return(kol);
}
你如何改变代码,使其在没有附加条件的情况下工作?
但你不能,如果你需要既买又卖并限制其数量。只是我不会看OrdersTotal(),而会计算买入多少和卖出多少。
再说一遍,如果你随后使用OrdersTotal(),为什么还需要这个 "if(Sborinfo(Magic)==0)"?
但你不能,如果你需要既买又卖并限制其数量。只是我不会看OrdersTotal(),而会计算买入多少和卖出多少。
再说一遍,如果你随后使用OrdersTotal(),为什么需要这个 "if(Sborinfo(Magic)==0)"?
CloseFirst(Magic);
int b=0;
int s=0;
for(int i=0; i<=OrdersTotal(); i++)
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true && OrderMagicNumber()==Magic && OrderSymbol()==_Symbol )
{
if(OrderType()==OP_BUY)
b++;
if(OrderType()==OP_SELL)
s++;
}
if(b==0)
tiket=OrderSend(Symbol(),OP_BUY,0.01,Ask,slippage,0,0,NULL,Magic,0,Green);
if(s==0)
tiket=OrderSend(Symbol(),OP_SELL,0.01,Bid,slippage,0,0,NULL,Magic,0,Red);
}
同志们!我有一个问题。
专家顾问根据前一天的极值,在当天开始的00:00开启挂单。
在工作日,一切正常,但随着周一的开盘,挂单不是放在周五的极值,而是放在周四的水平,不知为何。怎么会呢?
currtime=TimeToStr(TimeCurrent(),TIME_MINUTES);
Format=Digits();
DH=NormalizeDouble(iHigh(NULL,PERIOD_D1,1),Format) ;
DL=NormalizeDouble(iLow(NULL,PERIOD_D1,1),Format);
if (currtime==OpenTime)
{
отложки
}
你是说像这样吗?还有其他选择吗--更简单的?
是的,这就对了。有多简单?
是的,这就对了。能有多简单呢?