어떤 경우에 표시기에 로봇 코드의 일부를 유지하는 것이 합리적입니까? - 페이지 23

 
Vinin :

연결이 끊어진 경우 EMA 값이 올바르지 않습니다. 마지막으로 계산한 것입니다. 그러나 이것은 사실이 아닙니다. 결과적으로 함수는 n개의 막대가 아니라 훨씬 더 많은 수의 막대에서 잘못 작동합니다. 물론 값을 저장하려면

코드에 들어가지 않은 것 같습니다. 댓글:

 // Комментирую для такого случая. Крайний известный M1-бар был в 14:00.
// Произошел разрыв связи на 10 минут после чего происходит вызов start.
void start()
{
  EMA = GetEMA();
  
   return ;  
}

double GetEMA()
{
   static int PrevTime = 0 ;
  
   if (PrevTime == Time[ 0 ]) // Выпонится, когда история за крайние 10 минут подгрузится.
                           // Если истории не было, например, сутки, то может произойти ошибка.
                           // Но мы говорим про РЕАЛ, т.е. адекватность человека.
                           // Т.к. если нет связи сутки, советник оставлять нельзя.
     return (EMA);

   int i = iBarShift( Symbol (), Period (), PrevTime) - 1 ; // Здесь мы получим номер бара в 14:01.

  PrevTime = Time[ 0 ]; // запомним текущее время 14:10
  
// Производим расчет текущего EMA с учетом полученных 10 баров.
   while (i >= 0 )
  {
    EMA = EMA * Alpha + ( 1 - Alpha) * GetPrice(i);
    
    i--;
  }
  
   return (EMA);
} 
 
오류와 적절성에 대해 말하면서 "올인원"의 경우뿐만 아니라 "지표 포함"의 경우에도 이를 적용할 수 있음을 의미했습니다.
 
hrenfx :
오류와 적절성에 대해 말하면서 "올인원"의 경우뿐만 아니라 "지표 포함"의 경우에도 이를 적용할 수 있음을 의미했습니다.


대화가 작동하지 않습니다. 분명히 누군가는 약간의 비판을 듣고 싶어하지 않습니다.

이 스레드는 쓸모가 없다고 결론지을 수 있습니다.

 
Vinin :


대화가 작동하지 않습니다. 분명히 누군가는 약간의 비판을 듣고 싶어하지 않습니다.

이 스레드가 쓸모가 없다고 결론지을 수 있습니다.

잘 들어, 주저하지 마. 나는 심지어 당신을 위해 코드를 주석 처리했습니다. 좋아하지 않는 것은 무엇입니까? 주어진 10분 간격의 예가 오류를 일으킬 것이라고 생각합니까? 그는 모든 것을 지정했습니다. 당신은 오류가 어디를 볼 수 있음을 의미한다고 말합니다. 그러니 게으르지 말고 이곳을 보여주십시오. 이미 정의했습니다.

추신: 당신은 이미 두 번째로 회피하는 사람입니다. 그리고 내가 이해할 수 없는 말은 하지 마세요. 오류가 어디에 있는지 명확하게 표시하십시오. 내가 틀렸다면, 나는 그것을 인정할 것이다. 그것은 나에게서 멀어지지 않을 것입니다.

 
hrenfx :

잘 들어, 주저하지 마. 나는 심지어 당신을 위해 코드를 주석 처리했습니다. 좋아하지 않는 것은 무엇입니까? 주어진 10분 간격의 예가 오류를 일으킬 것이라고 생각합니까? 그는 모든 것을 지정했습니다. 당신은 오류가 어디를 볼 수 있음을 의미한다고 말합니다. 그러니 게으르지 말고 이곳을 보여주십시오. 이미 정의했습니다.

추신: 당신은 이미 두 번째로 회피하는 사람입니다. 그리고 이해할 수 없는 말은 하지 마세요. 오류가 어디에 있는지 명확하게 표시하십시오. 내가 틀렸다면, 나는 그것을 인정할 것이다. 그것은 나에게서 멀어지지 않을 것입니다.


어떤 사람들은 생각하고 싶지 않습니다. 강요할 수도 없고 하고 싶지도 않다.
 
Vinin :

어떤 사람들은 생각하고 싶지 않습니다. 강요할 수도 없고 하고 싶지도 않다.


젠장, 아직 아무도 자세히 설명하지 않았습니다. 다시 물. 몇몇 사람들(MT4+MQL4는 아주 잘 알고 있음)은 내 코드가 오류와 함께 작동할 것이라고 말하지만 (내가 여러 번 요청한) 구체적인 예제 인수를 제공할 수는 없습니다. 그리고 이것은 단 10줄의 코드입니다.

정수 코드와 내 코드를 별도의 스레드로 옮기고 MQL4 프로그래머에게 코드에서 무엇이 잘못되었는지 물어보십시오. 그리고 중재자로서 홍수가 없는지 확인하십시오. 그리고 이 분기에는 코드를 찾을 수 없을 정도로 케이스에 없는 문자가 너무 많습니다.

MQL4 커뮤니티에 유용할 것이라고 생각합니다.

 
hrenfx :

잘 들어, 주저하지 마. 나는 심지어 당신을 위해 코드를 주석 처리했습니다. 좋아하지 않는 것은 무엇입니까?

가격이 먼저 나옵니다. 그런 다음 바. 막대가 도착할 때쯤에는 "유형"으로 처리되지만 실제로는 처리 시 막대가 없기 때문에 고려되지 않습니다.

나는 이것을 두 번째로 반복하고 있다.

 
TheXpert :

가격이 먼저 나옵니다. 그런 다음 바. 막대가 도착할 때쯤에는 "유형"으로 처리되지만 실제로는 처리 시 막대가 없기 때문에 고려되지 않습니다.

예, 가격이 먼저 올 것이지만 새 막대 가 있을 때까지 if (PrevTime == Time[0]) 조건이 항상 트리거됩니다.

지난 10분 동안 막대를 교환하지 않고 새 막대가 나타나면 표시기가 있는 EA가 기록 교환 전에 잘못된 EMA 값을 얻게 된다는 것을 이해합니다. 결과적으로 고문은 무엇이든 할 것입니다.
 
hrenfx :


젠장, 아직 아무도 자세히 설명하지 않았습니다. 다시 물. 몇몇 사람들(MT4+MQL4는 아주 잘 알고 있음)은 내 코드가 오류와 함께 작동할 것이라고 말하지만 (내가 여러 번 요청한) 구체적인 예제 인수를 제공할 수는 없습니다. 그리고 이것은 단 10줄의 코드입니다.

정수 코드와 내 코드를 별도의 스레드로 옮기고 MQL4 프로그래머에게 코드에서 무엇이 잘못되었는지 물어보십시오. 그리고 중재자로서 홍수가 없는지 확인하십시오. 그리고 이 분기에는 코드를 찾을 수 없을 정도로 케이스에 없는 문자가 너무 많습니다.

MQL4 커뮤니티에 유용할 것이라고 생각합니다.


나는 실행 가능한 알고리즘의 논리를 주었다. 도움이되지 않았습니다. 통과하지 못해서 죄송합니다
 
hrenfx :
예, 가격이 먼저 오지만 새 막대가 있을 때까지 if (PrevTime == Time[0]) 조건이 항상 트리거됩니다.
아니요, 가격은 이미 새 막대 에 있습니다. 이것은 터미널을 켜면 완벽하게 보입니다. 처음에는 막대가 점처럼 보입니다.