どんな新人の質問でも、フォーラムを乱雑にしないように。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 6. - ページ 98

 
Roger:

私はそれを信じていません、このEAは実機でもテスターでも動作しないのです。


なぜ?何か間違いがあるのでしょうか?説明する。

これは、水平線を 命令に変換するコードの一部に過ぎない。

 
よろしくお願いします。ゼロから20-30バーの距離でEAを最適化させる方法。チャートの一番最後に......。
 

インジケータを理解するのに役立ち、私は信号がリアルタイムで表示されていない間になぜ理解することはできませんが、あなたがタイムフレームを切り替える場合にのみ、可視化テスターですべてがあるべきようにレンダリングされています。

アップデート前http://charts.mql5.com/2/379/eurusd-m-m1-roboforex.png

http://charts.mql5.com/2/379/eurusd-m-m1-roboforex-2.png

//+------------------------------------------------------------------+
//|                                                           t27_zz |
//|                                                          tommy27 |
//|                                        SKYPE:       t.o.m.m.y.27 |
//|                                        MAIL: tommy27fx@gmail.com |
//+------------------------------------------------------------------+
#property copyright "tommy27"
#property link      "tommy27fx@gmail.com"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 DodgerBlue
#property indicator_color2 FireBrick

extern int DeepBars = 5000;
double buf_1[];
double buf_2[];
//+------------------------------------------------------------------+
//| Функция инициализации, запускается один раз                      |
//+------------------------------------------------------------------+
int init() 
  {
   SetIndexBuffer(0,buf_1);
   SetIndexBuffer(1,buf_2);

   SetIndexStyle (0,DRAW_ARROW, STYLE_SOLID, 2);
   SetIndexStyle (1,DRAW_ARROW, STYLE_SOLID, 2);
   SetIndexArrow (0,108);
   SetIndexArrow (1,108);

   SetIndexEmptyValue(0,0.0);
   SetIndexEmptyValue(1,0.0);
   IndicatorShortName("t27_zz");
   return(0);
  }
//+------------------------------------------------------------------+
//| Основная Функция, запускается на каждом тике                     |
//+------------------------------------------------------------------+
int start() 
  {
   if (Bars <= 100) return(0);
   int ExtCountedBars = IndicatorCounted();
   if (ExtCountedBars < 0) return(-1);
   if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=DeepBars-ExtCountedBars-1; i>=0; i--)
     { 
      if (Bar1(i)==1)   buf_1[i+1] = Low[i+1]-5*Point;//UP
      if (Bar1(i)==2)   buf_2[i+1] = High[i+1]+5*Point;//DOWN
     }
   return(0);
  }
//---- end
//------------------------------------------------------------------------
int Bar1(int i)
{
 if(Low[i+1] <= Low[i+2] && Low[i+1] <= Low[i])//UP
  return(1);
 if(High[i+1] >= High[i+2] && High[i+1] >= High[i])//DOWN
  return(2);
 return(0);
} 
 
tommy27:

インジケータを理解するのに役立ち、私は信号がリアルタイムで表示されていない間になぜ理解することはできませんが、あなたが可視化テスターで、タイムフレームを切り替える場合のみ、それが必要なようにすべてがレンダリングされます。



DeepBarsの変数に対応しなければならない。

 
splxgf:


変数DeerBarsを扱う。


ありがとうございました。DeerBarsを削除したら、すべてがうまく いきました
 

なぜ交換するのか?

if (ExtCountedBars > 0) ExtCountedBars--;
int recalc=Bars-ExtCountedBars;//добавить
for (int i=recalc; i>=0; i--)//поправить
 
splxgf:

なぜ交換するのか?


はい、このように訂正しました。

if (ExtCountedBars > 0) ExtCountedBars--;
   for (int i=Bars-ExtCountedBars-1; i>=0; i--)

で、DeepBarsでは、バーの 数を設定して、全体を表示せず、最後のDeepBarsに表示したかったのですが、これはなぜかできません。

 
<br /> translate="no">。

また、DeepBarsでは、バーの数を設定して、履歴全体を表示するのではなく、最後のDeepBarsに表示するようにしたかったのですが、なぜかそれができません。


if (ExtCountedBars > 0) ExtCountedBars--;
int recalc=Bars-ExtCountedBars;
if (recalc>DeepBars) recalc=DeepBars;
 
本当にありがとうございました。
 
Dozol:


なぜ?何か間違いがあるのでしょうか?説明する。

これはちょうど、水平線を命令に変換するコードの部分です。

あなたのコードによると、ラインは最初のティックの後に削除されます。つまり、価格追跡機能はなく、スクリプトのように動作します - 手動で水平線を 引き、注文が開かれるかどうか、しかしラインはすぐに削除されます。このコードによるSellstopの注文は開くことができません。