Последовательное увеличение лота. - страница 2

 
vovan-gogan:


Спасибо!

Сейчас у себя все нашел - выложу сюда, как подготовлю... От Вас вторая часть...:-))) Вашего же вопроса... :-))) как - то этот вопрос заинтересовал...
 
Roman.:

Сейчас у себя все нашел - выложу сюда, как подготовлю... От Вас вторая часть...:-))) Вашего же вопроса... :-))) как - то этот вопрос заинтересовал...


Ммм... Про вторую часть немного не понял, постараюсь заново всё изложить подробнее)))
 
vovan-gogan:


Ммм... Про вторую часть немного не понял, постараюсь заново всё изложить подробнее)))

Не надо повторять - все понятно с первого раза: вот она вторая - "...причем эти 10 процентов должны увеличиваться каждый раз на 50% после убыточной сделки."
 
Только вопрос по стопам остается открытым
 
На депе 10 000 USD. Получили сигнал по какой-либо стратегии, любой. Например сигнал на покупку. Уровень SL получился 200 пп(5-значная система исчислений), а риск на сделку расчитываю 1000 USD.Надо вычислить лот. Первая сделка принесла убыток. На счете 9000 USD, следующим идет сигнал на продажу. SL получился 400 пп. Но рисковать теперь намерен на 1500 USD, то есть +50% от первоначально заданной суммы риска. Надо вычислить лот. 3-яя сделка: buy например. Стоп 300 пп, риск на сделку опять +50% от первоначальной суммы риска к последней. То есть уже рискую на 2000 USD. Надо расчитать лот. Если и эта сделка убыточна, то следующая сумма, на которую рискну - 2500, то есть опять +50% от первоначальной к последней сумме. И опять надо вычислить лот. Но если вдруг Попадется прибыльная сделка и например депозит станет 11 тысяч, то риск на сделку должен вернуться опять в русло 10% от депо, то есть 1100 USD, а потом начать увеличиватьсякак я уже указал.)
 
Vinin:
Только вопрос по стопам остается открытым


Извиняюсь, что именно
 
vovan-gogan:


Спасибо!


По первой части - участки кода с примерами вызова. Сама ф-ия идентична этой - описание там же, только вместо % от депа, берется процент риска на капитал в зависимости от величины стоп-лосса. Ф-ии передается размер стоп-лосса в пунктах.

Внешние и глобальные переменные эксперта

extern double Lots    = 0.1;       // Количество лотов
extern  double MaxRisk = 0;        // риск на капитал в %
                                  // рассчитываем объем позиции взависимости от размера стопа, при заданном риске
                                  // например при депо 10 000 риск 1% при стопе 100 пп это будет примерно лот 0.1,
                                  // при стопе 200 пп уже лот должен быть 0.05, для того чтобы риск 1% остался на том же уровне
extern int StopLoss   =1000;       // StopLoss для новых ордеров (пунктов) 
double    Lots_New;                // Количество лотов для новых ордеров



Пример вызова ф-ии из эксперта - примерное описание здесь - почему примерное, т.к., как видите, в моей ф-ии, необходимо ей передавать значение переменной StopLoss

if (Lot(StopLoss)==false)       // Средств не хватает на миним.
    return;                    // Выход из пользов. функции 
Open_Ord(0);          // у меня здесь идет вызов ф-ии открытия ордера в лонг

Сама ф-ия:

//--------------------------------------------------------------------
// Lot.mqh
// 
//--------------------------------------------------------------- 1 --
// Функция вычисления количества лотов.
// Глобальные переменные:
// double Lots_New - количество лотов для новых ордеров (вычисляется)
// double Lots     - желаемое количество лотов, заданное пользовател.
// double  MaksRisk  - процент риска
// Возвращаемые значения:
// true  - если средств хватает на минимальный лот
// false - если средств не хватает на минимальный лот
//--------------------------------------------------------------- 2 --
bool Lot(int sl)                               // Позовательская ф-ия
  {
   string Symb   =Symbol();                    // Финансовый инструм.
   double One_Lot=MarketInfo(Symb,MODE_MARGINREQUIRED);//Стоим. 1 лота
   double Min_Lot=MarketInfo(Symb,MODE_MINLOT);// Мин. размер. лотов
   double Max_Lot =MarketInfo(Symbol(),MODE_MAXLOT);
   double Step   =MarketInfo(Symb,MODE_LOTSTEP);//Шаг изменен размера
   double Free   =AccountFreeMargin();         // Свободные средства
   double LotVal =MarketInfo(Symbol(),MODE_TICKVALUE);//стоимость 1 пункта для 1 лота
   

//--------------------------------------------------------------- 3 --
   if (Lots>0)                                 // Лоты заданы явно..
     {                                         // ..проверим это
      double Money=Lots*One_Lot;               // Стоимость ордера
      if(Money<=AccountFreeMargin())           // Средств хватает..
         Lots_New=Lots;                        // ..принимаем заданное
      else                                     // Если не хватает..
         Lots_New=MathFloor(Free/One_Lot/Step)*Step;// Расчёт лотов
     }
//--------------------------------------------------------------- 4 --
  else                                        // Если лоты не заданы
     {                                         // то берём процент 
                                               // на капитал от величины стопа
                                               
      Lots_New =MathFloor((Free*MaxRisk/100)/(sl*LotVal)/Step)*Step;
      if(Lots_New<Min_Lot) Lots_New=Min_Lot;
      if(Lots_New>Max_Lot) Lots_New=Max_Lot;
      Print ("Lot_New в ф-ии = ",Lots_New);
     }
//--------------------------------------------------------------- 5 --
   if (Lots_New < Min_Lot)                     // Если меньше допуст..
      Lots_New=Min_Lot;                        // .. то миниамальный
   if (Lots_New*One_Lot > AccountFreeMargin()) // Не хватает даже..
     {                                         // ..на минимальн. лот:(
      Inform(11,0,Min_Lot);                    // Сообщение..
      return(false);                           // ..и выход 
     }
   return(true);                               // Выход из польз. ф-ии
  }
//--------------------------------------------------------------- 6 --

От Вас - вторая часть... :-)))

 
vovan-gogan:


Извиняюсь, что именно


Как вы их считаете?

Я знаю что способов много конечно

 
Roman.:


По первой части - участки кода с примерами вызова. Сама ф-ия идентична этой - описание там же, только вместо % от депа, берется процент риска на капитал в зависимости от величины стоп-лосса. Ф-ии передается размер стоп-лосса в пунктах.

Внешние и глобальные переменные эксперта

Пример вызова ф-ии из эксперта - примерное описание здесь - почему примерное, т.к., как видите, в моей ф-ии, необходимо ей передавать значение переменной StopLoss

Сама ф-ия:

От Вас - вторая часть... :-)))



Извините, все равно про вторую часть все равно не понял.)
 
vovan-gogan:


Извините, все равно про вторую часть все равно не понял.)

Лавинообразное (на 50%) увеличение объема лота при последовательных проигрышах - от Вас... :-)))
Причина обращения: