我如何设置小于5点的TP? - 页 4

 
这样做对吗?它将只关闭最后100分钟的订单。
if(Bid>CloseforBuy)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



if(Ask<CloseforSell)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= 100  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }
 
ats:
是正确的吗?它将只关闭最后100分钟的订单

几乎,TimeCurrent() 给出了一个数据时间,代表最后一次打钩的服务器时间 . . .

注意:数据时间 类型(整数,代表从1970年1月1日午夜开始经过的秒数 )。

所以你需要检查一下 . .

TimeCurrent()-OrderOpenTime() <=

100分钟 .. . . . 或(100*60)秒

 

非常非常感谢您的帮助!

交易愉快!

 

你好!

我试图修改EA,但它不能正常工作。你知道哪里出了问题吗?

谢谢你。

extern double TPforBuys=1;
extern double TPforSells=1;
extern double TimeForEA=120;

//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{


double TPbuy = TPforBuys / 10000;
double TPB=OrderOpenPrice()+ TPbuy;

// Close Buys
if(Bid>TPB)
{
   for(int a=OrdersTotal()-1;a>=0;a--)
      if( OrderSelect(a,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_BUY && TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60)  &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }



double TPsell = TPforSells / 10000;
double TPS=OrderOpenPrice()- TPsell;



// Close Sells
if(Ask<TPS)
{
   for(int b=OrdersTotal()-1;b>=0;b--)
      if( OrderSelect(b,SELECT_BY_POS, MODE_TRADES) && 
      OrderType()==OP_SELL &&  TimeCurrent()-OrderOpenTime() <= (TimeForEA * 60) &&
      OrderSymbol()==Symbol() )
         if( !OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), 1000, White) )
            Print("OrderClose failed, error: ", GetLastError());
            }


return(0);
}
 

试着改成这样,看看这是否 "正常工作"......

TimeCurrent()- OrderOpenTime() >= (TimeForEA * 60) // time to close
 

那是正确的!EA只关闭不超过2小时的订单!问题是,它没有正确关闭所有1点后的订单!但我不知道哪里出了问题。但我不知道哪里出错了!

谢谢你

 
ats:

那是正确的!EA只关闭不超过2小时的订单!问题是,它没有正确关闭所有1点后的订单!但我不知道哪里出了问题。但我不知道哪里出错了!

谢谢你

所以它是按照你的要求工作的,我说的对吗?因为我不知道你说的 "正常工作 "是什么意思,而且我很懒,所以没有看4页的回复和代码。

所以,我不知道我为什么要给你这个答案 :)

 
onewithzachy:

所以实际上,我不知道我到底为什么给你这个答案 :)

很高兴能在互联网上看到诚实的变化 :-)
 
onewithzachy:

所以它是按照你的要求工作的,我说的对吗?因为我不知道你说的 "正常工作 "是什么意思,而且我已经很懒了,所以没有看4页的回复和代码。

所以实际上,我不知道我为什么给你这个答案 :)

没问题!谢谢你!
 

当你这样做的时候 . . .

double TPB=OrderOpenPrice()+ TPbuy;

..你使用的是哪个订单的开盘价?OrderOpenPrice() 注意:"订单必须首先由 OrderSelect() 函数选择 "