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

 
borilunad :
왼쪽 코드를 자세히 살펴보는 것을 좋아하지 않지만 double 뒤에 함수에 &(!)가 있는 이유가 바로 눈에 들어왔습니다. 이것은 오류를 제공합니다!

글쎄요, 모두 논리적입니다. 이것은 참조로 매개변수를 전달하는 것을 의미합니다.

코드를 칠하지 않기 위해 간단히 설명하겠습니다.

3가지 함수가 있습니다:( int GetCrossingMa , int GetStochSignalint GetSignal() )

int GetSignal() 함수에서 틱 및 기타 표시기의 값을 얻습니다. 이 값은 기본이 아닌 함수( int GetCrossingMa   int GetStochSignal ) 적절한 신호를 가져옵니다. 다른 기능에서 동일한 데이터를 받지 않기 위해 이렇게 하고 싶습니다. 제 생각에는 같은 차를 2개 이상의 기능으로 계산하는 것은 합리적이지 않습니다. 한 번 계산하고 모든 것이 더 쉽습니다. 왜 이것에 추가 자원을 낭비합니까?

 
hoz :

글쎄요, 모두 논리적입니다. 이것은 참조로 매개변수를 전달하는 것을 의미합니다.

코드를 칠하지 않기 위해 간단히 설명하겠습니다.

3가지 함수가 있습니다:( int GetCrossingMa , int GetStochSignalint GetSignal() )

int GetSignal() 함수에서 틱 및 기타 표시기의 값을 얻습니다. 이 값은 기본이 아닌 함수( int GetCrossingMa   int GetStochSignal ) 적절한 신호를 가져옵니다. 다른 기능에서 동일한 데이터를 받지 않기 위해 이렇게 하고 싶습니다. 제 생각에는 같은 차를 2개 이상의 기능으로 계산하는 것은 합리적이지 않습니다. 한 번 계산하면 더 쉽습니다. 왜 이것에 추가 자원을 낭비합니까?

MKL4 이외의 언어로 프로그래밍한 적이 있습니까?

 
hoz :

내 테스트 훈련 원시 올빼미는 다음과 같습니다.

function int GetCrossingMa(double& i_maFast1, double& i_maFast2, double& i_maSlow1, double& i_maSlow2) 는 크로스오버 신호를 얻습니다.

int GetStochSignal(double& stochD1, double& stochD2, double& stochK1, double& stochK2) 함수 는 스토캐스틱에서 신호를 받습니다.

void GetMomentumSignal() 함수 는 운동량 값을 가져옵니다.

int GetSignal() 함수는 앞의 3가지 함수 뿐만 아니라 공통 신호를 받게 되는데 문제는 이것이다. int GetSignal() 함수 는 말하자면 가장 중요하고 그 안에서 메인 시그널을 얻기 때문에 틱( i_maFast1 , i_maFast2 , i _maSlow1 , i_maSlow2 )의 모든 값과 확률론( stochD1 , stochD2 , stochK1 , stochK2 )

코드 최적화 측면에서 올바른 일을 하고 있습니까?

예, 하지만 GetSignal() 함수 에서 수신된 모든 매개변수 는 해당 함수에 대한 참조로 전달됩니다.

하지만 이 지역에서

컴파일하는 동안 오류가 발생합니다.

  
왜요?

이것은 우리가 필요로 하는 바에서 신호를 검색하는 변형일 수 있습니다.

 //+---------------------------------------------------------------------------------------+
//| Проверка пересечения скользящих средних                                               |
//+---------------------------------------------------------------------------------------+
int GetCrossingMa ( int fi_Bar = 1 )
{
     double i_maFast1 = iMA ( Symbol (), i_TF, i_maFastPeriod, i_maFastShift, i_maFastMethod, 0 , fi_Bar),       // Вычисляем быстрые скользящие..
           i_maFast2 = iMA ( Symbol (), i_TF, i_maFastPeriod, i_maFastShift, i_maFastMethod, 0 , fi_Bar + 1 ),     //..средние
           i_maSlow1 = iMA ( Symbol (), i_TF, i_maSlowPeriod, i_maSlowShift, i_maSlowMethod, 0 , fi_Bar),       // Вычисляем медленные скользящие..
           i_maSlow2 = iMA ( Symbol (), i_TF, i_maSlowPeriod, i_maSlowShift, i_maSlowMethod, 0 , fi_Bar + 1 );     //..средние
//----
     if (i_maFast2 < i_maSlow2) if (i_maFast1 > i_maSlow1)             // Если быстрая скользящая пересекла медленную снизу вверх..
     return (CROSSINGTOUP);                                           //.. значит, - пересечение вверх
     if (i_maFast2 > i_maSlow2) if (i_maFast1 < i_maSlow1)             // Если быстрая скользящая средняя пересекла медленную сверху вниз..
     return (CROSSINGTODOWN);                                         //..значит, - пересечение вниз
//----
     return (CROSSINGWAIT);                                               // Ожидаем пересечения
}

//+---------------------------------------------------------------------------------------+
//| Получение сигнала от Стохастика                                                       |
//+---------------------------------------------------------------------------------------+
int GetStochSignal ( int fi_Bar = 1 )
{
     double stochD1 = iStochastic ( Symbol (), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0 , 0 , 1 , fi_Bar),     // Вычисляем значения сигнальной линии..
           stochD2 = iStochastic ( Symbol (), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0 , 0 , 1 , fi_Bar + 1 ),   //..стохастика
           stochK1 = iStochastic ( Symbol (), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0 , 0 , 0 , fi_Bar),     // Вычисляем значения главной линии..
           stochK2 = iStochastic ( Symbol (), i_TF, i_stoch_D, i_stoch_K, i_stoch_slowing, 0 , 0 , 0 , fi_Bar + 1 );   //..стохастика
//----
       if (stochD2 < stochK2) if (stochD1 > stochK1)                     // Если сигнальная линия пересекла главную снизу вверх..
       return (CROSSINGTOUP);                                           //..значит, - пересечение вверх
       if (stochD2 > stochK2) if (stochD1 < stochK1)                     // Если сигнальная линия пересекла главную сверху вниз..
       return (CROSSINGTODOWN);                                         // ..значит, - пересечение вниз
   }
//----
   return (CROSSINGWAIT);                                             // Ожидаем пересечения
}
//+---------------------------------------------------------------------------------------+
//| Получение сигнала от Моментума                                                        |
//+---------------------------------------------------------------------------------------+
double GetMomentumSignal ( int fi_Bar = 0 )
{ return ( iMomentum ( Symbol (), i_TF, i_momPeriod, 0 , fi_Bar));}
//+---------------------------------------------------------------------------------------+
//| Получение общего сигнала для входа в рынок                                            |
//+---------------------------------------------------------------------------------------+
int GetSignal ( int fi_Bar = 1 )
{
     int li_Signal;
//----
       double ld_SignalMomentum = GetMomentumSignal (fi_Bar);
       int     li_SignalStoch = GetStochSignal (fi_Bar),
             li_CrossingMA = GetCrossingMa (fi_Bar);
//----
     return (li_Signal);
}

그리고 마지막 GetSignal() 함수에서 모든 신호를 (자체적으로) "추가"합니다.

PS 표시기에서 신호를 수신하는 데 "얇은" 순간이 있습니다. 예를 들어, maSlow가 maFast 위/아래에 있다는 사실을 수정하거나 교차하는 순간을 "잡을" 수 있습니다. 접근 방식과 코드가 다릅니다.

 
Roman. :

MKL4 이외의 언어로 프로그래밍한 적이 있습니까?


약간의 진주와 PHP 비트. 그러나 그는 다른 언어에 진지하게 접근하지 않았습니다. 필요가 없었습니다. 상관이 있나?
 
hoz :

글쎄요, 모두 논리적입니다. 이것은 참조로 매개변수를 전달하는 것을 의미합니다.

코드를 칠하지 않기 위해 간단히 설명하겠습니다.

3가지 함수가 있습니다:( int GetCrossingMa , int GetStochSignalint GetSignal() )

int GetSignal() 함수에서 틱 및 기타 표시기의 값을 얻습니다. 이 값은 기본이 아닌 함수( int GetCrossingMa   int GetStochSignal ) 적절한 신호를 가져옵니다. 다른 기능에서 동일한 데이터를 받지 않기 위해 이렇게 하고 싶습니다. 제 생각에는 같은 차를 2개 이상의 기능으로 계산하는 것은 합리적이지 않습니다. 한 번 계산하고 모든 것이 더 쉽습니다. 왜 이것에 추가 자원을 낭비합니까?

설명은 명확하지만 행동은 그렇지 않습니다.
다음은 다음과 같습니다. " int GetSignal() 함수에서 틱 및 기타 표시기의 값을 얻습니다 . " 버전의 작업은 "의심스러운" 것입니다. 그러한 조치가 필요합니다.

이 코드:

   for ( int i= 1 ;i<= Bars ;i++)
   {
       double i_maFast1 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i);       // Вычисляем быстрые скользящие..
       double i_maFast2 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i+ 1 );     //..средние
       double i_maSlow1 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i);       // Вычисляем медленные скользящие..
       double i_maSlow2 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i+ 1 );     //..средние
       double stochD1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i);     // Вычисляем значения сигнальной линии..
       double stochD2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i+ 1 );   //..стохастика
       double stochK1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i);     // Вычисляем значения главной линии..
       double stochK2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i+ 1 );   //..стохастика
   }

full P.... 여기서 무슨 일이 일어나고 있는지 아십니까??? -전체 "막대 행"을 살펴 보는 것은 쓸모가 없으며주기가 끝나면 값이 변수에 남아 있습니다 ... 그런 다음 스스로 추측하십시오.

 
좋은 하루 친구! NZ MT4 거래 플랫폼을 사용하는 방법을 일반인에게 알려주세요? 플랫폼의 인터페이스를 알 수 없습니다. 시작 위치, 데모 계정을 의미합니다 . 후속 판매로 주식을 사는 방법은 무엇입니까? 버튼을 알 수 없습니다 ..
 
hoz :
약간의 진주와 PHP 비트. 그러나 그는 다른 언어에 진지하게 접근하지 않았습니다. 필요가 없었습니다. 상관이 있나?

네. 그것은 가지고 있습니다. 이 경우 " 내 의견으로는" 모든 것을 제거하십시오 (즉, 없어야 함) "합리적 이지 않음".

당신은 그것을 올바른 방법으로합니다! "추가 자원 지출 "을 포함 합니다.

교과서와 부두 외에도 BASE와 ABC 를 주의 깊게 읽으십시오. 모든 것이 정리되어 있습니다!

 
TarasBY :

설명은 명확하지만 행동은 그렇지 않습니다.
다음은 다음과 같습니다. " int GetSignal() 함수에서 틱 및 기타 표시기의 값을 얻습니다 . " 버전의 작업은 "의심스러운" 것입니다. 그러한 조치가 필요합니다.

이 코드:

full P.... 여기서 무슨 일이 일어나고 있는지 아십니까??? -전체 "막대 행"을 살펴 보는 것은 쓸모가 없으며주기가 끝나면 값이 변수에 남아 있습니다 ... 그런 다음 스스로 추측하십시오.

물론 이해합니다. 빠르고 느린 마스카라의 값과 신호선 스토캐스틱은 특정 TF의 각 막대가 닫힐 때마다 시간의 매 순간에 발견됩니다. 그런 다음 교차 지점이 그려집니다. 그렇다면 무엇이 논리적이지 않습니까?

 
Roman. :

네. 그것은 가지고 있습니다. 이 경우 " 내 의견으로는" 모든 것을 제거하십시오 (즉, 없어야 함) "합리적 이지 않음".

당신은 그것을 올바른 방법으로합니다! "이를 위해 추가 리소스 낭비 "를 포함 합니다.

교과서와 부두 외에도 BASE와 ABC 를 주의 깊게 읽으십시오. 모든 것이 정리되어 있습니다!

그래서 읽고 또 읽었습니다.

그리고 " 이 경우 모든 것을 제거하십시오 (즉, 없어야 함)"는 무엇을 의미합니까? 무엇을 청소할 것인가?

 
hoz :

그래서 읽고 또 읽었습니다.

그리고 " 이 경우 모든 것을 제거하십시오 (즉, 없어야 함)"는 무엇을 의미합니까? 무엇을 청소할 것인가?

" 같은 데이터를 다른 기능으로 받지 않도록 하고 싶습니다. 같은 타자기를 2개 이상의 기능으로 계산하는 것은 합당하지 않습니다. 한 번만 계산하면 끝입니다. 왜 여기에 추가 리소스를 사용합니까?"

문서에 쓰여진 대로 하고 바퀴를 재발명할 필요가 없습니다.

그리고 이 주기는 어떻습니까?

 for ( int i= 1 ;i<= Bars ;i++)
   {
       double i_maFast1 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i);       // Вычисляем быстрые скользящие..
       double i_maFast2 = iMA ( Symbol (),i_TF,i_maFastPeriod,i_maFastShift,i_maFastMethod, 0 ,i+ 1 );     //..средние
       double i_maSlow1 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i);       // Вычисляем медленные скользящие..
       double i_maSlow2 = iMA ( Symbol (),i_TF,i_maSlowPeriod,i_maSlowShift,i_maSlowMethod, 0 ,i+ 1 );     //..средние
       double stochD1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i);     // Вычисляем значения сигнальной линии..
       double stochD2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 1 ,i+ 1 );   //..стохастика
       double stochK1 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i);     // Вычисляем значения главной линии..
       double stochK2 = iStochastic ( Symbol (),i_TF,i_stoch_D,i_stoch_K,i_stoch_slowing, 0 , 0 , 0 ,i+ 1 );   //..стохастика
   }

단계를 직접 수행하십시오. 종료하면 어떻게 되며 다음에 무엇을 합니까? 브래드가 완성되었습니다.

교과서에서와 같이 - 거래 기준의 트리거링을 결정하기 위한 이 기능의 모든 거래 신호 는 순차적입니다(다른 기능에서 다른 신호를 래핑한 다음 이러한 거래 기준의 트리거링을 확인할 때만 작업할 수 있음), 다음 조건 그들의 방아쇠.

여기에서 읽으십시오:

" 소프트웨어 솔루션

초보자는 어디서부터 시작해야 할까요?
마지막 프랙탈의 가격을 찾는 방법은 무엇입니까?
두 MA의 교차 신호를 얻는 방법은 무엇입니까?
필요한 불일치가 주어지면 MA의 교차를 확인하는 방법은 무엇입니까? "