[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 625

 

下面是它如何不修改bye--而且是一个zircal条件,也不是一直都有效。

就是这个地方。

//***************************************   
 
 bool nahodka=false;
 
 for (i=0; i<=OrdersHistoryTotal(); i++) {
 if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;
 if (OrderSymbol()!=Symbol())continue; 
 if (OrderMagicNumber() != 450) continue; Print (" tacket ",tacket, "  OrderTicket() ",OrderTicket(),"    profit " , profit, "    OrderTakeProfit( ) ",OrderTakeProfit( ) );
 if (tacket==OrderTicket()) {Print ("tacket==OrderTicket()    " );
 if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;}}     // Находим ордер, сработавший именно по тейкпрофиту 
 
 
  
 if(nahodka){if (OrderSelect(tucket,SELECT_BY_TICKET)){
 if(OrderStopLoss( )<Bid-treylingstop*Point ){ Print ("втораямодифи    " );
 OrderModify(  tucket, OrderOpenPrice(), Bid-treylingstop*Point, OrderTakeProfit(), 0, CLR_NONE);}}}
 if (BUY == 0) {perenos=false;srabotka=false;nahodka=false;} 
 
 
 //*************************************** 
 
 //&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
 
               
               //SELL
 
Dimka-novitsek:

早晨好!

我完全想不明白--追踪止损的条件不起作用。

因此,当订单还没有出现在历史记录上时,就立即被拿走了,这一点我完全不明白!

而这是情况比较好的!"。如果我们有这一招,至少当订单已经在历史上的时候,它就会被纠正。

但在五次或十次中,有一次nahodka没有取值为真,也没有发生进一步的修改!


你有没有试过如果(OrderClosePrice()==OrderTakeProfit())nahodka=true;?
 
Dimka-novitsek:

早晨好!

我完全想不明白--追踪止损的条件不起作用。

因此,当订单还没有出现在历史记录上时,就立即被拿走了,这一点我完全不明白!

而这是情况比较好的!"。如果我们有这一招,至少当订单已经在历史上的时候,它就会被纠正。

但在五次或十次中,有一次nahodka没有取值为真,而且没有发生进一步的修改!"。

当按票选择订单 时,不会考虑到池子。因此,写MODE_HISTORY是绝对没用的。在根据票据选择订单后,你也应该必然检查它的关闭时间OrderCloseTime() - 如果它高于零,则订单被关闭并从历史中选择,如果它是零,则订单仍在市场中并从市场头寸列表中选择。

你的线路中没有这个检查。

if (OrderSelect(tacket, SELECT_BY_TICKET , MODE_HISTORY)) 
if (OrderTakeProfit( )-3*Point<profit&&OrderTakeProfit( )+3*Point>profit) nahodka=true;     // Находим ордер, сработавший именно по тейкпрофиту 

你必须从小事做起。

if (OrderSelect(tacket, SELECT_BY_TICKET)) {
   if (OrderCloseTime()>0) {                         // Убедились, что ордер выбран из истории
      // Тут ищете далее то, что вам необходимо ... а закрылся ли он по тейку ...
      }
   }

而你将会很高兴...

 
Dimka-novitsek:

早晨好!

我完全想不明白--追踪止损的条件不起作用。

因此,当订单还没有出现在历史记录上时,就立即被拿走了,这一点我完全不明白!

而这是情况比较好的!"。如果我们有这一招,至少当订单已经在历史上时,它就会被纠正。

然而,nahodka采取没有价值的真正的 一次出五到十,没有进一步的修改!

!- 这是你的聪明才智,为票据命名:tecket、tocket、tucket,等等等等。你自己在这些名字中不是很困惑吗!?我给你的建议是--为了避免混乱,不要这样做。这就是LochBranding的基础,例如:ADIDAS和ADITAS。

另外,有这么多旗子也没有意义,比如说

     if (OrderSelect (ticket, SELECT_BY_TICKET))
     {
         //---- Проверяем закрыт этот ордер или нет
         if (OrderCloseTime > 0)
         {
             //---- Находим ордер, сработавший именно по тейкпрофиту 
             if (NormalizeDouble (OrderTakeProfit()- OrderClosePrice()), Digits) == 0.0)
             {
                 if (OrderSelect (tucket, SELECT_BY_TICKET))
                 {
                     double ld_SL = NormalizeDouble (Bid - treylingstop * Point, Digits);
                     if (NormalizeDouble (ld_SL - OrderStopLoss(), Digits) > 0.0)
                     {
                         Print ("втораямодифи    " );
                         OrderModify (tucket, OrderOpenPrice(), ld_SL, OrderTakeProfit(), 0, CLR_NONE);
                     }
                 }
             }
         }
     }
这是在你的代码基础上的一个简单的即兴创作。
 
谢谢你!!!!!!!
 
Dimka-novitsek:
是的,没错!!!。
Dimka-novitsek:

下面是它如何不修改bye--而且是一个zircal条件,也不是一直都有效。

就是这个地方。


它不应该被修改,因为最后一笔交易,以及一般来说,给定图表上的所有交易都是在Sl上关闭的。
 
lottamer:

事实证明,Kim库中的SecondsAfterOpenLastPos()函数返回这些数字1355319542,而最后一个数字确实是秒......你可以看到它们的变化.....

它是什么?如果它真的是秒 - 它是43年....,半....。而该函数应该返回从最后一笔交易关闭时算起的秒数......

虽然事实证明,即使是OrderOpenTime也是以相同的格式给出时间......如何将其转换为反向的呢? 显然,必须取当前时间并减去OrderOpenTime。我如何获得当前时间?


如果你想用你更习惯的格式看时间,可以使用转换功能,在日期和时间的帮助部分有许多转换功能,你可以用不同的格式显示输出,如天、小时、分钟、时间......。

最后的服务器时间 将由iClose函数返回,为零条。或者只是Close[0]。

该函数返回最后的已知价格。时间会回来

TimeCurrent( )
 
rigonich:


你已经被告知,这是电脑工作的时间格式,也是它唯一能工作的格式。 如果你想用更熟悉的格式看时间,请使用翻译功能,在日期和时间帮助部分有很多翻译功能,你可以输出任何你想要的东西,单独的日、小时、分钟,不同格式的时间...

最后的服务器时间将由iClose函数返回,为零条。或者只是Close[0]。

该函数返回最后的已知价格。时间会回来

TimeCurrent( )


设法抢到了这个帖子:))),虽然我把它删除了......发现时间是通过简单地减去TimeCurrent()-OrderOpenTime()来找到的。
 
lottamer:

设法抢到了这个帖子:))),虽然我把它删掉了......发现时间是通过简单地减去TimeCurrent()-OrderOpenTime()而得到的。

如果你想让我不回答你的问题 -- 就这么说。
 

我在市场上只有一个位置...所以不会错过...

如果(OrderSelect(0,SELECT_BY_POS,MODE_TRADES))