전략이 필요한 사람은 누구입니까? 많은 무료 - 페이지 61

 
Stellarator >> :

세차하러 온 친구들...

잘 ...

그들은 그것이 위기라고 말한다.

 

모든 문제를 해결할 때까지 하나씩 비교를 시작해야 합니다.

여기에서 FSB Accelerator Oscillator를 MT iAC (..)와 비교했습니다.



방법:

1. FSB의 환율을 MT에서 사용되는 현재 환율로 업데이트합니다. (MT Ctrl+S 에서 xxxxxx.csv 파일을 FSB ./Data 디렉토리에 저장합니다. 데이터가 다른 폴더에 있는 경우 - FSB의 Market -> Data Directory 를 사용하여 가리킵니다.)

2. 원하는 지표를 인쇄하는 Indicator_Values.mq4 스크립트를 만듭니다. (스크립트는 이전 포럼 페이지에 있습니다.)

3. FSB에서 이 표시기를 설정합니다. (동일한 매개변수를 사용해야 합니다.) 내보내기 -> 표시기 기능으로 FSB 표시기를 내보냅니다.

4. 차이점이 보이면 신고해 주세요.


행운을 빌어요!


----------

편집하다:

최신 FSB v2.8.3.5 베타 를 사용하십시오.

 
Miroslav_Popov >> :

고전적인 공식은 다음과 같습니다. 모멘텀(n) = 종가 - 종가(n)

이것은 FSB가 사용하는 공식입니다.

MT 사용: 모멘텀(n) = 100 * 종가 / 종가(n)

나는 이것을 알고 있다.지표 매개변수를 의미했다. 평활 기간. 평활화 방법. 결국, 우리는 그것을 묻지 않습니다. 기본적으로 사용되는 매개변수: 0.0?

 

안녕하세요 zfs님


표시기 매개변수 대화 상자 창에서 기본 매개변수를 볼 수 있습니다. ( 기본값 누르기)



"추가 평활화" 기간 = 0에 유의하십시오. 이는 평활화가 적용되지 않음을 의미합니다.


기본값을 볼 수 있는 두 번째 위치는 소스 코드입니다.


         /// <summary>
         /// Sets the default parameters for the designated slot type
         /// </summary>
         public Momentum ( SlotTypes slotType )
         {
            sIndicatorName   = "Momentum" ;
            parameters       = new IndicatorParam ( ) ;
            component       = new IndicatorComp [ ] { } ;
            bSeparatedChart = true ;
            bIsCalculated   = false ;

             // The indicator name
            parameters . IndicatorName = sIndicatorName ;

             // The slot type
            parameters . SlotType = slotType ;

             // The ComboBox parameters
            parameters . ListParam [ 0 ] . Caption   = "Logic" ;
            parameters . ListParam [ 0 ] . ItemList = new string [ ]
             {
                 "The Momentum rises" ,
                 "The Momentum falls" ,
                 "The Momentum is higher than the Level line" ,
                 "The Momentum is lower than the Level line" ,
                 "The Momentum crosses the Level line upward" ,
                 "The Momentum crosses the Level line downward" ,
                 "The Momentum changes its direction upward" ,
                 "The Momentum changes its direction downward"
             } ;
            parameters . ListParam [ 0 ] . Index     = 0 ;
            parameters . ListParam [ 0 ] . Text     = parameters . ListParam [ 0 ] . ItemList [ parameters . ListParam [ 0 ] . Index ] ;
            parameters . ListParam [ 0 ] . Enabled   = true ;
            parameters . ListParam [ 0 ] . ToolTip   = "Logic of application of the indicator." ;

            parameters . ListParam [ 1 ] . Caption   = "Smoothing method" ;
            parameters . ListParam [ 1 ] . ItemList = Enum . GetNames ( typeof ( MAMethod ) ) ;
            parameters . ListParam [ 1 ] . Index     = 0 ;
            parameters . ListParam [ 1 ] . Text     = parameters . ListParam [ 1 ] . ItemList [ parameters . ListParam [ 1 ] . Index ] ;
            parameters . ListParam [ 1 ] . Enabled   = true ;
            parameters . ListParam [ 1 ] . ToolTip   = "The Moving Average method used for smoothing the Momentum value." ;

            parameters . ListParam [ 2 ] . Caption   = "Base price" ;
            parameters . ListParam [ 2 ] . ItemList = Enum . GetNames ( typeof ( BasePrice ) ) ;
            parameters . ListParam [ 2 ] . Index     = 3 ;
            parameters . ListParam [ 2 ] . Text     = parameters . ListParam [ 2 ] . ItemList [ parameters . ListParam [ 2 ] . Index ] ;
            parameters . ListParam [ 2 ] . Enabled   = true ;
            parameters . ListParam [ 2 ] . ToolTip   = "The price the Momentum is based on." ;

             // The NumericUpDown parameters
            parameters . NumParam [ 0 ] . Caption = "Period" ;  <----- Parameter Name
            parameters . NumParam [ 0 ] . Value   = 10 ;        <----- Default Value
            parameters . NumParam [ 0 ] . Min     = 1 ;
            parameters . NumParam [ 0 ] . Max     = 200 ;
            parameters . NumParam [ 0 ] . Enabled = true ;
            parameters . NumParam [ 0 ] . ToolTip = "The period of Momentum." ;
 
            parameters . NumParam [ 1 ] . Caption = "Additional smoothing" ; <----- Parameter Name 
            parameters . NumParam [ 1 ] . Value   = 0 ;        <----- Default Value
            parameters . NumParam [ 1 ] . Min     = 0 ;
            parameters . NumParam [ 1 ] . Max     = 200 ;
            parameters . NumParam [ 1 ] . Enabled = true ;
            parameters . NumParam [ 1 ] . ToolTip = "The period of additional smoothing." ;

            parameters . NumParam [ 2 ] . Caption = "Level" ;  <----- Parameter Name
            parameters . NumParam [ 2 ] . Value   = 0 ;        <----- Default Value
            parameters . NumParam [ 2 ] . Min     = - 100 ;
            parameters . NumParam [ 2 ] . Max     = 100 ;
            parameters . NumParam [ 2 ] . Point    = 4 ;
            parameters . NumParam [ 2 ] . Enabled = true ;
            parameters . NumParam [ 2 ] . ToolTip = "A critical level (for the appropriate logic)." ;

             // The CheckBox parameters
            parameters . CheckParam [ 0 ] . Caption = "Use previous bar value" ;
            parameters . CheckParam [ 0 ] . Checked = Data . Strategy . PrepareUsePrevBarValueCheckBox ( slotType ) ;
            parameters . CheckParam [ 0 ] . Enabled = true ;
            parameters . CheckParam [ 0 ] . ToolTip = "Use the indicator value from the previous bar." ;
         }
 
Miroslav_Popov >> :

안녕하세요 zfs님

원칙적으로 나는 당신의 결점을 의심하지 않았습니다. 사실 이 모든 것에도 불구하고 지표의 최종 값은 나와 일치하지 않습니다. 아니면 일치하지 않았습니까? 불행히도 지금 확인할 시간이 없습니다.

 

ZFS,

Stellarator 의 도움으로 FSB의 많은 문제를 수정했습니다. 또한 MT에서 FSB의 기본 매개 변수를 이와 같이 변경했습니다. 나는 대부분의 차이점이 이미 수정되기를 바랍니다.


가능한 버그를 보고하는 것을 주저하지 마십시오. 모든 피드백과 비판은 높이 평가됩니다.

 
Stellarator >> :

강제로 설득! 핵심 뉘앙스는 "Expert Advisor의 1회 반복의 한계"입니다. 따라서 이 한도 내에서 표시기는 한 번(첫 번째 호출 시) 계산됩니다! 100% 자신있게 선언합니다. 모든 추가 호출은 시작하지 않고 단순히 필요한 버퍼에서 필요한 값을 가져옵니다. 변경되지 않은 입력 매개변수가 있는 100% 조건(버퍼 및 오프셋 제외). 이 규칙은 하나의 기호 내 계산에 유효합니다. 하지만 iCustom이 다른 TF 및 도구로 전환하더라도 원칙은 유지된다고 생각합니다.


질문은 주제에서 벗어났습니다. 나는 0번째 막대에서 현재 분의 표시기 값에 대해 표시기를 240번 호출하는 Expert Advisor를 작성하여 도취되었습니다. 저것들. 출력에서 우리는 항상 첫 번째 값을 가집니다. 확인하십시오. 그렇지 않으면 이것은 저에게 새로운 소식입니다.

 
zfs >> :

질문은 주제에서 벗어났습니다. 나는 0번째 막대에서 현재 분의 표시기 값에 대해 표시기를 240번 호출하는 Expert Advisor를 작성하여 도취되었습니다. 저것들. 출력에서 우리는 항상 첫 번째 값을 가집니다. 확인하십시오. 그렇지 않으면 이것은 저에게 새로운 소식입니다.

Expert Advisor는 새로운 틱마다 다시 시작되며 이것은 각각 다른 반복이며 표시기 값이 다릅니다.

 
rider >> :

EA는 새로운 틱마다 다시 시작되며 이것은 다른 반복이므로 표시기 값이 달라집니다.

"이전 막대 값 사용" 매개변수를 올바르게 사용하면 표시기의 현재 막대 값이 필요하지 않습니다.

일간 차트에서 우리를 MA(단순, 12, 종가)라고 가정해 보겠습니다. 이 MA를 올바르게 계산하려면 12개 막대의 종가가 필요합니다.

현재가 오후 3시인 경우 현재 "종가" 가격은 바의 실제 종가가 아닙니다. 12시까지 변경됩니다. 따라서 현재 막대에 MA를 사용하면 실제 종가가 포함되지 않고 일시적인 가격이 포함됩니다. 동시에 백 테스트는 역사적 막대의 실제(이미 고정된) 종가를 사용합니다. 이 관행은 백테스트와 실제 거래 사이에 차이를 가져올 것입니다.


더 나쁜:

두 MA가 모두 종가를 기반으로 하는 논리 규칙 "A FastMA가 SlowMA 위로 간다"를 봅시다.

하루 동안 시장이 빠르게 상승하면 FastMa는 SlowMA를 넘어 매수 신호가 될 것입니다. 신호에 따라 매수하게 됩니다. 거래 후 시장이 하락하고 너무 낮게 마감되면 FastMA가 느린 것 아래로 이동합니다. 문제가 보이나요? 바가 마감되기 전에 이미 구매하셨습니다. 나중에 이 전략을 백테스트하면 이 막대 내에서 그러한 구매 신호가 없음을 알 수 있습니다. 그리고 뭐? 백테스터를 비난하겠지만 문제는 잘못된 전략 논리에 있습니다.


Forex Strategy Builder는 "이전 막대 값 사용" 매개변수를 자동으로 설정하여 이러한 논리적 오류로부터 사용자를 보호합니다. FSB는 백 테스팅을 위해 변경(아직 수정되지 않음) 표시기를 사용하지 않습니다. 그리고 그 논리에서 전략이 사용하지 않는 경우 EA가 모든 틱에 대해 지표를 계산해야 하는 이유입니다. 막대당 하나의 계산으로 충분합니다.

- 지표가 시가를 사용하는 경우 - 계산은 시가 기준이어야 합니다.

- 지표가 종가, 고가, 저가 또는 가격 조합을 사용하는 경우 - 계산은 종가에서 이루어져야 합니다.

 

모두 좋은 저녁!


주말동안 컴퓨터도 없이 방치되었어요 :(.. 그리고 오늘은 그냥 일이 있어서 할게 없었어요... 뭐 그런 ...

하지만 생각할 시간이 있었다. 그리고 (잘하면) - 전략적으로 결정되었습니다(지표 프레임워크 측면에서).

일반적으로 지금부터 지표의 내부 구조는 비슷할 것입니다(나중에 설명하겠습니다, 아마도 내일). 외부(매개변수)에서 "튀어나온" 것 - FSB에 최대한 가깝습니다. 저것들. 숫자, 값(및 경계) 및 정의한 기능 - 음... 거의 일대일 :). 미시적인 뉘앙스가 남아 있지만 우리는 그 과정에서 이것을 결정할 것입니다.


지금까지 아주 간략하게 (나는 이미 자러 갈 예정이다, 내일이나 모레 나는 여기에 없을 것이다, 아마도 일을 위해 많은 일들이 계획되어 있을 것이다) ("우리 사랑하는" RSI의 예를 사용하여) : 디):

1. 옵션:

 // -------- Indicator parameters
extern int      slotType = SLOT_TYPE_OPENFILTER ; // SLOT_TYPE_LC
extern int      indLogic = INDICATOR_RISES ;        // INDICATOR_RISES <= indLogic <= INDICATOR_CHANGES_DIR_DOWNWARD
extern int      maMethod = MA_METHOD_SMOOTHED ;    // MA_METHOD_SIMPLE <= maMethod <= MA_METHOD_SMOOTHED
extern int      basePrice = BASE_PRICE_CLOSE ;      // BASE_PRICE_OPEN <= basePrice <= BASE_PRICE_WEIGHTED
extern int      iPeriod   = 14 ;                    // 1 <= iPeriod <= 200
extern int      dLevel   = 30 ;                    // 0 <= dLevel <= 100
extern bool     iPrvs     = True ;                  // True / False




나는 모든 것이 그림 등에서 다소간 명확하다고 생각합니다. 어려움을 일으킬 수 있는 유일한 것: slotType , resp. 해당 값(FSB와 다를 수 있지만 이 경우 기본 사항은 아님):

 // Slot Types
#define  SLOT_TYPE_OPEN                   0  // Point of the Position
#define  SLOT_TYPE_CLOSE                  1  // Point of the Position
#define  SLOT_TYPE_OPENFILTER             2  // Logic Condition
#define  SLOT_TYPE_CLOSEFILTER            3  // Logic Condition

그럼 간단합니다. 숫자 값은 있는 그대로 제공됩니다. ComboBoxes의 값은 배열과 같이 0부터 번호가 매겨집니다. 계정에서 선택한 것(0부터 시작) - 그런 다음 매개변수에서 숫자를 설정합니다.

평활화 방법 및 가격 상수의 수치적 가치는 MT와 다릅니다 (오랫동안 생각했지만 FSB와의 호환성을 위해 고정 관념에서 벗어나기로 결정했습니다 :) ). 사실 이 모든 것은 나중에 전문가 공백(또는 사용자가 직접 작성하는 것)이 표시기를 쉽게 "끌어올" 수 있고 강제적이지 않도록 하기 위해 수행되었습니다. )). 거친:

이중 dRSI = iCustom(NULL, 0, "-FSB-RSI", 2, 0, 3, 3, 14, 30, 1 , 0, 0);

위의 예의 경우.


2. 반환 값:

각 지표의 처음 두 지표 버퍼는 포지션 개시 가격(각각 롱/숏) 또는 논리적 조건(1.0 - 예 / 기타 값 - 아니오)을 위해 예약되어 있습니다. 다음은 지표 자체의 값입니다(누군가에게 관심이 있는 경우).


처음 두 버퍼의 내용은 표시기의 논리( slotTypeindLogic )(즉, 다시 한 번 - 가격 또는 1/0이 있음)에 의해 결정됩니다(다른 값은 0뿐만 아니라 (일반적인 경우 - 표시기에 대한 값이 없기 때문에 EMPTY_VALUE 가 있을 수 있음).


모든 지표는 IndicatorCounted()를 고려하여 최적화되었습니다(이것은 대체로 원래 코드의 주요 변경 사항입니다)(일반적으로 지표 값을 다시 계산해야 한다는 사실에 대해 Miroslav는 옳습니다. ​바당 한 번(다시 말하지만 일반적인 경우에는... ;))). 그러나 올바른 시각적 표시를 위해서는 일반적으로 (좋은 톤) ... 일반적으로 너무 느려서는 안됩니다.


그래픽 개체는 (불필요한 버퍼를 차지하지 않도록) 유색 및 유사한("특히 재능 있는" :)) 표시기를 그리는 데 사용됩니다. 나는 그것을 직접 테스트했습니다 - 그것은 꽤 잘 작동합니다(시각적 디스플레이에서는 표시기 버퍼를 통한 것보다 분명히 느리지만 중요하지 않으며 iCustom이 호출될 때 그래픽 기능이 전혀 호출되지 않으므로 "초과"가 영향을 미치지 않아야 한다고 생각합니다. 특히 속도).


지금은 그게 전부입니다. Miroslav에 대한 몇 가지 질문이 축적되었지만 더 이상 힘이 없습니다. :) 내일 질문하려고 노력할 것입니다 (그러나 이미 말했듯이 점프 할 것입니다) ...


ps 아카이브에서 파일을 전송하기 전에 Experts\Indicators\ 폴더에서 fsb*.mq4 파일을 삭제하십시오. 나머지는 오래된 것 위에 다시 작성하면 됩니다. 이제부터 파일 명명 규칙은 변경되지 않습니다(모든 표시기에는 " -FSB- "가 접두사로 붙습니다).

파일:
experts_1.rar  148 kb