Помогите кодом замка - страница 2

 
В частности - эту, потом эту:

ClosePositions().

 
drknn:



Открыли встречный ордер с двойным лотом. Теперь нужно узнать сколько в деньгах стОит 1 пункт для минимального лота. Довольно сложная для начинающего задачка. Но поскольку у Вас удвоение, то задача упрощается. Смотрите, у вас открыт бай с лотом 0,1 и селл с тем же лотом = 0,1. Расстояние между ордерами = 20 пунктов. Ясно, что точка безубытка встанет на уровень 10 пунктов - убыток одного ордера будет покрыт прибылью другого - то есть, при равенстве лотов точка безубытка находится ровно посерёдке между ордерами.

А теперь пусть наш бай-ордер имеет лото = 0,2. Получается, что ему нужно пройти в профит всего 5 пунктов (четверть расстояния) чтоб покрыть убыток вверхунаходящегося селл-ордера с лотом = 0,1

То есть, Если у Вас лоты всегда пропорциональны числу 2, то можно не заморачиваться со стоимостью пункта. 


Так то оно так, я предполагаю вы имеете ввиду брать разницу между OrderOpenPrace() и Ask(Bid) и для встречного ордера (2х) просто брать половину этого пути.

Roman.  Но если использовать  функции KimIV, то будет брать только последний ордер. Я уже так пробовал.

 
Либо будет закрывать даже прибыльные и сняв предполагаемую прибыль
 
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. 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);
}

Можно было бы испоьзовать эту функцию, только не могу сообразить как выбрать убыточную позицию и ее противовес?

 
berezhnuy:
... либо будет закрывать даже прибыльные и сняв предполагаемую прибыль

Значит криво ставили.

 

У Вас ТС называется - Лавина (мартин). Поковыряйте одноимённую ветвь на этом форуме - там подобных экспов - тьма!

Могу выложить со своего архива экспов по этой ТС сюда с той ветви.

 

Не исключаю, что Вам будет проще взять и  исправить под Ваши нужды какой-либо из них! Как я сам в своё время сделал! Щас торгую и на нём на микро-реале.

 
Выложите, если не сложно.
 
berezhnuy:
Выложите, если не сложно.

Я сделал неттинговый вариант (только один ордер в рынке - эксп Av02).

Т.е. когда приходит время (по тем или иным торговым критериям (канал и т.д.)) открывать противоположный ордер, то сначала закрывается старый, затем открывается новый на увеличенных объёмах... и т.д.

Проще вести учёт профита/лосса и вообще на мкл5 (МТ5) - пускать можно... :-) Сразу с упреждением на маркет Пятёры в общем... :-) Готовлю... :-)

Вот архив с Лавины экспов. Читайте ветвь - там много интересного, ИМХО! 

Просматриваете экспы, выбираете жертву и попёрли её править под свои нужды!!! :-)

Без шуток.



Файлы:
neaogvvk.zip  356 kb
 
berezhnuy:

Можно было бы испоьзовать эту функцию, только не могу сообразить как выбрать убыточную позицию и ее противовес?


При установке ордера можно присвоить ему магикнумбер. Противовесу присвоить этот же магикнумбер. Другой паре ордеров - другой магикнумбер. И так далее по парам. В результате одним циклом можно отфильтровать ордера с нужным магиком и сразу просуммировать нужный профит в деньгах. Если он, скажем, больше 1 бакса, то закрыть эту пару ордеров.

P.S.

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

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