Как перевести "OrderProfit( )" в пункты текущей валюты? - страница 2

 

Резюме:

//KimIV 01.11.2007 23:27  
if (OrderType()==OP_BUY) pr=(OrderClosePrice()-OrderOpenPrice())/Point;
if (OrderType()==OP_SELL) pr=(OrderOpenPrice()-OrderClosePrice())/Point;
//sergeev 02.11.2007 11:16  
if (OrderType()==OP_BUY) pr=(Bid - OrderOpenPrice())/Point;   
if (OrderType()==OP_SELL) pr=(OrderOpenPrice()-Ask)/Point;
//Meat 02.11.2007 11:27  
pips = OrderProfit() / MarketInfo(OrderSymbol(), MODE_TICKVALUE);
 
Почитайте в справке про функции  OrderProfit, MarketInfo и OrderClosePrice.  В каких случаях их можно и использовать и какую лучше.
 
double OrderClosePrice( ) 
Возвращает цену закрытия выбранного ордера.
Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Мне не понятно. Возвращает цену закрытия выбранного закрытого ордера или цена закрытия будет такая, если мы его закроем :)

Остальное мне понятно. И вариант Meat мне как-то больше всего понравился, т.к. не надо заморачиваться на типе ордера (buy, sell).

 

Только учтите, что значение MarketInfo(OrderSymbol(),MODE_TICKVALUE) дается из расчета на 1 лот. Более правильным будет

pips = OrderProfit() / MarketInfo(OrderSymbol(), MODE_TICKVALUE) / OrderLots();
 
alexfx:
double OrderClosePrice( )  Возвращает цену закрытия выбранного ордера. Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Мне не понятно. Возвращает цену закрытия выбранного закрытого ордера или цена закрытия будет такая, если мы его закроем :)


Остальное мне понятно. И вариант Meat мне как-то больше всего понравился, т.к. не надо заморачиваться на типе ордера (buy, sell).



Я тоже как то спрашивал об этом. Как мне объяснил рош функция для открытого ордера просто возвращает текущий Bid или Ask (смотря какое направление), поэтому перед его вызовом нужно сделать RefreshRates чтоб данные были корректными.
 
PSmith:

Только учтите, что значение MarketInfo(OrderSymbol(),MODE_TICKVALUE) дается из расчета на 1 лот. Более правильным будет

pips = OrderProfit() / MarketInfo(OrderSymbol(), MODE_TICKVALUE) / OrderLots();

Спасибо!

А в описании об этом не сказано. Неужели это настолько естественно, что об этом не надо упоминать.

Хотя, для профи это наверное ясно и без уточнений :)

 
sergeev:
alexfx:
double OrderClosePrice( )  Возвращает цену закрытия выбранного ордера. Ордер должен быть предварительно выбран с помощью функции OrderSelect().

Мне не понятно. Возвращает цену закрытия выбранного закрытого ордера или цена закрытия будет такая, если мы его закроем :)


Остальное мне понятно. И вариант Meat мне как-то больше всего понравился, т.к. не надо заморачиваться на типе ордера (buy, sell).



Я тоже как то спрашивал об этом. Как мне объяснил рош функция для открытого ордера просто возвращает текущий Bid или Ask (смотря какое направление), поэтому перед его вызовом нужно сделать RefreshRates чтоб данные были корректными.

т.е. вариант KimIV переходит в ваш вариант
 
А вот и прибыль у советника пошла! Самое время складывать прибыль в пипсах на разных парах :)))  А при сумме 100pips закрываю все ордера :)
Причина обращения: