アルゴリズムによる''遠心分離機''です。 - ページ 13

 
Aleksei Stepanenko:

いいかい

- もしかしたら、他のものかもしれない...

何らかの方法でIT(理想点)を見つけるために、GAを使う必要があるのです。考えているんです。
 
Igor Makanu:

歴史上の理想的なエントリーポイント - ZigZagは、あなたが拒否している

ZigZagはアイデアを冒涜するものだから使いたくない。ZZが完璧なパーフェクトポイント指標であるならば、他のどの指標よりも正確にパーフェクトポイントを突いているのだから、最もIDEALな指標と言える。ジグザグは、すべてのトレードシグナル、すべてのストラテジーに含まれるべきだと思います。そして、これはナンセンスです。

履歴に残るトレードの領域は、時間/利益/リスクという基準で判断し、GAを使用するべきだと思います。

 
Реter Konow:

ZigZagはアイデアを冒涜するものだから使いたくない。ZZが完璧なパーフェクトポイント指標であるならば、他のどの指標よりも正確にパーフェクトポイントを突いているのだから、最もIDEALな指標である。ジグザグは、すべてのトレードシグナル、すべてのストラテジーに含まれるべきだと思います。そして、これはナンセンスです。

履歴上のトレードの領域は、時間/利益/リスクという基準で判断し、GAを使用するべきだと思います。

恨みっこなし

何を議論したらいいのか分からないので、とりあえず失礼します。

 
Реter Konow:
IT(理想点)の探索にGAをどうにか巻き込んでいく必要がある。考えているところです。

完璧な点は歴史上すでに知られており、極限であり、目で見ることができます。極値を求める ための複雑なアルゴリズムを必要としない。それを特定するための条件(例えば、隣り合う2つの極値の間にある点数を超えるなど)を特定すればよいのです。そして、それらの極値(価格、日付)の配列を作成し、同じ履歴を使用して、各極値のポイント(またはその接近)で任意の指標の値をチェックすることができます。そうだろ?

以下は、履歴の極値 検索と保存を 行うための「お遊び」コードです(性能保証なし)。

input double Distance=100;

//каждый элемент массива будет содержать три поля: дата, цена и положение экстремума (верх, низ) 
struct sextr{datetime time; double price; int position;} Extremes[];

void OnStart()
   {
   int Total=iBars(Symbol(),0);
   for(int i=Total-1; i>=0; i--)
      {
      WriteExtremum(Extremes,Distance,Symbol(),0,i);
      }
   }   

//здесь записываем экстремумы в массив
void WriteExtremum(sextr &eExtremes[], double eDistance, string eSymbol, int eTimeFrame, int eShift)
   {
   int eFinish=ArraySize(eExtremes)-1;
   double eHigh=iHigh(eSymbol,eTimeFrame,eShift);
   double eLow=iLow(eSymbol,eTimeFrame,eShift);
   datetime eTime=iTime(eSymbol,eTimeFrame,eShift);
   //если массив пустой
   if(eFinish<0)
      {
      ArrayResize(eExtremes,++eFinish+1);
      eExtremes[eFinish].time=eTime;
      //пока мы не знаем какой из экстремумов будет в первом элементе, поэтому берём цену по середине
      //можно сделать более грамотнее, но лень. Поэтому первый экстремум у нас будет бракованный 
      //и мы его потом затрём 
      eExtremes[eFinish].price=(eHigh+eLow)/2;
      eExtremes[eFinish].position=0;
      }
   //если в массиве есть элементы
   else
      {
      //текущий элемент - максимум
      if(eExtremes[eFinish].position==1)
         {
         //произошло обновление текущего экстремума
         if(eHigh-eExtremes[eFinish].price>0)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eHigh;
            }         
         //произошло превышение расстояния между противоположными экстремумами
         if(eExtremes[eFinish].price-eLow>eDistance)
            {
            ArrayResize(eExtremes,++eFinish+1);
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eLow;
            eExtremes[eFinish].position=-1;
            }
         }
      //текущий элемент - минимум
      if(eExtremes[eFinish].position==-1)
         {
         //произошло обновление текущего экстремума
         if(eExtremes[eFinish].price-eLow>0)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eLow;
            }         
         //произошло превышение расстояния между противоположными экстремумами
         if(eHigh-eExtremes[eFinish].price>eDistance)
            {
            ArrayResize(eExtremes,++eFinish+1);
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eHigh;
            eExtremes[eFinish].position=1;
            }
         }
      //эта ситуация, когда первый элемент не закрылся, и не понятно максимум это будет или минимум
      //если произошло превышение в любую сторону, тогда затираем значения первого элемента
      if(extremes[eFinish].position==0)
         {
         //произошло превышение расстояния между противоположными экстремумами
         if(eHigh-eExtremes[eFinish].price>eDistance)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eHigh;
            eExtremes[eFinish].position=1;
            }            
         if(eExtremes[eFinish].price-eLow>eDistance)
            {
            eExtremes[eFinish].time=eTime;
            eExtremes[eFinish].price=eLow;
            eExtremes[eFinish].position=-1;
            }
         }
      }   
   }

さらに、このコードはスタッド(1本のローソク足が最大値と最小値を同時に重ねた場合、および極値間の最小時間)を捕捉して処理する必要があります。

これで極値を含む配列が埋まったので、いつどこで指標を見ればいいのかがわかります。しかし、その有用性には疑問が残ります:)

 
Реter Konow:

ZigZagはアイデアを冒涜するものだから使いたくない。ZZが完全なパーフェクトポイント指標であるならば、他の指標よりも正確にパーフェクトポイントを突いているため、最もIDEALな指標と 言えるでしょう。ジグザグは、すべてのトレードシグナル、すべてのストラテジーに含まれるべきだと思います。そして、これはナンセンスです。

履歴に残るトレードの領域は、時間/利益/リスクという基準で判断し、GAを使用するべきだと思います。

Zig-ZagインジケーターのBITを理解していない...。

ZZインジケータは確かにIDEALインジケータですが、あくまで他のインジケータの 設定として...です。

 
Serqey Nikitin:

Zig-Zagインジケーターのポイントを理解していない...。

ZZインジケータは確かにIDEALインジケータですが、あくまで他のインジケータの セットアップとして...です。

ZZの問題点は、トレードの時間・利益・リスクの比率が考慮されていないことです。
ZZのエントリーポイントは不釣り合いなトレードを生み出します。トレンド/フロートを考慮しないとのことです。コリドールは、トレードのセクションの内側に、ピークと一緒に配置されます。
ZZはあらゆるダイナミクスに対応しており、これを使って他の指標を選ぶのは無意味だと思います。少なくともスマートではない。

別のアプローチが必要です。理想的なエントリー/イグジットポイントだけでなく、取引の内部比率(ポジションの持続時間、その利益とリスク)を遵守することです。

ここでいうリスクとは、ロット、ストップ、デポジットの比率ではなく、オープンポジションの 価格変動の安定性を意味しています。変化が安定しない(ハンマリング)ほど、利益を失うリスクは大きくなります。

したがって、理想的なエントリー/イグジットポイントは、「利益が高ければ高いほど良い」という原則に従って求めるのではなく、「時間、利益、リスクの比率が最も良い取引が理想的な取引である」という原則に従って求めるべきである。

これは私の意見です。
 
Aleksei Stepanenko:

理想的な点は歴史上すでに知られており、それは極限であり、目で見ることができるのです。極値を求めるための複雑なアルゴリズムを必要としない。それを特定するための条件(例えば、隣り合う2つの極値の間にある点数を超えるなど)を特定すればよいのである。そして、それらの極値(価格、日付)の配列を作成し、同じ履歴を使用して、各極値のポイント(またはその接近)で任意の指標の値をチェックすることができます。そうだろ?

以下は、履歴の極値を 検索して保存 するコードの砕いた例です(性能は保証しません)。

さらに、このコードはスパイク(一つのローソク足が最大値と最小値を同時にカバーした場合、および極値間の最小時間)を捕捉して処理する必要があります。

これで極値を含む配列が埋まったので、いつどこで指標を見ればいいのかがわかります。しかし、その有用性には疑問が残ります:)

コードをありがとうございました。ITを見つけるのが簡単かどうかはわからないが。
 

Peterさん、チャートに手描きのトレードの例をいくつか描いていただけますか?エントリー、エグジットできれば、いろいろな値動きのあるチャートの断片をとっておくとよいでしょう。そして、これらのポイントでその理由を説明する。案件の時間・利益・リスクの比率は?

なぜなら、あなたの考える理想的なポイントがよくわからないからです。

 
Aleksei Stepanenko:

Peterさん、チャートに手描きのトレードの例をいくつか描いていただけますか?エントリー、エグジットできれば、いろいろな値動きのあるチャートの断片をとっておくとよいでしょう。そして、これらのポイントでその理由を説明する。案件の時間・利益・リスクの比率は?

なぜなら、あなたの考える理想的なポイントがよくわからないからです。

はい、後でやります。私自身、まだよく分かっていないんです。視点が変わるかもしれませんね。だから、何かあったら、ごめんなさい。))
 

問題ありません。

ジグザグに八つ当たりしているのも、納得がいく。Zig-Zagは、トレンドについて何も知らない。トレンドもフラットも時計仕掛けのように刻んでいるだけだ。 彼の波(膝)はトレンドの波ではありません。トレンドの波は、次のルールに従って作られる:新しいピークを征服した場合、トレンドは継続中とみなされる。つまり、次のトレンドの波は必ず前の波をオーバーシュートし、そうでない場合は波ではないのです。