私が試行錯誤しているアドバイザーの組み立て方 - ページ 45

削除済み  

インジケータをテストするためのシンプルなExpert Advisor

インジケーターの名前を入力します。

input string short_name       = "LeM 2 Macd"; // name indicator

ポジションが間違った方向に開く場合は、リバースに切り替えてください。

input bool   Revers           = false;        // Revers

すべてのインジケータが動作するわけではない - 正常、シグナルインジケータが動作する

全エキスパート設定

//---
input double InpLots          = 0.01;         // Lots
input int    InpTrailingStop  = 0;            // Trailing Stop Level (in pips)
input bool   Revers           = false;        // Revers
input string short_name       = "LeM 2 Macd"; // name indicator
//---

スナップショット.PNG

ファイル:
削除済み  
Alexsandr San:

インジケータをテストするためのシンプルなExpert Advisor

インジケーターの名前を入力します。

ポジションが間違った方向に開く場合は、リバースに切り替えてください。

すべてのインジケータが動作するわけではない - 正常、シグナルインジケータが動作する

全エキスパート設定

インジケータが他のフォルダにある場合

ExamplesZigzagColor.

事例紹介

つづら折り

削除済み  

インジケータから何かを生み出そうとしている ( Heiken_Ashi.mq5 )

- 今のところ、ミュージカル(青より上のグレーは1音、下のグレーは別の音)です。

EURSGDM1

ファイル:
03.mq5  12 kb
削除済み  
Alexsandr San:

インジケータから何かを生み出そうとしている ( Heiken_Ashi.mq5 )

- 私はそれを今のところ、音楽(ときに青1音の上に灰色の線、ときに以下、別の音)得た。


私は、それを正しく取得することはできません、どのように他の行を横切る行を作るために、信号がオフになり、シャットダウンしましたか?

したのですが、小節ごとにアラームが鳴ります

//--- we work only at the time of the birth of new bar
   datetime time_0=iTime(Symbol(),Period(),0);
   if(time_0==m_prev_bars)
      return(rates_total);
   m_prev_bars=time_0;
//---
   int find_buy_level=ObjectFind(0,InpFont2);
   int find_sell_level=ObjectFind(0,InpFont1);

   if(find_buy_level==0)
     {
      double price=ObjectGetDouble(0,InpFont2,OBJPROP_PRICE);
      if(ObjectGetDouble(0,InpFont1,OBJPROP_PRICE)<price)
        {
         PlaySound("tick.wav");
         //---
         return(rates_total);
        }
     }
   if(find_sell_level==0)
     {
      double price=ObjectGetDouble(0,InpFont2,OBJPROP_PRICE);
      if(ObjectGetDouble(0,InpFont1,OBJPROP_PRICE)>price)
        {
         PlaySound("stops.wav");
         //---
         return(rates_total);
        }
     }
//--- done
   return(rates_total);
  }
 
面白い指標ですね。どのように機能するのですか?
削除済み  
Alex potapenko:
面白い指標だと思います。どのように機能するのですか?

私はプログラマーではないので、まだわかりません。そこで、つつくことによって、線が別の線と交差して信号を発生させたいのです。

- 効いているようでいて......そんな感じではない。

削除済み  

Heiken_Ashiインジケータからのシグナル。---- Heiken2_Ashi インジケータ

そして、IndicatorをテストするExpert

AUDCADH4

ファイル:
削除済み  
Alexsandr San:

Heiken_Ashiインジケータからのシグナル。---- Heiken2_Ashi インジケータ

そして、IndicatorをテストするためのExpert Advisor。


Heiken2_Ashi インジケータでは、フィルタを追加することができます。

//---- получение хендла индикатора RSI
   RSI_Handle=iRSI(NULL,0,int(ParmMult*9),PRICE_CLOSE);
   if(RSI_Handle==INVALID_HANDLE)
      Print(" Не удалось получить хендл индикатора iRSI");
//---- получение хендла индикатора Stochastic
   STO_Handle=iStochastic(NULL,0,int(21*ParmMult),int(3*ParmMult),int(2*ParmMult),MODE_LWMA,STO_LOWHIGH);
   if(STO_Handle==INVALID_HANDLE)
      Print(" Не удалось получить хендл индикатора iStochastic");
//---- получение хендла индикатора MACD
   MACD_Handle=iMACD(NULL,0,int(10*ParmMult),int(15*ParmMult),int(13*ParmMult),PRICE_CLOSE);
   if(MACD_Handle==INVALID_HANDLE)
      Print(" Не удалось получить хендл индикатора iMACD");
//---- получение хендла индикатора hHeiken_Ashi
   hHeiken_Ashi=iCustom(NULL,0,"Examples\\Heiken_Ashi");
   if(hHeiken_Ashi==INVALID_HANDLE)
      Print(" Не удалось получить хендл индикатора hHeiken_Ashi");

このフィルターを追加することで

      RsiDn=RSI[bar]<=x2;
      StochDn=STO[bar]<STOS[bar];
      MacdDn=MACD[bar]<MACDS[bar];
      haClDn=haOpen[bar]>haClose[bar];

      RsiUp=RSI[bar]>=x1;
      StochUp=STO[bar]>STOS[bar];
      MacdUp=MACD[bar]>MACDS[bar];
      haOpUp=haOpen[bar]<haClose[bar];

これ

      if(haClDn)
         p = 1;
      if(haOpUp)
         p = 2;
      if(haClDn && (p==1 || p==0))
        {
         if(OldTrend>0)
            SellBuffer[bar]=high[bar];
         if(bar!=0)
            OldTrend=-1;
        }
      if(haOpUp && (p==2 || p==0))
        {
         if(OldTrend<0)
            BuyBuffer[bar]=low[bar];
         if(bar!=0)
            OldTrend=+1;
        }
     }

このように

      if(StochDn && RsiDn && MacdDn && haClDn)
         p = 1;
      if(StochUp && RsiUp && MacdUp && haOpUp)
         p = 2;
      if(StochDn && RsiDn && MacdDn && haClDn && (p==1 || p==0))
        {
         if(OldTrend>0)
            SellBuffer[bar]=high[bar];
         if(bar!=0)
            OldTrend=-1;
        }
      if(StochUp && RsiUp && MacdUp && haOpUp && (p==2 || p==0))
        {
         if(OldTrend<0)
            BuyBuffer[bar]=low[bar];
         if(bar!=0)
            OldTrend=+1;
        }
     }
//----
   return(rates_total);
  }
削除済み  

インジケータは、何かというと、ポジションを建てるのに最適な時

2本の横線の間に、ドットがある色で開くことができます。

撮影者

ファイル:
LN_1.mq5  27 kb
削除済み  

インジケータには4本の水平線があり、そのうち2本はHeiken_Ashiのインジケータから動作しています。

2つのレベルが売買可能で、赤と交差すると1つのシグナル、青と交差するともう1つのシグナルが 表示されます。

EURJPYM1

-------------

真ん中にあるとき(ライン(赤と青)の間の)信号は動作しません - どちらかの側に出てくるように、動作します。

ファイル:
LN_2.mq5  22 kb