[경고, 주제 닫힘!] 포럼을 어지럽히지 않도록 모든 초보자 질문. 프로, 놓치지 마세요. 당신 없이는 어디에도 없습니다. - 페이지 246

 
Vinin >> :

각각의 경우에 귀하의 결정은


대중에 대한 건설적인 비판을 위한 프로그램 코드를 알려드리겠습니다(지표 자체에 대한 건설적인 비판은 삼가해 주시기 바랍니다). 그러나 먼저 설명입니다. 이것이 TSI(진정한 강도) 지수입니다. 1일 모멘텀으로 구축되었습니다. 이러한 증분은 지수 평균(21개 기간)으로 평활화됩니다. 이제 스케일링을 추가해 보겠습니다. 이렇게 하려면 차이를 높음 - 낮음으로 취하고 동일한 지수 평균(21개 기간)으로 평활화합니다. 부드러운 기세를 부드러운 스윙으로 나눕니다. 이 비율은 짧은 지수 평균(5개 기간)으로 평활화됩니다. 우리는 주요 라인. 이제 베이스를 매끄럽게 만들어 보겠습니다. 에르고딕 라인(EMA(, 5)) 및 신호 하나를 받은 기뻐하십시오. 사실, 다시 기뻐합시다. 왜냐하면. 우리 앞에 TSI - 전형적인 추세 지표. 내 구현에는 "원"에 대해 3개의 추가 버퍼가 있으며, 이를 주 교차점으로 지정합니다. 및 신호 라인. 여러분, 스튜디오의 코드:

 //--------------------------------------------------------------------
// TSI.mq4 
// Предназначен для использования в качестве трендового индикатора
//--------------------------------------------------------------------

#property indicator_separate_window         // indicator_chart_window, indicator_separate_window
#property indicator_buffers     3           // Количество буферов
#property indicator_color1      Red         // Цвет первой линии Red Blue Lime 
#property indicator_color2      Blue        // Цвет второй линии
#property indicator_color3      Yellow
#property indicator_level1      - 20
#property indicator_level2       20
//#property indicator_minimum   -100
//#property indicator_maximum    100
 
extern int LengthMtm            = 21 ;
extern int LengthSmooth         = 5 ;
extern int LengthErgodic        = 5 ;
extern int HistoryLimit         = 2000 ;

double tsi [ ] , ergodic [ ] , cross [ ] ;           // Объявление массивов (под буферы индикатора)
double mtm [ ] , base [ ] , mtmMA [ ] , mtmS [ ] ;


//-----------------------------------------------------------------------------
int MathSgn ( double Value = 0.0 )
{
    if ( Value < 0 ) return ( - 1 ) ; else return ( 1 ) ;
}

//-----------------------------------------------------------------------------
int init ( )                         
{
    SetIndexBuffer ( 0 , tsi ) ;                                 // Назначение массива буферу
    SetIndexBuffer ( 1 , ergodic ) ;                             // Назначение массива буферу
    SetIndexBuffer ( 2 , cross ) ;                               // Назначение массива буферу
    
    SetIndexStyle ( 0 , DRAW_LINE ,        STYLE_SOLID , 1 ) ;    // Стиль линии DRAW_HISTOGRAM STYLE_SOLID
    SetIndexStyle ( 1 , DRAW_LINE ,        STYLE_SOLID , 1 ) ;    // Стиль линии        
    SetIndexStyle ( 2 , DRAW_ARROW ,       STYLE_SOLID , 0 ) ;    // Стиль линии
    SetIndexArrow ( 2 , 161 ) ;
    
    SetIndexLabel ( 0 , "TSI" ) ;
    SetIndexLabel ( 1 , "Ergodic" ) ;
    SetIndexLabel ( 2 , "Cross" ) ;
    IndicatorShortName ( "TSI(" + LengthMtm + "," + LengthSmooth + "," + LengthErgodic + ")" ) ;    
    
    ArrayResize (        mtm ,        Bars ) ;
    ArrayResize (        base ,       Bars ) ;
    ArrayResize (        mtmMA ,      Bars ) ;
    ArrayResize (        mtmS ,       Bars ) ;

    ArraySetAsSeries (   mtm ,        true ) ;
    ArraySetAsSeries (   base ,       true ) ;
    ArraySetAsSeries (   mtmMA ,      true ) ; 
    ArraySetAsSeries (   mtmS ,       true ) ;


    return ( 0 ) ;                                      
}

//-----------------------------------------------------------------------------
int start ( )                         
{    
    if ( HistoryLimit = = 0 ) HistoryLimit = Bars ;
    
    int Counted_bars            = IndicatorCounted ( ) ;
    int i                       = MathMin ( Bars - Counted_bars - 1 , HistoryLimit ) ; 
    while ( i > = 0 ) {        
     
        mtm [ i ]                  = Close [ i ] - Close [ i + 1 ] ;
        base [ i ]                 = High [ i ]  - Low [ i ] ;
        mtmMA [ i ]                = iMAOnArray ( mtm ,   0 , LengthMtm ,     0 , MODE_EMA , i ) * 100 ;
        mtmMA [ i ]               / = iMAOnArray ( base ,  0 , LengthMtm ,     0 , MODE_EMA , i ) ;
        mtmS [ i ]                 = iMAOnArray ( mtmMA , 0 , LengthSmooth ,  0 , MODE_EMA , i ) ;
        tsi [ i ]                  = mtmS [ i ] ;
        ergodic [ i ]              = iMAOnArray ( mtmS ,  0 , LengthErgodic , 0 , MODE_EMA , i ) ; 
        
        if ( MathSgn ( tsi [ i + 1 ] - ergodic [ i + 1 ] ) ! = MathSgn ( tsi [ i ] - ergodic [ i ] ) )       
            cross [ i ]           = ergodic [ i ] ;
        else
            cross [ i ]           = EMPTY_VALUE ;
        
        i - - ;                       
    }
    
    return ( 0 ) ;                          
}


항소 이유를 상기시켜 드리겠습니다. 차트에서 지표를 당기고 몇 개의 양초를 건너뛰고 동일한 양초를 하나 더 추가하면 지표 값에 불일치가 발생합니다. 또한 Expert Advisor의 시각적 테스트 중에 이 표시기가 표시되고 나중에 동일한 표시기가 차트에 추가되는 경우에도 매우 큰 불일치가 있습니다. 표시기에서 이러한 유형의 오류에 대한 기사나 개인적인 경험으로 저를 도와주시겠습니까? 고맙습니다.
 
테스터에서 정지/재생 버튼과 속도 슬라이더가 사라졌습니다. 무엇을 할까요?
 
VAM_ >> :
테스터에서 정지/재생 버튼과 속도 슬라이더가 사라졌습니다. 무엇을 할까요?

테스터의 제어판을 조금 더 높이... 마우스 왼쪽 버튼을 사용하여...

 
Dmido >> :

모두 좋은 하루 되세요)


고문이 있습니다. 그것은 큰 추세를 포착하고 좋은 장점이 있지만 토핑이 없으면 물고기 부족에 대한 단점을 간신히 덮습니다.

질문: 리필 신호를 작성하는 방법을 알려주십시오. 아이디어는 이것입니다. 첫 번째 위치에 더 많은 스탑이 있고 추세 매개변수가 추세를 표시할 때 충전합니다.


거래를 성사시키기 위해 신호를 보내는 블록 자체에 관심이 있습니다. 표준 MACD Sample Expert Advisor에서 복사한 코드를 사용합니다.

탑업 딜이 이루어지고 메인 포지션과 탑업 포지션 모두 즉시 청산되도록 수정하는 방법은 무엇입니까?


그런 다음 거래가 파리처럼 증가하고 결과적으로 천 개의 열린 거래가 포함된 성배 를 얻습니다((((


옵션으로: 고문의 작업을 실시간으로 시각적으로 모니터링하고 수동으로 보충하십시오. 그는 (예술의) 화강암이지만 성배가 아니기 때문에 ...

 
IlyaA >> :
        mtmMA [ i ]                  = iMAOnArray ( mtm ,    0 , LengthMtm ,      0 , MODE_EMA , i ) * 100 ;
        mtmMA [ i ]                / = iMAOnArray ( base ,    0 , LengthMtm ,      0 , MODE_EMA , i ) ;

mtmMA - 두 개의 다른 어레이여야 합니다. 나눌 때 불평등이 0인지 확인하는 것이 바람직합니다.


중간 계산의 경우 버퍼를 사용하는 것이 더 편리합니다.

8조각이 부족하다면 해결책 중 하나 여기 .

 
Swan >> :

mtmMA - 두 개의 다른 어레이여야 합니다. 나눌 때 불평등이 0인지 확인하는 것이 바람직합니다.


중간 계산의 경우 버퍼를 사용하는 것이 더 편리합니다.

8개가 부족하다면 해결책 중 하나 가 여기에 있습니다 .






댓글 감사합니다. 우리가 평균 고-저 차이에 대해 이야기하고 있음을 주목하십시오. 그녀는 항상 긍정적입니다. 그리고 평균은 이러한 경향을 강화합니다. 확인하고 싶었는데 잡지에서 뭔가 보이면 그런 것 같아요. 0으로 나누기 오류로 인해 다른 시간 간격으로 추가된 그래프에 불일치가 발생할 수 있다고 생각하십니까?
 
IlyaA >> :


댓글 감사합니다. 우리가 평균 고-저 차이에 대해 이야기하고 있음을 주목하십시오. 그녀는 항상 긍정적입니다. 그리고 평균은 이러한 경향을 강화합니다. 확인하고 싶었는데 잡지에서 뭔가 보이면 그런 것 같아요. 0으로 나누기 오류로 인해 다른 시간 간격으로 추가된 그래프에 불일치가 발생할 수 있다고 생각하십니까?

할 수 없습니다. 하지만 확인하는 것이 좋습니다)

불일치는 시프트 없이 배열을 사용하기 때문입니다.

 
IlyaA писал(а) >>

대중에 대한 건설적인 비판을 위한 프로그램 코드를 알려드리겠습니다(지표 자체에 대한 건설적인 비판은 삼가해 주시기 바랍니다). 그러나 먼저 설명입니다. 이것이 TSI(진정한 강도) 지수입니다. 1일 모멘텀으로 구축되었습니다. 이러한 증분은 지수 평균(21개 기간)으로 평활화됩니다. 이제 스케일링을 추가해 보겠습니다. 이렇게 하려면 차이를 높음 - 낮음으로 취하고 동일한 지수 평균(21개 기간)으로 평활화합니다. 부드러운 추진력을 부드러운 스윙으로 나눕니다. 이 비율은 짧은 지수 평균(5개 기간)으로 평활화됩니다. 우리는 주요 라인. 이제 베이스를 매끄럽게 만들어 보겠습니다. 에르고딕 라인(EMA(, 5)) 및 신호 하나를 받은 기뻐하십시오. 사실, 다시 기뻐합시다. 왜냐하면. 일반적인 추세 지표인 TSI가 있습니다. 내 구현에서는 "원" 아래에 3개의 버퍼가 더 있는데, 이를 주 교차점으로 지정합니다. 및 신호 라인. 여러분, 스튜디오의 코드:

항소 이유를 상기시켜 드리겠습니다. 차트에서 지표를 당기고 몇 개의 양초를 건너뛰고 동일한 양초를 하나 더 추가하면 지표 값에 불일치가 발생합니다. 또한 Expert Advisor의 시각적 테스트 중에 이 표시기가 표시되고 나중에 동일한 표시기가 차트에 추가되는 경우에도 매우 큰 불일치가 있습니다. 표시기에서 이러한 종류의 오류에 대한 기사나 개인적인 경험으로 저를 도와주시겠습니까? 고맙습니다.

표시등이 정상입니다. iMAOnArray()에 대한 호출이 별도의 루프에서 수행되면 설정한 시간에 관계없이 표시기가 올바르게 작동할 수 있습니다.

당신은 당신의 하나를 세 사이클로 나눌 필요가 있습니다.

iMAOnArray() 가 더 올바르게 작동합니다.

 
Swan >> :

할 수 없습니다. 하지만 확인하는 것이 좋습니다)

불일치는 시프트 없이 배열을 사용하기 때문입니다.

나는 당신이 교대 없이 무슨 말을 하는지 잘 이해하지 못합니다. 단어를 추가하십시오.

 
IlyaA >> :

나는 당신이 교대 없이 무슨 말을 하는지 잘 이해하지 못합니다. 단어를 추가하십시오.

새 막대가 나타나면 버퍼 배열이 이동합니다. 인덱스가 1 증가합니다. normal no.

자세한 내용은 위의 링크를 참조하세요.