사용자 정의 기호. 오류, 버그, 질문, 제안. - 페이지 9

 
Andrey Khatimlianskii :

2009년과 2025년을 같은 자리에 채웠습니다 .

고맙습니다. 나는 1970+ 빌드를 시도했습니다 - 사용자 정의 기호를 열심히 다시 만들 때까지 동일한 거래 계정에 남아있는 모든 사람이 이 버그를 가지고 있습니다.

 
fxsaber :

2009년:

2033:

 

버그 10.

캐릭터를 삭제할 수 없습니다.

 #define PRINT(A) Print ( #A + " = " + ( string )(A))

void OnStart ()
{
   MathSrand (( uint ) TimeLocal ());
  
   const string Name = _Symbol + ( string ) MathRand ();

  PRINT( CustomSymbolCreate (Name));

  PRINT( CustomRatesDelete (Name, 0 , 0 )); // Без этой строки удаление работает.
  
  PRINT( CustomSymbolDelete (Name)); // false
  PRINT( GetLastError ());  
}


 CustomSymbolCreate (Name) = true
CustomRatesDelete (Name, 0 , 0 ) = 0
CustomSymbolDelete (Name) = false
GetLastError () = 5306
 

버그 11.

CustomTicksAdd는 막대를 생성하지 않습니다.

 // Проигрываем тиковую историю через таймер.
#define PRINT(A) Print ( #A + " = " + ( string )(A))

void OnInit ()
{
   if ( EventSetMillisecondTimer ( 20 )) // С такой частотой будем пробрасывать тики
     MathSrand (( uint ) TimeLocal ());  
}

void OnTimer ()
{
   static const string Name = _Symbol + ( string ) MathRand ();
  
   static bool FirstRun = true ;
   static MqlTick Ticks[];
   static int Pos = 0 ;
    
   if (FirstRun)
  {
    PRINT( CustomSymbolCreate (Name, NULL , _Symbol )); // Создали символ.
  
    PRINT( CustomRatesDelete (Name, 0 , 0 )); // Без этой строки работает.     
    PRINT( SymbolSelect (Name, false ));     // https://www.mql5.com/ru/forum/304554/page9#comment_11680616
    
    PRINT( CustomSymbolDelete (Name));                 // Убили.
    PRINT( CustomSymbolCreate (Name, NULL , _Symbol )); // Воскресили.
    
     if ( SymbolSelect (Name, true )) // Поместили в Обзор рынка
    {
       ChartOpen (Name, PERIOD_M1 );             // Открыли чарт
      PRINT( CopyTicksRange ( _Symbol , Ticks, COPY_TICKS_INFO , ( TimeCurrent () - 3600 ) * 1000 )); // Взяли тики (последний час) для проброса
    }
      
    FirstRun = false ;
  }
   else if (Pos < ArraySize (Ticks))
  {
     MqlTick Tick[ 1 ];
    
     // Пробрасываем по тику
    Tick[ 0 ] = Ticks[Pos++];
     CustomTicksAdd (Name, Tick);
  }
}

열린 차트에는 막대가 형성되지 않습니다. 틱은 Market Watch에서 업데이트됩니다.

 

버그 12.

사용자 정의 기호를 처음부터 만들 때(예: CTRL+U를 통해) 최대 볼륨이 설정되어 테스터가 수익을 계산할 수 없습니다.

 #include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK )

void OnInit ()
{
   // Именно такой макс. объем автоматом прописывается при создании кастомного символа с нуля.
   const double Lot = 1 e11; // SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX)
  
   OrderSend ( _Symbol , OP_BUY, Lot, Ask, 0 , 0 , 0 ); // После закрытия этой позиции ее профит будет нулевым.
}
 
어떤 이유로 개발자의 손은 이 스레드에서 재현 가능한 버그에 도달하지 않습니다.
 
fxsaber :
어떤 이유로 개발자의 손이 이 분기에서 재현 가능한 버그에 도달하지 않습니다.
당신은 아마 초대해야합니다
 

Slava Stringo를 초대했습니다.

나는 이 필드(첨부 1) 에 맞춤형 도구를 사용 합니다. 따옴표 없이 열립니다. 메뉴를 통해 열면 모든 것이 정상입니다.

첨부파일 2입니다.

첨부 파일 3: 이 버튼에 지쳤습니다. 아무도 필요하지 않습니다. 숨기는 옵션을 만듭니다. 참조가 있습니다. 설문조사를 해보자.

spsb

파일:
x34zq9.PNG  2 kb
1wvlwh2.PNG  10 kb
qfd9jf.PNG  2 kb
 
superman :

Slava Stringo를 초대했습니다.

나는이 분야 (첨부 1) 사용자 도구에서 운전합니다. 따옴표 없이 열립니다. 메뉴를 통해 열면 모든 것이 정상입니다.

첨부파일 2입니다.

그렇게 초대되지 않았습니다.

그래서: @Slava

 
fxsaber :

버그 07.

테스터는 Bid에 의한 바 구축 가격으로 커스텀 심볼을 교환하기 위해 Last로 바를 형성합니다.

따라서 터미널과 테스터의 바 이력은 완전히 다릅니다. 그리고 TS의 누군가가 막대(예: 지표)를 사용하는 경우 백테스트 결과는 무작위입니다.

사용자 정의 기호 사양을 표시합니다.

그리고 맞춤 틱을 제공합니다.

무언가를 수정하려면 먼저 재현해야 합니다.