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

 

안녕하세요! 포럼 사용자 여러분의 도움이 필요합니다. 지표를 쓰고 있습니다. 처리할 때 처리된 막대 의 여는 시간 값이 필요합니다. 이 시간은 time[]에 저장해야 할 것 같지만, 뭔가 말도 안 되는 부분이 있습니다.

 int OnCalculate ( const int rates_total,
                 const int prev_calculated,
                 const datetime &time[],
                 const double &open[],
                 const double &high[],
                 const double &low[],
                 const double &close[],
                 const long &tick_volume[],
                 const long &volume[],
                 const int &spread[])
  {
//---check for rates total


   if (rates_total< 2 )
       return ( 0 );
//--- starting work
   int start=prev_calculated- 1 ;
//--- correct position
   if (start< 1 ) start= 1 ;
//--- main cycle

CalculateVolume(start,rates_total,time);


//--- OnCalculate done. Return new prev_calculated.
   return (rates_total);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CalculateVolume( const int nPosition,
                     const int nRatesCount,
                     const long &tim[],
                     )
  {
  
MqlDateTime dat1;


for ( int j=nPosition;j<nRatesCount && ! IsStopped ();j++)
{
     TimeToStruct (tim[j],dat1);

     Print ( "год " ,dat1.year, " " ,dat1.day, " " ,dat1.hour, " " ,dat1.min)


 }
} 

2017.11.20 17:48:01.590 (RTS-12.17,M1) 2016년 29 15 26

2017.11.20 17:48:01.734 (RTS-12.17,M1) 2016년 29 15 27

2017.11.20 17:48:01.878 (RTS-12.17,M1) 2016년 29 15 29

2017.11.20 17:48:02.022 (RTS-12.17,M1) 2016년 29 15 33

2017.11.20 17:48:02.165 (RTS-12.17,M1) 2016년 29 15 45

2017.11.20 17:48:02.310 (RTS-12.17,M1) 2016년 29 21 12

2017.11.20 17:48:02.454 (RTS-12.17,M1) 2016년 1 20 54

2017.11.20 17:48:02.599 (RTS-12.17,M1) 2016년 2 12 52

2017.11.20 17:48:02.743 (RTS-12.17,M1) 2016년 2 22 28

2017.11.20 17:48:02.887 (RTS-12.17,M1) 2016년 2 23 20

2017.11.20 17:48:03.031 (RTS-12.17,M1) 2016년 3 11 47

2017.11.20 17:48:03.175 (RTS-12.17,M1) 2016년 3 22 34

2017.11.20 17:48:03.320 (RTS-12.17,M1) 2016년 3 22 35

2017.11.20 17:48:03.463 (RTS-12.17,M1) 2016년 4 21 56

2017.11.20 17:48:03.609 (RTS-12.17,M1) 2016년 4 23 32

하루에 몇 개의 바만 있는 것처럼 느껴집니다. plz, 두뇌는 이미 한쪽에 있습니다.

 
fxsaber :

예, 하지만 비뚤어진.

피보모에 :
언뜻보기에 CopyTick은 테스터에서 작동합니다. 테스터의 CopyTicks 작업에 알려진 버그가 있습니까? CopyTicksRange는 버그 없이 실생활에서 작동합니까?

다음 빌드에서 개발자는 테스터에서 TRADE 플래그를 올바르게 표시합니다.

fxsaber :

테스터에는 틱 시간에 버그가 있습니다. 매번 일정 금액을 빼야 합니다. SD는 문제를 알고 있습니다.

더?
 
안녕하세요! 다양한 버전의 거래 요청(MqlTradeRequest) 구조를 연구합니다. https://www.mql5.com/en/articles/100 기사에서 미리 만들어진 고문 my_first_ea.mq5를 가져와 SAR이 교차할 때 위치를 열도록 소스 코드의 조건을 변경하려고 시도했습니다. 작동했습니다. 그런 다음 MqlTradeRequest 구조 의 MQL5 참조에서 후행 코드(SAR로 위치 변경/수정)를 추가했습니다. 그러나 일관되게 [Invalid stops] 오류가 발생합니다. 요청에 문제가 있는 것 같습니다. 요컨대, 위치 수정의 연구에 집착. 내가 뭘 잘못하고 있는지 정말 이해가 안 돼요???
파일:
SAR_SAR.mq5  27 kb
 
Alexey Kozitsyn :

더?

 void OnTick ()
{
   MqlTick Ticks[];
  
   if ( CopyTicksRange ( _Symbol , Ticks) != - 1 )
  {
     ArrayPrint (Ticks);              
    
     ExpertRemove ();
  }
}
 
도와주셔서 감사합니다. 많은 분들이 기꺼이 도와주세요! 내 코드에 대한 주석을 읽는 것이 지겹습니다..............
 
DCodec :
도와주셔서 감사합니다. 많은 분들이 기꺼이 도와주세요! 내 코드에 대한 주석을 읽는 것이 지겹습니다..............
코드도 주석도 없습니다.
 

가격 증분을 찾는 방법을 알려주십시오("틱 크기" 사양에서)?

 
Aleksey Vyazmikin :

가격 증분을 찾는 방법을 알려주십시오("틱 크기" 사양에서)?

ht

 
Vladislav Andruschenko :
ht


고맙습니다! 검색했는데 안나오네요...

그런 다음 다음 질문인 25단계를 가정하고 반올림을 25의 배수로 구성하는 방법에 대해 함수가 있을 수 있습니까?

 
Aleksey Vyazmikin :

고맙습니다! 검색했는데 안나오네요...

그런 다음 다음 질문인 25단계를 가정하고 반올림을 25의 배수로 구성하는 방법에 대해 함수가 있을 수 있습니까?


나는 기능을 만들었습니다, 그것은 작동하는 것 같습니다

 //+------------------------------------------------------------------+
//|Функция округления числа до кратного целого                       |
//+------------------------------------------------------------------+
double Okr( double cifra)
  {
     double TickSize= SymbolInfoDouble ( _Symbol , SYMBOL_TRADE_TICK_SIZE );
     double Okruglenie= NormalizeDouble (cifra/TickSize, _Digits )*TickSize;
     Print ( "До кратного округления=" , DoubleToString (cifra, _Digits ), " После кратного округления=" , DoubleToString (Okruglenie, _Digits ));
     return (Okruglenie);
  }  
사유: