[存档!]任何菜鸟问题,为了不给论坛添乱。专业人士,不要与它擦肩而过。没有你,哪里都不能去 - 2. - 页 462

 
tol64:


谢谢你。这很清楚。如果你这样解释的话,任何人都能理解))。

还有一个问题。我在搜索中发现了很多类似版本的问题,但我的问题会有些不同。))

图中的不一致。为了看到一个 "可靠的?"结果,我必须不断地重新计算时间框架。也就是说,如果我看到日志中有错误,我就去引用档案,重新计算所有的时间框架。例如,在测试器中,我在控制点上运行一个测试。一切都很好。然后我,比如说,形成酒吧。一切都很好。但如果我们再次使用控制点进行测试,我将再次看到日记中的图表之间存在差异。它是什么?)))有什么东西可以反对这种祸害吗?


IMHO,只使用两种测试模式--要么 "所有刻度......",要么 "通过开盘价......"(为此在董事会中你必须组织控制新条形的形成)--这些都是 "可靠 "的切割--并且不打扰......:-)))"控制点" - 不值得。

只要下载你想要的乐器的分钟历史记录,然后继续...:-)))

 
Roman.:


IMHO,只使用两种测试模式--要么是 "所有刻度线......",要么是 "按开盘价......"(为此在猫头鹰中你需要组织控制新条形的形成)--这些是 "可靠的 "切割--而且不用担心......。:-)))"控制点" - 不值得。

只要下载你想要的乐器的分钟历史记录,然后继续...:-)))


我的链接被破坏了...

在我的方法中,如果你使用 "所有刻度线",你将不得不永远等待)。我正在对10年的历史进行测试。在EA中,条件和尾随是建立在成型的条形上的。但是有一些情况应该在每一次打勾时进行检查。例如,如果止损已经触发,资金管理系统改变了手数,你应该重新设置所有挂单,以改变手数。或者直接删除挂单,如果这是条件所要求的。一切都必须清楚才有效))。这就是为什么控制点在原则上对我来说是相当足够的,因为我在比较一些历史片断与所有蜱虫。一样的。

那么,有什么可以帮助整理和消除这些错误呢?因为链接坏了))。

 
tol64:


该链接已被破坏...

在我的方法中,如果你使用 "所有刻度线",你将不得不永远等待)。我正在对10年的历史进行测试。在EA中,条件和尾随是基于形成的条形图。但是有一些情况应该在每一次打勾时进行检查。例如,如果止损已经触发,资金管理系统改变了手数,你应该重新设置所有挂单,以改变手数。或者直接删除挂单,如果这是条件所要求的。一切都必须清楚才有效))。这就是为什么控制点在原则上对我来说是相当足够的,因为我在比较一些历史片断与所有蜱虫。一样的。

那么,有什么可以帮助整理和消除这些错误呢?因为链接被破坏了))


重新下载

这里。

 

下午好,先生们。

帮助我理解这段代码。我明白这个逻辑,但我不知道如何正确描述它。我不知道如何正确描述它。

这里是专家顾问的一个片断。

total=OrdersTotal();
if(total<1)

{

while (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2) //Пока это условие выполняется открывать только селл при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)<0.7))
{

OrderSend(Symbol(), OP_SELL, lots, NormalizeDouble(Bid, Digits), 3, /*Ask+10*Point*/0, /*Bid-10*Point*/0, "ADX sell", magic, 0, CLR_NONE);
}

while (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>=2) // Пока это условие выполняется открывать только Бай при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)<0.3)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)>0.3))
OrderSend(Symbol(), OP_BUY, lots, NormalizeDouble(Ask, Digits), 3, /*Bid-10*Point*/0, /*Ask+10*Point*/0, "ADX buy", magic, 0, CLR_NONE);

}
}
}
}

请告诉我如何正确地处理它。丹尼斯说。

 


谢谢你。这些链接,还有更多,都没有说我需要知道的最重要的事情。

当报价在线进入终端时,需要不时地重新计算时间框架,以便不出现错位。

在离线模式下,没有这样的问题)。这是第一个。

现在是第二个。

for(pos = 0; pos < OrdersHistoryTotal(); pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

如果我这样做,写进文件的过程就不会出现错误。也就是说,在文件中,一切看起来都和预期的一样。如果我按照你自信的断言去做。

for(pos = 0; pos < OrdersHistoryTotal()-1; pos++)
    {  OrderSelect(pos,SELECT_BY_POS,MODE_HISTORY);
        ... работа с ордером ...  }

那么该文件就不能正确写入。我可以看到,有个别情况))。

 
推迟了。
smartemiy:

下午好,亲爱的人们。

我需要你的专家帮助!!。

如何在专家顾问中规定,如果余额的缩减已经达到20%,它应该停止交易,并且这个数字可以改变?

我很抱歉,这可能已经在论坛上解释过了,我可能没有注意到......

我预先感谢你!

祝交易顺利 !!!!!

 
granit77:
推迟了。


例如,像这样...

extern int MaxLoss = 90;          // Максимально допустимая просадка в процентах от баланса

...     

static datetime prevtime = 0;       // по ценам открытия
bool IsExpertFailed = false;
bool IsExpertStopped = false;

      

//+------------------------------------------------------------------+
//| Старт робота                                                     |
//+------------------------------------------------------------------+

int init()
{
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся 

   IsExpertStopped = false;
   if (!IsTradeAllowed())
   {
      Comment("Необходимо разрешить советнику торговать");
      IsExpertStopped = true;
      return (0);
   }
      
   if (!IsTesting())
   {
      if (IsExpertEnabled())
      {
         Comment("Советник запустится следующим тиком");
      }
      else 
      {
         Comment("Отжата кнопка \"Разрешить запуск советников\"");
      }
   }
 return (0);
}
  
//+------------------------------------------------------------------+
//| Завершение работы робота                                         |
//+------------------------------------------------------------------+

int deinit()
{
   return (0);
}
  
//+------------------------------------------------------------------+
//| Обработка сигнала                                                |
//+------------------------------------------------------------------+
  
int start()    // -----------------------СТАРТ ЭКСПЕРТА--------------- 
{
  
 
   if(Time[0] == prevtime)   return(0);  //ждем нового бара
   prevtime = Time[0];                   //если появился новый бар , включаемся 

   if (IsExpertStopped)
   {
      Comment("Не удалось инициализировать советник!");
      return (0);
   }
   
   if (IsExpertFailed)
   {
      Comment("Критическая ошибка! Советник остановлен.");
      return (0);
   }
   
         
   // ------------------------------------------------Ищем наш ордер---------------------------------

   int orderType;
   for (int orderIndex = (OrdersTotal() - 1); orderIndex >= 0; orderIndex--)
   {
      if (!OrderSelect(orderIndex, SELECT_BY_POS))
      {
         continue;
      }

      if ((OrderSymbol() != Symbol()) || (OrderMagicNumber() != MagicNumber))
      {
         continue;
      }

      orderType = OrderType();
      if ((orderType != OP_BUY) && (orderType != OP_SELL))
      {
         continue;
      }
          ticket = OrderTicket( );                         // Номер ордера
          orderLots = OrderLots();                         // Lots   
          orderProfit = OrderProfit() + OrderSwap();       // Profit
          Price = OrderOpenPrice();                        // Цена открытия рыночного ордера
          SL =  OrderStopLoss();                           // Значение StopLoss ордера
          TP = OrderTakeProfit();                          // Значение TakeProfit ордера
          
             if (ticket>0)                                               // Если позиция открылась
                    {
                             while(OrderSelect(ticket,SELECT_BY_TICKET)==false)       // Если ордер выбран
                                 {
                                   Sleep(100);
                                 }
                                  double OpenPrice=OrderOpenPrice();
      
                              
                                  
                           if (orderType == OP_BUY) 
                              {
      
                               }
            
                            if (orderType == OP_SELL) 
                                 {
       
                                 }   
                            
                    }

      // Проверка на предельную просадку
      
      double loss = - ((orderProfit * 100.0) / AccountBalance());
      if (loss > MaxLoss)
      {
         Print ("MaxLoss");
         CloseAllOrders(MagicNumber);
         IsExpertFailed = true;
         return (0);
      }
    
              
       
}
   
 
请提醒我如何设置延迟。我认为你可以在几毫秒内完成。我一直忘了怎么拼写它。
 
还有,谁能推荐一个能快速关闭所有头寸的脚本。我找不到它。我想看看这段代码。
 
FOReignEXchange:
还有,谁能推荐一个能快速关闭所有头寸的脚本。我找不到它。我想看看这段代码。
搜索一下就知道 有五万块钱。