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

 
もう一度、繰り返したい。
(Low[2]==Low[1])||(Close[2]==Low[1])||(Low[2]==Open[1])
そんな条件設定をしてはいけない。これらは、ありそうでなかった出来事です。
 
atguard:

質問:「シフト」の値をどのように取得するのですか?(シフト付きでインジケータを呼び出すと、シフトなしと同じ値が使用されます、つまりiCustom(NULL, 0, "name",pam1,0,1)= iCustom(NULL, 0, "name",pam1,0,100) しかし、100バー前のインディケータを呼び出すと、 iCustom(NULL, 0, "name",pam1,0,100) とは異なる値が表示されることになります。このインジケータはシンプルで、過去5回の終値を使って、その平均値を取ります。



double iCustom( stringsymbol, int timeframe, string name, ..., int mode, intshift)

shiftは インジケータデータを取得するバーの番号、zero barはまだ閉じられていない現在のバーです。受信データのゼロバーからのオフセットをバー単位で表示するため、shiftと命名した。

 
silhouette:

チュートリアルのTerminal()関数で、Mas_Ord_New[0][0]!=0として、ポジションを閉じるときに使っているのです。しかし、ここでもう一つの課題があります。それは、現在のシグナルですでに1つの注文が開かれている場合、そのシグナルでの取引を禁止するフラグを作成する必要があることです。フラッグを使おうとしているのですが、間違えてしまいました。

順番に適当なマジックナンバーを入れて、そのような位置があるかどうかをチェックするのが良いかと思います。ある場合=フラグトゥルー、ない場合=フラグファルス。そして、あなたのシグナルでポジションを持つ ことを条件に、例えば、フラグを挿入してください。

bool flag_1=true;
int MagNum_1=555;

int start()
{
// ...

if (OrdersTotal()>0)
{  for (int i=OrdersTotal()-1; i>=0; i--)
   {  if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
      {  if (OrderMagicNumber()==MagNum_1)
              flag_1=true;
         else flag_1=false;
}  }  }

if (flag_1==false && /*данное условие открытия позиции*/)
{ OrderSend(..., MagNum_1, ...);
}
//...
}
 
paladin80:

順番に適当なマジックナンバーを入れて、その位置がリストにあるかどうか確認した方が良いと思います。フラグがある場合-true、フラグがない場合-false。そして、あなたのシグナルでポジションがオープンされたら、例えばフラグを挿入します。


つまり、私の理解が正しければ、それぞれの信号の種類に対応した複数のマジックを使用することを提案されているのですね?
 
オプティマイザーのカウントはできるのに、結果が出ないのはなぜか、教えてください。ログにエラーはありません。遺伝的アルゴリズムが 無効になっています。最適化の間隔は5日、モードは全ティック、周期はm1、m5、m15、m30のいずれかです。そして、上期から初めて結果が出る。
 
Desead:
オプティマイザーのカウントはできるのに、結果が出ないのはなぜか、教えてください。ログにエラーはありません。遺伝的アルゴリズムが無効になっています。最適化の間隔は5日、モードは全ティック、周期はm1、m5、m15、m30のいずれかです。結果は、H1期からしか表示されません。

H1より短い期間では、アルゴリズムは失敗する。
 
Vinin:

H1より短い期間では、急落している。
その通り!そのためのチェックボックスまであるのに、どうして知らなかったんだろう(笑)。ありがとうございます。
 
Desead:
オプティマイザーのカウントはできるのに、結果が出ないのはなぜか、教えてください。ログにエラーはありません。遺伝的アルゴリズムが無効になっています。最適化の間隔は5日、モードは全ティック、周期はm1、m5、m15、m30のいずれかです。そして、その結果が現れるのは、上半期からです。

このパラメータの組み合わせで収益がマイナスになる場合は、結果を表示しない。一般的に5日間というのは非常に短く、最低でも1ヶ月に設定されています。
 

こんにちは。インジケータを履歴全体ではなく、指定した数のバーの 端にだけ表示させたいのですが、アドバイスをお願いします。コード

//+------------------------------------------------------------------+
//| Индикатор арбитражной ситуации для спреда, состоящего            |
//| из 4-х инструментов                                             |
//| Copyright © 2010, leonid553, Son_Of_Earth                        |
//+------------------------------------------------------------------+
#property copyright "leonid553 & Son_Of_Earth"
#property link      "leonid553@ya.ru,sonofearth.ua@gmail.com"

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_color1 Blue
#property indicator_color2 Red
#property indicator_color3 Yellow
#property indicator_color4 Black
#property indicator_width1 1
#property indicator_width2 1
#property indicator_width3 1
#property indicator_width4 1


extern string Symbol1.Name = "EURUSD";     // Название инструмента 1
extern bool   Symbol1.Reverse = false;     
extern string Symbol2.Name = "";           // Название инструмента 2
extern bool   Symbol2.Reverse = false;     
extern string Symbol3.Name = "";           // Название инструмента 3
extern bool   Symbol3.Reverse = false;     
extern string Symbol4.Name = "";           // Название инструмента 4
extern bool   Symbol4.Reverse = false;     

extern string  ___MISC___ = " == Прочие настройки ==========";




extern string  ___MA___   = " == Параметры МА ценовых линий ====";

extern int MA.Slow = 50;                   // Период медленной МА


// Буферы для отображения данных
double Buf1[];    // Первый инструмент
double Buf2[];    // Второй инструмент
double Buf3[];    // Третий инструмент
double Buf4[];    // Четрертый инструмент



//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init() {
  // Делаем нечувствительными к регистру ввода наименования инструментов
  Symbol1.Name=StringUpper(Symbol1.Name);
  Symbol2.Name=StringUpper(Symbol2.Name);
  Symbol3.Name=StringUpper(Symbol3.Name);
  Symbol4.Name=StringUpper(Symbol4.Name);

  // Определяем балансовые коэффициенты каждого инструмента
  kVol1=1;
  kVol2=1;
  kVol3=1;
  kVol4=1;
  
  // Задаем имена графическим объектам
  oSymb1=Symbol1.Name;
  oSymb2=Symbol2.Name;
  oSymb3=Symbol3.Name;
  oSymb4=Symbol4.Name;


  // Формируем свойства графиков индикатора
  IndicatorBuffers(4);
  
  SetIndexStyle(0,DRAW_LINE);
  SetIndexBuffer(0,Buf1);
  SetIndexLabel(0, Symbol1.Name); 

  SetIndexStyle(1,DRAW_LINE);
  SetIndexBuffer(1,Buf2);
  SetIndexLabel(1,Symbol2.Name); 

  SetIndexStyle(2,DRAW_LINE);
  SetIndexBuffer(2,Buf3);
  SetIndexLabel(2,Symbol3.Name);

  SetIndexStyle(3,DRAW_LINE);
  SetIndexBuffer(3,Buf4);
  SetIndexLabel(3,Symbol4.Name);

  soundCount=0; // Максимально к-во повторов звукового сигнала

  return(0);
}

//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()  {
  // Удаляем все графические объекты
  DeleteObject(oSymb1);
  DeleteObject(oSymb2); 
  DeleteObject(oSymb3);
  DeleteObject(oSymb4);

  return(0);  
}

//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
  // Подсчет количества баров для построения индикатора
  int limit; int counted_bars=IndicatorCounted();
  if(counted_bars<0) return(-1);
  if(counted_bars>0) counted_bars--; 
  limit=Bars-counted_bars;
  
  // Определяем параметры окна индикатора
  wndNum=WindowFind(WindowExpertName());
  wndName=WindowExpertName()+wndNum; 


  
 
  //------------------------------------------------------------------ 
  // Отрисовка ценовых линий: рисуем и синхронизируем по наличию баров
  for(int i=0; i<limit; i++) { 
    // Первый ценовой график
    Buf1[i]= iClose(Symbol1.Name,0,i);
    // Второй ценовой график
    Buf2[i]= iClose(Symbol2.Name,0,i);
    // Третий ценовой график
    Buf3[i]= iClose(Symbol3.Name,0,i);
    // Четвертый ценовой график
    Buf4[i]= iClose(Symbol4.Name,0,i);

 
  } // Конец блока отрисовки ценовых линий

あと、指定したバー数の楽器の価格を逆算して知るにはどうしたらいいのでしょうか?
 
このタスクは、1つのウィンドウに異なる商品の指標値とその日の初めからの価格変動率を表示することです。チャートなしですべてウィンドウに表示できるのか?異なるタイムフレームのインジケータ値を表示することは可能ですか?また、似たようなものの例も教えていただけるとありがたいです。ありがとうございました。