[ВНИМАНИЕ, ТЕМА ЗАКРЫТА!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда. - страница 608

 
artmedia70:
А как вы думаете определяться - откат это или разворот? Или на каждом откате будете открывать по две позиции? Это слив...

Для начала я хотел бы чтоб это заработало, а потом погонять "советник" в тестере, чтоб подобрать размер параметра lim.
 
здрасти всем вот пробую составлять програмки и возникла

проблема не могу понять почему не получается помогите разобраться

можно и разжевать :-)

хочу зделать чтобы линия меняла цвет в зависимости от тренда так скажем(примитивный индюк)

она вроде меняет но появляются пропуски как будто в расчете пропускает бар

вчем моя ошибка



//--------------------------------------------------------------------
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Blue // Цвет первой линии
#property indicator_color2 Red // Цвет второй линии

double Buf_0[],Buf_1[]; // Открытие индикаторных массивов
//--------------------------------------------------------------------
int init() // Специальная функция init()
{
//--------------------------------------------------------------------
SetIndexBuffer(0,Buf_0); // Назначение массива буферу
SetIndexStyle (0,DRAW_LINE,STYLE_SOLID,2);// Стиль линии
//--------------------------------------------------------------------
SetIndexBuffer(1,Buf_1);
SetIndexStyle (1,DRAW_LINE,STYLE_SOLID,2);
//--------------------------------------------------------------------
return;
}
//--------------------------------------------------------------------
int start()
{
int i,Counted_bars;
//--------------------------------------------------------------------
Counted_bars=IndicatorCounted(); // Количество просчитанных баров
i=Bars-Counted_bars-1; // Индекс первого непосчитанного
while(i>=0) // Цикл по непосчитанным барам
{
double a=(High[i]+Low[i])/2;
double b=(High[i+1]+Low[i+1])/2;
if (a=>b) Buf_0[i]=a; //меняем или не меняем цвет
if (a<b) Buf_1[i]=a;
i--;
}
//--------------------------------------------------------------------
return;
}
//--------------------------------------------------------------------
 
Здравствуйте!!! Подскажите пожалуйста, как реализовать это в код? Надо чтоб после 3 (Кол-во задается отдельно) убыточных ордеров по sl открылось дава ордера, на покупку и на продажу. Растояние между ними задовалось отдельной переменной.
 
Здравствуйте, хочу посчитать 'исторический внутридневной ATR' (т.е. скажем, среднее для каждого часа в течении последних 30 дней ) и  хочется верить, что что-то такое уже должно быть - может как-то по-другому называется индикатор или как-то можно настроить имеющиеся?  если кто знает, подскажите пожалуйста!
 
zelek:

Для начала я хотел бы чтоб это заработало, а потом погонять "советник" в тестере, чтоб подобрать размер параметра lim.
А вы его к ATR прицепите. Будет динамика и подгонять не нужно - от волатильности рынка всё зависеть будет
 
Top2n:
Здравствуйте!!! Подскажите пожалуйста, как реализовать это в код? Надо чтоб после 3 (Кол-во задается отдельно) убыточных ордеров по sl открылось дава ордера, на покупку и на продажу. Растояние между ними задовалось отдельной переменной.


Заводим переменную, равную нулю и при убыточности закрывшейся позиции увеличиваем её на 1. Как только она достигнет требуемого значения, открываем нужные позиции.
Вот и вся логика...
 

Можете пасаветовать роботы которые работают 15 дней и которые не отличаются по прибыли с гепардом 2.5?

Прошу сылку или сайт и т д.

Зарание благодарю за патраченое время

 
artmedia70:
А вы его к ATR прицепите. Будет динамика и подгонять не нужно - от волатильности рынка всё зависеть будет


Гляньте пожалуйста на код, а то не могу понять почему ордера не закрываются

extern int     lim=20;             // Дистанция возврата курса

/
int init()
  {
 

   return(0);
  }
/
int deinit()
  {
//----
   
//----
   return(0);
  }

int start()
  {
 
  double 
   max, min;                                            
  int b, s;
   if (Bid>max) max=Bid; 
    if (Ask<min) min=Ask;  
       if (OrdersTotal()>0)
       {                                   
           if ((max-Bid)>=lim*Point) 
           {                   
          OrderSelect(b,SELECT_BY_TICKET);                                  
          b=OrderClose(OrderTicket(),0.1,Bid,3,Blue);
          }
          
          
          if ((Ask-min)>=lim*Point)  
          {         
      OrderSelect(s,SELECT_BY_TICKET); 
      s=OrderClose(OrderTicket(),0.1,Ask,3,Red);
         }
}
else
{
  if (OrdersTotal()<1)
  {
 b=OrderSend(Symbol(),OP_BUY,0.1,Ask,5,0,0,"",5,0);
      
 s=OrderSend(Symbol(),OP_SELL,0.1,Bid,5,0,0,"",5,0); 
    }                           
   }
         return;

   return(0);
  }
 
zelek:


Гляньте пожалуйста на код, а то не могу понять почему ордера не закрываются

 

интересная конструкция:
if (Bid>max) max=Bid;
if (Ask<min) min=Ask;

а Вы уверенны, что если цена, скажем, идет вверх, то  if ((max-Bid)>=lim*Point)  выполнится?

я бы сделал так  - в секции init(), к примеру запомнил бы цену при старте советника ( можно и не в инит) - и потом бы от этой цены и плясал бы, можно запомнить цену при выставлении ордера

а как у Вас вроде получается, что Вы по тикам будете раздвигать  свои min и maх и в этом коридоре будете контролировать свои ордера


 
По логике вроде должно работать, а почему нет, могли бы вы объяснить?
Причина обращения: