コーディングのヘルプ - ページ 678

 
mladen:

サイモン

条件はもっと洗練されるべきです。例えば:両方が同じシグナルを出しているときは非常に頻繁にあります。では、具体的にいつそうすればいいのでしょうか。それが最初に発生したとき?その都度ですか?また、どちらかが変わるたびに抜けるとなると、抜ける回数が非常に多くなってしまうので

ご返信ありがとうございます。そうですね、これは良い戦略ではないかもしれません。ただ、これをテンプレートとして入手すれば、おそらく後で自分でいくつかの変更を行うことができます。私が欲しいのは、2つの指標を組み合わせる可能性(とそのバッファの使用)です。

例えば、次のような戦略です:両方のインジケータが示すときに買う。そして、両方の指標を示したときに売る。それは、指標の変更と閉じたバーの後に発生する必要があります。それが発生するたびに起こるようにします。

最高です。

 

mladenさんへ。


添付のインジケーターに問題があります。

EA実行中にインディを適用した場合(MT4の標準移動平均)、値がEA実行終了時に同じインディケータを適用して表示される値と大きく異なっているのです。

その理由と、もし実現可能であればインディを修正する方法を教えていただけませんか?


ファイル:
 

mladen氏。

私はmaリボンをmaチャネルに充填 するためのいくつかの変更を行っているが、私はバッファの問題があります。

ヒストグラムの後ろにチャンネルを隠したり、チャンネルの間に空白を作ることができる方法はありますか?

私はそれを空白にしようとしたが、片側にしかそれを行うことができます、それはもう一つのバッファを追加する必要があるのでしょうか?

そして、もう一つの問題は、44行目にある、私はそれを外部または削除することはできません。

それは常にエラーが出ている。

私にいくつかのアドバイスを与えてください、ありがとうございます。

スティーブン。


ファイル:
 
stevenpun:

mladen氏。

私はmaリボンをmaチャネルに充填 するためのいくつかの変更を行っているが、私はバッファの問題があります。

ヒストグラムの後ろにチャンネルを隠したり、チャンネルの間に空白を作ることができる方法はありますか?

私はそれを空白にしようとしたが、片側にしかそれを行うことができます、それはもう一つのバッファを追加する必要があるのでしょうか?

そして、もう一つの問題は、44行目にある、私はそれを外部または削除することはできません。

それは常にエラーが出ている。

私にいくつかのアドバイスを与えてください、ありがとうございます。

スティーブン。


私はこれがあなたがやろうとしていることであるかどうかわからないが、試してみてください。


ファイル:
 
mladen:

これがあなたがやろうとしていることなのかどうかわからないが、試してみてください。


はい、まさに私が欲しいもの:D

しかし、あなたは私が行44 'AlertOnClosedCandle'のコードを確認 するために助けることができる、なぜそれがカント削除またはexternのboolのですか?

これは、このタイプの問題を持っている私の最初の時間です。

どのような方法で私はバッファにいくつかのことを学んでいる。

ありがとうございます。

 

Mladenはあなたが修正した前のインジケータで私のカスタマイズを終えたところです。このコードのどこが問題なのでしょうか?何も表示されない...コンパイルしてもエラーにならない。

#property version   "1.00"
#property strict


#property indicator_chart_window
#property indicator_buffers    4
#property  indicator_color1     Gold
#property  indicator_color2     DodgerBlue
#property  indicator_color3     LimeGreen
#property  indicator_color4     Crimson

#property  indicator_width1     2
#property  indicator_width2     2
#property  indicator_width3     2
#property  indicator_width4     2

extern string                NOTE1           = "SELECT PARAMETERS OF THE INDICATOR"; //SPAN MA CROSS PARAMS
extern int                   SpanPeriod      = 1;            // Period of Span
extern int                   SpanShift       = -26;          // Shift of Span
extern ENUM_MA_METHOD        SpanMode        = 1;            // Mode of Span
extern ENUM_APPLIED_PRICE    SpanPrice       = 0;            // Applied price of Span
extern int                   MaPeriod        = 55;           // Period of Moving average
extern int                   MaShift         = 0;            // Shift of Moving average
extern ENUM_MA_METHOD        MaMode          = 1;            // Mode of Moving average
extern ENUM_APPLIED_PRICE    MaPrice         = 0;            // Applied price of Moving average

extern string                NOTE2           = "SELECT COLORS/STYLES OF THE INDICATOR"; //SPAN MA CROSS COLORS/STYLES
extern color                 SpanClr         = Gold;         // Span color
extern int                   SpanWdt         = 2;            // Span width
extern ENUM_LINE_STYLE       SpanStl         = 0;            // Span line style
extern color                 MaClr           = DodgerBlue;   // Moving average color
extern int                   MaWdt           = 2;            // Moving average width
extern ENUM_LINE_STYLE       MaStl           = 0;            // Moving average line style

extern string                NOTE3           = "SELECT PARAMETERS OF THE SIGNAL ARROWS"; //SPAN MA CROSS PARAMETERS OF THE SIGNAL ARROWS
extern bool                  DrawArrows      = true;         // Draw signal arrows?
extern bool                  DrawMaLines     = true;         // Draw lines?
extern color                 UpArrowClr      = LimeGreen;    // Up arrow color
extern int                   UpArrowWdt      = 2;            // Up arrow width
extern color                 DnArrowClr      = Crimson;      // Down arrow color
extern int                   DnArrowWdt      = 2;            // Down arrow width
extern int                   ArrowsDistance  = 10;           // Arrows distance from candle

extern string                NOTE4           = "SELECT PARAMETERS OF THE ALERT"; //SPAN MA CROSS PARAMETERS OF THE ALERT
extern bool                  AlertsOn        = true;         // Active alert?
extern bool                  AlertsOnCurrent = true;         // Alert on current unclosed bar
extern bool                  AlertsMessage   = true;         // Alert message
extern bool                  AlertsSound     = true;         // Alert sound
extern bool                  AlertsEmail     = false;        // Alert e-mail
extern string                SoundFile       = "alert2.wav"; // Filename of sound alert

string                       IndicatorFileName;
int                          WhichBar;
double                       Gap;


double   SpanBuffer[];     // Buffer of the Span
double   MaBuffer[];       // Buffer of the Moving average
double   CrossUpBuffer[];  // Up arrow buffer
double   CrossDnBuffer[];  // Down arrow buffer
double   TrendBuffer[];    // Span/Ma cross buffer


int init()
  {
   IndicatorFileName = WindowExpertName();
   IndicatorBuffers(5);
   
   
   SetIndexBuffer(0, SpanBuffer);
   SetIndexBuffer(1, MaBuffer);
   SetIndexBuffer(2, CrossUpBuffer);
   SetIndexBuffer(3, CrossDnBuffer);
   SetIndexBuffer(4, TrendBuffer);
   
   if (DrawMaLines) {   
   SetIndexStyle (0, DRAW_LINE, SpanStl, SpanWdt, SpanClr);  
   SetIndexStyle (1, DRAW_LINE, MaStl, MaWdt, MaClr);}
        
   else { 
   SetIndexStyle(0, DRAW_NONE); 
   SetIndexStyle(1, DRAW_NONE);} 
     
   if (DrawArrows) {
   SetIndexStyle (2, DRAW_ARROW, 0, UpArrowWdt, UpArrowClr); SetIndexArrow(0, 233);
   SetIndexStyle (3, DRAW_ARROW, 0, DnArrowWdt, DnArrowClr); SetIndexArrow(0, 234);}
   
   else { 
   SetIndexStyle(2, DRAW_NONE); 
   SetIndexStyle(3, DRAW_NONE);} 
   
   
   
return(0);}
  
int deinit() {  return(0); }

int start() {
   int counted_bars = IndicatorCounted();
   int i, limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = MathMin(Bars-counted_bars, Bars-1);
         
         
  for(i=limit; i>=0; i--){   
      SpanBuffer[i]  = iMA(NULL, 0, SpanPeriod, SpanShift, SpanMode, SpanPrice, i);
      MaBuffer[i]    = iMA(NULL, 0, MaPeriod, MaShift, MaMode, MaPrice, i);
      Gap = iATR(NULL,0,20,i);
      
      TrendBuffer[i] = TrendBuffer[i+1];
         if (SpanBuffer[i] > MaBuffer[i]) TrendBuffer[i] = 1;
         if (SpanBuffer[i] < MaBuffer[i]) TrendBuffer[i] =-1;
         
      
         CrossUpBuffer[i] = EMPTY_VALUE;
         CrossDnBuffer[i] = EMPTY_VALUE;
         if (TrendBuffer[i]!= TrendBuffer[i+1])
         if (TrendBuffer[i] == 1)
               CrossUpBuffer[i] = Low[i]  - ArrowsDistance * Gap;
         else  CrossDnBuffer[i] = High[i] + ArrowsDistance * Gap; 
         }
         
         if (AlertsOn)
         {
         if (AlertsOnCurrent)
                  WhichBar = 0;
         else     WhichBar = 1;      
      
         if (TrendBuffer[WhichBar] != TrendBuffer[WhichBar+1])
         if (TrendBuffer[WhichBar] == 1)
               doAlert("uptrend");
         else  doAlert("downtrend");       
   }
   
   return(0);
}


// CUSTOM FUNCTIONS -------------------------

 void doAlert(string doWhat)
{
   static string   previousAlert="nothing";
   static datetime previousTime;
   string message;
   
      if (previousAlert != doWhat || previousTime != Time[0]) {
          previousAlert  = doWhat;
          previousTime   = Time[0];

          message =  StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," Span ma cross ", doWhat);
             if (AlertsMessage) Alert(message);
             if (AlertsEmail)   SendMail(StringConcatenate(Symbol()," Span ma cross "), message);
             if (AlertsSound)   PlaySound(SoundFile);
      }
}
 
thefxpros:

Mladenはあなたが修正した前のインジケータで私のカスタマイズを終えたところです。このコードのどこが問題なのでしょうか?何も表示されない...コンパイルしてもエラーにならない。

thefxpros

このように試してみてください。

#property version   "1.00"
#property strict


#property indicator_chart_window
#property indicator_buffers    4
#property  indicator_color1     Gold
#property  indicator_color2     DodgerBlue
#property  indicator_color3     LimeGreen
#property  indicator_color4     Crimson

#property  indicator_width1     2
#property  indicator_width2     2
#property  indicator_width3     2
#property  indicator_width4     2

extern string                NOTE1           = "SELECT PARAMETERS OF THE INDICATOR"; //SPAN MA CROSS PARAMS
extern int                   SpanPeriod      = 1;            // Period of Span
extern int                   SpanShift       = -26;          // Shift of Span
extern ENUM_MA_METHOD        SpanMode        = 1;            // Mode of Span
extern ENUM_APPLIED_PRICE    SpanPrice       = 0;            // Applied price of Span
extern int                   MaPeriod        = 55;           // Period of Moving average
extern int                   MaShift         = 0;            // Shift of Moving average
extern ENUM_MA_METHOD        MaMode          = 1;            // Mode of Moving average
extern ENUM_APPLIED_PRICE    MaPrice         = 0;            // Applied price of Moving average

extern string                NOTE2           = "SELECT COLORS/STYLES OF THE INDICATOR"; //SPAN MA CROSS COLORS/STYLES
extern color                 SpanClr         = Gold;         // Span color
extern int                   SpanWdt         = 2;            // Span width
extern ENUM_LINE_STYLE       SpanStl         = 0;            // Span line style
extern color                 MaClr           = DodgerBlue;   // Moving average color
extern int                   MaWdt           = 2;            // Moving average width
extern ENUM_LINE_STYLE       MaStl           = 0;            // Moving average line style

extern string                NOTE3           = "SELECT PARAMETERS OF THE SIGNAL ARROWS"; //SPAN MA CROSS PARAMETERS OF THE SIGNAL ARROWS
extern bool                  DrawArrows      = true;         // Draw signal arrows?
extern bool                  DrawMaLines     = true;         // Draw lines?
extern color                 UpArrowClr      = LimeGreen;    // Up arrow color
extern int                   UpArrowWdt      = 2;            // Up arrow width
extern color                 DnArrowClr      = Crimson;      // Down arrow color
extern int                   DnArrowWdt      = 2;            // Down arrow width
extern int                   ArrowsDistance  = 10;           // Arrows distance from candle

extern string                NOTE4           = "SELECT PARAMETERS OF THE ALERT"; //SPAN MA CROSS PARAMETERS OF THE ALERT
extern bool                  AlertsOn        = true;         // Active alert?
extern bool                  AlertsOnCurrent = true;         // Alert on current unclosed bar
extern bool                  AlertsMessage   = true;         // Alert message
extern bool                  AlertsSound     = true;         // Alert sound
extern bool                  AlertsEmail     = false;        // Alert e-mail
extern string                SoundFile       = "alert2.wav"; // Filename of sound alert

string                       IndicatorFileName;
int                          WhichBar;
double                       Gap;


double   SpanBuffer[];     // Buffer of the Span
double   MaBuffer[];       // Buffer of the Moving average
double   CrossUpBuffer[];  // Up arrow buffer
double   CrossDnBuffer[];  // Down arrow buffer
double   TrendBuffer[];    // Span/Ma cross buffer


int init()
  {
   IndicatorFileName = WindowExpertName();
   IndicatorBuffers(5);
   
   
   SetIndexBuffer(0, SpanBuffer);
   SetIndexBuffer(1, MaBuffer);
   SetIndexBuffer(2, CrossUpBuffer);
   SetIndexBuffer(3, CrossDnBuffer);
   SetIndexBuffer(4, TrendBuffer);
   
   if (DrawMaLines) {   
   SetIndexStyle (0, DRAW_LINE, SpanStl, SpanWdt, SpanClr);  
   SetIndexStyle (1, DRAW_LINE, MaStl, MaWdt, MaClr);}
        
   else { 
   SetIndexStyle(0, DRAW_NONE); 
   SetIndexStyle(1, DRAW_NONE);} 
     
   if (DrawArrows) {
   SetIndexStyle (2, DRAW_ARROW, 0, UpArrowWdt, UpArrowClr); SetIndexArrow(0, 233);
   SetIndexStyle (3, DRAW_ARROW, 0, DnArrowWdt, DnArrowClr); SetIndexArrow(0, 234);}
   
   else { 
   SetIndexStyle(2, DRAW_NONE); 
   SetIndexStyle(3, DRAW_NONE);} 
   
   
   
return(0);}
  
int deinit() {  return(0); }

int start() {
   int counted_bars = IndicatorCounted();
   int i, limit;

   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
         limit = MathMin(Bars-counted_bars, Bars-1);
         
         
  for(i=limit; i>=0; i--){   
      SpanBuffer[i]  = iMA(NULL, 0, SpanPeriod, SpanShift, SpanMode, SpanPrice, i);
      MaBuffer[i]    = iMA(NULL, 0, MaPeriod, MaShift, MaMode, MaPrice, i);
      Gap = iATR(NULL,0,20,i);
      
      if (i<Bars-1) TrendBuffer[i] = TrendBuffer[i+1];
         if (SpanBuffer[i] > MaBuffer[i]) TrendBuffer[i] = 1;
         if (SpanBuffer[i] < MaBuffer[i]) TrendBuffer[i] =-1;
         
      
         CrossUpBuffer[i] = EMPTY_VALUE;
         CrossDnBuffer[i] = EMPTY_VALUE;
         if (i<Bars-1 && TrendBuffer[i]!= TrendBuffer[i+1])
         if (TrendBuffer[i] == 1)
               CrossUpBuffer[i] = Low[i]  - ArrowsDistance * Gap;
         else  CrossDnBuffer[i] = High[i] + ArrowsDistance * Gap; 
         }
         
         if (AlertsOn)
         {
         if (AlertsOnCurrent)
                  WhichBar = 0;
         else     WhichBar = 1;      
      
         if (TrendBuffer[WhichBar] != TrendBuffer[WhichBar+1])
         if (TrendBuffer[WhichBar] == 1)
               doAlert("uptrend");
         else  doAlert("downtrend");       
   }
   
   return(0);
}


// CUSTOM FUNCTIONS -------------------------

 void doAlert(string doWhat)
{
   static string   previousAlert="nothing";
   static datetime previousTime;
   string message;
   
      if (previousAlert != doWhat || previousTime != Time[0]) {
          previousAlert  = doWhat;
          previousTime   = Time[0];

          message =  StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," Span ma cross ", doWhat);
             if (AlertsMessage) Alert(message);
             if (AlertsEmail)   SendMail(StringConcatenate(Symbol()," Span ma cross "), message);
             if (AlertsSound)   PlaySound(SoundFile);
      }
}
 
mladen:

訂正:

sigmaの74行目と75行目をこのように変更してください。

to this :

そして、それは動作するはずです。

もしくはstrictの記述を完全に削除する(strictで使うならそのインジケータは完全に書き直す必要があるため)

mladenさんへ。

両方の提案を試してみたのですが、うまくいかず、EAで実行すると以下の画像のようにindiが更新されないことに気づきました。

修正できるはず?:

ファイル:
Sigma.mq4  5 kb
 
mladen:

テフプロス

このように試してみてください。

Mladenを試したところ、うまくいったようですが、ストラテジーテスターでは、更新されず、アラートもポップアップされません。
 

こんにちは、Mladenさん。

私は、価格がトレンドから反転したときにコメントを追加し、 "買いを待つ "と "売りを待つ "を持っていることを考えていました。

新しい行を買いに追加することは問題ありませんが、それを販売に追加するとき、それが動作するようにすることはできません。

私は何を変更する必要がありますか?

   string OPstr;
   color OPclr;
   if (buffer1[i+SignalCandle]>buffer5[i+SignalCandle]) {
      OPstr = "BUY";
      OPclr = Green;
      }
   if (buffer1[i+SignalCandle]>buffer5[i+SignalCandle] && Bid < buffer1[i+SignalCandle] ) {
      OPstr = "WAIT FOR BUY";
      OPclr = LimeGreen;
      }       
   else
   
   if (buffer1[i+SignalCandle]<buffer6[i+SignalCandle] ) {
      OPstr = "SELL";
      OPclr = Red;
      }
   if (buffer1[i+SignalCandle]<buffer6[i+SignalCandle] && Bid > buffer1[i+SignalCandle] ) {
      OPstr = "WAIT FOR SELL";
      OPclr = OrangeRed;
      }        
   else 
      {
      OPstr = "NO TRADE";
      OPclr = Yellow;
      }