アイデア交換 - ページ 9

 
FION:
専門家は同時に作業することができます - それぞれのウィザードで、市場の状況の認識とリセットは、すべての専門家にあるべきです。 この条件が満たされない場合、市場の状況が変化したときに、ターゲットとストップは、フラットとトレンド状態で異なるべきであるので、損失は避けられません。さらに、中間的な条件、つまり、低いフラット、または、低いアクティビティを伴う「スリッページ」を考慮する必要があります。基本的に、収益性の高いExpert Advisorのセットは、損失Expert Advisorのポジションをロックすることにより、最高の結果を示すはずです。

ほぼ全員が自分の実感を持っています。しかし、多くのEAにはエラー訂正機能がありません。そうですね、なるべく避けるようにしています。標準的なことをするならば、それを許容すべきです。 不要かもしれませんが、magicianにsymbol()を追加します。 理論的には、1枚のチケットでの注文は繰り返せませんが、そうかもしれません。
 

はい、もちろんです。コード上ではまさにその通りです。外部パラメータでは、Magic _nも設定しており、独自のマジックを持つ各バージョンは、独自のアルゴリズムに従って動作します。

 

トレンド検出について。ProtoType-IV Expert Advisorは、4つの最終極値によってトレンドを識別する多通貨のExpert Advisorの 例を提供します。私はそれを綿密に突き詰め、このコードのビットを「半強制的に」割り当て、今ではあらゆるExpert Advisorに挿入することができます。必要であれば外部パラメータで設定した場合

extern int     PeriodWPR=8;
extern double  CriteriaWPR=25;
extern int     ATRPeriod=40;// период ATR для индикатора 
extern double  kATR=0.5;
//-------------------------------------
int  LastUpArray[13,7];
int  PreLastUpArray[13,7];
int  LastDownArray[13,7];
int  PreLastDownArray[13,7];

ここで、「修飾語」そのものを紹介します。

/-------------------------------------------------------------------+
//| определение тренда по четырем последним экстремумам              |
//+------------------------------------------------------------------+
int TrendByWPR()
  {
//----
   int res=0;
   int curPos,LastUpPos,PreLastUpPos,LastDownPos,PreLastDownPos,LastPeak,newPos;
   bool FindUp=true,FindDown=true,SearchCompleted=false;
   double CurWPR=iWPR(NULL,0,PeriodWPR,0);
//----
   //=======  определим - где мы находимся в данный момент
   if (CurWPR<=CriteriaWPR-100)
      {
      FindDown=false;
      LastPeak=0;
      }   
   if (CurWPR>=-CriteriaWPR)
      {
      FindUp=false;
      LastPeak=0;
      }   
   // ================   начианем поиск пичков-донышков
   while(!SearchCompleted && curPos<Bars)
      {
      if (iWPR(NULL,0,PeriodWPR,curPos)>=-CriteriaWPR && LastPeak<0)
         {
         FindUp=false;
         LastPeak=curPos;
         curPos++;
         continue;
         }
         
      if (iWPR(NULL,0,PeriodWPR,curPos)<=CriteriaWPR-100 && LastPeak<0)
         {
         FindDown=false;
         LastPeak=curPos;
         curPos++;
         continue;
         }
         
      if (iWPR(NULL,0,PeriodWPR,curPos)>=-CriteriaWPR && FindUp)
         {//искали верхушку и нашли
         newPos=curPos; 
         while(iWPR(NULL,0,PeriodWPR,curPos)>CriteriaWPR-100 && curPos<Bars)
            {// теперь нужно найти донышко, чтобы между ними найти точный пичок
            curPos++;
            }
         if (LastUpPos==0) 
            {
            LastUpPos=Highest(NULL,0,MODE_HIGH,curPos-LastPeak,LastPeak);   
            LastPeak=LastUpPos;
            }
         else 
            {
            PreLastUpPos=Highest(NULL,0,MODE_HIGH,curPos-LastPeak,LastPeak);
            LastPeak=PreLastUpPos;
            }
         curPos=newPos;
         FindUp=false;
         FindDown=true;
         curPos++;
         continue;
         }//==============
 
      if (iWPR(NULL,0,PeriodWPR,curPos)<=CriteriaWPR-100 && FindDown)
         {
         newPos=curPos; 
         while(iWPR(NULL,0,PeriodWPR,curPos)<-CriteriaWPR && curPos<Bars)
            {
            curPos++;
            }
         if (LastDownPos==0) 
            {
            LastDownPos=Lowest(NULL,0,MODE_LOW,curPos-LastPeak,LastPeak);
            LastPeak=LastDownPos;
            }   
         else 
            {
            PreLastDownPos=Lowest(NULL,0,MODE_LOW,curPos-LastPeak,LastPeak);
            LastPeak=PreLastDownPos;
            }
         curPos=newPos;
         FindDown=false;
         FindUp=true;
         curPos++;
         continue;
         }
      if (PreLastDownPos!=0 && PreLastUpPos!=0) SearchCompleted=true;
      curPos++;
      }
  /* if (Symbol()==StringSymbol && Period()==PeiodMinute)
      {
      Comment("LastUpPos=",LastUpPos,"  PreLastUpPos",PreLastUpPos,"  
 LastDownPos=",LastDownPos,"  PreLastDownPos=",PreLastDownPos,
" Время ",TimeToStr(CurTime()));
      SetUpArrows(LastUpPos,PreLastUpPos,LastDownPos,PreLastDownPos);*/
   LastUpArray[NULL,0] =LastUpPos;   
   PreLastUpArray[NULL,0]=PreLastUpPos;   
   LastDownArray[NULL,0]=LastDownPos;   
   PreLastDownArray[NULL,0]=PreLastDownPos;   
  if (High[LastUpPos]-High[PreLastUpPos]>=kATR*iATR(NULL,0,ATRPeriod,LastUpPos)
&&Low[LastDownPos]>Low[PreLastDownPos]) res=1;     
  if (Low[PreLastDownPos]-Low[LastDownPos]>=kATR*iATR(NULL,0,ATRPeriod,LastDownPos)
&&High[PreLastUpPos]>High[LastUpPos]) res=-1;    
   
   return(res);
  }

コーナーにあるグラフは、関数=0,,,または=1,,,または=-1を表しています。

 
線形回帰 の助けを借りてトレンドを定義する方が便利だと思います。MT-4標準セットの線形回帰のスクリプトは非常に優れているので、それをベースにしたインディケータを作りたいと思っています。 誰かソースコードを入手できる場所を知っていますか? 既知の実装はすべて価格変動の力学でうまく動作していません。私は、新しいバーが表示されたときに再計算とその幅(pips)とその傾き(pips)を長さに出力する可能性を持つ1からNバーまでの長さを設定するチャネルを必要としています。そして、与えられた偏差値で標準偏差の同じチャンネルが作れるといいですね。 一から掘り起こすこともできますが、もし誰かがMTからのソースを持っていれば、もっと簡単になりますね。
 

トレンド検出のコードだけを掲載したわけではないのですが。もう一つのアイデアが浮かびました...(後ほど説明します)

まずはこのインジケーターが使えるかもしれませんね。

チャート上 iPeriod=20, MASoot=20

その作品には手をつけていない。でも、ビジュアルモードでは、その仕組みが簡単にわかるんです...。

ファイル:
 
Leonid、ありがとう、しかし、それは反転のために正しく動作しません、私はずっと前にそれを試してみました。 ここに良い指標ですが、それはHow-lowによって動作します、アイデアは同じですが、線形回帰に基づいて います。
ファイル:
 
FION:
私見ですが、線形回帰を使ってトレンドを定義する方が便利だと思います。MT-4標準セットの線形回帰のスクリプトは非常に優れており、これをベースにしたインジケータを作りたいのですが、どなたかソースコードの入手先をご存じでしょうか?既知のすべての実装は、価格動向とうまく連動していない。私は、新しいバーが表示されたときに再計算とその幅(pips)とその傾き(pips)を長さに出力する可能性を持つ1からNバーまでの長さを設定するチャネルを必要としています。与えられた偏差値で標準偏差のチャンネルを同じにするのはいいことだと思います。一からやり直すこともできますが、どなたかMTからのソースをお持ちであれば、より簡単になりますね。


以前もどこかに投稿したことがあるのですが新バージョンを掲載することができます。1つのエラーが修正されました。

そして、その指標となるのがこちら。

バーの本数が 画面に表示されます。3シグマが表示されます。価格が1SCO以内であれば、すべてが許容範囲内であるため、再計算は行われない。それを突破すると、再計算されます。

ファイル:
 

Vininさんのチャンネルは非常にまともで、正しく調整されていますね。ありがとうございます。フラット用のフィルターについて、ひとつのアイデアを紹介します。私たちは皆、Rev.レシェトフとそのパーセプトロンパーセプトロンは原理的には線形フィルタである。パーセプトロンでフレットをフィルタリングしてみたいのですが。長さ、ボリンジャー幅、価格変化率の異なる2つの線形回帰チャネルの幅と傾きを入力したいのですが。何を最適化の 基準にするかだと思うんです。おそらく、ボリンジャーバウンダリーから内側への反発-幅の75%を目標に。

 
FION:

Vininさんのチャンネルは非常にまともで、正しく調整されていますね。ありがとうございます。フラット用フィルターについて、一つのアイデアを共有します。私たちは皆、Rev.レシェトフとそのパーセプトロンパーセプトロンは原理的には線形フィルタである。パーセプトロンで飛翔をフィルタリングしてみたい。 長さの異なる2つの線形回帰チャンネルの幅と傾き、ボリンジャー幅と価格変動速度を入力したい。何を最適化の基準にするかだと思うんです。おそらく、ボリンジャーバウンダリーから内側への反発-幅の75%を目標に。


レシェトフのパーセプトロンではダメなんです。ロイン以外の4〜5人くらいで甲子園層を作ればいい。しかし、1つだけ問題があります。すべての値が同じ順番でなければならないのです。
 
ローソク足の神経分析」という新しいトピックを作りたいのですが。自分の作品を全部出す、一人ではできない。自分一人ではできないし、失敗ももうほとんどわかっている。