Для позиций одного типа (только Buy или только Sell) совокупная цена открытия рассчитывается по формуле:
,
где:
n - количество позиций,
OpenPrice - цена открытия одной позиции,
Volume - объем позиции.
Есть готовые индикаторы например Уровень Зеро (см ниже правда для мт4) и ещё одна скромная поделка у меня
- www.mql5.com
Для позиций одного типа (только Buy или только Sell) совокупная цена открытия рассчитывается по формуле:
,
где:
n - количество позиций,
OpenPrice - цена открытия одной позиции,
Volume - объем позиции.
Ого, выглядит круто.
Я правильно понял, что по этой формуле можно свести все позиции к одной и считать прибыль, будто бы у нас одна позиция?
И еще не подскажете, откуда этот скриншот? Ссылку на статью или что-то, подробнее посмотреть, как можно использовать?
Есть готовые индикаторы например Уровень Зеро (см ниже правда для мт4) и ещё одна скромная поделка у меня
Спасибо за ответ. Посмотрю )
Вообще классно, что можно свести все позиции к одной. Это сильно упрощает математику и код в целом.
На самом деле у Вас всегда одна позиция по одному инструменту, просто на хеджинг-счетах она разбита на части, для удобства.
Здравствуйте. Такой вопрос.
Предположим, у меня на EURUSD открыто несколько ордеров с разным Value. Не могу придумать элегантное решение, как искать уровень, где прибыль всех ордеров в совокупности будет нулевой. Ну, типо того, хочу я закрыть все имеющиеся ордера с нулевой прибылью, а где поставить совокупный для всех TP не знаю.
Подскажите пожалуйста, по какому принципу стоит искать такой уровень нулевой прибыли? Если есть какая-нибудь ссылка на реализацию, или статью по теме, буду благодарен.
Я пока только смог написать скрипт через метод перебора. Беру какой-нибудь уровень, считаю для него прибыль, сдвигаю на 1 пипс, считаю снова и так, пока не найду. Но, мне кажется, это как-то слишком сильно ест ресурсы компьютера, да и выглядит такое решение кривовато. Мне кажется, это очень частый запрос, так что скорее всего прямые элегантные решения уже придуманы.
Спасибо за ответы.
void OnTick()
{
//---
double lowPriceBuy=99999999;
double highPriceSell=0;
double LotSell=0,LotBuy=0;
double NettoLotBuy=0, NettoLotSell=0;
double MedianPriceBuy=0,MedianPriceSell=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==_Symbol && OrderMagicNumber()==Magik)
{
int cmd=OrderType();
double OrderPrice=OrderOpenPrice();
double OrderLot=OrderLots();
switch(cmd)
{
case OP_BUY:
{
if(OrderPrice<lowPriceBuy)
{
lowPriceBuy=OrderPrice;
LotBuy=OrderLot;
}
NettoLotBuy=NettoLotBuy+OrderLot;
MedianPriceBuy=MedianPriceBuy+(OrderPrice*OrderLot);
break;
}
case OP_SELL:
{
if(OrderPrice>highPriceSell)
{
highPriceSell=OrderPrice;
LotSell=OrderLot;
}
NettoLotSell=NettoLotSell+OrderLot;
MedianPriceSell=MedianPriceSell+(OrderPrice*OrderLot);
break;
}
default: break;
}
}
}
if(Nettolotb!=0)PriceBuy= MedianPriceBuy /NettoLotSell;
if(Nettolots!=0)PriceSell= MedianPriceSell /NettoLotBuy;
}
Ого, выглядит круто.
Я правильно понял, что по этой формуле можно свести все позиции к одной и считать прибыль, будто бы у нас одна позиция?
Ну да, Вы же этот вопрос задавали.
И еще не подскажете, откуда этот скриншот?
Из Word'a ))
Ссылку на статью или что-то, подробнее посмотреть, как можно использовать?
Использовать просто:
- Пройтись циклом по всем ордерам.
- Подсчитать суммы произведений цен открытия каждой позиции Buy и Sell в отдельности.
- Подсчитать суммарный объем позиций Buy и Sell в отдельности.
- Разделить сумму из п. 2 на сумму из п. 3
void OnTick()
{
//---
double lowPriceBuy=99999999;
double highPriceSell=0;
double LotSell=0,LotBuy=0;
double NettoLotBuy=0, NettoLotSell=0;
double MedianPriceBuy=0,MedianPriceSell=0;
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==_Symbol && OrderMagicNumber()==Magik)
{
int cmd=OrderType();
double OrderPrice=OrderOpenPrice();
double OrderLot=OrderLots();
switch(cmd)
{
case OP_BUY:
{
if(OrderPrice<lowPriceBuy)
{
lowPriceBuy=OrderPrice;
LotBuy=OrderLot;
}
NettoLotBuy=NettoLotBuy+OrderLot;
MedianPriceBuy=MedianPriceBuy+(OrderPrice*OrderLot);
break;
}
case OP_SELL:
{
if(OrderPrice>highPriceSell)
{
highPriceSell=OrderPrice;
LotSell=OrderLot;
}
NettoLotSell=NettoLotSell+OrderLot;
MedianPriceSell=MedianPriceSell+(OrderPrice*OrderLot);
break;
}
default: break;
}
}
}
if(Nettolotb!=0)PriceBuy= MedianPriceBuy /NettoLotSell;
if(Nettolots!=0)PriceSell= MedianPriceSell /NettoLotBuy;
}
Круто 😮
Спасибо ) Буду применять )
Ну да, Вы же этот вопрос задавали.
Из Word'a ))
Использовать просто:
- Пройтись циклом по всем ордерам.
- Подсчитать суммы произведений цен открытия каждой позиции Buy и Sell в отдельности.
- Подсчитать суммарный объем позиций Buy и Sell в отдельности.
- Разделить сумму из п. 2 на сумму из п. 3
Спасибо 😊
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте. Такой вопрос.
Предположим, у меня на EURUSD открыто несколько ордеров с разным Value. Не могу придумать элегантное решение, как искать уровень, где прибыль всех ордеров в совокупности будет нулевой. Ну, типо того, хочу я закрыть все имеющиеся ордера с нулевой прибылью, а где поставить совокупный для всех TP не знаю.
Подскажите пожалуйста, по какому принципу стоит искать такой уровень нулевой прибыли? Если есть какая-нибудь ссылка на реализацию, или статью по теме, буду благодарен.
Я пока только смог написать скрипт через метод перебора. Беру какой-нибудь уровень, считаю для него прибыль, сдвигаю на 1 пипс, считаю снова и так, пока не найду. Но, мне кажется, это как-то слишком сильно ест ресурсы компьютера, да и выглядит такое решение кривовато. Мне кажется, это очень частый запрос, так что скорее всего прямые элегантные решения уже придуманы.
Спасибо за ответы.