Расчёт тела свечей в пунктах

 

Мне для моего советника нужно вычислить размер тела свечи[1] и размер тела свечи [2].

Сначала я делал это так

 Для медвежьей свечи: Open[1] - Close[1] и Open[2] - Close[2]

 Для бычьей свечи: Close[1] - Open[1] и Close[2] - Open[2]

Но так получается значение цены double а не пункты, подскажите пожалуйста, как правильно рассчитать тела свечей, а потом я использую это и сделаю условие

Если(тело первой свечи > тела второй свечи){

//какие-то действия 

 

Заранее спасибо)) 

 
blade_runner:

Мне для моего советника нужно вычислить размер тела свечи[1] и размер тела свечи [2].

Сначала я делал это так

 Для медвежьей свечи: Open[1] - Close[1] и Open[2] - Close[2]

 Для бычьей свечи: Close[1] - Open[1] и Close[2] - Open[2]

Но так получается значение цены double а не пункты, подскажите пожалуйста, как правильно рассчитать тела свечей, а потом я использую это и сделаю условие

Если(тело первой свечи > тела второй свечи){

//какие-то действия 

 

Заранее спасибо)) 

Делить на _Point, элементарно же. Но для сравнения больше-меньше подходит и double, что не так?
 
blade_runner:

Мне для моего советника нужно вычислить размер тела свечи[1] и размер тела свечи [2].

Сначала я делал это так

 Для медвежьей свечи: Open[1] - Close[1] и Open[2] - Close[2]

 Для бычьей свечи: Close[1] - Open[1] и Close[2] - Open[2]

Но так получается значение цены double а не пункты, подскажите пожалуйста, как правильно рассчитать тела свечей, а потом я использую это и сделаю условие

Если(тело первой свечи > тела второй свечи){

//какие-то действия 

 

Заранее спасибо)) 

MathAbs( Close[i] - Open[i] ) / Point + 1
 
evillive:
Делить на _Point, элементарно же. Но для сравнения больше-меньше подходит и double, что не так?

Mislaid:
MathAbs( Close[i] - Open[i] ) / Point + 1

Всё так, спасибо) 

 

evillive:
Делить на _Point, элементарно же. Но для сравнения больше-меньше подходит и double, что не так?

 

Я просто хочу как правильно, в следующий раз ещё советников буду делать,буду знать 

 
Mislaid:
MathAbs( Close[i] - Open[i] ) / Point + 1

а зачем в конце единицу прибавлять? Чтобы не дай бог, свеча была с нулевым телом?)))
 
Michael-80:

а зачем в конце единицу прибавлять? Чтобы не дай бог, свеча была с нулевым телом?)))


Действительно, зачем.  Если достаточно деления на поинт.

 

Здравствуйте. Почему-то не могу разобраться в проблеме, когда размер пунктов не учитывается советником при открытиии ордеров. Мне нужно, чтобы ордер открывался только в том случае, если размер свечи был больше определенного количества пунктов. Я использую код:

if
(
(High[1]-Low[1])/Point>500 //Если размер всего диапазона свечи больше указанного числа пунктов.
&& OrdersTotal()==0
)
OrderNumber=OrderSend(Symbol(),OP_BUY,0.01,Ask,3,StopLossPriceBuy,TakeProfitPriceBuy);

Но почему-то ордера открываются на каждой свече и значение пунктов не учитывается.

 
Alex Packer:

Здравствуйте. Почему-то не могу разобраться в проблеме, когда размер пунктов не учитывается советником при открытиии ордеров. Мне нужно, чтобы ордер открывался только в том случае, если размер свечи был больше определенного количества пунктов. Я использую код:

Но почему-то ордера открываются на каждой свече и значение пунктов не учитывается.

Проверьте значение

(High[1]-Low[1])/Point

добавьте этот код перед OrderNumber

Comment("Value is: ", (High[1]-Low[1])/Point);

На графике, под OHLC должно написать значение...

 
Alex Packer:

Здравствуйте. Почему-то не могу разобраться в проблеме, когда размер пунктов не учитывается советником при открытиии ордеров. Мне нужно, чтобы ордер открывался только в том случае, если размер свечи был больше определенного количества пунктов. Я использую код:

Но почему-то ордера открываются на каждой свече и значение пунктов не учитывается.

Пользуйтесь, либо _Point, либо Point() и  никогда не используйте Point

 

А компилятор не ругается если Point писать ?