Синтакс для мульти свечных таймфреймах

 
сформулируйте вопрос точнее
 
tkaboris:

Подскажите как дописать чтоб еще и советник смотрел на часовую свечку, ч

if(Close[1]>Open[1] && (Close[Period_h1]>Open[Period_h1

double iClose( string symbol, int timeframe, int shift) 
Возвращает значение цены закрытия указанного параметром shift бара с соответствующего графика
 (symbol, timeframe). В случае ошибки функция возвращает 0. Для получения дополнительной информации 
об ошибке необходимо вызвать функцию GetLastError().
Для текущего графика информация о ценах закрытия находится в предопределенном массиве Close[]. 
Параметры:
symbol   -   Символьное имя инструмента. NULL означает текущий символ.
timeframe   -   Период. Может быть одним из периодов графика. 0 означает период текущего графика.
shift   -   Индекс получаемого значения из таймсерии 
(сдвиг относительно текущего бара на указанное количество периодов назад). 

Пример:
  Print("Current bar for USDCHF H1: ",iTime("USDCHF",PERIOD_H1,i),", ",  iOpen("USDCHF",PERIOD_H1,i),", ",
                                      iHigh("USDCHF",PERIOD_H1,i),", ",  iLow("USDCHF",PERIOD_H1,i),", ",
                                      iClose("USDCHF",PERIOD_H1,i),", ", iVolume("USDCHF",PERIOD_H1,i));

 

Остальное по аналогии.

Удачи.

 

У меня советник по свечкам, хочу добавить условие чтоб текущая свечка на вышем(часовом) была open>Ask для бай/селл.

extern bool harami=true;
extern bool cross=true;
extern bool engulf=true;
extern bool pierce=true;
extern bool morningstar=true;
extern bool hammer=true;
extern bool darkcloud=true;
extern bool eveningstar=true;
extern bool shooter=true;

extern int shift=0; // bar in the past to take in consideration for the signal

int signal=0;

if((down && harami && (Open[shift+2]>Close[shift+2]) && (Open[shift+1]>Close[shift+2]) && (Close[shift+1]<Open[shift+2]) && (Close[shift+1]>Open[shift+1]))

|| (cross && (Open[shift+2]>Close[shift+2]) && (Open[shift+1]>Close[shift+2])&& (Open[shift+1]<Open[shift+2])&& (Close[shift+1]>Open[shift+2]))

|| (engulf && (Close[shift+2]<Open[shift+2]) && (Open[shift+1]<Close[shift+2]) && (Close[shift+1]>Open[shift+2]))

|| (pierce && (Close[shift+2]<Open[shift+2]) && (Close[shift+1]>Open[shift+1]) && ((Open[shift+1]<Close[shift+2])) && (Close[shift+1]>Close[shift+2]+((Open[shift+2]-Close[shift+2])/2)))

|| (morningstar && (Close[shift+3]<Open[shift+3]) && (Open[shift+2]<Close[shift+3]) && (Close[shift+2]<Close[shift+3]) && ((Open[shift+1]>Close[shift+2]) && (Open[shift+1]>Open[shift+2])) && (Close[shift+1]>=Close[shift+3]))

|| (hammer && (Open[shift+1]-Low[shift+1]>MathMax(High[shift+1]-Close[shift+1],Close[shift+1]-Open[shift+1])*3) && (Close[shift+1]-Low[shift+1]>MathMax(High[shift+1]-Close[shift+1],Close[shift+1]-Open[shift+1])*3))

 
tkaboris:

У меня советник по свечкам, хочу добавить условие чтоб текущая свечка на вышем(часовом) была open>Ask для бай/селл.

давайте для начала вы разгрузите свой код.

сделайте так.

double cl1=Close[i+1]; 
double cl2=Close[i+2];
double op1=Open[i+1];
double op2=Open[i+2];
bool IsHarami=(down && harami && op2>cl2 && op1>cl2 && cl1<op2 && cl1>op1);
bool IsCross=(cross && op2>cl2 && op1>cl2 && op1<op2 && cl1>op2);
....


чтоб были видны простые базовые конструкции условий

а потом сливайте в кучу

if (IsHarami || IsCross || ... || iOpen(Symbol(), PERIOD_H1, i)>Ask) 
{ 
  ... 
}
 
я могу выгрузить весь код, но разгрузить наверное я не смогу так как не программер и не знаю как
 
tkaboris:
я могу выгрузить весь код, но разгрузить наверное я не смогу так как не программер и не знаю как

вы непоняли слов выгрузить и разгрузить:)

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

во вторых я добавил вам требуемое условие, которое вам нужно iOpen(Symbol(), PERIOD_H1, i)>Ask

 

Спасибо,

|| (pierce && (Close[shift+2]<Open[shift+2]) && (Close[shift+1]>Open[shift+1]) && ((Open[shift+1]<Close[shift+2])) && (Close[shift+1]>Close[shift+2]+((Open[shift+2]-Close[shift+2])/2))&&(iOpen(Symbol(),PERIOD_H1,i) < Ask ?

i - это текущая свечка?

Можно сделать еще вот так добавив тело свечки?

extern int size=20;

(iOpen(Symbol(),PERIOD_H1,i) < Ask +size*pt

 
tkaboris:

Можно сделать еще вот так добавив тело свечки?

extern int size=20;

(iOpen(Symbol(),PERIOD_H1,i) < Ask +size*pt

не ясно что этим вы хотите сделать.
 

извините с этим разобрался, Спасибо

подсажите как сделать Period_H1 переменной, чтоб мог менять в настройках таймфреймы

 

откройте справку.

PERIOD_H1 - это обыкновенная константа = 60.

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