Как рассчитать текущую прибыль при наличии лока???

 

Здрасте, Форумчане!!!

Есть ситуация - наличие лока, допустим три Бай по 0,5 лота локированны тремя селлами по 0,5 лота, по этим позициям имеем профит или  лосс - не столь важно. И вот открывается позиция Бай 0,3 лота. Получаем перевес в сорону Бай на 0,3 лота. Собственно ВОПРОС - как вычислить (именно вычислить, а не прочитать из своиства открытой позиции) текущую прибыль по инструменту???  Т.е. что-бы общая прибыль/убыток выглядели так: (прибыль/убыток от лока (1,5 лота) + прибыль/убыток от бай (0,3 лота)). Приветствуются любые идеи и предложения.

 
BilliGordon:

Здрасте, Форумчане!!!

Есть ситуация - наличие лока, допустим три Бай по 0,5 лота локированны тремя селлами по 0,5 лота, по этим позициям имеем профит или лосс - не столь важно. И вот открывается позиция Бай 0,3 лота. Получаем перевес в сорону Бай на 0,3 лота. Собственно ВОПРОС - как вычислить (именно вычислить, а не прочитать из своиства открытой позиции) текущую прибыль по инструменту??? Т.е. что-бы общая прибыль/убыток выглядели так: (прибыль/убыток от лока (1,5 лота) + прибыль/убыток от бай (0,3 лота)). Приветствуются любые идеи и предложения.

А в терминале не видно?

А вообще от лока будет только убыток, потому лок подразумевает нахождение вне рынка с убытком равным разнице между ценами открытия бай и сел ордеров, плюс спред. Соответственно прибыль/убыток если и будет, то только от последнего ордера на бай.

И вопрос не понятен, сам же формулу расчета написал (прибыль/убыток от лока (1,5 лота) + прибыль/убыток от бай (0,3 лота)), не можешь в деньгах, считай в пунктах. И для каких целей это нужно? Для советника или индикатора?

 
Temnyj:

А в терминале не видно?

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

  Что-б совсем понятно было, допустим закрыли мы Селл на 0,5 лота  - итого суммарный перевес в Бай-е (0,3 + 0,5) лота, т.е. в рынке 0,8 лота бай, а такого ордера, исходя из нашего примера нету, куда смотреть, как узнать???

 
BilliGordon:

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

Что-б совсем понятно было, допустим закрыли мы Селл на 0,5 лота - итого суммарный перевес в Бай-е (0,3 + 0,5) лота, т.е. в рынке 0,8 лота бай, а такого ордера, исходя из нашего примера нету, куда смотреть, как узнать???

И по чему нужно все клещами вытаскивать? Теперь понятно, что для советника, а конкретнее зачем в советнике эта информация? Посчитать прибыль/убыток можно просто суммировав все позиции.

Нужно мысли яснее изъяснять, а то отправят к телепатам тусоваться ))))))))

 
BilliGordon:

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

Что-б совсем понятно было, допустим закрыли мы Селл на 0,5 лота - итого суммарный перевес в Бай-е (0,3 + 0,5) лота, т.е. в рынке 0,8 лота бай, а такого ордера, исходя из нашего примера нету, куда смотреть, как узнать???

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает суммарный профит открытых позиций в валюте депозита |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
double GetProfitOpenPosInCurrency(string sy="", int op=-1, int mn=-1) {
  double p=0;
  int    i, k=OrdersTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()==sy || sy=="") && (op<0 || OrderType()==op)) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (mn<0 || OrderMagicNumber()==mn) {
            p+=OrderProfit()+OrderCommission()+OrderSwap();
          }
        }
      }
    }
  }
  return(p);
}
 
khorosh:


Подскажи пожалуйста, и как  "в суммарном профите открытых позиций" я увижу (прибыль/убыток от лока (1,5 лота) + прибыль/убыток от бай (0,3 лота), тут немного всё сложнее, я сам не нашёл ничего, думаю кто-то сталкивался с подобной задачкой. Help please...!!!
 
BilliGordon:

Подскажи пожалуйста, и как "в суммарном профите открытых позиций" я увижу (прибыль/убыток от лока (1,5 лота) + прибыль/убыток от бай (0,3 лота), тут немного всё сложнее, я сам не нашёл ничего, думаю кто-то сталкивался с подобной задачкой. Help please...!!!

В ф-ии же все расписано - передаете ей параметр ор=-1 - по всем открытым позам - в цикле считаете
 p+=OrderProfit()+OrderCommission()+OrderSwap();
и на выходе после работы ф-ии будет значение этого параметра - все... то что Вам и нужно - "в суммарном профите открытых позиций" я увижу (прибыль/убыток от лока (1,5 лота) + прибыль/убыток от бай (0,3 лота)" - ничего сложного.
 
BilliGordon:

Подскажи пожалуйста, и как "в суммарном профите открытых позиций" я увижу (прибыль/убыток от лока (1,5 лота) + прибыль/убыток от бай (0,3 лота), тут немного всё сложнее, я сам не нашёл ничего, думаю кто-то сталкивался с подобной задачкой. Help please...!!!
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//+----------------------------------------------------------------------------+
внимательно читай
 
Roman.:

   

 В этом-та  и вся фишка, что нужно отдельно мухи, отдельно котлеты))), т.е. прибыль/убыток от лока (1,5 лота)= число,  прибыль/убыток от бай (0,3 лота)= число...
 

Не совсем понял что вам надо, но вижу, что близко к моим вычислениям.
В любом наборе открытых позиций со своими лотами (по одному инструменту) можно расчитать цену общего безубытка.

Для любых однонаправленных позиций цена общего безубытка равна сумме произведений цены открытия на её лот разделённой на сумму лотов.

Цена безуб. = (цена1 * лот1 + цена2 * лот2 +......+ ценаN * лотN) / ( лот1 + лот2+...... +лотN  ) .

Для разнонаправленных позиций, лот в другую сторону следует применять со знаком минус.
Например выберем минус для позиций SELL.
Тогда общая формула будет такого вида - 

Цена безуб. = ((цена1BUY * лот1BUY) + (цена2SELL * - лот2SELL) +......+ (ценаN * лотN)) / ( лот1BUY + ( - лот2SELL)+...... +лотN  ) .

Цена безубытка может не существовать если сумма всех лотов в обе стороны будет равна 0, так как делить на 0 нельзя.
Ну это и понятно, когда лотов одинаково и на  BUY и на  SELL, то получить прибыль не возможно
(но можно зато зафиксировать убыток при любом направлении цены, лок как бы).

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

 
kkvkostya #:

Не совсем понял что вам надо, но вижу, что близко к моим вычислениям.
В любом наборе открытых позиций со своими лотами (по одному инструменту) можно расчитать цену общего безубытка.

Для любых однонаправленных позиций цена общего безубытка равна сумме произведений цены открытия на её лот разделённой на сумму лотов.

Цена безуб. = (цена1 * лот1 + цена2 * лот2 +......+ ценаN * лотN) / ( лот1 + лот2+...... +лотN  ) .

Для разнонаправленных позиций, лот в другую сторону следует применять со знаком минус.
Например выберем минус для позиций SELL.
Тогда общая формула будет такого вида - 

Цена безуб. = ((цена1BUY * лот1BUY) + (цена2SELL * - лот2SELL) +......+ (ценаN * лотN)) / ( лот1BUY + ( - лот2SELL)+...... +лотN  ) .

Цена безубытка может не существовать если сумма всех лотов в обе стороны будет равна 0, так как делить на 0 нельзя.
Ну это и понятно, когда лотов одинаково и на  BUY и на  SELL, то получить прибыль не возможно
(но можно зато зафиксировать убыток при любом направлении цены, лок как бы).

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

Наконец-то!

Ваш ответ ждали 10 лет


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