성배를 찾아서... - 페이지 9

 
Hoper23 >> :
문제는 작업의 목적은 매우 명확하지만 테스터 옵티마이저의 내장 배열 기능에 아직 익숙하지 않기 때문에 MQL 언어로 구현 가능성이 모호해 보인다는 것입니다. 이제 MQL에서 사용자 설명서를 다시 읽으려고 하지만 여전히 이 블록을 찾을 수 없습니다. 하지만 핵심에서 자체 제작한 최적화 프로그램은 자신감을 불러일으키지 않는 것이 아니라 약간 이해하기 어려울 뿐입니다. 거기에는 변수가 어떻게 든 엉망이되고 주석이 없으며 이전에 제안 된 링크와 실행 가능한 버전이 근본적으로 다릅니다. 어렵지 않다면, 19개 매개변수를 모두 입력하고 결과를 자동 고칠 수 있도록 현재의 최적화 프로그램에 대한 귀하의 관점을 설명하십시오.

프로그래머에게 이런 말을 듣는 것은 이상하지만 선반에 올려 놓을 것입니다 (씹지 말고).

1. N개의 입력 매개변수가 있는 함수가 있다고 가정합니다.

함수(n1,n2,..,n19);

2. 매개변수

n1은 n1Step 단위로 n1Min에서 n1Max로 변경됩니다.

....

n19는 n19Step 단계에서 n19Min에서 n19Max로 변경됩니다.


다음이 필요합니다.

- 모든(선형 방법의 경우) 들어오는 매개변수를 열거하거나 전체가 아닌(빠른 수렴 방법의 경우) 들어오는 매개변수를 열거합니다.

빠르게 수렴하는 방법에는 여러 가지가 있으며 그 중 하나가 유전 알고리즘입니다.

- 매개변수의 새 배치를 입력으로 제공할 때마다 함수의 출력에서 함수 실행 결과를 얻습니다.

- 이 결과를 분석하기 위한 블록을 작성해야 합니다.

좋은.

제가 알기로는 분석 블록에 어려움을 겪고 계십니다. 함수를 작성하는 방법이나 방법을 모르는 경우

들어오는 매개 변수를 정렬하면 이것은 나를 위한 것이 아니라 일부 프로그래밍 과정이나 씹는 것을 좋아하는 사람들을 위한 것입니다.

프로그래밍의 기본.

구문 분석 블록은 무엇을 합니까?

1. 분석하고자 하는 가장 오래된 막대 BAR_Y를 취하고 현재 Y의 데이터를

기능. 저것들. 귀하의 함수는 BAR_Y가 TimeCurrent라고 생각합니다.

2. 이제 Function(n1,n2,..,n19)이 막대 0에 있는 경우 사용하는 만큼의 막대를 기록 깊이에서 가져옵니다.

그리고 우리는 어떤 결과를 얻습니다.

예를 들어, 귀하의 전략은 iMA3,iMA2,iMA1의 극값을 찾고 있습니다. 그러면 iMA_Y+2,iMA_Y+1,iMA_Y가 있습니다.

이것이 극점이면 중지하고, 그렇지 않으면 Y ++를 수행합니다.

확인. 우리는 위치 t에서 극점을 찾았습니다. iMAt+2,iMAt+1,iMAt

3.이제 TP 또는 SL이 작동하는지 계산해야 합니다.

저것들. 점 t에서 막대 t-1을 줄이는 방향으로 나아가고 Open[t]에서 High[t] 및 Low[t]까지의 거리를 분석합니다.

그런 다음 Open[t]에서 High[t-1]로 그리고 Low[t-1]로, TP 또는 SL이 오지 않았다면 계속 진행하십시오. 작동할 때까지 t-2를 계속 사용하십시오.

TP 또는 SL 또는 둘 다.

여기에서 Function(n1,n2,..,n19)에 대한 첫 번째 조건을 찾았습니다.

우리는 결과를 저장합니다

그런 다음 t--를 수행하고 막대 0까지 분석 작업을 수행합니다.

4.Y를 이동하고 이 과정을 반복합니다.

따라서 현재 순간까지 Function(n1,n2,..,n19) 함수의 모든 작업을 찾습니다.

5. 우리는 현재 순간을 분석하고 과거에 비슷한 상황이 있었는지, 어떻게 끝났는지 확인합니다.

6. 결과를 저장합니다.

7. Function(n1,n2,..,n19)에 대한 다음 매개변수 n1,,n19 세트를 사용하여 확인합니다.

8. 매개변수가 다 떨어질 때까지 반복합니다.

9. 우리는 최적의 매개변수 세트 또는 여러 세트를 선택하고 권장 사항에 따라 BUY, SELL 또는

우리는 아무것도하지 않습니다.

그게 다야.

정말 어렵기 때문에 힘들길 바랍니다.


 
Hoper23 >> :
문제는 작업의 목적은 매우 명확하지만 테스터 옵티마이저의 내장 배열 기능에 아직 익숙하지 않기 때문에 MQL 언어로 구현 가능성이 모호해 보인다는 것입니다. 이제 MQL에서 사용자 매뉴얼을 다시 읽으려고 하지만 여전히 이 블록을 찾을 수 없습니다. 하지만 코어에서 자체 제작한 최적화 프로그램은 자신감을 불러일으키지 않는 것이 아니라 약간 이해하기 어려울 뿐입니다. 거기에는 변수가 어떻게 든 엉망이되고 주석이 없으며 이전에 제안 된 링크와 실행 가능한 버전이 근본적으로 다릅니다. 어렵지 않다면, 19개 매개변수를 모두 입력하고 결과를 자동 고칠 수 있도록 현재의 최적화 프로그램에 대한 귀하의 관점을 설명하십시오.

그건 그렇고, 값 열거 블록으로 시작하지 마십시오. 분석기보다 작성하기가 훨씬 쉽습니다.

그리고 위의 모든 것이 너무 복잡해 보인다면 xeon의 자동 최적화 프로그램을 찾으십시오.

MetaTrader 옵티마이저를 사용합니다. 내장된 자동 최적화 기능을 찾지 마십시오. 그녀는 아니다.

 
Figar0 >> :

다음 은 표시기에 내장된 GA 옵티마이저가 있는 klot 표시기입니다.

호퍼23 유전자 분석은 링크가 끊어졌는지 아닌지에 상관없이 도달하지 않을 것이라고 생각합니다.

특히 그녀가 망가지지 않았기 때문에.

 

core==> 당신의 추론과 내 생각에 따르면 (S = Sstart; S <= Send; S += Sstep), 음, 일반적인 용어로 밝혀졌습니다. 여기 내가 얻은 것이 있습니다

 void Optimization ( )
{
 int StartBar = iBarShift ( Symbol ( ) , 0 , TimeCurrent ( ) - 60 * ( EndDate + OptimDuration ) ) ;
 int EndBar = iBarShift ( Symbol ( ) , 0 , TimeCurrent ( ) - 60 * EndDate ) ;
 int Count = 0 ;
 double CurRF = - 999999 ;
 ArrayInitialize ( EqualProfit , 0 ) ;
 ArrayInitialize ( TransCount , 0 ) ;
 ArrayInitialize ( MaxDrowDown , 0 ) ;
 for ( S = Sstart ; S < = Send ; S + = Sstep )
 for ( O = Ostart ; O < = Oend ; O + = Ostep )
 for ( I = Istart ; I < = Iend ; I + = Istep )
 for ( G = Gstart ; G < = Gend ; G + = Gstep )
 for ( M = Mstart ; M < = Mend ; M + = Mstep )
 for ( CC = CCstart ; CC < = CCend ; CC + = CCstep )
 for ( CCI = CCIstart ; CCI < = CCIend ; CCI + = CCIstep )
 for ( F_EMA = F_EMAstart ; F_EMA < = F_EMAend ; F_EMA + = F_EMAstep )
 for ( S_EMA = S_EMAstart ; S_EMA < = S_EMAend ; S_EMA + = S_EMAstep )
 for ( SMA = SMAstart ; SMA < = SMAend ; SMA + = SMAstep )
 for ( stK = stKstart ; stK < = stKend ; stK + = stKstep )
 for ( stP = stPstart ; stP < = stPend ; stP + = stPstep )
 for ( stD = stDstart ; stD < = stDend ; stD + = stDstep )
 for ( W = Wstart ; W < = Wend ; W + = Wstep )
 for ( H = Hstart ; H < = Hend ; H + = Hstep )
 for ( C = Cstart ; C < = Cend ; C + = Cstep )
 for ( Skill = Skillstart ; Skill < = Skillend ; Skill + = Skillstep )
 for ( SkillMAX = SkillMAXstart ; SkillMAX < = SkillMAXend ; SkillMAX + = SkillMAXstep )
 for ( shirina = shirinastart ; shirina < = shirinaend ; shirina + = shirinastep )
   {
    int CurTrans = 0 ;
    double CurOpenPrice = 0 ;
    int EqualMax = 0 ;
    int EqualMin = 0 ;
     for ( int i = StartBar ; i > = EndBar ; i - - )
      {
       EqualMin = MathMin ( EqualProfit [ Count ] , EqualMin ) ;
       if ( EqualProfit [ Count ] > EqualMax )
        {
         MaxDrowDown [ Count ] = MathMax ( MaxDrowDown [ Count ] , EqualMax - EqualMin ) ;
         EqualMax = EqualProfit [ Count ] ;
         EqualMin = EqualMax ;
        }
        MaxDrowDown [ Count ] = MathMax ( MaxDrowDown [ Count ] , EqualMax - EqualMin ) ;
    if ( EqualProfit [ Count ] ! = 0 )
     if ( CurRF < MaxDrowDown [ Count ] / EqualProfit [ Count ] )
      {
       CurRF = MaxDrowDown [ Count ] / EqualProfit [ Count ] ;
       int Num = Count ;
       int BestS = S ;
       int BestO = O ;
       int BestI = I ;
       int BestG = G ;
       int BestM = M ;
       int BestCC = CC ;
       int BestCCI = CCI ;
       int BestF_EMA = F_EMA ;
       int BestS_EMA = S_EMA ;
       int BestSMA = SMA ;
       int BeststK = stK ;
       int BeststP = stP ;
       int BeststD = stD ;
       int BestW = W ;
       int BestH = H ;
       int BestC = C ;
       int BestSkill = Skill ;
       int BestSkillMAX = SkillMAX ;
       int Bestshirina = shirina ;

        }
     
    Count + + ;
   } // Цикл переменных 
 
   
 Alert ( "Оптимизация завершена. Прибыль max " , EqualProfit [ Num ] , " пунктов. Сделок " , TransCount [ Num ] , ". Просадка " , MaxDrowDown [ Num ] ) ;
 Alert ( "Параметры: S = " , BestS , ", O = " , BestO , ", I = " , BestI , ", G = " , BestG , ", M = " , BestM , ", CC = " , BestCC , ", CCI = " , BestCCI ,
  ", F_EMA = " , BestF_EMA , ", S_EMA = " , BestS_EMA , ", SMA = " , BestSMA , ", stK = " , BeststK , ", stP = " , BeststP , ", stD = " , BeststD ,
   ", W = " , BestW , ", H = " , BestH , ", C = " , BestC , ", Skill = " , BestSkill , ", SkillMAX = " , BestSkillMAX , ", shirina = " , Bestshirina ) ;
 LastOptim = TimeCurrent ( ) ;
 GlobalVariableSet ( "LastOptimization" , LastOptim ) ;
 if ( CurRF < 0 )
  if ( MessageBox ( "Фактор восстановления меньше нуля./nПринимать данные оптимизированные параметры?" , "Вопрос" , MB_YESNO ) = = IDNO ) 
    return ;    
        BestS = S ;
        BestO = O ;
        BestI = I ;
        BestG = G ;
        BestM = M ;
        BestCC = CC ;
        BestCCI = CCI ;
        BestF_EMA = F_EMA ;
        BestS_EMA = S_EMA ;
        BestSMA = SMA ;
        BeststK = stK ;
        BeststP = stP ;
        BeststD = stD ;
        BestW = W ;
        BestH = H ;
        BestC = C ;
        BestSkill = Skill ;
        BestSkillMAX = SkillMAX ;
        Bestshirina = shirina ;

 GlobalVariableSet ( "AutoS" , S ) ;
 GlobalVariableSet ( "AutoO" , O ) ;
 GlobalVariableSet ( "AutoI" , I ) ;
 GlobalVariableSet ( "AutoG" , G ) ;
 GlobalVariableSet ( "AutoM" , M ) ;
 GlobalVariableSet ( "AutoCC" , CC ) ;
 GlobalVariableSet ( "AutoCCI" , CCI ) ;
 GlobalVariableSet ( "AutoF_EMA" , F_EMA ) ;
 GlobalVariableSet ( "AutoS_EMA" , S_EMA ) ;
 GlobalVariableSet ( "AutoSMA" , SMA ) ;
 GlobalVariableSet ( "AutostK" , stK ) ;
 GlobalVariableSet ( "AutostP" , stP ) ;
 GlobalVariableSet ( "AutostD" , stD ) ;
 GlobalVariableSet ( "AutoW" , W ) ;
 GlobalVariableSet ( "AutoH" , H ) ;
 GlobalVariableSet ( "AutoC" , C ) ;
 GlobalVariableSet ( "AutoSkill" , Skill ) ;
 GlobalVariableSet ( "AutoSkillMAX" , SkillMAX ) ;
 GlobalVariableSet ( "Autoshirina" , shirina ) ;
그런 다음 스토퍼 - 긍정적인 결과를 수정하고 자동으로 변수에 대입하는 방법을 모르겠습니다.
 
Hoper23 писал(а) >>

Yyyyy..... "이 페이지로 연결되는 링크가 죽었거나 삭제되었습니다." Nishtyak 방향!!! 방향과 같은 것 - x로 이동 ... d. (불법이 아니라 그냥 재미로)

여기 감사합니다), 링크에 대해 저에게, 플래터에 실제로 기성품 솔루션에 대한 klot'y), 테스터와 옵티마이저가 모두 있습니다. 필요에 맞게 약간 조정하십시오 ... 그리고 모든 것이 열립니다.

 

나는 대답이 열리지 않습니다!


 
Hoper23 >> :

core==> 당신의 추론과 내 생각에 따르면 (S = Sstart; S <= Send; S += Sstep), 음, 일반적인 용어로 밝혀졌습니다. 여기 내가 얻은 것이 있습니다

1. 정면으로 문제를 해결하려고 하지 마십시오.

가능한 모든 솔루션에 대해 모든 옵션을 저장해야 하는 이유는 무엇입니까?

당신은 수학 문제를 푸는 것이 아닙니다. 당신은 당신이 가지고있는 것과 유사한 역사의 상황을 찾고 있습니다

오늘과 지금은 무엇을 해야 할지 결정하기 위해 발전했습니다.

따라서 먼저 현재 상황을 설명하고 구체적으로 찾으십시오.

이렇게 하면 패스, 변수 및 결과 수가 TIMES로 줄어듭니다.

그런 다음 스토퍼 - 긍정적인 결과를 수정하고 자동으로 변수에 대입하는 방법을 모르겠습니다.

첫 번째 단계에서는 파일에 저장했습니다. 약 10,000-50,000개의 당첨 옵션의 역사에서 밝혀졌습니다.

그런 다음 Excel에서 분석합니다.

2. 정확히 일치하는 것을 찾지 마십시오. 우리는 정현파를 설명하지 않습니다.

3. 먼저 하나의 변수, 디버그에 대한 데이터 수집 블록을 작성한 다음 18개를 더 추가하거나 몇 개를 가지고 있는지 추가합니다.

 

좋은. 아이디어는 논리적입니다. 그렇다면 하나의 매개변수로 조합에 대한 최적화 공식을 푸는 방법은 ??? 요점은 이 예에서 그것들이 서로 연결되어 있다는 것입니다. MQL 언어의 한계로 인해 아직 다른 예를 알지 못합니다.

Combination = MathFloor((L1End-L1Start)/L1Step)*MathFloor((L2End-L2Start)/L2Step);
 

이 쓰레기는 오프라인을 최적화하도록 설계되었습니다.

 extern int setWeek   = 0 ;          //День недели старта оптимизации
extern int setHour   = 02 ;         //Час старта оптимизации
extern int setMinute = 25 ;         //Минута старта оптимизации
extern int ProgNumber = 2 ;          //номер программы оптимизации
extern bool OptimStart = false ;
extern bool report = false ;
#include <MacroAutoOptimization.mqh> 


int init ( ) {


 if ( IsOptimization ( ) ) {
    string Str ;
    int Cmd , Step , HandleStep ;    
    HandleStep = FileOpen ( "ExpertMessage.csv" , FILE_CSV | FILE_READ | FILE_WRITE , 0x7F ) ;
    if ( HandleStep > 0 ) {
       Str  = FileReadString ( HandleStep ) ;
       Cmd  = StrToInteger ( StringSubstr ( Str , 0 , StringFind ( Str , ";" , 0 ) ) ) ;
       Step = StrToInteger ( StringSubstr ( Str , StringFind ( Str , ";" , 0 ) + 1 , StringLen ( Str ) - StringFind ( Str , ";" , 0 ) - 1 ) ) + 1 ;
       FileSeek ( HandleStep , 0 , SEEK_SET ) ;
       FileWrite ( HandleStep , Cmd + ";" + Step ) ;
       FileClose ( HandleStep ) ;
  } } 

  
   return ( 0 ) ;
  }


int deinit ( )
  {
   Comment ( "Привет!" ) ;
   return ( 0 ) ;
  }

int start ( )
{

 if ( IsOptimization ( ) = = false & & IsTesting ( ) = = false ) {
        double Itog [ ] [ 17 ] ;
        int TecWeek = TimeDayOfWeek ( TimeLocal ( ) ) ;
        int TecHour = TimeHour ( TimeLocal ( ) ) ;
        int TecMinute = TimeMinute ( TimeLocal ( ) ) ;
        if ( ! OptimStart ) {  
           if ( TecWeek = = setWeek ) {  
              if ( TecHour = = setHour ) { 
                 if ( TecMinute > = setMinute & & TecMinute < setMinute + 4 ) { 
                    if ( AutoStart ( ProgNumber , Itog ) < 0 ) { Print ( "Оптимизация завершилась неудачей!" ) ; }
                    deinitialization ( ) ;
                    OptimStart = true ;
                    report = true ;
        } } } }
        if ( TecHour ! = setHour ) { OptimStart = false ; }              //Обнуление флага старта оптимизации
        if ( ArrayRange ( Itog , 0 ) > 0 ) {
//         Переменные для оптимизации
           stK     = Itog [ 0 ] [ 7 ] ;
           stP   = Itog [ 0 ] [ 8 ] ;
           stD  = Itog [ 0 ] [ 9 ] ;
           W = Itog [ 0 ] [ 10 ] ;
           H  = Itog [ 0 ] [ 11 ] ;
           C  = Itog [ 0 ] [ 12 ] ;
           CCI  = Itog [ 0 ] [ 13 ] ;
           F_EMA  = Itog [ 0 ] [ 14 ] ;
           S_EMA  = Itog [ 0 ] [ 15 ] ;
           SMA  = Itog [ 0 ] [ 16 ] ;
           shirina  = Itog [ 0 ] [ 17 ] ;
           S  = Itog [ 0 ] [ 18 ] ;
           O  = Itog [ 0 ] [ 19 ] ;
           I  = Itog [ 0 ] [ 20 ] ;
           M  = Itog [ 0 ] [ 21 ] ;
           G  = Itog [ 0 ] [ 22 ] ;
           CC  = Itog [ 0 ] [ 23 ] ;
           if ( report ) {
              Print ( "Новые параметры " , stK , " | " , stP , " | " , stD , " | " , W , " | " , H , " | " , C , " | " , CCI , " | " , F_EMA , " | " , S_EMA , " | " , SMA , " | " , shirina , " | " , S , " | " , O , " | " , I , " | " , M , " | " , G , " | " , CC ) ;
              report = false ;
     } } }   

성경은 그녀에게 간다

 бла-бла-бла

그리고 그녀의 정경에

 бла-бла-бла

그리고 그것은 틈새 시장에 영향을 미치지 않습니다 ... 더 정확하게는 혼란스러운 무언가가 그 자체로 휘젓고 부부가 긴장하지만 변수에는 변화가 없으며 스마트하게 무언가를 수행합니다. 몇 초 만에 끝입니다. 이해가 안 됩니다.
 
Hoper23 >> :

이 쓰레기는 오프라인을 최적화하도록 설계되었습니다.

성경은 그녀에게 간다

그리고 그녀의 정경에

그리고 그것은 틈새 시장에 영향을 미치지 않습니다 ... 더 정확하게는 혼란스러운 무언가가 그 자체로 휘젓고 부부가 긴장하지만 변수에는 변화가 없으며 스마트하게 무언가를 수행합니다. 몇 초 만에 끝입니다. 이해가 안 됩니다.



xeon 에서 자동 최적화 도구로 작업을 시작했습니다.

TestCommander(자동 최적화) 상인 도구

그래서 그에게 물어보십시오.

그건 그렇고, 내 기억이 맞다면이 제품은 이미 지불되었습니다.

도움이되며 모든 것이 거기에 명확하게 설명되어 있습니다.