Как рассчитать размер участка? - страница 3

 
chaffinsjc:

Допустим, мой мини-счет имеет маржу в $10 000, и я хочу рискнуть 2% на следующей сделке (то есть просто использовать $200 для покупки <некоторого количества> контрактов).

(Я понимаю, что это ограниченный взгляд на "риск". Меня не интересуют стоп-лосс пипсы, цели прибыли и т.д.].

Используя MetaTrader, я получаю от своего брокера следующую информацию о мини-счете:

accountLeverage = AccountLeverage(); // значение = 200
modeLotSize = MarketInfo("EURUSDm", MODE_LOTSIZE); // значение = 10000
modeLotStep = MarketInfo("EURUSDm", MODE_LOTSTEP); // значение = .01
modeMinLot = MarketInfo("EURUSDm", MODE_MINLOT) ); // значение = .01

ВОПРОС: Как мне рассчитать размер лота для $200? (Было бы полезно знать стоимость лота минимального размера. В данном случае минимальный размер лота составляет .01).

ВОПРОС: Одинакова ли формула расчета размера лота для всех валютных пар?

Заранее большое спасибо.


Я высылаю вам хороший калькулятор размера лота, основанный на эквити, а не на балансе. Лучше, если у вас больше одной сделки.

 
Я отправляю вам свой расчет размера лота. Он основан на эквити, а не на балансе. Лучше, если вы используете более 1 сделки вместе.
Файлы:
 

В документации :

MODE_TICKVALUE

16

Значение тика в валюте депозита

MODE_TICKSIZE

17

Размер тика в пунктах


Для моего пятизначного брокера: mode_tickvalue = 1; mode_ticksize = 0.00001

Так почему все дают эту строку:

   double pipValue = MarketInfo(Symbol(),MODE_TICKVALUE);
 if (Digits==3 || Digits==5) pipValue *= 10;

Разве это неправильно?

 

Это неправильно, неправильно сформулировано (?)

double pipValue = MarketInfo(Symbol(),MODE_TICKVALUE);
 if (Digits==3 || Digits==5) pipValue *= 10;

Должно быть так: если цифры == 5 И если вы работаете в пунктах, то .....

if (Digits==3 || Digits==5) pipValue *= 10;

если кто-то работает в Point, кому-то нет дела до Pips.

 
ffoorr:

В документации :

MODE_TICKVALUE

16

Значение тика в валюте депозита

MODE_TICKSIZE

17

Размер тика в пунктах


Для моего пятизначного брокера: mode_tickvalue = 1; mode_ticksize = 0.00001

Так почему все дают эту строку:

Разве это неправильно?

   double pipValue = MarketInfo(Symbol(),MODE_TICKVALUE);
 if (Digits==3 || Digits==5) pipValue *= 10;

Это только для тех случаев, когда люди вводят значения в виде пунктов. Пойнт обычно не равен 1 пункту.
 
ffoorr: Разве это не правильно?

Существует Tick, PIP и Point. Все они в целом отличаются друг от друга. Тик - это наименьшее изменение цены. Пункт - это наименьшая котируемая цифра. В валюте пункт определяется как 0,0001 (или для йены 0,01).

На 4-х значном брокере пункт (0.0001) = пункт (0.0001). [JPY 0.01 == 0.01] У брокера с 5 цифрами пункт (0.00001) = 1/10 пункта (0.00010/10). То, что вы указываете дополнительную цифру, не меняет значение пункта. (0.0001 == 0.00010) Советники должны переводить пипсы в пункты (для mq4.) В валютах тик - это пункт. Цена может измениться на наименьшую значащую цифру (1.23456 -> 1.23457).

В металлах тик - это наименьшее изменение, но большее, чем пункт. Если цена может измениться от 123,25 до 123,50, то TickSize будет 0,25, а пункт - 0,01. Пип не имеет никакого значения.

Вот почему вы не используете TickValue сам по себе. Только как соотношение с TickSize. См. DeltaValuePerLot().

 
Roman Kramar:

Проблема не до конца определена. Если вы говорите, что хотите рисковать 2%, то вы должны зафиксировать одну из переменных: уровень стоп-лосса или объем сделки. Поскольку вы спрашиваете о расчете размера лота, это означает, что вы не хотите фиксировать его, но это требует, чтобы вы заинтересовались пунктами стоп-лосса, хотя вы говорите, что это не так. Если у вас нет стоп-лосса, то рисковать 2% означает взять фиксированный размер лота, например, 1.0, и ждать, пока ваши текущие потери не достигнут 2% от начальной маржи. Здесь, как вы видите, не нужно рассчитывать размер лота.


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


double tradeVolume = AccountFreeMargin() * Risk/100 / ( StopLossPoints * MarketInfo( Symbol(), MODE_TICKVALUE ) );


То есть, учитывая уровень стоп-лосса для любой конкретной сделки, вы всегда будете иметь указанный процент от вашей начальной маржи, потерянной, если стоп-лосс будет взят.


Вы также захотите нормализовать полученное значение с помощью MODE_LOTSTEP и ограничить его с помощью MODE_MINLOT и MODE_MAXLOT.

Как я могу рассчитать размер всех моих открытых ордеров в USD?

 
magonicolas: Как я могу рассчитать размер всех моих открытых ордеров в USD?
  1. Не делайте двойной пост! У вас уже была открыта эта тема.
    Общие правила и лучшие практики форума. -Общий - Форум по программированию на MQL5

  2. Не имеет смысла. Как рассчитать кварту в USD?

    Никогда не рискуйте более чем небольшим процентом от вашего счета, конечно, менее 2% на сделку, 6% всего на счет. Риск зависит от вашего начального стоп-лосса, размера лота и стоимости пары. Он не зависит от маржи и кредитного плеча.
    1. Вы размещаете стоп там, где он должен быть - там, где причина для торговли больше не актуальна. Например, при торговле на отскоке от поддержки стоп опускается ниже поддержки.
    2. AccountBalance * percent/100 = RISK = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot + CommissionPerLot) (Примечание OOP-OSL включает спред, а DeltaPerLot обычно составляет около $10/pip, но он учитывает обменные курсы пары по отношению к валюте вашего счета).
    3. НЕ используйте TickValue сам по себе - DeltaPerLot и проверьте, возвращает ли MODE_TICKVALUE значение в валюте вашего депозита, как обещано в документации, или возвращает ли он значение в базовой валюте инструмента.
      MODE_TICKVALUE не надежен на не валютных инструментах у многих брокеров - Форум по программированию MQL4 2017.10.10
      Есть ли универсальное решение для Tick value? -Валютные пары - Общие вопросы - Форум по программированию MQL5 2018.02.11
      Расчет стоимости лота зашкаливает в 100 раз - Форум по программированию MQL5 2019.07.19
    4. Вы должны правильно нормализовать лоты и проверить их на соответствие min и max.
    5. Вы также должны проверить FreeMargin, чтобы избежать стоп-аута.

    Большинство пар стоят около $10 за PIP. Риск в $5 с (очень маленьким) SL в 5 PIP составляет $5/$10/5 или 0.1 лота максимум.

 
William Roeder:
  1. Не делайте двойной пост! У вас уже была открыта эта тема.
    Общие правила и лучшие практики форума. -Общий - Форум по программированию на MQL5

  2. Не имеет смысла. Как рассчитать кварту в USD?

    Никогда не рискуйте более чем небольшим процентом от вашего счета, конечно, менее 2% на сделку, 6% всего на счет. Риск зависит от вашего начального стоп-лосса, размера лота и стоимости пары. Он не зависит от маржи и кредитного плеча.
    1. Вы размещаете стоп там, где он должен быть - там, где причина для торговли больше не актуальна. Например, при торговле на отскоке от поддержки стоп опускается ниже поддержки.
    2. AccountBalance * percent/100 = RISK = OrderLots * (|OrderOpenPrice - OrderStopLoss| * DeltaPerLot + CommissionPerLot) (Примечание OOP-OSL включает спред, а DeltaPerLot обычно составляет около $10/pip, но он учитывает обменные курсы пары по отношению к валюте вашего счета).
    3. НЕ используйте TickValue сам по себе - DeltaPerLot и проверьте, возвращает ли MODE_TICKVALUE значение в валюте вашего депозита, как обещано в документации, или возвращает ли он значение в базовой валюте инструмента.
      MODE_TICKVALUE не надежен на не валютных инструментах у многих брокеров - Форум по программированию MQL4 2017.10.10
      Есть ли универсальное решение для Tick value?-Валютные пары - Общие вопросы - Форум по программированию MQL5 2018.02.11
      Расчет стоимости лота зашкаливает в 100 раз - Форум по программированию MQL5 2019.07.19
    4. Вы должны правильно нормализовать лоты и проверить их на соответствие min и max.
    5. Вы также должны проверить FreeMargin, чтобы избежать стоп-аута.

    Большинство пар стоят около $10 за PIP. Риск в $5 при (очень маленьком) SL в 5 PIP составляет $5/$10/5 или 0,1 лота максимум.

Я не говорю о риске, я просто хочу знать сумму в USD открытых ордеров.

 
magonicolas:

Я не говорю о риске, я просто хочу знать сумму в USD открытых ордеров.

Пожалуйста, прекратите двойное сообщение!
Причина обращения: