mql4 언어의 기능, 미묘함 및 작업 방법 - 페이지 20

 
fxsaber :

깨지지 않을 것입니다. TimeCurrent 알고리즘은 매우 간접적으로 영향을 받습니다. 바 시간 등을 가질 수 있습니다.

일요일 이전과 이후에 막대가 있도록 마지막 과거(막대 역사) 일요일의 날짜를 계산하는 방법을 사용하면 됩니다. 즉, 이를 위해 최소한 TimeLocal을 사용할 수 있습니다.

결과는 00:00(24시간 세션) 주변에 따옴표가 있는 경우 항상 GMT+3이 되거나 GMT+3+N - 여기서 N은 세션이 종료된 후 자정까지 또는 자정에서 열리기까지의 시간입니다. 이것이 따옴표 시간대 와 어떤 관련이 있습니까?

 
Ivan Titov :

결과는 00:00(24시간 세션) 주변에 따옴표가 있는 경우 항상 GMT+3이 되거나 GMT+3+N - 여기서 N은 세션이 종료된 후 자정까지 또는 자정에서 열리기까지의 시간입니다. 이것은 따옴표 시간대와 어떤 관련이 있습니까?

나는 이 주제를 전혀 기억하지 못해서 질문에 대답할 수 없다. 불일치가 있으면 시연으로 시작하는 것이 좋습니다.

 
fxsaber :

나는 이 주제를 전혀 기억하지 못해서 질문에 대답할 수 없다. 불일치가 있으면 시연으로 시작하는 것이 좋습니다.

BCS 터미널의 코드(기호 ED-9.19)에서 TimeServerGMT() 함수는 TimeCurrent()가 2019.08.12 11:48:55와 같은 순간에 시간 2019.08.11 22:48:55를 반환합니다.

 
Ivan Titov :

BCS 터미널의 코드(기호 ED-9.19)에서 TimeServerGMT() 함수는 TimeCurrent()가 2019.08.12 11:48:55와 같은 순간에 시간 2019.08.11 22:48:55를 반환합니다.

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

mql4 언어의 기능, 미묘함 및 작업 방법

fxsaber , 2018.03.29 14:32

 // Работает для FOREX-символов, когда M1-история доступна за ближайшую неделю

코드에서 이 주석에 주의를 기울이지 않았습니다.

 
fxsaber :

코드에서 이 주석에 주의를 기울이지 않았습니다.

외환이 아닌 기호에 대한 기록을 사용할 수 있는 경우 작동하지 않을 것이라고 말하고 싶습니까?

또한 다음은 테스터의 Alpari-Demo EURUSD,H1에 대한 외환 예입니다.

2019.02.19 14:00:00 반환 2019.02.19 11:00:00

2019.06.19 14:00:00 - 반환 2019.06.19 11:00:00

겨울에는 GMT + 2, 여름에는 GMT + 3(EET)이어야 합니다.

 
Ivan Titov :

외환이 아닌 기호에 대한 기록을 사용할 수 있는 경우 작동하지 않을 것이라고 말하고 싶습니까?

기억이 안나요. 하지만 아마도 그렇게 쓰여진 것만은 아닐 것입니다.


GMT 오프셋이 무엇을 위한 것인지 이해하는 것이 중요합니다. 아마도 이 가치에 대한 나의 비전은 너무 좁지만 한 가지, 즉 다른 가격 BP를 서로 동기화할 수 있는 기능에서만 그 유용성을 알 수 있습니다.

다른 이유는 보이지 않습니다. 따라서 이러한 기능은 예를 들어 다른 브로커(다른 GMT 오프셋 포함)의 EURUSD를 동기화할 수 있어야 합니다. 그렇지 않은 경우에만 오류가 발생합니다.

 
fxsaber :

GMT 오프셋이 무엇을 위한 것인지 이해하는 것이 중요합니다. 아마도 이 가치에 대한 나의 비전은 너무 좁지만 한 가지, 즉 다른 가격 BP를 서로 동기화할 수 있는 기능에서만 그 유용성을 알 수 있습니다.

다른 이유는 보이지 않습니다. 따라서 이러한 기능은 예를 들어 다른 브로커(다른 GMT 오프셋 포함)의 EURUSD를 동기화할 수 있어야 합니다. 그렇지 않은 경우에만 오류가 발생합니다.

또는 뉴스와 함께 BP의 가격을 책정하십시오. 그럼 페인팅이 안될까요?

 
Andrey Khatimlianskii :

또는 뉴스와 함께 BP의 가격을 책정하십시오. 그럼 페인팅이 안될까요?

먼저 서로 다른 소스에 있는 두 개의 외환 기호가 동기화됩니다. 그 후, 다른 하나에 대한 하나의 변위가 분명해집니다. 이 데이터를 기반으로 나머지 문자가 동기화됩니다.

이러한 소스.

달력과의 동기화를 확인하는 것이 좋습니다. 겨울과 여름에 뉴스를 가져 가라. 그리고 일치하는지 여부를 확인하십시오.

 
이 주제와 관련이 없는 댓글은 " MQL4 및 MQL5에 대한 모든 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 "으로 이동되었습니다.
 

이익 계산.

 // Вычисляет профитность на истории не пересекающихся закрытых позиций.
bool GetSumGain( const double Risk, double &SumGain, double &MaxDD, double &RF, const string Symb, const int Magic = - 1 )
{
   bool Res = true ;
   const double Leverage = Risk * 100 ;  
      
  SumGain = 1 ;
  MaxDD = 0 ;
  RF = 1 ;

   double MaxGain = SumGain;
   double DDGain = SumGain;
    
   for ( int i = OrdersHistoryTotal() - 1 ; (i >= 0 ) && (Res = (SumGain > 0 )); i--)
     if ( OrderSelect (i, SELECT_BY_POS, MODE_HISTORY) && (OrderType() <= OP_SELL) &&
        (OrderSymbol() == Symb) && ((Magic == - 1 ) || (OrderMagicNumber() == Magic)))        
    {
      SumGain *= 1 - Leverage * ((OrderType() << 1 ) - 1 ) * ( 1 - OrderOpenPrice() / OrderClosePrice());
      
       if (SumGain > MaxGain)
        MaxGain = SumGain;
       else if ( 1 - SumGain / MaxGain > MaxDD)
      {
        MaxDD = 1 - SumGain / MaxGain;
        
        DDGain = SumGain;
      }
    }
    
  RF = SumGain / DDGain;
      
   return (Res);
}


애플리케이션

 #property strict
#property show_inputs

input int MagicNumber = 1 ; // Для какого мэджика вычислить профитность?

#define D(A) DoubleToString (A, 2 )

void OnStart ()
{
   for ( int i = 1 ; i <= 20 ; i++)
  {
     double SumGain, MaxDD, RF;    
     const double Risk = i * 0.1 ;
    
     if ( GetSumGain(Risk, SumGain, MaxDD, RF, _Symbol , MagicNumber) )   
       Print (( string )MagicNumber + ": при риске " + D(Risk) +
                                   " увеличение было бы в " + D(SumGain) + " раза" +
                                   " с максимальной относительной просадкой по балансу " + D(MaxDD) + 
                                   ", фактор восстановления = " + D(RF));   
  }
       
}


결과

 1 : при риске 0.30 увеличение было бы в 2.16 раза с максимальной относительной просадкой по балансу 0.19 , фактор восстановления = 2.01
1 : при риске 0.20 увеличение было бы в 1.68 раза с максимальной относительной просадкой по балансу 0.13 , фактор восстановления = 1.60
1 : при риске 0.10 увеличение было бы в 1.30 раза с максимальной относительной просадкой по балансу 0.07 , фактор восстановления = 1.27