[ARCHIVE!] フォーラムを散らかさないように、どんなルーキーの質問でも。プロフェッショナルは、通り過ぎないでください。あなたなしではどこにも行けない - 4. - ページ 537

 
Pacman:

皆さん、こんにちは。

正しいコードになるように助けてください。

Bid > Line_2 の条件を満たすと、RSI<30 の条件が満たされ、RSI指標が値30より上になる。

2つの条件を正しくリンクさせるには?

もし、そのような実装を見たことがある人がいたら、リンクを教えてください。

最も簡単で効果的な方法は、CodaBase で既に実装されている EA の中から "RSI" という単語を検索することです。
 
繰り返しになりますが、このようなシグナルしか出ないインジケータ(写真の上のインジケータ)を持っています。
これらの信号を「固体」信号に変換する必要があります(写真の一番下のインジケーター)。
やり方を知っている人は助けてください

追伸

写真のMACDインジケータは、私の問題を説明するために使用されているだけです。



から回答がありました。 TaraasBY(その節はありがとうございました)。

インジケータ・バッファに値がない場合、直前の(空ではない)値で満たします。

if (gda_BUF1[pos] == EMPTY_VALUE) 
    {
        if (gda_BUF1[pos+1] != EMPTY_VALUE) gda_BUF1[pos] = gda_BUF1[pos+1];
       
    }


ExtMapBuffer1[i]とExtMapBuffer1[pos]をリンクするにはどうしたらいいですか?

例えば、MACDだけからそのインディケータを繰り返したいのですが、その中で上記のような構築を繰り返すにはどうしたらよいでしょうか?

#property indicator_separate_window
#property indicator_minimum -1.5
#property indicator_maximum 1.5
#property indicator_buffers 1
#property indicator_color1 Aqua
#property  indicator_width1  2
#property indicator_level1 0.0
//--- buffers
double ExtMapBuffer1[];

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,ExtMapBuffer1);
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
     int counted_bars=IndicatorCounted(),
       limit;  
       
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
   
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=1;
       }
      else
       {
        
       
       
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=-1;
       }
      else
       {
        ExtMapBuffer1[i]=0;
       }
      }
      
 
//----
   return(0);
  }
//+------------------------------------------------------------------+
 
MK07:

ExtMapBuffer1[i]とExtMapBuffer1[pos]はどのように接続すればよいですか?

以下はインジケータのコードですが、MACDインジケータはあくまで例として、その中で上記のような構造を繰り返すにはどうしたらよいでしょうか?

こんな感じで(MACDに応用して)。

int start()
  {
     int counted_bars=IndicatorCounted(),
       limit;  
     static int li_preSignal = 0;
    if(counted_bars>0)
      counted_bars--;
   
      limit=Bars-counted_bars;
//----
   for(int i=0;i<limit;i++)
   
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=1;
        li_preSignal = 1;
       }
      else
       {
        
       
       
      if((iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+2)>iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+2))&&
         (iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i+1)<iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i+1)))
       {
        ExtMapBuffer1[i]=-1;
        li_preSignal = -1;
       }
      else {ExtMapBuffer1[i] = li_preSignal;}
      }
      
 
//----
   return(0);
  }
 
TarasBY:
最も簡単で効果的な方法は、既に実装されているEAで「RSI」という単語をCodaBaseで 検索することです。

ありがとう、見続けるよ。
 
TarasBY:

だから(MACDに応用して)。

ありがとうございます、動作していますが、1バーだけLATERです他に何かできることはありますか?

 
TarasBY:

だから(MACDに応用して)。

以前のExtMapBuffer1[pos]を使ったバージョンの方が理にかなっており、より普遍的であるように思います。
 
MK07:

ありがとうございます、動作していますが、1バーだけLATERです他に何かできることはありますか?

これを試してみてください。

ファイル:
 

Vinin
:


確率的交差は見つかりませんでした(コードのことです)

// Обращение к функции техн.индикат.
   
   M_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  1);
   M_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_MAIN,  2);
   S_1=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,1);
   S_2=iStochastic(NULL,0,Kperiod,Dperiod,Slowing,MODE_SMMA,Price_field,MODE_SIGNAL,2);

                        // Анализ ситуации
   
   if (M_2 < S_2 && M_1==S_1)                    // Условие откр. Buy и закр. Sell 
     {
      if (Total>0)
        {
        Close_Order_S(Ticket,Ans,Lts); 
        }
      
        Ticket = Open_Order_B(StopLoss,Lts); 
                                                                         
     } 
   if (M_2 > S_2 && M_1==S_1)                    // Условие откр. Sell и закр. Buy        
     {  
      if (Total>0)
        {
        Close_Order_B(Ticket,Ans,Lts);   
        }                           
      
        Ticket = Open_Order_S(StopLoss,Lts); 
 
granit77:

この方法で試してみてください。




ありがとうございます、うまくいきました。
 
Equilibrium:



交差点はどこですか?

実数の比較について読む