초보자의 질문 MQL5 MT5 MetaTrader 5 - 페이지 1328

 
커뮤니티를 도와주세요...
MT5
동시에 여러 쌍의 매개변수를 열거하여 최적화할 수 없습니다.
테스터의 "심볼" 열에서 "시장 감시의 모든 기호" 옵션을 선택하면 "매개변수" 탭에서 입력 매개변수 열거를 설정하는 옵션이 비활성화되고 확인란이 단순히 선택되지 않고 값이 없습니다. 입력됩니다. 무엇을 해야 합니까?
 
MikeZv :
커뮤니티를 도와주세요...
MT5
동시에 여러 쌍의 매개변수를 열거하여 최적화할 수 없습니다.
테스터의 "심볼" 열에서 "시장 감시의 모든 기호" 옵션을 선택하면 "매개변수" 탭에서 입력 매개변수 열거를 설정하는 옵션이 비활성화되고 확인란이 단순히 선택되지 않고 값이 없습니다. 입력됩니다. 무엇을 해야 합니까?

여러 문자에 최적화되지 않고 방금 테스트되었습니다.

 
Mikhail Mishanin :

여러 문자에 최적화되지 않고 방금 테스트되었습니다.

그리고 별도의 테스트에서 각 문자에 대한 매개변수를 정렬해야 합니까?
MT4에서도요. 저것들. MT5에서 다중 통화 테스트의 가능성은 신화입니까?

UPD 그러나 설명서에는 명시적으로 다음과 같이 나와 있습니다.

  • 기호를 지정한다고 해서 테스터가 이 기록 데이터만 사용한다는 의미는 아님을 이해해야 합니다. Expert Advisor와 관련된 모든 기호에 대한 정보는 테스터가 자동으로 다운로드합니다.
저것들. 하나의 기호는 매개변수 검색 설정으로 선택되어야 하며 테스터는 " 어드바이저에 관련된 모든 기호에 대해 " 이러한 매개변수를 적용합니다.
 
MikeZv :

그리고 별도의 테스트에서 각 문자에 대한 매개변수를 정렬해야 합니까?
MT4에서도요. 저것들. MT5에서 다중 통화 테스트의 가능성은 신화입니까?

.....

"테스트"와 "최적화"라는 단어의 차이점을 스스로 이해하고 있습니까 ???

 
Сергей Таболин :

"테스트"와 "최적화"라는 단어의 차이점을 스스로 이해하고 있습니까?

문자별로 매개변수를 반복 합니다. 이것은 테스트입니까 아니면 최적화입니까?

 
Vitaly Muzichenko :

글쎄, 그는 열린 위치에서 찾아야합니다

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

초보자의 질문 MQL5 MT5 MetaTrader 5

알렉산드르 에고로프 , 2021.07.14 18:04

각 쌍에 대해 MT5에서 미결 주문에 대한 수수료를 별도로 계산하는 방법은 무엇입니까? 누구든지 해결책이 있습니까

네, 제가 틀렸습니다. 쌍별 위치 검색)

 
안녕하세요! 누구든지 MT-5 전략 테스터 의 차트에서 십자선이 켜진 위치를 알고 있고 전혀 거기에 있습니까?
 
Yuriy Vins :
안녕하세요! 누구든지 MT-5 전략 테스터 의 차트에서 십자선이 켜진 위치를 알고 있고 전혀 거기에 있습니까?

마우스 가운데 버튼(스크롤 휠 클릭)

 

법원 후행 정지를 설정하는 방법을 알려줄 내 친구 ,

 //+------------------------------------------------------------------+
//|                          EMA_WMA v2(barabashkakvn's edition).mq5 |
//|                               Copyright © 2009, Vladimir Hlystov |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Vladimir Hlystov"
#property link        "cmillion@narod.ru"
#property version    "2.000"
#include <Trade\PositionInfo.mqh>
#include <Trade\Trade.mqh>
#include <Trade\SymbolInfo.mqh>
#include <Trade\AccountInfo.mqh>
CPositionInfo  m_position;                   // trade position object
CTrade         m_trade;                       // trading object
CSymbolInfo    m_symbol;                     // symbol info object
CAccountInfo   m_account;                     // account info wrapper
//+------------------------------------------------------------------+
//| Enum Prices                                                      |
//+------------------------------------------------------------------+
enum enPrices
  {
   pr_close,       // Close
   pr_open,       // Open
   pr_high,       // High
   pr_low,         // Low
   pr_median,     // Median
   pr_typical,     // Typical
   pr_weighted,   // Weighted1
   pr_average     // Average (high+low+oprn+close)/4
  };
//+------------------------------------------------------------------+
//--- Super Trend Hull Indicator
int       Inp_hullPeriod             = 18 ;         // Hull period
int       Inp_hullPeriod2            = 6660 ;         // Hull period
enPrices Inp_Price                  = pr_close;     // Price

 
extern double   Lots                = 5.0 ; 
//---
int             period_EMA          = 80 ;         // EMA: averaging period
int             period_WMA          = 80 ;         // WMA: averaging period
extern int      InpStopLoss         = 5000 ;           // StopLoss
extern int      InpTakeProfit       = 10000 ;           // TakeProfit
double          my_lot;
ulong           m_magic= 72406264 ;                   // magic number

 
 
//---
double          my_SL,my_TP;
datetime        TimeBar;



double          ExtStopLoss= 0.0 ;
double          ExtTakeProfit= 0.0 ;


 
int             m_bar_current= 0 ;
int             handle_iCustom;               // variable for storing the handle of the iCustom indicator
int             handle_iCustom2;               // variable for storing the handle of the iCustom indicator
int             handle_iMA_EMA;               // variable for storing the handle of the iMA indicator
int             handle_iMA_WMA;               // variable for storing the handle of the iMA indicator
int             all_positions;                 // offene Positionen
input bool      Reverse                = true ;


bool            UseTimeLimit = true ;
int             startHour    = 1 ;
int             stopHour     = 23 ;
bool            YesStop= false ;
input            ENUM_TIMEFRAMES Timeframe = PERIOD_CURRENT ;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+


int OnInit ()
  {
 
//---
 
   m_symbol.Name( Symbol ());                   // sets symbol name
//---
   m_trade.SetExpertMagicNumber(m_magic);     // sets magic number
   if (!RefreshRates())
     {
       Print ( "Error RefreshRates. Bid=" , DoubleToString (m_symbol.Bid(), Digits ()),
             ", Ask=" , DoubleToString (m_symbol.Ask(), Digits ()));
       return ( INIT_FAILED );
     }
   m_symbol.Refresh();
//--- tuning for 3 or 5 digits
   int digits_adjust= 1 ;
   if (m_symbol. Digits ()== 3 || m_symbol. Digits ()== 5 )
      digits_adjust= 10 ;
 
   ExtStopLoss    = InpStopLoss     * digits_adjust;
   ExtTakeProfit  = InpTakeProfit   * digits_adjust;
 
//--- create handle of the indicator iMA
   handle_iMA_EMA= iMA ( Symbol (), Period (),period_EMA, 0 , MODE_EMA , PRICE_OPEN );
//--- if the handle is not created
   if (handle_iMA_EMA== INVALID_HANDLE )
     {
       //--- tell about the failure and output the error code
       PrintFormat ( "Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d" ,
                   Symbol (),
                   EnumToString ( Period ()),
                   GetLastError ());
       //--- the indicator is stopped early
       return ( INIT_FAILED );
     }
//--- create handle of the indicator iMA
   handle_iMA_WMA= iMA ( Symbol (), Period (),period_WMA, 0 , MODE_LWMA , PRICE_OPEN );
//--- if the handle is not created
   if (handle_iMA_WMA== INVALID_HANDLE )
     {
       //--- tell about the failure and output the error code
       PrintFormat ( "Failed to create handle of the iMA indicator for the symbol %s/%s, error code %d" ,
                   Symbol (),
                   EnumToString ( Period ()),
                   GetLastError ());
       //--- the indicator is stopped early
       return ( INIT_FAILED );
     }
//--- create handle of the indicator iCustom
   handle_iCustom= iCustom (m_symbol.Name(), Period (), "hull_variation" ,Inp_hullPeriod,Inp_Price );
   handle_iCustom2= iCustom (m_symbol.Name(), Period (), "23" ,Inp_hullPeriod2,Inp_Price );
//--- if the handle is not created
   if (handle_iCustom== INVALID_HANDLE || handle_iCustom2== INVALID_HANDLE )
        {
       //--- tell about the failure and output the error code
       PrintFormat ( "Failed to create handle of the iCustom indicator for the symbol %s/%s, error code %d" ,
                  m_symbol.Name(),
                   EnumToString ( Period ()),
                   GetLastError ());
       //--- the indicator is stopped early
       return ( INIT_FAILED );
}
//---
   return ( INIT_SUCCEEDED );
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+

int Crossed( double line1, double line2)
  {
   static int last_direction= 0 ;
   static int current_direction= 0 ;
//--- don't work in the first load, wait for the first cross!
   static bool first_time= true ;
   if (first_time== true )
     {
      first_time= false ;
       //---
       if (line1>line2)
         current_direction= 1 ;   //up
       else
         current_direction= 2 ;   //(line1<line2) //down

      last_direction=current_direction;
       //---
       return ( 0 );
     }
//---
   if (line1>line2)
      current_direction= 1 ;   //up
   else
      current_direction= 2 ;   //(line1<line2) //down
//---
   if (current_direction!=last_direction) //changed
     {
      last_direction=current_direction;
       return (last_direction);
     }
   else
     {
       return ( 0 );   //not changed
     }
  }
void OnTick ()
  {
  
   double close1 = iClose ( _Symbol ,Timeframe, 1 );

   datetime time_0= iTime ( 0 );
   if (TimeBar==time_0)
       return ;
   if (TimeBar== 0 )
     {
      TimeBar=time_0;
       return ;
     } //first program run
 
   double colorBuffer[],hull[],EMA0[],WMA0[];
   ArraySetAsSeries (colorBuffer, true );
   ArraySetAsSeries (hull, true );
   ArraySetAsSeries (EMA0, true );
   ArraySetAsSeries (WMA0, true );

 
 
 
   int start_pos= 1 ,count= 3 ;
   if (!iGetArray(handle_iCustom, 1 ,start_pos,count,colorBuffer))
     return ;
   if (!iGetArray(handle_iCustom2, 1 ,start_pos,count,hull))
       return ;
   if (!iGetArray(handle_iMA_EMA, 0 ,start_pos,count,EMA0))
       return ;
   if (!iGetArray(handle_iMA_WMA, 0 ,start_pos,count,WMA0))
       return ;
//---

   if (UseTimeLimit)
     {
       YesStop= true ;
       MqlDateTime str1;
       TimeToStruct ( TimeCurrent () , str1);
       if (str1.hour > startHour && str1.hour < stopHour)
          YesStop= false ;
     }
   if (YesStop== false )
   ulong   m_ticket= 0 ;
   double SEma,LEma;
   
   SEma = iMAGet(handle_iMA_WMA, 0 );
   LEma = iMAGet(handle_iMA_EMA, 0 );
   
       static int isCrossed= 0 ;
   if (!Reverse)
      isCrossed=Crossed(LEma,SEma);
   else
      isCrossed=Crossed(SEma,LEma);
//---
   if (!RefreshRates())
       return ;


  {  
   bool Buy_Condition_1 = (WMA0[m_bar_current] < EMA0[m_bar_current+ 1 ]);
   bool Buy_Condition_2 = (close1 > WMA0[ 0 ]);

     {  
         int pos_total= PositionsTotal ();
   if (pos_total== 0 )
     {
       if (isCrossed== 1 )
       {

       if (!RefreshRates())
         return ;
      TimeBar=time_0;
      my_TP = m_symbol.Ask() + ExtTakeProfit* Point ();
      my_SL = m_symbol.Ask() - ExtStopLoss* Point ();
      my_lot = Lots;
      OPENORDER( "Sell" );
            }
      
 }
 
       if (isCrossed== 2 )       
         {
       if (!RefreshRates())
         return ;
      TimeBar=time_0;
      my_TP  = m_symbol.Bid() - ExtTakeProfit* Point ();
      my_SL  = m_symbol.Bid() + ExtStopLoss* Point ();

      my_lot= Lots;
      OPENORDER( "Buy" );
         }
     }
     
   
 } 
   if (colorBuffer[m_bar_current+ 1 ]>colorBuffer[m_bar_current] ) //Buy
     {
       if (!RefreshRates())
         return ;
      TimeBar=time_0;
      CLOSEORDER( "Sell" );
     }
 
   if (colorBuffer[m_bar_current+ 1 ]<colorBuffer[m_bar_current] ) //Sell
     {
       if (!RefreshRates())
         return ;
      TimeBar=time_0;
      CLOSEORDER( "Buy" );
     }
 
   return ;
  }
  
//--------------------------------------------------------------------
void CLOSEORDER( string ord)
  {
   for ( int i= PositionsTotal ()- 1 ; i>= 0 ; i--)   // returns the number of open positions
       if (m_position.SelectByIndex(i))
         if (m_position. Symbol ()== Symbol () && m_position.Magic()==m_magic)
           {
             if (m_position.PositionType()== POSITION_TYPE_BUY && ord== "Buy" )
               m_trade.PositionClose(m_position.Ticket());   // Close Buy
             if (m_position.PositionType()== POSITION_TYPE_SELL && ord== "Sell" )
               m_trade.PositionClose(m_position.Ticket()); // Close Sell
           }
  }
//--------------------------------------------------------------------

void OPENORDER( string ord)
  {
   if (ord== "Sell" )
       for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--) // returns the number of open positions
         if (m_position.SelectByIndex(i))
           if (m_position.PositionType()== POSITION_TYPE_SELL )
 
               return ;                           // Если sell, то не открываемся
 
       if (!m_trade.Sell(my_lot, Symbol (),m_symbol.Bid(),my_SL,my_TP, "" ))
         Print ( "Buy -> false. Result Retcode: " ,m_trade.ResultRetcode(),
               ", description of result: " ,m_trade.ResultRetcodeDescription(),
               ", ticket of deal: " ,m_trade.ResultDeal());
   if (ord== "Buy" )
       for ( int i= PositionsTotal ()- 1 ;i>= 0 ;i--) // returns the number of open positions
         if (m_position.SelectByIndex(i))
 
             if (m_position.PositionType()== POSITION_TYPE_BUY )
               return ;                           // Если buy, то не открываемся
 

       if (!m_trade.Buy(my_lot, Symbol (),m_symbol.Ask(),my_SL,my_TP, "" ))
         Print ( "BUY_STOP -> false. Result Retcode: " ,m_trade.ResultRetcode(),
               ", description of Retcode: " ,m_trade.ResultRetcodeDescription(),
               ", ticket of order: " ,m_trade.ResultOrder());
   return ;
  }
   double iMAGet( const int handle, const int index)
  {
   double MA[];
   ArraySetAsSeries (MA, true );
//--- reset error code
   ResetLastError ();
//--- fill a part of the iMABuffer array with values from the indicator buffer that has 0 index
   if ( CopyBuffer (handle, 0 , 0 ,index+ 1 ,MA)< 0 )
     {
       //--- if the copying fails, tell the error code
       PrintFormat ( "Failed to copy data from the iMA indicator, error code %d" , GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated
       return ( 0.0 );
     }
   return (MA[index]);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
 
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {
//--- refresh rates
   if (!m_symbol.RefreshRates())
       return ( false );
//--- protection against the return value of "zero"
   if (m_symbol.Ask()== 0 || m_symbol.Bid()== 0 )
       return ( false );
//---
   return ( true );
  }
//+------------------------------------------------------------------+
//| Get Time for specified bar index                                 |
//+------------------------------------------------------------------+
datetime iTime ( const int index, string symbol= NULL , ENUM_TIMEFRAMES timeframe= PERIOD_CURRENT )
  {
   if (symbol== NULL )
      symbol= Symbol ();
   if (timeframe== 0 )
      timeframe= Period ();
   datetime Time[];
   datetime time= 0 ;
   ArraySetAsSeries (Time, true );
   int copied= CopyTime (symbol,timeframe,index, 1 ,Time);
   if (copied> 0 )
      time=Time[ 0 ];
   return (time);
  }
//+------------------------------------------------------------------+
//| Get value of buffers                                             |
//+------------------------------------------------------------------+
bool iGetArray( const int handle, const int buffer, const int start_pos,
               const int count, double &arr_buffer[])
  {
   bool result= true ;
   if (! ArrayIsDynamic (arr_buffer))
     {
       PrintFormat ( "ERROR! EA: %s, FUNCTION: %s, this a no dynamic array!" , __FILE__ , __FUNCTION__ );
       return ( false );
     }
   ArrayFree (arr_buffer);
//--- reset error code
   ResetLastError ();
//--- fill a part of the iBands array with values from the indicator buffer
   int copied= CopyBuffer (handle,buffer,start_pos,count,arr_buffer);
   if (copied!=count)
     {
       //--- if the copying fails, tell the error code
       PrintFormat ( "ERROR! EA: %s, FUNCTION: %s, amount to copy: %d, copied: %d, error code %d" ,
                   __FILE__ , __FUNCTION__ ,count,copied, GetLastError ());
       //--- quit with zero result - it means that the indicator is considered as not calculated
       return ( false );
     }
   return (result);
 
 
}
//+------------------------------------------------------------------+

 
Yuriy Vins :
안녕하세요! 누구든지 MT-5 전략 테스터 의 차트에서 십자선이 켜진 위치를 알고 있고 전혀 거기에 있습니까?

Ctrl+F

그러나 시각화로 테스트할 때만 가능합니다.
사유: