[存档]任何菜鸟问题,为了不使论坛变得杂乱无章。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 5. - 页 23

 
WindSW:

我的代码使其更容易通过ArrayRange确定迭代的数量。

为什么我写xDelH[countDH][0]=HBar[countH][0];(尽管HBar[countH][0]已经被填满,并且有自己的值)时得到0?我到底能不能做到这一点?

在这个赋值操作之后,如何检查xDelH[countDH][0]的值?
 
请告诉我哪个函数能记住最后一个开仓订单的获利价格。
 
Frostr:
请告诉我哪个函数能记住最后一个开仓订单的获利价格。

如果你需要准确记忆,只需在每次开单时将TakeProfit 值保存在一个变量中。
 

我只是需要

//通过计算平均价格进行平均
double averageprice =NormalizeDouble(sum/allots, Digits);
//通过为每个未结订单移动相同的TakeProfit来修改系列的所有订单
for ( trade = OrdersTotal() - 1; trade >= 0; trade-- )
{
if ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == Magic && OrderSymbol() == Symbol()
{
//为买入订单获取利润
if ( OrderType() == OP_BUY) tp = averageprice + TP * Point;
//为卖出订单获取利润
if ( OrderType() == OP_SELL) tp = averageprice - TP * Point;
//修改属于系列的订单
OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(tp, Digits), 0, Yellow);
}
}
}

修改旧的订单,将其TakeProfit改为新开订单的TakeProfit(如果价格将最后一个订单关闭在Stop,那么所有以前的订单也将被关闭)。

 
Frostr:

我只是需要

//通过计算平均价格进行平均化
double averageprice = NormalizeDouble(sum/allots, Digits);
//修改该系列的所有订单,为每个未结订单移动相同的TakeProfit。
for ( trade = OrdersTotal() - 1; trade >= 0; trade-- )
{
如果 ( OrderSelect(trade, SELECT_BY_POS, MODE_TRADES) && OrderMagicNumber() == Magic && OrderSymbol() == Symbol()
{
//买入订单的利润
if ( OrderType() == OP_BUY) tp = averageprice + TP * Point;
//为卖出的订单获取利润
if ( OrderType() == OP_SELL) tp = averageprice - TP * Point;
//修改一个属于系列的订单
OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), NormalizeDouble(tp, Digits), 0, Yellow) 。
}
}
}

修改旧的订单,将其TakeProfit改为新开订单的TakeProfit(如果价格在停止时关闭最后一个订单,所有以前的订单也将关闭)。


如果你为整个系列设置一个单一的止损,前面的就会关闭。这将有助于保存这些订单的利润,或者在价格发生变化的情况下减少损失。 如果你让每个订单的止损不同(不改变它),那么只有一个订单会被关闭。该系列的其他订单的TakeProfit将不得不重新计算或设置为等于以前的值
 
paladin80:
在这个赋值操作之后,如何检查xDelH[countDH][0]的值?

通过打印
 

日安!!!。你知道,我在这个地方下了两个订单--通过设计,一个是带止损的,一个是不带止损的。在测试器中,两者都被删除!!!!。

 if   (Svetsja_1 &&  !Svetsja_2  && !Svetsja_3  &&  !Orderbuy ){
    //стоп лосс 25 п. профит 30 п;стоп лосс 25 п. тралится по MA 20    
         
        RefreshRates();
          OrderSend (Symbol( ), OP_BUY, lot ,NormalizeDouble(Ask, Digits), 5, NormalizeDouble( Ask- (25*Point),Digits),   NormalizeDouble( Ask+( 30*Point),Digits), NULL, 450, 0, CLR_NONE);
           int Error=GetLastError();if (Error==0){  
           Sleep(2000); RefreshRates(); 
          OrderSend (Symbol( ), OP_BUY,  lot ,NormalizeDouble(Ask, Digits), 5, NormalizeDouble( Ask- (25*Point),Digits),   0, NULL, 450, 0, CLR_NONE); }
            Error=GetLastError(); Orderbuy=1; 
            if (Error!=0){ string errorcomment = "Ошибка открытия  ордера OP_BUY"  + " " + Symbol() +  " " + ErrorDescript(Error); 
            Print (errorcomment);}   }  } }

我完全不知道这里发生了什么。


 
Dimka-novitsek:

日安!!!。你知道,我在这个地方下了两个订单--按照设计,一个是带止损的,一个是不带止损的。在测试器中,两者都被删除!!!!。

我完全不知道这里发生了什么。



仔细看,你为它们都设置了止损,只为一个设置了止盈。所以就像你写的那样:两个都会在止损点平仓,只有一个会在止盈点平仓。
 
Dimka-novitsek:

日安!!!。你知道,我在这个地方下了两个订单--通过设计,一个是带止损的,另一个是不带止损的。在测试器中,两者都被删除!!!!。

我完全不知道这里发生了什么。

对你来说,现在 "抽 "它可能还为时过早--可能会被停职!:)))
 
是的,谢谢你!!!。这是我从街上直接来到电脑前,我完全糊涂了!"。