トレーディングにおける機械学習:理論、モデル、実践、アルゴトレーディング - ページ 985

 

50pipsの非現実的なストップで精錬を捨ててください。

テスターの裏側で初日を迎える

開発者はマチネラーなんだぞ!?

 
サンサニッチ・フォメンコ

結果を要求するあなたに辟易しているのです

何を見せたんですか?グラフの最後に学習期間という形でイチジクをポケットに入れた、出所不明の曲線もある?テスターですらない!?

そして、その結果がこちら、14ヶ月で360%、ちゃんとしたバランスチャートで、特徴もたくさんあって、ソーステキスト付きです。


そして、MOには直接的な結果があります。

ここから リファインされたEAです

入力は一様分布の確率変数で、そこから買い/売りを得る。ほらね~、ランダム。

しかし、この支店のモデル演習では、誤差は常に50%以下であり、基本ケースでの採算と非採算の比率は47/53である。

では、なぜMOが必要なのでしょうか?また、なぜバージョンアップでMOが必要なのでしょうか?結局、モデルが再トレーニングされないという根拠は何一つ示されていないのですそして、もし再トレーニングの問題に対処しないのであれば、ここにPetr Voytenkoからの 無料のEAをすべての人に提供します。

は、素晴らしいアドバイザーのようです(!!!)。

リンク切れ

 
サンサニッチ・フォメンコ

ここから Expert Advisorを修正したものです。

入力は一様分布の確率変数で、そこから買い/売りを得る。あの~、ランダムなんですけど。

私も10年前に経験済みです。どこかで書きましたね。最適なサポート終了条件を考え、迷惑をかけないようにランダムにエントリーするようにしました。トレーリング・クロージングの手法で損失を最小限に抑えようというものだ。驚いたことに、利益は月に10~15%程度でした。

 
レナト・アフティアモフ

は、クールなアドバイザーがいたようです(!!)。

のリンクが切れています。

なぜ壊れているのか?私には効果的です。

以下は本文です。

//+------------------------------------------------------------------+
//|                                                     RandomEA.mq4 |
//|                                                             Pete |
//|                                                  www.izimoney.ru |
//+------------------------------------------------------------------+
#property copyright "Pete"
#property link      "https://www.mql5.com/ru/users/m0rg4n"
#property version   "1.00"
#property strict
//--- input parameters

input double   lot_persent=0;   //lot in percent of balance, 0=minimal lot
input double   clot=0;          //constant lot, 0=off
input int      com=5;           //your commission on 1 lot
input int      tp_and_sl=100;   //takeprofit and stoploss
input double   k=2;             //martingale multiplier
input int      maxspread=25;    //maximal spread
input int      friday_stop=12;  //friday OFF hour
input int      monday_start=1;  //monday ON hour
input int      slip=10;         //slippage


double minlot,maxlot,lot,acc=0,lot2;
bool b;
int h;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   Comment("");
   MathSrand(GetTickCount());   //turn on randomize function
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
 Comment("");
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---

   minlot=MarketInfo(Symbol(),MODE_MINLOT);                        //
   maxlot=MarketInfo(Symbol(),MODE_MAXLOT);                        //
   lot=NormalizeDouble(lot_persent*AccountBalance()/100000,2);     // calculating lots
   if(lot<minlot){lot=minlot;}                                     //
   if(lot>maxlot){lot=maxlot;}                                     //
   lot=NormalizeDouble(lot,2);                                     //

   if (clot!=0){lot=clot;}
   
   
   
   //if there are no orders open trade according signal
   if(OrdersTotal()==0)
     {
     
      if (MarketInfo(Symbol(),MODE_SPREAD)>maxspread){Comment("Spread too big");return;}
     
     
      if (
          ((DayOfWeek()==5)&&(Hour()>friday_stop))
          ||
          (DayOfWeek()==6)
          ||
          (DayOfWeek()==0)
          ||
          ((DayOfWeek()==1)&&(Hour()<monday_start))
         ){Comment("Not trading time");return;} //hollydays off    
 
      if(signal()==1){if(AccountBalance()<acc){lot=lot2*k;}buy_(lot);return;}

      if(signal()==-1){if(AccountBalance()<acc){lot=lot2*k;}sell_(lot);return;}
     }

   
   // if there is one order we are turn take profit and stop loss on
   if(OrdersTotal()==1)
     {
      acc=AccountBalance();
      b=OrderSelect(0,SELECT_BY_POS);
      lot2=OrderLots();
      if((OrderStopLoss()==0)&&(OrderType()==OP_BUY)) 
      {b=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-tp_and_sl*Point,OrderOpenPrice()+tp_and_sl*Point+2*com*Point,0,Blue);}
      if((OrderStopLoss()==0)&&(OrderType()==OP_SELL))
      {b=OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+tp_and_sl*Point,OrderOpenPrice()-tp_and_sl*Point-2*com*Point,0,Red);}

     }
   
   
   // if there are more than one trade is on then close all positions (becouse some error with it)
   if(OrdersTotal()>1){CloseAll();}


  }
//+------------------------------------------------------------------+

int signal() //return random signal , buy or sell
  {
   int r0;
   double r1;

   r0=MathRand();
   r1=MathMod(r0,2);
   if(r1!=0){return(-1);}
   if(r1==0){return(1);}
   return(0);
  }
//*****************************************************************

//+------------------------------------------------------------------+
void buy_(double lot998) // opening buy function
  {
   lot=NormalizeDouble(lot998,2);
//   sl_=NormalizeDouble(Ask-sl*Point,Digits);
//   tp_=NormalizeDouble(Ask+tp*Point,Digits);
   b=OrderSend(Symbol(),OP_BUY,lot998,Ask,slip,0,0,"",0,0,Blue);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void sell_(double lot999) //opening sell function
  {
   lot=NormalizeDouble(lot999,2);
//   sl_=NormalizeDouble(Bid+sl*Point,Digits);
//   tp_=NormalizeDouble(Bid-tp*Point,Digits);
   b=OrderSend(Symbol(),OP_SELL,lot999,Bid,slip,0,0,"",0,0,Red);
  }
//*************************************************************

void CloseAll() // close all trades function
  {
   int i,tik;
   i=OrdersTotal();
   while(i!=0)
     {
      b=OrderSelect(i-1,SELECT_BY_POS);
      if(b==true)
        {
         tik=OrderTicket();
         if(OrderType()==OP_BUY) {b=OrderClose(OrderTicket(),OrderLots(),Ask,slip,clrNONE);}
         if(OrderType()==OP_SELL){b=OrderClose(OrderTicket(),OrderLots(),Bid,slip,clrNONE);}
         if((OrderType()==OP_BUYSTOP) || (OrderType()==OP_SELLSTOP) || (OrderType()==OP_BUYLIMIT) || (OrderType()==OP_SELLLIMIT)){b=OrderDelete(tik,clrNONE);}
        }
      i=i-1;
     }
  }

//+------------------------------------------------------------------+
 
ユーリイ・アサウレンコ

私も10年前に経験しました。どこかで書きましたね。最適なサポートクロージングトランザクションを考え、考えすぎないように、エントリーはランダムにしました。トレーリング・クロージングの手法で損失を最小限に抑えようというものだ。驚いたことに、毎月10〜15%程度の利益が出るようになったのです。

これを見たとき、私は感激しました。予測器の予測能力を扱うべきであり、必ずしもこの予測能力があまり変化しないことを明確に証明したものだからです。

その時に、テスターがこの事実を証明してくれるのです。

そして、テスターはランダムアドバイザーに対して何を証明するのでしょうか?エントリー時にランダムな順番の選択が あることを証明しているに過ぎない。このEAのテスターは、EAの将来の挙動を証明しているのでしょうか?そんなことはない、質問はそんな風には言っていない。

 
SanSanych Fomenko:

なぜ壊れているのか?私には効果的です。

以下、本文です。

冷ややか

マニュアルトレーディングの 自動化版はこちら

 

そして、他のテイク/ストップのため、別の選択肢を紹介します。

長い間、少しずつ積み重なってきた損失が一気に来たのです。


パラメータを変えることで、さまざまな表情を手に入れることができます。

 
サンサニッチ・フォメンコ

予測器の予測能力を扱うべきであり、この予測能力はあまり変化しないことを必然的に証明する、最も明確な証明です。

その時に、テスターがこの事実を証明してくれるのです。

そして、テスターはランダムアドバイザーに対して何を証明するのでしょうか?エントリー時にランダムな順番の選択が あることを証明しているに過ぎない。このEAのテスターは、EAの将来の挙動を証明しているのでしょうか?そうではなく、そのような質問はしていない。

少なくとも観測者にとってのランダム性、市場のランダム性の証明に過ぎないように思います。

実のところ、私は行き当たりばったりで仕事をしているのです。確かにトレンドの一部は失われますが、ノイズがより高頻度であるため、より多くのトレード数で補われます。

ふむ。結局、利益の大半は貿易サポートが稼ぐことになる。まあ、おそらくMMもそうでしょうが、私には理解不能です)。

 
Yuriy Asaulenko:

これは、少なくとも観察者にとっては、市場のランダム性を証明するものでしかないと思います。

実のところ、私はランダムなプロセスとして仕事をしています。確かにトレンドの一部は失われますが、ノイズがより高頻度であるため、より多くの取引によって補われます。

そうです、場所があるのです。

ゲーム理論は、次のような問題から始まります。

目隠しをした真っ暗な部屋で、王様は同じく目隠しをした自分のページを捕まえようとしています。

問題1:隅に隠れている少年を最小限の歩数で捕まえるには、王様はどのような作戦をとればよいでしょうか?

問題2:隅に隠れている王様を、子分が最小限の歩数で避けるには、どのような作戦をとればよいでしょうか?


答えは同じで、一様 分布の確率変数である。

非常にポジティブなバランスグラフの背景には、まさにこの「見積もり増額が一様な分布の値である」という立場があるのです

 
サンサニッチ・フォメンコ

はい、そうです。

バランスシートのグラフが非常にポジティブである背景には、まさにこの「見積もり増額が一様な分布量である」という立場があります。

さて、ここでWienerプロセス、あるいはWiener-likeプロセスについて説明します。何を予測するのか?最も良い予測は、値そのものです。

しかし、正規分布(またはそれに近い分布)を予測することはできる。もちろん、文字通りの意味ではなく、ろうそくの跡のようなものです。

理由: