程序库: BestInterval - 页 29

 

你好!

在编译过程中出现了错误,有人遇到过吗?

我搜索了论坛,好像没有人讨论过这个问题。

附加的文件:
ys.jpg  31 kb
 
Dmitrii Verevkin #:

编译时出现错误。

Deal.mqh 中添加这几行。

#include "Deal_Base.mqh"

struct DEAL : public DEAL_BASE
{
  int Index;

  void ToNull( DEAL &Deals[] ) const
  {
  #ifdef __MQL5__
    Deals[this.Index].DEAL_BASE::ToNull();
  #else // __MQL5__ - https://www.mql5.com/ru/forum/322209#comment_13314616
    Deals[this.Index].ToNull();
  #endif // __MQL5__

    return;
  }
  
  void operator =( const DEAL_BASE &bDeal )
  {
    /*this.*/ DEAL_BASE::operator=(bDeal); //https://www.mql5.com/ru/forum/1111/page3368#comment_48437633
    
    return;
  }  
};
 
Dmitrii Verevkin #:

你好!

我在编译时出错了,有人遇到过吗?

我搜索了论坛,好像没有人讨论过这个问题。

这对我有帮助。

谢谢!

 
请帮助我如何解决这个问题?编译后出现错误。
附加的文件:
 
1005829945 #:
请帮助我如何解决这个问题?编译后出现错误。
缺少 OnTick 函数。
 

计算速度显著提升。

#include <fxsaber\Benchmark\Benchmark.mqh> //https://www.mql5.com/zh/code/31279

#define  ORDER_COMMISSION 0
#include <fxsaber\Virtual\Virtual.mqh> //https://www.mql5.com/zh/code/22577
#include <fxsaber\BestInterval\BestInterval.mqh> //https://www.mql5.com/zh/code/22710

// 基准测试脚本
void OnStart()
{
  if (VIRTUAL::SelectByHandle(VIRTUAL::Create("BestInterval.mqh.virt"))) //https://c.mql5.com/3/492/BestInterval_mqh.zip
  {
    BESTINTERVAL_INPUT Inputs;

    Inputs.AmountDeleteIntervals = 5;
    Inputs.MinPF = 1.0;
    Inputs.OnlyDelete = false;
    Inputs.Method = METHOD_WEEK;
    
    Inputs.Length = 0.8;
    Inputs.Amount = 10;
            
    BESTINTERVAL BestInterval;
    
    _B(BestInterval.FullCalculate(Inputs), 1);
    Print(BestInterval.ToStringConst());
  }  
}


以前是这样。

Alert: Bench_Stack = 0, 1 <= Time[Test6.mq5 174 in OnStart: BestInterval.FullCalculate(Inputs)] = 6724116 mcs.


现在。

Alert: Bench_Stack = 0, 1 <= Time[Test6.mq5 174 in OnStart: BestInterval.FullCalculate(Inputs)] = 394778 mcs.


优化效果提升了数倍。

附加的文件:
 
哪些文件已被更新?
 
hini #:
哪些文件已被更新?
Holiday.mqh
Deal_Base.mqh
Deal.mqh
Interval.mqh
BestInterval.mqh
 
fxsaber #:

编译错误。

顾问

 #include <MT4Orders.mqh> //https://www.mql5.com/zh/code/16006
 
 //#include <fxsaber\Virtual\Virtual.mqh> //https://www.mql5.com/zh/code/22577

#define  BESTINTERVAL_ONTESTER // 优化目标——最佳区间的利润。
#include <fxsaber\BestInterval\BestInterval.mqh> // 计算最佳交易区间

 //#include <..\Experts\Examples\MACD\MACD Sample.mq5> // 任意专家顾问
long tiket = -1;

void OnTick()
{    
MqlTick t;

if(SymbolInfoTick(_Symbol, t))
    {
    if(tiket < 0)
        {
        double lot = ::NormalizeDouble(SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN), 2);
        double price = ::NormalizeDouble(t.ask, _Digits); 
              
        ResetLastError();
        
        tiket = OrderSend(_Symbol, 0, lot, price, 0, 0, 0, "666", 666); 
        
        if(tiket > -1)
           {
            Sleep(1000);
            return;
           }
        else
           {
           Print("\nopenSL:BUY交易请求错误  错误", (string)_LastError);
           }        
        }
    else
        {
        
        for(int i = OrdersTotal() - 1; (bool)i--; )    
           {
            if(OrderSelect(i, SELECT_BY_POS) && OrderMagicNumber() == 666 && OrderType() == 0)
                {

                ResetLastError();
                
                if(OrderClose(OrderTicket(), OrderLots(), ::NormalizeDouble(t.bid, _Digits), 0))
                    ExpertRemove();
                
                else
                    {
                    Print("\ncloseB:买入平仓交易请求错误  错误", (string)_LastError);
                    }                    

                } 
           }            
        }
    }
}  

不知道怎么把所有内容都折叠起来,所以显得有些臃肿


谢谢。

附加的文件: