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

 
Pyro:

大家好。我的历史搜索并没有返回地段的数量。是这样做的吗?


它返回批号0.1,尽管批号被程序改变了。票据显示正确(改变)。一个错误?


见代码模拟,编辑,尝试。

 //---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0;  // суммарный убыток по этим итерациям

datetime 
Time_at_History_Current = 0,
Time_at_History_Previos = 0;  
    
 
 if(OrdersHistoryTotal() != 0)
   {
    for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
      {
       OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
             if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit();
                 Sum_Loss=Sum_Loss+lastLoss;  // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;
                //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                if(OrderProfit() >= 0)
                  break;
               }
            }
         }
      }
   }
 

罗马人


我不需要一个周期。我需要得到最后一单的LOT,不管是哪一单,我都不需要过滤。在这个例子中,没有关于LOT的内容。我很不解。

 
Pyro:

罗马人


我不需要一个周期。我需要得到最后一单的LOT,不管是哪一单,我都不需要过滤。在这个例子中,没有关于LOT的内容。我很不解。


看一看--我对我以前的帖子进行了编辑...
 
我不明白。当你需要根据某些标准进行过滤时,就需要一个循环,就像你的情况一样。我的任务比较简单--从历史中提取最后一个订单。根据定义,它是封闭的,根据定义,市场上没有开放的头寸。不使用待定订单。也就是说,最后的订单肯定会是市场上的订单。车票被正确地退回,而地段则没有。
 
Pyro:
我不明白。当你需要根据某些标准进行过滤时,就需要一个循环,就像你的情况一样。我的任务比较简单--从历史中提取最后一个订单。根据定义,它是封闭的,根据定义,市场上没有开放的头寸。车票被正确地退回,而地段则没有。

拥有!学 会使用搜索!:-)
 
谢谢你的帮助 :)问题是别的东西。
 
MK07:

谢谢你的帮助。 我把 if (D_sig==0) { 信号的命令; }. "步骤 "变少了,但仍然存在。 而且不清楚它们是如何形成的。

我放MathAbs是为了有一个 "走廊 "来进行比较,因为信号线绝对相等的概率小得可以忽略不计。

也许其他人对我的问题有想法?


我是这样写的,它在评论中显示D_Sig。

         D_sig=MathAbs(Signal1Buffer[0]-Signa13Buffer[0]);                              // разница между сигнальными линиями 1-ого и 3-ого MACD на
                                                                                        // нулевом баре
if(D_sig==0)  {   D_sig_Last=D_sig; }
      
//       break;          
             
           
              
         
         j++;
         
}             
     
      Comment( "\n"," Баров = ",WindowBarsPerChart()-1, 
               "\n"," Macd1Buffer = ",DoubleToStr(Macd1Buffer[0],4),
               "\n"," Signal1Buffer = ",DoubleToStr(Signal1Buffer[0],4),
               "\n"," Macd3Buffer = ",DoubleToStr(Macd3Buffer[0],4),
               "\n"," Signa13Buffer = ",DoubleToStr(Signa13Buffer[0],4),
               "\n"," D_sig = ",DoubleToStr(D_sig,4));
 
建议一个 "最喜欢的原则 "的EA名称形成--并且它考虑到了操作和版本的原则,等等。
 

大家好。

有一个函数bool NewBar().请制作一个函数boolNewZZ() 。当一个新的人字形膝盖出现时->真。

 
gince:

大家好。

有一个函数bool NewBar().请制作一个函数boolNewZZ() 。当一个新的人字形膝盖出现时->真。


还有为什么要用这样的函数,最近在ZZ、EA上做了一个神经元,但没有用这样的函数。特别是由于大多数ZZ的设计只用于视觉决策。