オシレータのコードの入れ方

 
具体的な質問なのですが、EAにストキャスティクスを設定した場合、もちろんラインがクロスすれば動作するのですが、問題は売られすぎ(20)の時だけ買い、買われすぎ(80)の時だけ売るようにするにはどうすればいいのかがわかりません。Vladimirは私を助けてください - どこで、どのように私はこの関数のためのデータを設定する必要があります...よろしくお願いします。
 
financion.comission:
質問ですが、EAでストキャスティクスを設定し、パラメータを設定すると、もちろんラインがクロスしたときにトリガーされますが、問題は、売られすぎの領域(20)でだけ買い、買われすぎの領域(80)で売るようにする方法がわからないのですが...。Vladimirは私を助けてください - どこで、どのように私はこの関数のためのデータを設定する必要があります...よろしく お願いします。

コード例RSIイントラゾーントレーディングシンプル

RSI intrazone trading Simple
RSI intrazone trading Simple
  • www.mql5.com
Торговля только внутри зон индикатора iRSI (Relative Strength Index, RSI)
 
現在/前のバーのrsiが80より大きい場合、売ります。同様に購入
 

これらのパラメータがEAで設定可能かどうか教えてください "" generate ""

宜しくお願いします.

 
financion.comission:

これらのパラメータがEAで設定可能かどうか教えてください "" 生成 ""それともEAの""パターンの""にコードとして書いた方がいいのでしょうか?

よろしくお願いします.

これは、既製のExpert Advisorです。生成」「テンプレート」はありません。

売買シグナルを生成するブロックは、SearchTradingSignals 関数です。

ここでは、過去3本のバーからインジケータデータを取得 し、インジケータがどのゾーンにあるかを比較 します。

//+------------------------------------------------------------------+
//| Search trading signals                                           |
//+------------------------------------------------------------------+
bool SearchTradingSignals(void)
  {
   if(m_prev_bars==m_last_deal_in) // on one bar - only one deal
      return(true);
   double rsi[];
   ArraySetAsSeries(rsi,true);
   int start_pos=0,count=3;
   if(!iGetArray(handle_iRSI,0,start_pos,count,rsi))
      return(false);
   int size_need_position=ArraySize(SPosition);
//--- BUY Signal
   if(rsi[m_bar_current]>Inp_RSI_Level_Up)
     {
      if(!InpReverse)
        {
         ArrayResize(SPosition,size_need_position+1);
         SPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
         if(InpPrintLog)
            Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY");
         return(true);
        }
      else
        {
         ArrayResize(SPosition,size_need_position+1);
         SPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
         if(InpPrintLog)
            Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL");
         return(true);
        }
     }
//--- SELL Signal
   if(rsi[m_bar_current]<Inp_RSI_Level_Down)
     {
      if(!InpReverse)
        {
         ArrayResize(SPosition,size_need_position+1);
         SPosition[size_need_position].pos_type=POSITION_TYPE_SELL;
         if(InpPrintLog)
            Print(__FILE__," ",__FUNCTION__,", OK: ","Signal SELL");
         return(true);
        }
      else
        {
         ArrayResize(SPosition,size_need_position+1);
         SPosition[size_need_position].pos_type=POSITION_TYPE_BUY;
         if(InpPrintLog)
            Print(__FILE__," ",__FUNCTION__,", OK: ","Signal BUY");
         return(true);
        }
     }
//---
   return(true);
  }
 
financion.comission:
具体的な質問があるのですが、EAにストキャスティクスを設定し、パラメータを設定すると、もちろんラインがクロスしたときにトリガーされますが、問題は、売られすぎの領域(20)でだけ買い、買われすぎの領域(80)で売るようにする方法がわからないのですが・・・・・。Vladimirは私を助けてください - どこで、どのように私はこの関数のためのデータを設定する必要があります...よろしく お願いします。

ターミナルにあるExpert Advisorで実験してみましょう。

インジケーターを変更することができます。

//+------------------------------------------------------------------+
//| Initialization of the indicators                                 |
//+------------------------------------------------------------------+
bool CSampleExpert::InitIndicators(void)
  {
//--- create MACD indicator
   if(m_handle_macd==INVALID_HANDLE)
      if((m_handle_macd=iStochastic(NULL,0,5,3,3,MODE_SMA,STO_LOWHIGH))==INVALID_HANDLE)
        {
         printf("Error creating MACD indicator");
         return(false);
        }
//--- succeed
   return(true);
  }
//+------------------------------------------------------------------+

ここでは、ストキャスティックスで行うことができます。

//--- check for long position (BUY) possibility
   if(m_macd_current<20)
      if(m_macd_current>m_signal_current && m_macd_previous<m_signal_previous)
         if(MathAbs(m_macd_current)>(m_macd_open_level))
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
//--- check for short position (SELL) possibility
   if(m_macd_current>80)
      if(m_macd_current<m_signal_current && m_macd_previous>m_signal_previous)
         if(m_macd_current>(m_macd_open_level))

また、テスターで試すこともできます。

ファイル:
0001.mq5  23 kb
 

皆さん、回答ありがとうございました。が、残念ながら何も動作しない・・・。なぜそう思うのですか? 私のもコードを送りますので、正しいレンジを得るために何を修正する必要があるか教えてください ...

***

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • 2021.04.21
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
SanAlex:

ターミナルにあるExpert Advisorで実験してみましょう。

インジケーターを変更することができます。

ここでは、ストキャスティックスで行うことができます。

また、テスターで試すこともできます。

皆さん、お答えいただきありがとうございました。が、残念ながら何も動作しない・・・。な ぜそう思うのですか? 私のもコードを送りますので、正しいレンジを得るために何を調整する必要が あるか教えてください。

***

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • 2021.04.21
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
financion.comission:

皆さん、回答ありがとうございました。が、残念ながら何も動作しない・・・。なぜそう思うのですか? 私のもコードを送りますので、正しいレンジを得るために何を修正する必要があるか教えてください ...

***

ボタンコード でコードを挿入(ボタンを押してから表示されるウィンドウにコードを挿入)するか、ボタンファイルを添付する を使ってコードを添付してください。

 
Vladimir Karputov:

ボタンでコードを挿入するか(ボタンを押すと、表示されたウィンドウにコードが 挿入されます)、ボタンでコードを添付してください。

ご意見ありがとうございました ... 言われたとおりにやってみたら、あなたのコードから54のエラーと8つの警告が出ました ...お気の毒にどうしよう?

私のコードを送ります.範囲を調整することができるかもしれません.

***

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • 2021.04.21
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций
 
あとはレンジを調整するだけです。
理由: