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

 

все разобрался всем спосибо шо помогли

 
spidey:

Добрый вечер, подскажите пожалуйста как правильно алерт поставить в индикатор, а то всё перепробовал, то на каждом тике сигналит, то вовсе не сигналит...


Получите, распишитесь :)

Файлы:
 
Профи, подскажите пожалуста как в индикаторе реализовать сравнение цены закрытия i-того бара (к примеру М15) с ценой открытия дня
 

Здравствуйте.

Подскажите или посоветуйте, где взять .hst или чем сгенерировать волны Элиота для визуального тестера, (можно в файле csv) как на рисунке ниже:

 
RomanS:
Профи, подскажите пожалуста как в индикаторе реализовать сравнение цены закрытия i-того бара (к примеру М15) с ценой открытия дня


Наверное не правильно объяснил... к примеру

#property indicator_separate_window
#property  indicator_buffers 4
#property  indicator_color1  Red
#property  indicator_color2  Green
#property  indicator_color3  Blue
#property  indicator_color4  Black

extern int DAY       = 0;
extern int History   = 500;

double GBP[],EUR[],JPY[],USD[]; 

int init()
  {
   SetIndexBuffer(0, GBP);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(1, EUR);    
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(2, JPY);
   SetIndexStyle(2,DRAW_LINE,STYLE_SOLID,2);
   SetIndexBuffer(3, USD);
   SetIndexStyle(3,DRAW_LINE,STYLE_SOLID,2);
   IndicatorShortName("...");
   return;
  }

int start()
  {
  int limit = 0, 
      counted_bars = IndicatorCounted();
      if(counted_bars>0) counted_bars--; 
      limit = Bars - counted_bars;
 
  for(int i=0; i<limit; i++)
    {
     USD[i] = -(iClose("EURUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY))
              -(iClose("GBPUSD",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY))
              +(iClose("USDJPY",NULL,i)-iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i);
     EUR[i] = +(iClose("EURUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY))
              +(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              +(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)/iOpen("GBPUSD",PERIOD_D1,DAY))*iClose("GBPUSD",NULL,i);
     GBP[i] = +(iClose("GBPUSD",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY))
              +(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)/iOpen("GBPUSD",PERIOD_D1,DAY))*iClose("GBPUSD",NULL,i);
     JPY[i] = -(iClose("USDJPY",NULL,i)-iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("EURUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i)
              -(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-iOpen("GBPUSD",PERIOD_D1,DAY)*iOpen("USDJPY",PERIOD_D1,DAY))/iClose("USDJPY",NULL,i);
    }
   return(0);
  }

если задать DAY = 0, то цена i-того бара пусть будет М5 будет сравниваться с ценой открытия сегодняшнего дня, если DAY = 1, то вчерашнего и т.д.

а как сделать чтобы это было динамически... т.е. при просчете к примеру 1278-го бара шло сравнение с ценой открытия того дня в котором этот бар находится, всю голову сломал как это сделать

 

Предположим что это график какого то индикатора МАКД или СТОХ всеравно, подскажите как описать точку входа в советнике Xmax*0.25 для сель и Xmin*0.25 для бай. Если период "n" не постоянен и Xmax и Xmin меняются.

Файлы:
ypi.rar  7 kb
 

как реализовать такого оператора

while ( Условие если закрылся любой ордер )                  
{   то опредеяем тип закрытого ордера из списка   }  
значение передаем следущему оператору

{  по переданому значению выбераем из списка нужный ордер и открываем его  } 
после того как ордер открыт возращяемся в начало

или каким другим способом можно это цикл реализоать

 
RomanS:


Наверное не правильно объяснил... к примеру

если задать DAY = 0, то цена i-того бара пусть будет М5 будет сравниваться с ценой открытия сегодняшнего дня, если DAY = 1, то вчерашнего и т.д.

  а как сделать чтобы это было динамически... т.е. при просчете к примеру 1278-го бара шло сравнение с ценой открытия того дня в котором этот бар находится, всю голову сломал как это сделать

Для этого есть у меня функция, возвращающая OHLC любого старшего периода :)

//+------------------------------------------------------------------+
//| getOHLC                                                          |
//+------------------------------------------------------------------+
double getOHLC(int OHLC, string symbol, int timeframe, int shift = 0){
   if(timeframe < Period())return(-1);
   switch(OHLC){
      case 0:  return(iOpen(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 1:  return(iLow(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 2:  return(iHigh(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
      case 3:  return(iClose(symbol, timeframe, iBarShift(symbol, timeframe, Time[shift])));
   }
}
//+------------------------------------------------------------------+

Параметры:
int OHLC - какие данные требуется извлечь из старшего таймфрейма, соответствуют стандартным константам.
string symbol - символьное имя инструмента.
int timeframe - период старшего таймфрейма для работы, соответствуют стандартным константам .
int shif t - необязательный параметр, задающий номер текущего бара, текущего таймфрейма, для поиска соответствий старших периодов.

Пример вызова функции для вашего случая:

for(int i=0; i<limit; i++)
    {
     USD[i] = -(iClose("EURUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i))
              -(iClose("GBPUSD",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i))
              +(iClose("USDJPY",NULL,i)-getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i);
     EUR[i] = +(iClose("EURUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i))
              +(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              +(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)/getOHLC(0, "GBPUSD",PERIOD_D1,i))*iClose("GBPUSD",NULL,i);
     GBP[i] = +(iClose("GBPUSD",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i))
              +(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)/iClose("GBPUSD",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)/getOHLC(0, "GBPUSD",PERIOD_D1,i))*iClose("GBPUSD",NULL,i);
     JPY[i] = -(iClose("USDJPY",NULL,i)-getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              -(iClose("EURUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "EURUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i)
              -(iClose("GBPUSD",NULL,i)*iClose("USDJPY",NULL,i)-getOHLC(0, "GBPUSD",PERIOD_D1,i)*getOHLC(0, "USDJPY",PERIOD_D1,i))/iClose("USDJPY",NULL,i);
    }

Соответственно iClose("EURUSD",NULL,i) найдет цену закрытия бара под номером i текущего графика, а getOHLC(0, "EURUSD",PERIOD_D1,i) цену открытия того дня, в котором находится бар i текущего графика.

 
RomanS:


Наверное не правильно объяснил... к примеру

если задать DAY = 0, то цена i-того бара пусть будет М5 будет сравниваться с ценой открытия сегодняшнего дня, если DAY = 1, то вчерашнего и т.д.

а как сделать чтобы это было динамически... т.е. при просчете к примеру 1278-го бара шло сравнение с ценой открытия того дня в котором этот бар находится, всю голову сломал как это сделать

Вам нужно сначала подсчитать какому дню будет соответствовать данный бар. Я сейчас не дома посему функцию подкину позже, когда дома буду вечером. Пока сами поищите или подумайте как реализовать.

Упс... Уже предложили вариантик....

 
akuma_san1:

Предположим что это график какого то индикатора МАКД или СТОХ всеравно, подскажите как описать точку входа в советнике Xmax*0.25 для сель и Xmin*0.25 для бай. Если период "n" не постоянен и Xmax и Xmin меняются.

У вас очень расплывчато заданы критерии входа. Лично мне неясно. Если необходимо пересечение какого-либо уровня контролировать, то и изменение всех предоставленных вами параметров не имеют ниаких мешающих факторов. Просто смотрите величину нужного вам параметра на первом баре и величину этого же параметра на втором. Если на первом баре величина параметра выше какого-то заданного вами порогового значения, а на втором ниже - имеем пересечение снизу-вверх. Если на первом баре ниже, а на втором выше - пересечение сверху-вниз. Вот имеем два сигнала на Бай и Селл. Можете проверять просто значение выше или ниже заданного вами - так будем иметь тоже сигнал, но на протяжении всего времени нахождения параметра либо выше, либо ниже контролируемого значения.
ЗЫ. Если бы параметры не менялись, мы никогда и не дождались бы сигнала... :)
Причина обращения: