[ARCHIVE] フォーラムを散らかさないように、どんなルーキーでも質問してください。プロフェッショナルは、通り過ぎないでください。Nowhere without you - 3. - ページ 173

 
Ctmcn:

EAをコンパイルする際のエラーの意味を教えてください。

\プログラム終了」 - アンバランスな左括弧


アンバランスな左括弧。
 
Roll:

左側ブラケットのアンバランス。

おっと...見つけた。ありがとうございました。
 

ここで質問です。

注文はBUY/SELL STOPで 開始されます。あるものは成行注文になり、あるものは削除される。

最後のN市場注文(openとclose)について、それらが買いか売りかを知る必要があります。

最初に考えたのは、OrdersHistoryTotal() と OrdersTotal() からすべての注文を検索し、次のようにソートすることです。

で、OP_BUYとOP_SELLでソートします。しかし、これは長いので、プロセッサの速度を乱暴に落とすことになる。

- もしかしたら、他にもっとシンプルなバリエーションがあるのかもしれません。

ありがとうございました。

 

こんにちは。

どなたか助けてください。

過去2,3,4,5日間の平均ボラティリティを計算するシンプルなインジケータを初めて作成した。

インジケータは6つのバッファを持つ。

SetIndexStyle(0,DRAW_HISTOGRAM);
   SetIndexBuffer(0,VolatBuffer0);
   SetIndexStyle(1,DRAW_HISTOGRAM);
   SetIndexBuffer(1,VolatBuffer1);
   SetIndexStyle(2,DRAW_HISTOGRAM);
   SetIndexBuffer(2,VolatBuffer2);
   SetIndexStyle(3,DRAW_HISTOGRAM);
   SetIndexBuffer(3,VolatBuffer3);
   SetIndexStyle(4,DRAW_HISTOGRAM);
   SetIndexBuffer(4,VolatBuffer4);
   SetIndexStyle(5,DRAW_LINE);
   SetIndexBuffer(5,VolatBuffer5);

チャート上のそのウィンドウには、通常、0日、1日、2日、3日、4日の平均のボラティリティの5本の縦線のみが 描かれます。

過去5日間の合計による平均ボラティリティは、日足ローソク足50本分の折れ線で描かれます(ローソク足の本数が指定されます)。

バッファの含有量は、5日間平均したデータをサイクル内(50日分の線を引く)、その他の平均したデータをサイクル外として計算しています。

while(i>=0)
   {
    
   int day0= (High[i] - Low[i])/Point;
   int day1= (High[i+1] - Low[i+1])/Point;
   int day2= (High[i+2] - Low[i+2])/Point;
   int day3= (High[i+3] - Low[i+3])/Point;
   int day4= (High[i+4] - Low[i+4])/Point;
   int day5= (High[i+5] - Low[i+5])/Point;

        int D5_av = (day1+ day2+ day3+ day4+ day5) / 5;
       VolatBuffer5[i]=D5_av;
      i--;
        }
        day0= (High[0] - Low[0])/Point;
   day1= (High[1] - Low[1])/Point;
   day2= (High[2] - Low[2])/Point;
   day3= (High[3] - Low[3])/Point;
   day4= (High[4] - Low[4])/Point;
        
        int D4_av = (day1+ day2+ day3+ day4)/4;
        int D3_av = (day1+ day2+ day3)/3;
        int D2_av = (day1+ day2)/2;
        int D1_av = day1/1;
        int D0_av = day0/1;
        
        VolatBuffer0[0]=D0_av;
      VolatBuffer1[1]=D1_av;
      VolatBuffer2[2]=D2_av;
      VolatBuffer3[3]=D3_av;
      VolatBuffer4[4]=D4_av;
Comment("Волатильность. За 5 дн.= "+VolatBuffer5[5]+" За 4 дн.= "+VolatBuffer4[4]+" За 3 дн.= "+VolatBuffer3[3]+" За 2 дн.= "+VolatBuffer2[2]+" Вчера= "+VolatBuffer1[1]+" Сегодня= "+VolatBuffer0[0]);

バッファの内容を入力するインジケーターのComent行は、画面上で不条理を与えています。

5日間平均- その日は194pipsを超えるボラティリティはなく、他の日は正しい結果です。

コメント =" Volatility.5日間 = 219.000000 4日間 = 171.0000000 3日間 = 189.00000 2日間 = 187.00000 昨日 = 194.00000 今日 = 5 "

ゼロデイ "Today "は、明らかに現在のボラティリティに比例して増加する

これらのバッファをExpert Advisorに呼び出す場合

int Volat0= iCustom(Symbol(), 1440, "Volat_Average_Gist",0,0);
      int Volat1= iCustom(Symbol(), 1440, "Volat_Average_Gist",1,0);
      int Volat2= iCustom(Symbol(), 1440, "Volat_Average_Gist",2,0);
      int Volat3= iCustom(Symbol(), 1440, "Volat_Average_Gist",3,0);
      int Volat4= iCustom(Symbol(), 1440, "Volat_Average_Gist",4,0);
      int Volat5= iCustom(Symbol(), 1440, "Volat_Average_Gist",5,0);

tester's Print line 別の不条理を出力する -正しくはない、Coment lineとは異なる、しかし真実に近い、5日間の平均結果と 今日の「Day Zero」の正しいボラティリティを出力する。

残りは固定の不条理な数字を出す。

テスタープリントでは、5日間の変動率=181 4日間の変動率=2147483647 3日間の変動率= 2147483647 2日間の変動率=2147483647 昨日=2147483647 今日=5

数日前から、「Day Zero」バッファを除く5つのインジケータ・バッファに含まれるデータと異なるデータがExpert Advisorに呼び出されるのはなぜか理解できません。

 

を代用してみてください。

VolatBuffer1[1]=D1_av;

まで

VolatBuffer1[0]=D1_av;

と他のすべてのバッファも同様です。

 
Roger:

を代用してみてください。

VolatBuffer1[1]=D1_av;

まで

VolatBuffer1[0]=D1_av;

と他のすべてのバッファも同様です。

ありがとうございました。

うまくいった。Expert Advisorが正常なデータの受信を開始しました。

さらに、興味深い効果があります。インジケーターの「Coment」行にある

5日分の219枚だけはそのまま残ります。

同時にExpert Advisorは、本来は219であるところを181で受信します。

Coment''showsVolatility Over 5 days= 219.000000 Over 4 days=2147483647 Over 3 days= 2147483647 Over 2 days=2147483647 昨日=2147483647 今日= 5

 
Roger:

を代用してみてください。

VolatBuffer1[1]=D1_av;

まで

VolatBuffer1[0]=D1_av;

と他のすべてのバッファも同様です。

もうひとつ、効果を発見しました。インジケーターウィンドウの縦線は すべて重ねて描画される

最大値で他をカバーする。Expert Advisorでは必須ではありません。

 
Vekker:

こんにちは。

どなたか助けてください。

過去2,3,4,5日間の平均ボラティリティをカウントするシンプルなインジケータを作成した。

ATRを使えば、かなり簡略化できます。

iATR(NULL, PERIOD_D1, Number_Of_Days, 1)
 
Roll:
スクリプトは2つ。

もはや、コードをどう書くかではなく、多重ループを避けることはできないか、という発想のレベルです。

というように、プロセッサに大きな負荷をかける。例えば、STOP注文の未決済数を追跡して、1つでも減っていたら、注文を削除しない⇒成行注文を出す⇒という案があった。

は、そのオープン時間とタイプを配列に配置する必要があります。こんな感じ。

どんなアイデアでも歓迎します。

ありがとうございます。

 
chief2000:

ATRを使えば、かなり簡略化できます。



ありがとうございました。やってみる