KimIV的有用功能 - 页 120

 

下午好。

我修改了GetProfitOpenPosInCurrency()函数以返回最差的亏损头寸。请告诉 ,哪些函数适合返回这个仓位的开仓时间(OrderOpenTime())?

double GetMaxLoseOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) 
            if(p > OrderProfit() + OrderSwap() + OrderCommission()){
            p=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}
 
abeiks:

下午好。

我修改了GetProfitOpenPosInCurrency()函数以返回最差的亏损头寸。请告诉 ,什么函数适合返回这个位置的开仓时间(OrderOpenTime())?


返回票号,你可以用标准函数来做
 
Vinin:

返回票号,你就可以省去标准功能了

谢谢你。
 

KimIV , hello. Looking for--can't find the script--delete all the pending orders on the symbol--and trawlon the symbol,maybe there is--post........ don't consider it impertinent. Thanks in advance.

 

下午好。

我正在使用KimIV的isTradeTimeInt()函数。我将使用许多时间间隔,对于每个时间间隔,我将分配不同的变量。我已经为它做了这个代码(到目前为止有两个间隔)。问题是,这是最正确的解决方案,还是我应该以不同的方式处理这项任务?

extern int OH1=9;extern int OM1=0;extern int CH1=12;extern int CM1=0;
extern int OH2=13;extern int OM2=0;extern int CH2=15;extern int CM2=0;

int HourOpenTime()
{
int trade = 0;
if(isTradeTimeInt(OH1,OM1,CH1,CM1))trade = 1;
if(isTradeTimeInt(OH2,OM2,CH2,CM2))trade = 2;
return (trade);
}
 
bestseich:

亲爱的 伊戈尔 -金,帮我写一个类似 OrderCloseBy() 函数 ,但它应该对不同的对和 OrderProfit()起作用 ,如果订单的方向不同,也无所谓,比如一个OrderProfit()>另一个,另一个对,多少个点,这两个,正好,只有这两个,同时关闭我的变体是这样的。

for (int i=OrdersTotal()-1;i>=0;i--)

{
如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
{
如果(OrderSymbol()!=Symbol()||OrderSymbol()==Symbol())
{
如果(OrderProfit()>=pr*Point)//pr在参数中,点数是利润。
int ot=OrderTicket(); double op=OrderProfit()。
如果(OrderProfit()<=pru*(-1)*Point)//pru-它的参数中,点的损失。
int otu=OrderTicket(); double opu=OrderProfit()。
如果(op>opu*v*(-1)&&(OrderType()==OP_BUY||OrderType()==OP_SELL) )
//v是一个利润/亏损率,即1.5
OrderClose(otu,OrderLots(),Bid,sleep,Blue)。
OrderClose(ot,OrderLots(),Bid,sleep,Blue)。
OrderClose(otu,OrderLots(),Ask,sleep,Blue)。
OrderClose(ot,OrderLots(),Ask,sleep,Blue)。

}}}

它能起作用吗?如果你不介意的话,请纠正或提出你自己的解决方案。

 

亲爱的伊戈尔!

请告诉我们,你们是否有一个功能,在关闭上一个订单后,在开启下一个订单前,根据账户余额 计算出手数?

我预先感谢你。

 
vasabu2012:

亲爱的伊戈尔!

请告诉我们,你们是否有一个功能,在关闭上一个订单后,在开启下一个订单前,根据账户余额计算出手数?

我预先感谢你。

这里是伊戈尔的功能。

附加的文件:
b-lots.mqh  3 kb
 

在更新中,PriceOpenLastPos函数在条件中停止工作,几乎打破了我的大脑,它在注释中给出了数值,但在条件中不起作用,一个小小的编辑就解决了这个问题。

double PriceOpenLastPos(string sy="", int op=-1, int mn=-1) {
datetime t;
double r=0, r2=0;
int i, k=OrdersTotal();

if (sy=="0") sy=Symbol();
for (i=0; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==sy || sy=="") {
if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
if (op<0 || OrderType()==op) {
if (mn<0 || OrderMagicNumber()==mn) {
if (t<OrderOpenTime()) {
t=OrderOpenTime();
r=OrderOpenPrice();
}
}
}
}
}
}
}

r2 = DoubleToStr(r, 4);

return(r2);
}


 
请帮助重新编译EA e-CloseByEquity.rar 随着MetaEditor的编程变化