Полезные функции от KimIV - страница 97

 

в терминале есть возможность установки равноудалённого канала, можно вместо отрисовки трендовых линий устанавливать его

вот составил функцию по подобию установки трендовой линии

// установка равноудалённого канала
void SetСhannel(string nm,datetime t1,double p1,datetime t2,double p2,datetime t3,double p3,color cl=Red,int st=0,int wd=1,bool ry=False){
// Параметры:
// nm - наименование               (  ""  - текущее время)
// t1,t2,t3 - время открытия бара  (  0   - Time[10]
// p1,p2,p3 - ценовой уровень      (  0   - Low[10])
// cl - цвет линий
// st - стиль линий                (  0   - простая линия)
// wd - ширина линий               (  1   - по умолчанию)
// ry - луч                        (False - по умолчанию)

  if(nm=="")nm=TimeToStr(TimeCurrent(),TIME_DATE|TIME_SECONDS);
  if(ObjectFind(nm)<0){
   ObjectCreate(nm,OBJ_CHANNEL,0,t1,p1,t2,p2,t3,p3);
   ObjectSet(nm,OBJPROP_COLOR,cl);
   ObjectSet(nm,OBJPROP_STYLE,st);
   ObjectSet(nm,OBJPROP_WIDTH,wd);
   ObjectSet(nm,OBJPROP_RAY,ry);
  }
  ObjectSet(nm,OBJPROP_TIME1,t1);
  ObjectSet(nm,OBJPROP_PRICE1,p1);
  ObjectSet(nm,OBJPROP_TIME2,t2);
  ObjectSet(nm,OBJPROP_PRICE2,p2);
  ObjectSet(nm,OBJPROP_TIME3,t3);
  ObjectSet(nm,OBJPROP_PRICE3,p3);
}
 
Roger писал(а) >>

Это, кажется, справа.

упс...

 
DECIDE >>:

в терминале есть возможность установки равноудалённого канала, можно вместо отрисовки трендовых линий устанавливать его

вот составил функцию по подобию установки трендовой линии

интересно

а как задать расстояние между линиями ?

 

растояние само устанавливается, надо только указать три точьки t1,p1,t2,p2,t3,p3

отказался я от этой функции(там одна линия короткая), проще, нагляднее просто трендовые линии рисовать

 
DECIDE >>:

растояние само устанавливается, надо только указать три точьки t1,p1,t2,p2,t3,p3

отказался я от этой функции(там одна линия короткая), проще, нагляднее просто трендовые линии рисовать

задать расстояние между линиями

имеется в виду смещение второй линии относительно первой (трендовой) и параллельно ей по горизонтали на определенную величину баров - например на 5 баров

это ведь тоже равноудаленный канал, который режет выбросы вверх или вниз в зависимости от установки базовой линии и направления тренда.

 

Фукция удаляет нули из массива дублей и возвращает индекс минимума массива

int ArrMin(double &x[]){
  while(x[ArrayMinimum(x)]==0){
    for(int i=ArrayMinimum(x);i<ArraySize(x)-1;i++){
      x[i]=x[i+1];
    }
    ArrayResize(x,ArraySize(x)-1);
  }
  return(ArrayMinimum(x));
}
 

Добрый день всем!

Не знаю, может этот вопрос уже обсуждался... Но я хотел предложить сделать функцию для работы советника с фиксированным балансом.

Это нужно для оптимизации советников.

Что у нас получается: Когда мы запускаем советник, он начинает зарабатывать, и AccountBalance начинает увеличиваться, и в дальнейшем советник использует все более увеличивающуюся сумму баланса.

Если ввести переменную, например Balancе, и в нем задать сумму, которую будет "видеть" советник и закупаться только на эту сумму. Это позволит каждый раз, когда советник будет начинать работу думать что в его распоряжении только Balance денег, и за весь период тестирования можно будет поверить, как работал бы советник, если бы мы его включили в любой из дней, исключив фактор изменения реального баланса.

Оптимизированный с такой переменной советник будет более нормально работать и в будущем.

Остается только закодировать такую функцию.

Моих знаний хватает только на это:

extern double Balance = 10000;

int init() {

//фиксируем баланс на начало работы советника

Balance=AccountBalance;

return (0);

}

int start {

//-------------------------

???

//-------------------------

}

А что писать в ??? я не знаю. Если бы в советнике была функция, где ведется подсчет возможного к-ва открытия ордеров с заданным лотом, используя AccountBalance можно было просто заменить AccountBalance() на переменную, но не все советники явно это делают.

 

Не знаю, может этот вопрос уже обсуждался... Но я хотел предложить сделать функцию для работы советника с фиксированным балансом.

я эту задачу решил так

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

 
DECIDE писал(а) >>

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

поделитесь подробностями, как это можно сделать?

 

нужна мне такая возможность - параллельного горизонтального смещения (копирования, переноса...) трендовой линии на определенное кол-во баров

Geronimo, опишите более подробно алгоритм мне в личку или ICQ: 9773190, не будем засорять тему

чем смогу помогу

поделитесь подробностями, как это можно сделать?

Nail_Saby, суть я описал, а реализовать можно по разному, зависит от того как и что именно вам нужно

Причина обращения: