追踪止损和追踪利润 - 页 4

 

是的,我已经明白了。这是不可能的,因为cnt会有3,2,1这样的值,而Ticket Number是不同的。

if(OrdersTotal()>0){

        for(cnt=OrdersTotal()-1;cnt>=0;cnt--){

        

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){



                sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

                Order Ticket=OrderTicket(); 

                

                if(OrderType()==OP_SLL){ 

                if( Order Ticket== Sell_Order_Ticket_1){ Do the Normal Trailing Stop}

                if( Order Ticket== Sell_Order_Ticket_2){ Do the Normal Trailing Stop}

                if( Order Ticket== Sell_Order_Ticket_3){ Don't move the Stop Loss} 

我可以像这样比较票号吗?

问候

 
Arav007:

是的,我已经明白了。这是不可能的,因为cnt会有3,2,1这样的值,而Ticket Number是不同的。

我可以像这样比较票号吗?

请注意


如果你的电脑重新启动,那么Sell_Order_Ticket_1(2和3也是) 的值就会丢失

检查 订单开价和订单利润

 
deVries:

没有
如果你的电脑必须重新启动,那么Sell_Order_Ticket_12和3也是) 的值就会丢失

检查订单openprice和订单eprofit


我不明白为什么重启终端后Sell_Order_Ticket_1的值会丢失?

这是一个变量,除非有新的卖出订单 开始,否则它不会被过度写入。

这是我的理解,但你的评论背后有逻辑。所以请解释一下。

我已经看了OrderOpenPrice和OrderTakeProfit函数。怎么处理它们?

 
Arav007:


我不明白为什么重启终端后Sell_Order_Ticket_1的值会丢失?

这是一个变量,除非有新的卖出订单开启,否则它不会被过度写入。

这是我的理解,但你的评论背后有逻辑。所以请解释一下。

我已经看了OrderOpenPrice和OrderTakeProfit函数。如何处理它们?


重新启动终端时,所有变量都会丢失。

只有客户终端的全局变量可以被检索到。

 
Arav007:


我不明白为什么重启终端后Sell_Order_Ticket_1的值会丢失?

这是一个变量,除非有新的卖出订单开仓,否则它不会被写入。

这就是我的理解,但你的评论背后有逻辑。所以请解释一下。

我已经看了OrderOpenPrice和OrderTakeProfit函数。该如何处理它们?


再做一些测试,创建你的文件

打开这3笔交易

注意你得到的数字

然后关闭你的metatrader4并重新启动它,检查 Sell_Order_Ticket_1、 Sell_Order_Ticket_2和 Sell_Order_Ticket_3 的值。

如果不是,你得到的是什么值?

 

好了,明白了。这条关于 "变量 "的信息对未来 也会有帮助。

if(OrdersTotal()>0){

        for(cnt=3;cnt>0;cnt--){

        if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continue;

        if(OrderSymbol() == Symbol() && OrderMagicNumber() ==  MagicNumber){



                sl     = OrderStopLoss(); // Stop Loss. 

                tStopLoss = NormalizeDouble(OrderStopLoss(), Digits); // Stop Loss. 

if(OrderType()==OP_BUY){ 

if (cnt==3) { Do the Normal Trailing Stop}

if (cnt==2) { Do the Normal Trailing Stop}

if (cnt==1) { Don't move the Stop Loss}

}

}

} 

这个怎么样?

 
Arav007:

好了,明白了。这条关于 "变量 "的信息对未来也会有帮助。

这个怎么样?


我们能不能再看一下你的开仓交易代码?

检查 这些交易的止损和止盈,仍然有一些问题,你看到了吗?

 
deVries:


我们可以先看一下你的开仓交易代码吗?

检查这些交易的止损和止盈,仍然有问题,你看到了吗?


哦,这是个错误的代码。修正了这些缺陷后,获利部分现在很好,但止损是个问题。

逻辑。

如果(Fast_EMA>Slow_SMA)

{

如果(MA_Difference_1>=Value_Diff && iOpenOrders_Buy ==0)

{

买入

}

}

 
Arav007:


哦,这是错误的代码。修正了这些缺陷后,获利部分现在很好,但止损是个问题。

你在这些交易中想要什么止损?
 
deVries:
你在这些交易中想要什么止损?


就像这里的USDJPY交易。

第一笔交易(这里是最后一笔,由于时间的反向安排)的TP=103.636

第二笔交易的TP=103.736

第三笔交易的TP=108.536 [我把这个TP设置在这样的距离上,因此它就像没有TP一样工作]

现在,按照我的要求,当价格在7个点[103.603]的利润时,第1和第2笔交易的止损将变成1个点。

第1次和第2次交易的止损将变成1点利润[103.543],第3次交易的止损将保持在103.386。

就像下面的图片一样。

第一笔GBPUSD订单以10点利润平仓。

第二笔订单仍在运行,它的止损点被移动。

第三笔交易的止损也被移动了,我不希望这样。