[ARCHIVE] 포럼을 어지럽히 지 않도록 초보자 질문. 프로, 놓치지 마세요. 너 없이는 아무데도 - 5. - 페이지 404

 
hoz :
1. 글쎄, 새로운 데이터가 도착하면 이것이 우리에게 필요한 것입니다. 그렇지 않습니까?
2. 네, 0번째 막대의 데이터가 필요합니다. 네. MarketInfo()는 그렇지 않으면 0번째 막대에서 데이터를 가져옵니다. 그렇다면 왜 그것들을 무언가와 비교합니까?

3. 글쎄, 기록에 구멍이 있더라도 이것은 현재 계산에 어떤 식 으로든 영향을 미치지 않습니다. 그리고 그것은 구멍이 있는 순간에 반영될 것입니다. 저것들. 현재 Ask를 얻으면 몇 막대 전에 가격이 얼마였습니까? (공식적으로는 아니지만 특정 시장 변수와 관련된 현재 순간과 관련하여 0번째 막대의 시간이 완전히 정당화됩니다!

물론 깊이 파고 들었지만 어떻게 행동하는 것이 가장 좋은지 이해하고 싶습니다.

4. Vadim은 위에서 함수를 잘못 작성했다고 말했습니다. 다음 행을 추가하여 다시 복제하겠습니다.

 double fGet_TradePrice( int fi_price,       // Цена: 0 - Bid; 1 - Ask
                       string fs_symbol)   // валютная пара
{
 double ld_price = 0.0 ;
   
switch (fi_price)
 {
   case 0 :
   {
     if (fs_symbol == Symbol ())
     {
       RefreshRates(); // Зачем этот тормоз без обработки возвращаемого значения?
      ld_price = Bid;
     }
     else ld_price = MarketInfo(fs_symbol, MODE_BID); // <-- Этого достаточно.
   } 
   case 1 :
   {
     if (fs_symbol == Symbol ())
     {
       RefreshRates(); // Зачем этот тормоз без обработки возвращаемого значения?
      ld_price = Ask;
     }
     else ld_price = MarketInfo(fs_symbol, MODE_ASK); // <-- Этого достаточно.
   }
 }
if (ld_price != 0 ) return (ld_price); // Некорректно! Что функция будет возвращать, если цена равна нулю?
}

당신의 생각에는 무엇이 문제입니까?

1. 데이터가 수신되지 않은 상태에서 동시에 모든 데이터가 있지만 그것에 대해 아무것도 모른다면? FALSE를 반환합니다. 어떻게 평가할 것인가? 데이터가 부족하거나 오류가 있습니까? 아니면 데이터가 있습니까?
2. 1번 항목의 문제를 해결하기 위해서는 확인이 필요합니다.
3. 프로세스의 역학을 고려하지 마십시오. 컴퓨터, 단말기를 켰다. 모든 데이터가 온 것 같습니다. 모든 것이 제로 바에 수렴되었습니다. 신호를 찾았습니다. 거래가 완료되었습니다. 모든 데이터가 오지 않은 것으로 나타났습니다. 5분 후 누락된 막대에 1,2,3,4,5라는 숫자가 표시되었습니다. 신호가 사라졌습니다. 무엇을 할까요?

4. 빨간색 표시. 라디오 버튼에서 잘못된 식별자를 선택하는 오류는 아직 처리되지 않았습니다. 위와 같이 작성했습니다.

결과를 기다리지 않고 RefreshRates()를 호출하는 것은 쓸모가 없습니다. 오랫동안 실현되지 않을 수 있습니다.

 
여러분, 안녕하세요. 질문이 있습니다. 저는 여러 계좌(한 DC에 두 개, 다른 한 개에 한 개)로 거래하기 때문에 매우 편리한 Best copyer를 사용합니다. 어떤 해도의 하나의 계정(수출자)에 설치되고 다른 계정(수입자)에 복사되며 이 어드바이저도 하나의 차트에 설치됩니다(수입자의 여러 차트에 올려 놓으면 동일한 수의 주문이 열립니다. ). 한 번은 DC 중 하나에서 작업을 확인하고 데모 계정을 설정하려고 할 때) 좋은 순간에 자연스럽게 여러 차트에 설치되고 자연스럽게 같은 수의 주문이 열렸습니다. 그런 다음 나는 이것이이 DC 터미널의 결함이라고 생각하여 이것을 중요하게 생각하지 않았습니다. 그 후 위의 계좌로 오랫동안 거래를 했는데 이런 일이 없었습니다. 그러나 어제 뉴스 릴리스 기간 동안 계정 중 하나에서 비슷한 상황이 반복되었습니다 (수출자가 설치된 계정이 아닌 다른 DC의 계정)-어드바이저는 6 차트에 자발적으로 설치되었지만 가장 흥미로운 한 쌍에 대해 16개의 주문이 열렸습니다. 왜 이런 일이 일어나고 그 이유는 무엇입니까? EA 자체의 단점인가요 아니면 다른 이유인가요? 이 문제를 해결할 수 있는 방법이 있습니까? 일찍 주셔서 감사합니다.
 
// Зачем этот тормоз без обработки возвращаемого значения?

누가 그런 질문을 합니까?
 
hoz :

당신의 생각에는 무엇이 문제입니까?


그녀는 틀리지 않았다, 그녀는 단지 막연하다.

종결:

 if (ld_price != 0 )
return (ld_price); 

ld_price = 0이면 함수는 자체적으로 0을 반환합니다. 따라서 검증이 필요하지 않습니다.

분석 내용은 다음과 같습니다.

 if (fs_symbol == Symbol ())
         {
             RefreshRates();
             ld_price = Bid;
         }
         else
             ld_price = MarketInfo(fs_symbol, MODE_BID);

또한 필요하지 않습니다. 모든 경우에 MraketInfo()를 사용할 수 있습니다.

결국 함수는 가장 순수한 형태의 MarketInfo() 함수로 바뀝니다(불필요한 것을 모두 제거하면).

 

원칙적으로 이론적으로 다음 위치가 정확합니다.

RefreshRates();
ld_price = Bid;
RefreshRates();
ld_price = Ask;

RefreshRates() 함수가 반환하는 내용은 중요하지 않습니다. Ask 및 Bid 변수에 터미널에 알려진 마지막 값이 포함되어 있어야 합니다.

 

안녕하세요!

한 명의 Expert Advisor에 대해 테스터가 제공한 다른 결과의 이유는 무엇입니까?

테스트 기간, 통화 쌍 및 기간은 동일하지만 오늘 얻은 결과가 이전 결과와 매우 다르기 때문에 고문은 롱 포지션 개설을 중단했습니다.

터미널의 따옴표가 탓인지 쉬는 날인지 모르겠습니다. 뻔한 이유를 아는 사람들이 눈을 뜨게 해주지 않을까?

 
skyjet :

안녕하세요!

한 명의 Expert Advisor에 대해 테스터가 제공한 다른 결과의 이유는 무엇입니까?

테스트 기간, 통화 쌍 및 기간은 동일하지만 오늘 얻은 결과가 이전 결과와 매우 다르기 때문에 고문은 롱 포지션 개설을 중단했습니다.

터미널의 따옴표가 탓인지 쉬는 날인지 모르겠습니다. 뻔한 이유를 아는 사람들이 눈을 뜨게 해주지 않을까?


연속으로 수행되는 두 가지 테스트조차도 다를 수 있으며 매우 눈에 띄게 나타납니다. 브로커는 스프레드를 변경하고 테스트는 다른 스프레드로 진행합니다. 한 점의 변화면 충분합니다.

이전 테스트가 오래 전이라면 설정이 풀렸을 수 있습니다.

 
Zhunko :

1. 데이터가 수신되지 않은 상태에서 동시에 모든 데이터가 있지만 그것에 대해 아무것도 모른다면? FALSE를 반환합니다. 어떻게 평가할 것인가? 데이터가 부족하거나 오류가 있습니까? 아니면 데이터가 있습니까?

나는 당신을 이해하지 못합니다. 순서대로 가자... 우리 는 RefreshRates()를 호출 하는데 데이터가 도착하지 않았다. 하지만 데이터는 거기에 있다. 어설프게 나옵니다. 데이터가 수신되지 않은 경우 사용할 수 없거나 데이터가 단순히 업데이트되지 않았습니다. 시장 변수는 변하지 않았어... 2가지 선택지가 있다.

RefreshRates() 를 호출한 후 TRU를 반환했다면 데이터가 업데이트된 것입니다. FELS가 반환되면 업데이트되지 않은 것입니다. 일종의 오류이거나 업데이트되지 않았습니다. 데이터가 최신이므로 업데이트할 필요가 없습니다.

따라서 내가 이해한 대로 다음과 같이 간주할 수 있습니다. RefreshRates() 는 데이터를 확인합니다. 데이터가 새롭지 않으면 새롭지 않은 데이터를 업데이트하지 않습니다. 즉, 변경되지 않았으며 새로운 경우 업데이트됩니다. 즉 , RefreshRates() 함수에서 반환된 플래그에만 의존할 수 있습니다. 다른 옵션이 있습니까?

쥰코 :

2. 1번 항목의 문제를 해결하기 위해서는 확인이 필요합니다.

당신은 다음과 같이 말했습니다.

막대가 0인 서버(MarketInfo())의 데이터를 확인합니다. 나는 그들이 동일하기를 기다리고 있습니다.

글쎄요, MarketInfo()는 이미 제로 바에서 당기고 있습니다... 위의 단어는 무엇을 의미합니까?

쥰코 :

3. 프로세스의 역학을 고려하지 마십시오. 컴퓨터, 단말기를 켰다. 모든 데이터가 온 것 같습니다. 모든 것이 제로 바에 수렴되었습니다. 신호를 찾았습니다. 거래가 완료되었습니다. 모든 데이터가 오지 않은 것으로 나타났습니다. 5분 후, 누락된 막대에는 숫자 1,2,3,4,5가 표시되었습니다. 신호가 사라졌습니다. 무엇을 할까요?

다시 새로 고칩니다. 하지만 그런 다음 RefreshRates() 를 호출하면 데이터가 천천히 업데이트되는 순간이 발생합니다. 저것들. 계산의 일부는 일부 시장 데이터로 이루어지고 일부는 다른 데이터로 이루어집니다. 그러면 어떻게 될까요?

쥰코 :

4. 빨간색 표시. 라디오 버튼에서 잘못된 식별자를 선택하는 오류는 아직 처리되지 않았습니다. 위와 같이 작성했습니다.

결과를 기다리지 않고 RefreshRates()를 호출하는 것은 쓸모가 없습니다. 오랫동안 실현되지 않을 수 있습니다.

흠. 글쎄요, 예상대로 견적이 바뀔수도.. 양쪽에 막대기가 있나요?

새로 고침(); // 왜 반환값을 처리하지 않고 제동을 합니까?

몇 번이고 말씀하시지만 구체적인 내용은 없습니다. 저것들. 이 함수가 일반적으로 어떻게 사용되는지 알 수 있는 한 시장 데이터 변수를 사용하는 코드 이전에는 너무 간단합니다. 그들은 특별히 신경쓰지 않습니다. 하지만 나는 생각했고, 그것을 마음에 가져오는 방법을 알아내기로 결정했습니다. 이러한 접근 방식이 실제로 정확하고 모든 정상적인 조건에서 작동하는지 확실히 알아야 합니다.

그래서 Vadim , 이 표현은 무엇을 의미합니까?

"

리턴값을 처리하지 않고 브레이크를 밟는 이유는 무엇입니까?"

어떻게 처리할 수 있습니까? 위에 제 논리를 썼는데 답변을 못받았습니다. 매우 정확하고 옵션이 없는 것처럼 설명됩니다.

 
Integer :


그녀는 틀리지 않았다, 그녀는 단지 막연하다.

종결:

 if (ld_price != 0 )
     return (ld_price); 

ld_price = 0이면 함수는 자체적으로 0을 반환합니다. 따라서 검증이 필요하지 않습니다.

갑자기 왜 그럴까요? 여기에 else를 통해 함수가 "가격 없음"이라고 표시되는 다른 값을 반환했음을 추가하기만 하면 됩니다. 그 과정에서 논리적입니다. 함수를 던졌을 때 나는 이전 논리에 대해 더 많이 생각한 다음 그 끝에는주의를 기울이지 않았습니다. 그리고 함수 0이 자체적으로 무언가를 반환하는 이유는 이해가 되지 않습니다...
정수 :


분석 내용은 다음과 같습니다.

 if (fs_symbol == Symbol ())
{
    RefreshRates();
    ld_price = Bid;
}
else
    ld_price = MarketInfo(fs_symbol, MODE_BID);

또한 필요하지 않습니다. 모든 경우에 MraketInfo()를 사용할 수 있습니다.

결국 함수는 가장 순수한 형태의 MarketInfo() 함수로 바뀝니다(불필요한 것을 모두 제거하면).


당신이 항상 MarketInfo(fs_symbol, MODE_ASK)를 사용할 수 있다면 왜 전혀 묻지 않습니까(구체적으로 구매 가격에 대해 이야기한다면)? 결국 그런 표정을 짓다가 Ask로 넘어가면 주어진 시간에 맞는지 확신이 서지 않습니까?
 
Integer :

RefreshRates() 함수가 반환하는 내용은 중요하지 않습니다. Ask 및 Bid 변수에 터미널에 알려진 마지막 값이 포함되어 있어야 합니다.


실제로 우리는 내가 이해하는 한 다른 것이 필요합니다. 그리고 로컬 터미널이 아닌 최신 Ask and Bid 서버가 필요합니다. 그렇습니까?

그래서 여기에서 토론을 구성하는 것이 더 논리적이고 정확한 방법을 한 번에 이해하기 위해 토론을 시작했습니다. 이론상 맞는 말이지만 실제론...