神聖な「聖杯」を求めて...。 - ページ 9

 
Hoper23 >> :
問題は、タスクのゴールは明確なのですが、テスター・オプティマイザーの組み込み配列関数にまだ慣れていないため、MQLでの実装の可能性が不明瞭に思えることです。MQLのマニュアルを読み直そうとしているのですが、このブロックはまだ見つかっていません。そして、thecoreによる自作オプティマイザは、信頼できないというより、よくわからない。変数の表現がかなり変で、注釈もなく、上記リンクで紹介されている作業用バージョンとは根本的に異なります。それが困難でない場合は、親愛なるコアは、すべての19パラメータと結果の自動交換に適合するように、オプティマイザのあなたのポイントを説明します。

プログラマーからこのようなことを言われるのは違和感がありますが、噛み砕いて説明します(スペルアウトではありません)。

1.入力パラメータがN個ある関数があるとします。

関数(n1,n2,...,n19)。

2.Parameters

n1はn1Minからn1Maxまで、ステップn1Stepで変化する。

....

n19はn19Stepでn19Minからn19Maxまで変化します。


必要です。

- すべての(線形法の)入力パラメータを通過するか、またはすべての(高速収束法の)入力パラメータを通過しない。

高速に収束させる方法は非常に多く、そのひとつが遺伝的アルゴリズムである。

- 新しいパラメータを一括して入力するたびに、出力に関数の結果が表示されます。

- この結果を分析するブロックを書いて、その結果が次のとおりかどうかを判断する必要があります。

が良い。

解析ユニットでお困りのようですね。なぜなら、関数の書き方や方法がわからなければ

とか、入力パラメータの調べ方とか、そういうのは私向きじゃなくて、プログラミングの授業とか、そういうのが好きな人向けなんです。

プログラミングの基本を学ぶことができます。

解析ユニットが行うこと

1.分析したい最も古いBAR_Yバーを取り出し、現在の時刻Yのデータをあなたの

関数を使用します。つまり、この関数はBAR_YをTimeCurrentとみなしています。

2.関数(n1,n2,...,n19)が0小節目にあるときと同じだけ、履歴の深さで小節を取ります。

を行い、何らかの結果を得る。

例えば、iMA3,iMA2,iMA1の極値を探している場合、このストラテジーは、iMA3,iMA2,iMA1の極値を探しています。とすると、iMA_Y+2,iMA_Y+1,iMA_Yがある。

極限点であれば停止し、そうでなければY++を行う。

OKです。位置tで極限点を求める、すなわちiMAt+2,iMAt+1,iMAt

ここで、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) の FIRST 条件を見つけた。

結果を保存しておこう。

次にt--を作り、0小節目まで解析を進める。

4.Yをシフトさせ--を繰り返す。

このように、関数 Function(n1,n2,...,n19) の現在の時点までのすべての出現回数を求めることができます。

5.今この瞬間を分析し、過去に似たような状況がなかったか、どのような結末を迎えたかを確認する。

6.結果を保存する。

7.Function(n1,n2,...,n19) の次のパラメータセット n1,,n19 を取り、チェックする。

8.パラメータが無くなるまで繰り返す。

9. 最適なパラメータセットまたは複数のセットを選択し、その推奨に従って、BUY、SELL、または

何もしない

以上です。

本当に難しいので、難しいと思ってほしいです。


 
Hoper23 >> :
問題は、タスクの目的は明確だが、テスター・オプティマイザーの組み込み配列の機能をまだよく知らないので、MQL言語での実装の可能性が不明確に思えることである。MQLのマニュアルを読み直そうとしているのですが、このブロックはまだ見つかっていません。そして、thecoreによる自作オプティマイザは、信頼できないというより、よくわからない。そこにはかなり気紛れな変数が書かれており、注釈もなく、上記リンク先で紹介されている動作版とは根本的に異なっています。困難ではない場合、親愛なるthecoreは、私はすべての19パラメータとオートコンプリートの結果を詰め込むことができるように、オプティマイザのビューのあなたのポイントを説明します。

ちなみに、ブルートフォースブロックはパーサーよりずっと簡単に書けるので、最初から書かないでください。

そして、もし私が言ったことが複雑すぎると感じるなら、xeonによる自動最適化ツールを探してみてください。

MetaTrader optimizerを使用しています。内蔵の自動最適化機能は探さないでください。ないのです。

 
Figar0 >> :

GAオプティマイザーを組み込んだklotのインジケータを紹介 します。

Hoper23はこのリンクが切れていようがいまいが、遺伝子解析はしないと思います。

なおさら、壊れない。

 

thecore==> あなたの推論でも、私の推論でも、for(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 .............................."このページに移動したリンクは「死亡」または「削除」されています。" ナイス紹介!!!!どこか、くたばれという方向性に似ている。(悪気はないんです、面白半分で)。

テスターとオプティマイザーの両方があるので、自分のニーズに合わせて少し調整するだけです。 そして、すべてが開く。

 

回答が開かない!!!


 
Hoper23 >> :

thecore==> あなたの推論でも、私の推論でも、for(S = Sstart; S <= Send; S += Sstep)が得られるのですが、まあ、一般論として。以下は、その結果です。

1.問題を正面から解決しようとしない。

なぜ、すべての可能なソリューションのALL variantを保存する必要があるのでしょうか。

数学の問題を解いているわけではないんですね。あなたが持っているものと同じような状況のために、歴史を見ることになります

今日、そして今、何をすべきかを決めるために。

そこで、まず現状を説明し、具体的に探します。

これにより、パス、変数、結果の数を大幅に減らすことができます。

次に、ストップ-プラスの結果を修正して、自動的に変数に入れる方法がわかりません。

最初の段階で、ファイルに保存しました。約1万~5万件のオプションの当選履歴で受信。

その後、Excelで分析。

2.完全に一致するものを探さない。正弦波を表現しているわけではないんです。

3.最初に1つの変数のデータ収集ブロックを書き、それをデバッグし、その後、別の18またはあなたが持っている変数の数を追加してください。

 

よかったです。考え方は論理的です。では、1つのパラメータで複数の組み合わせを最適化する式は、どのように解くのでしょうか?要は、この例では、それらが相互に関連しているということです。私は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;
     }}}   

バイブルが付属しています。

бла-бла-бла

そして、ビブラもあります。

бла-бла-бла

そして、何も動作しない...というより、それ自体が混乱し、CPUにストレスを与えますが、変数に変化はなく、すべて高速に実行されます - 数秒、それだけです。理解できない。
 
Hoper23 >> :

この無意味なことは、オフラインを最適化するためのものです。

バイブルが付属しています。

そして、ビブラーです。

そして、うまくいかない...というか、何かごちゃごちゃしたものを作って、CPUにストレスを与えるが、変数に変化はなく、すべてが高速になる-数秒で、それで終わりです。理解できない。



xeonの オートオプティマイザーを使った作業を開始しました。

TestCommander(自動最適化)トレーダーズツール

だから、彼に聞いてみてください。

ちなみに、この製品は、私の記憶が正しければ、すでに有料です。

そこにヘルプがあり、すべてが明確に説明されています。