[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 147

 

专业人士不要路过,需要你的帮助。机器人正在打开卖出头寸,那么这个头寸应该在下面被关闭,请看代码,卖出头寸应该被关闭,买入头寸应该被打开,开仓 数量应该是1(OrdersTotal())。问题是,如何制作一个类似于订单执行队列的东西:首先卖出的头寸应该关闭,然后买入的头寸应该打开,并且未结头寸的数量应该等于1?

OrderSend(Symbol(),OP_BUY,Lots,Ask,4,0,0,"",0,0,Green);
    for(cnt=0;cnt<total;cnt++)
     {
      OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
         if(OrderType()==OP_SELL)   // long position is opened
           {
                 OrderClose(OrderTicket(),OrderLots(),Ask,4,Violet); // close position
                }
    }
 
bool flags
 
eddy:
我的意思是,它 被设置为一个缓冲区,而不是一个外部变量。

所以使用这个指标_colorN

 
eddy:
我的意思是,它 被设置为一个缓冲区,而不是一个外部变量。
你不能用MQL做这件事。但如果你需要,当然可以做))))。
 
alsu:
你不能在MQL中这样做。但如果是非常非常有必要的话,当然也可以做)))。

你甚至不知道你需要什么...

我相信Eddy的需求可以通过MQL来解决。

 
sergeev:

你甚至不知道你需要什么...

我确信艾迪的需求是由MQL解决的

不,我知道了......他需要从指标代码中的指标缓冲区 获得渲染颜色(对吧,艾迪?)据我所知,这在MQL中是不可能的。
 
alsu:
不,我知道了......他需要在指标代码中以编程方式从指标缓冲区获得绘图颜色(对吧,艾迪?)据我所知,这在MQL中是不可能的。
它是可能的。
只需使用参数 indicator_colorN。 你可以说这是同一个变量。
 
sergeev:
也许。 ,只需使用参数 indicator_colorN。这可以说是同一个变量。

noooooo。

假设我们有一个画线 的指标。假设我们想用这个指标画一个圆。但我们想在指标线为绿色时使其为绿色,如果为红色则为红色。

 

各位程序员,请告知如何正确关闭所有订单。以下是要解决的问题和建议做的事情。总而言之,除了关闭订单和设置旗帜禁止交易外,一切都能正常工作。

我相信你们中间有经验丰富的程序员。请帮助我在我的专家顾问中写出以下条件:
1) С+=订单(1)的利润+订单(2)的利润+...+订单(n)的利润-当前时间内所有未结订单的总利润。
2) C-=(c+)订单(1)的损失+订单(2)的损失+...+订单(n)的损失 - 当前时刻所有未结订单的损失之和。
3) X=(c+)/(c-)--当前盈亏比
4) 如果权益(S)乘以盈亏比(X)高于指定的设定值(K),你就可以交易了。(如果S*X>K,OK)
5)如果净值(S)乘以盈亏(X)比率小于定义的目标(K),那么当前报价的所有未结订单将被关闭,专家顾问将被禁用,直到它再次被手动启用。(S*X<K,关闭所有订单并关闭)

在我看来,这将是一个很好的保护措施,防止亏损。

它看起来像这样。让我们创建两个计算盈亏的函数:
double CalculateProfitTotal()
{
double Result = 0;
for(int i = 0; i < OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)
if(OrderProfit() > 0)
Result = Result + OrderProfit();
return(Result);
}

double CalculateLossTotal()
{
double Result = 0;
for(int i = 0; i < OrdersTotal(); i++)
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
if(OrderProfit() < 0)
Result = Result + MathAbs(OrderProfit() ) ;
return(Result);
}

在start()函数中,编写你的条件。
例如:
X = CalculateProfitTotal() / CalculateLossTotal();
if(AccountEquity() * X < K)
{
//这里我们关闭所有订单,
//设置禁止交易的标志
return(0);
}

 
alsu:

假设我们想画一个圆作为指示器。但我们想让它变成绿色,如果指标线是绿色的。

所以我想创建一个蓝色的对象)

sergeev, 所以indicator_color1 是一个颜色变量?