Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Удобнее торговать с помощью смартфона? Мобильная версия MetaTrader 5 тебе подойдет!
MetaQuotes Software Corp.
Модератор
178222
MetaQuotes Software Corp. 2007.02.15 09:59 

lot lib:

Библиотека выбора размера лота. 29 вариантов управления капиталом.

Итак, решаем - чем мы можем рискнуть в каждой сделке? Вариантов много, а выбрать правильный не всегда просто. Для решения этой проблемы я и сделал библиотеку lot_lib.mqh

Author: Andrey Khatimlianskii

Nefedov Kirill
405
Nefedov Kirill 2005.12.07 13:21  
Вопрос, по второму варианту. как посмотреть не только последнюю сделку, но и предыдущию, точнее как она закрылась с плюсом или с минусом, для расчета лота. Мне вот нужно не последнюю сделку в истории смотреть, а предыдущию.
Andrey Khatimlianskii
55464
Andrey Khatimlianskii 2005.12.14 05:24  
HIDDEN wrote:
Вопрос, по второму варианту. как посмотреть не только последнюю сделку, но и предыдущию, точнее как она закрылась с плюсом или с минусом, для расчета лота. Мне вот нужно не последнюю сделку в истории смотреть, а предыдущию.
Прибыль/убыток предыдущей сделки - lotlib_PrevProfit. Именно для этого этой переменной и присваевается последнее значение профита открытой позиции.
Для того, чтоб использовать не последнюю позицию, а какую-либо другую, перебирайте в цикле закрытые позиции, выбирайте нужную и присваивайте значение её порфита переменной lotlib_PrevProfit.
Пример ф-ции, находящей профит _последней_закрытой_ позиции:
datetime lastclose = -1;
double PrevProfit( int magicnumber )
  {
    int _GetLastError;
 
    double lastprofit = 0;
    lastclose = -1;
    int _OrdersTotal = HistoryTotal();
    for ( int z = _OrdersTotal - 1; z >= 0; z -- )
      {
        if ( !OrderSelect( z, SELECT_BY_POS, MODE_HISTORY ) )
          {
            _GetLastError = GetLastError();
            Print("OrderSelect( ", z, ", SELECT_BY_POS, MODE_HISTORY ) - Error #",
                  _GetLastError );
            continue;
          }
        if ( OrderMagicNumber() == magicnumber ) { if ( OrderCloseTime() > lastclose ) 
          { 
           lastclose = OrderCloseTime(); lastprofit = OrderProfit(); 
          } 
     }
   }
  return(lastprofit);
 }

Для её использования, перед вызовом ф-ции Lot() (перед открытием позиции), напишите
lotlib_PrevProfit = PrevProfit( _MagicNumber );
Rashid Umarov
Админ
11560
Rashid Umarov 2006.01.14 18:26  
Больше тысячи скачиваний. Поздравляю, komposter!
Andrey Khatimlianskii
55464
Andrey Khatimlianskii 2006.01.15 15:29  
Rosh wrote:
Больше тысячи скачиваний. Поздравляю, komposter!
спасибо =)
и за рейтинг тоже =)))
Xaoc
7
Xaoc 2006.02.01 04:25  
странно, но у меня другие картинки :)
Закачанные изображения:

Andrey Khatimlianskii
55464
Andrey Khatimlianskii 2006.02.04 00:04  
Xaoc wrote:
странно, но у меня другие картинки :)
Зависит от качества моделирования и параметров советника. Да и от символа с периодом ;)
И ещё от оччень многого ;)
MQL4 Comments
16319
MQL4 Comments 2007.02.14 11:31  
<< 6 - размер лота выбирается как процент от баланса и управляется переменной MaxRisk. Например, для eurusd при Балансе 1000 и MaxRisk=10 откроется 0.1 лот, а при балансе 15000 и MaxRisk=5 откроется 0,8 лота);>>

Так ли это?
При балансе 1000 и MaxRisk=10 откроется 0.1 лот, но 0,1 лота на евре это привлечение КУРС * 100 = 1,3*100 = 130 долларов.
130 долларов от 1000 на счете это 13% риска, а мы хотели 10%.
Для валют USD... Ваш алгоритм правильный, а для валют ...USD, и акций - нет.
Можно ли поправить?
Andrey Khatimlianskii
55464
Andrey Khatimlianskii 2007.02.14 12:50  
Gorillych:
При балансе 1000 и MaxRisk=10 откроется 0.1 лот, но 0,1 лота на евре это привлечение КУРС * 100 = 1,3*100 = 130 долларов.
130 долларов от 1000 на счете это 13% риска, а мы хотели 10%.
Для валют USD... Ваш алгоритм правильный, а для валют ...USD, и акций - нет.
Можно ли поправить?
Исправлено ;)
Код будет доступен после проверки модератором.
Sergey
428
Sergey 2007.02.16 08:48  
komposter, подскажи, пожалуйста, какой вариант лучше выбрать. Если известно, что при фиксированном лоте = 1, максимальная просадка составляет N пунктов (например, 100), т.е. если баланс = 100, то мы можем торговать лотом в 1, при балансе в 200, можем торговать 2 лотами.
Andrey Khatimlianskii
55464
Andrey Khatimlianskii 2007.02.16 09:38  
lsv:
komposter, подскажи, пожалуйста, какой вариант лучше выбрать. Если известно, что при фиксированном лоте = 1, максимальная просадка составляет N пунктов (например, 100), т.е. если баланс = 100, то мы можем торговать лотом в 1, при балансе в 200, можем торговать 2 лотами.
Воспользуйся оптимизацией по параметру ЛотСайзВариант от 100 до 128, и посмотри сам ;)
/ /123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий