[АРХИВ!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 4. - страница 380

 
хорошо,сейчас еще раз проверю
 
Ещё раз хочу повторить.
(Low[2]==Low[1])||(Close[2]==Low[1])||(Low[2]==Open[1])
Задавать так условия нельзя. Это маловероятные события.
 
atguard:

Вопрос: как получить значение "shift"? (при вызове индикатора со сдвигом он использует значения как без него, т.е к примеру у меня получается, что iCustom(NULL, 0, "name",pam1,0,1)= iCustom(NULL, 0, "name",pam1,0,100), хотя если вызвать индикатор 100 баров назад у него будет значение отличное от iCustom(NULL, 0, "name",pam1,0,100). Индикатор прост, использует 5 предыдущих значений Close, берет их среднее.



double iCustom( string symbol, int timeframe, string name, ..., int mode, int shift)

shift - номер бара, с которого вы берете данные индикатора, нулевой бар - это текущий, еще не закрытый бар. Параметр назван смещением, поскольку показывает в барах смещение получаемых данных от нулевого бара.

 
silhouette:

Я использую функцию Terminal() из учебника при закрытии позиций, при условии, что Mas_Ord_New[0][0]!=0. Но здесь стоит другая задача: нужно сделать флаг, запрещающий торговать по текущему сигналу, если один ордер по нему уже открыт. Пытаюсь использовать флаги, но в чем-то я ошибся.

Думаю лучше поставить в ордер соответствующий магик-номер и проверять наличие такой позиции в списке. Если есть = флаг-правда, нет = флаг-ложь. Далее при условии открытия позиции по вашему сигналу вставить флаг, напр.:

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:

Думаю лучше поставить в ордер соответствующий магик-номер и проверять наличие такой позиции в списке. Если есть флаг-правда, нет флаг-ложь. Далее при условии открытия позиции по вашему сигналу вставить флаг, напр.:


Т.е., если я правильно все понял, вы предлагаете использовать несколько магиков, соответствующих каждому типу сигналов?
 
Подскажите почему оптимизатор может считать но не выдавать результатов. Ошибок в журнале нет. Генетический алгоритм выключен. Интервал оптимизации 5 дней, режим все тики, период любой м1, м5,м15,м30. И только начиная с периода Н1 результаты появляются.
 
Desead:
Подскажите почему оптимизатор может считать но не выдавать результатов. Ошибок в журнале нет. Генетический алгоритм выключен. Интервал оптимизации 5 дней, режим все тики, период любой м1, м5,м15,м30. И только начиная с периода Н1 результаты появляются.

На периодах, меньше Н1, сливает.
 
Vinin:

На периодах, меньше Н1, сливает.
точно! там же даже галка соответствующая есть, как это я не догадался ). Спасибо.
 
Desead:
Подскажите почему оптимизатор может считать но не выдавать результатов. Ошибок в журнале нет. Генетический алгоритм выключен. Интервал оптимизации 5 дней, режим все тики, период любой м1, м5,м15,м30. И только начиная с периода Н1 результаты появляются.

Если при данной комбинации параметров заработок отрицателен, результат не показывается. Вообще то 5 дней очень уж короткий период, поставте хотя бы месяц.
 

Добрый день. Подскажите, пожалуйста, мне нужно, чтобы индикатор отображался не на всей истории, а только скраю на заданном количестве баров. Код:

//+------------------------------------------------------------------+
//| Индикатор арбитражной ситуации для спреда, состоящего            |
//| из 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);

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

И еще, как узнать цену инструмента на заданное количество баров назад?
Причина обращения: