贸易交易时 - 页 5

 
Anatoli Kazharski:
是的,这就对了。只是还没有以这种方式测试。

试试吧...

由以下人员添加

case TRADE_TRANSACTION_DEAL_ADD:
  if (trans.order != my_order_ticket)
  {
    if(trans.symbol==Symbol())
    {
      if(проверяем магик)
      {    
        //Сработал SL или TP
      }
    }
  }
break;
 
prostotrader:

这种方法有什么问题?

case TRADE_TRANSACTION_DEAL_ADD:
  if (trans.order != my_order_ticket)
  {
   //Сработал SL или TP
  }
break;

因为最后已知的SL和TP位置可能与交易价格 不一致,而且将没有任何东西可以与之比较。

而且你不喜欢分享你的密码,但你却非常高兴地看着别人的密码......

这并不总是有效。

int    G_LastTicket  = 0;   //Последний известный тикет
double G_LastSLlevel = 0.0; //Последний известный уровень SL
double G_LastTPlevel = 0.0; //Последний известный уровень TP
//——————————————————————————————————————————————————————————————————————————————
void  OnTradeTransaction (const MqlTradeTransaction &trans,   // структура торговой транзакции
                          const MqlTradeRequest     &request, // структура запроса
                          const MqlTradeResult      &result)  // структура ответа
{
  if(trans.type == TRADE_TRANSACTION_DEAL_ADD)
  {
    if(PositionsAny (G_Symbol))
    {
      G_LastSLlevel = GetSLlevel (G_Symbol);
      G_LastTPlevel = GetTPlevel (G_Symbol);
      Print ("SLlevel: " + G_LastSLlevel);
      Print ("TPlevel: " + G_LastTPlevel);
    }
    
    if(trans.deal != G_LastTicket)
    {
      if(trans.price == G_LastSLlevel)
        Print ("Сработал SL");
        
      if(trans.price == G_LastTPlevel)
        Print ("Сработал TP");
    }
  }
}
 
prostotrader:
试试吧...
我肯定会在某个时候试一试。有机会我会试一试,谢谢。我现在正忙于其他任务。
 
prostotrader:

这种方法有什么问题?

应存储my_order_ticket
 
fxsaber:
你必须保留my_order_ticket

你甚至知道你在说什么吗?

my_order_ticket - 这个订单有一个地方可以住,如果你

而且你有义务保持它们。

 
fxsaber:
你必须存储my_order_ticket
不仅如此
 
Anatoli Kazharski:
我有机会会试一试。谢谢。(笑)。我现在正忙于其他任务。
祝你有一个好的代码!
 
Andrey Dik:
不仅如此

是的,实际上是建议维护和存储实际环境本身,将其与OnTradeTransaction产生的东西进行比较。

这不是一个解决方案。

 
fxsaber:

是的,实际上是建议维护和存储实际环境本身,将其与OnTradeTransaction产生的东西进行比较。

这不是一个解决方案。

你只是没有密切关注这个话题。:)

最初的话题发起人写道。

"我如何在OnTradeTransaction()中知道SL/TP已经触发?"

解决办法应该是什么?

你根本不可能记住或检查任何东西,除了职位本身,前提是

你没有操作任何其他命令

case TRADE_TRANSACTION_DEAL_ADD:
  if (!PositionSelect(Symbol())
  {
   //Сработал SL или TP

  }
break;
 
prostotrader:

你只是没有密切关注这个话题。:)

最初的话题发起人写道。

你才是那个相当不专心的人,我不是话题的发起人。

你还应该显示这样的代码。

//——————————————————————————————————————————————————————————————————————————————
void  OnTradeTransaction (const MqlTradeTransaction &trans,   // структура торговой транзакции
                          const MqlTradeRequest     &request, // структура запроса
                          const MqlTradeResult      &result)  // структура ответа
{
  
}  

好吧,有什么不对--谁需要它,自己完成它,不喜欢它--有一个Joba!是这样吗?