記事"MQL5における 20のトレードシグナル"についてのディスカッション - ページ 4

 

記事を書いてくれた著者に感謝する!

1CMasterがアドバイスするようなことをしてはいけない。

チャート上に垂直線を引いて、どのインジケーターが今この瞬間の状態(垂直線がある場所)を示すかを動かし、現在の状態を示さないようにする。

 

コードは有用かもしれないが、いくつかのインジケータは冗長である:

BBと標準偏差チャンネル- 同じもの;

価格、ドンチャン・チャネル、ギャラガー・チャネル - 同じもの;

とにかく、この記事には感謝する。

Documentation on MQL5: Standard Constants, Enumerations and Structures / Objects Constants / Object Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Objects Constants / Object Properties - Documentation on MQL5
 

ワニ信号の形成エラー

.....
      if(CopyBuffer(h_al,0,0,2,al1_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,1,0,2,al2_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,2,0,2,al3_buffer)<2)
         return(0);
      if(!ArraySetAsSeries(al1_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al2_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al3_buffer,true))
         return(0);
     }
//--- 条件をチェックし、sigに値を設定する。
   if(al3_buffer[1]>al2_buffer[1] && al2_buffer[1]>al1_buffer[1])
      sig=1;
   else if(al3_buffer[1]<al2_buffer[1] && al2_buffer[1]<al1_buffer[1])
      sig=-1;
   else sig=0;

//--- 取引シグナルを返す
   return(sig);
  }


これらのバッファのコピーは、インディケータ・ラインの シフトを考慮すると必要ですが、ここでは必要ありません。

第2に、1つのバーを比較するだけなら、なぜ2つのインジケータの値をコピーするのか、つまり、各バッファ(ライン)に1つの値で十分です。

AOからのシグナル:多くのデータもコピーされている(分析には参加していない)。

     if(CopyBuffer(h_ao,1,0,20,ao_buffer)<20)
         return(0);
      if(!ArraySetAsSeries(ao_buffer,true))
         return(0); 

そして、記事の冒頭で、ガラガラを取り除くために、ゼロではなく、履歴の最初のバーを分析すると言われましたが、なぜゼロバーをコピーするのでしょうか?

我々はリソースを節約しない....

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы индикаторов / Линии индикаторов - Документация по MQL5
 
olyakish:

ワニ信号の形成エラー


これらのバッファのコピーは、インディケータ・ラインの シフトを考慮すると必要ですが、ここでは必要ありません。

第二に、比較するのは1つのバーだけなのに、なぜ2つのインジケータの値をコピーするのでしょうか。

AOからのシグナル:多くのデータもコピーされている(分析には参加していない)。

そして、記事の冒頭で、ガラガラを取り除くために、ゼロではなく、履歴の最初のバーを分析すると言われましたが、なぜゼロバーをコピーするのでしょうか?

我々はリソースを節約しない....



まず第一に、それはヘルプに明確に書かれています。

Необходимо помнить, что смещение линии является чисто визуальным для отображения и значения в индикаторном буфере хранятся без смещения. 
При получении значений буфера функцией CopyBuffer() значение смещения никакого эффекта иметь не будет.

第二に、私はデータのコピーでいくつかのミスを犯したかもしれないが、それはタスクの主要なポイントに影響を与えません。この記事の目的は、指標とデータに正しく対処する方法を示すことです。

 

ちなみに、私自身はこのような構造を使っています。この場合、関数からのデータを直接トレードクエリーに 渡すことができます。

ENUM_ORDER_TYPE ind_01()
  {
   ENUM_ORDER_TYPE sig=WRONG_VALUE;

   if(IND01_handle==INVALID_HANDLE || IND01_handle==0)
     {
      IND01_handle=iAC(_Symbol,TF_01);
      return(WRONG_VALUE);
     }
   else
     {
      if(CopyBuffer(IND01_handle,1,0,AC_shift+3,IND01_buffer1)<AC_shift+3) return(WRONG_VALUE);
      if(!ArraySetAsSeries(IND01_buffer1,true)) return(WRONG_VALUE);

      if(CopyBuffer(IND01_handle,0,0,AC_shift+1,IND01_buffer2)<AC_shift+1) return(WRONG_VALUE);
      if(!ArraySetAsSeries(IND01_buffer2,true)) return(WRONG_VALUE);
     }

   if(IND01_buffer2[AC_shift]>0.0 && IND01_buffer1[AC_shift]==0 && IND01_buffer1[AC_shift+1]==0)sig=ORDER_TYPE_BUY;
   else if(IND01_buffer2[AC_shift]<0.0 && IND01_buffer1[AC_shift]==0 && IND01_buffer1[AC_shift+1]==0 && IND01_buffer1[AC_shift+2]==0)sig=ORDER_TYPE_BUY;
   else if(IND01_buffer2[AC_shift]<0.0 && IND01_buffer1[AC_shift]==1 && IND01_buffer1[AC_shift+1]==1)sig=ORDER_TYPE_SELL;
   else if(IND01_buffer2[AC_shift]>0.0 && IND01_buffer1[AC_shift]==1 && IND01_buffer1[AC_shift+1]==1 && IND01_buffer1[AC_shift+2]==1)sig=ORDER_TYPE_SELL;
   else sig=WRONG_VALUE;

   return(sig);
  }
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура торгового запроса - Документация по MQL5
 
sergey1294:

まず第一に、それはヘルプに明確に書かれている。

次に、データのコピーでいくつかミスがあったかもしれないが、課題の主旨には影響しない。記事の目的は、指標とデータを正しく扱う方法を示すことです。

たしかに視覚的なものですが、私たちは取引を入力する際に視覚的な値を重視しており、端末のメモリにどのように保存されているかは重視していません。

ワニの場合、13×8、8×5、5×3(標準値)が正しい方法です。

int TradeSignal_17()
  {
   int sig=0;

   if(h_al==INVALID_HANDLE)
     {
      h_al=iAlligator(Symbol(),Period(),13,0,8,0,5,0,MODE_SMMA,PRICE_MEDIAN);
      return(0);
     }
   else
     {
      if(CopyBuffer(h_al,0,8,2,al1_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,1,5,2,al2_buffer)<2)
         return(0);
      if(CopyBuffer(h_al,2,3,2,al3_buffer)<2)
         return(0);
      if(!ArraySetAsSeries(al1_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al2_buffer,true))
         return(0);
      if(!ArraySetAsSeries(al3_buffer,true))
         return(0);
     }
//--- 条件をチェックし、sigに値を設定する。
   if(al3_buffer[1]>al2_buffer[1] && al2_buffer[1]>al1_buffer[1])
      sig=1;
   else if(al3_buffer[1]<al2_buffer[1] && al2_buffer[1]<al1_buffer[1])
      sig=-1;
   else sig=0;

//--- 取引シグナルを返す
   return(sig);
  }
 
olyakish:

たしかに視覚的なものですが、私たちはディールを入力するときに視覚的な値を重視しており、端末のメモリにどのように入っているかは重視していません。

ワニの場合、13対8、8対5、5対3(標準値)が正しい。

私は言いませんが、すべての人がオフセット付きのワニグチを使っているわけではないと思います。だから、このケースに間違いはない。あなたはオフセットが必要だったから追加したのであり、必要な人はスチールでも追加できる。もう一度言いますが、この記事の目的は、インジケーターとそのデータに正しく対処する方法を示すことであり、どれだけの量をどのように入手するかは各個人の問題です。
 
sergey1294:
明言はしないが、誰もがオフセットのアリゲーターを使っているとは思わない。だから、このケースに間違いはない。あなたはオフセットを必要とし、あなたはそれを追加した。もう一度繰り返すが、この記事の目的は、インジケーターとそのデータに正しく対処する方法を示すことであり、何個、どの程度の量を入手するかは、各人の問題である。

参考...

テクニカル指標 アリゲーターは、フラクタル幾何学と非線形力学を利用したバランスライン(移動平均線)の組み合わせです。

  • 青い線(アリゲーターの顎)は 、チャート作成に使用した期間のバランス・ライン(13期間の平滑化移動平均線、8バー先までシフト
  • 赤線(ワニの歯)は 一桁低い期間のバランス線(8期間の平滑化移動平均を5本未来にシフト
  • 緑の線(ワニの唇)は 、もう一桁低い意味のある期間のバランス線(5期間の平滑化移動平均を3本未来にシフト )。


キーワードは太字です。

あなたのコードの結果は平均の分析です。

私が提案するコードの結果は、ワニ線の分析です。

 
これらは本当に勉強になる。
 
私のような初心者にはとても役に立つ。