Возможно ли ограничить Equity?

 

У меня стоит всегда куча отложенных ордеров, они срабатывают, все свободные средства заняты в работе, а я бы хотел еще и снимать со счета часть прибыли, да и риски ограничить. Нужно чтобы в работе было задействовано 50% свободных средств, если больше то, ордер, который должен сработать должен вместо этого удалиться. Т.е., наверное так, если сумма залога по открытым ордерам одного направления < equity/2, то ордер срабатывает, если >= то удаляется.

Возможно ли реализовать такое.

 
SergeyKa:

У меня стоит всегда куча отложенных ордеров, они срабатывают, все свободные средства заняты в работе, а я бы хотел еще и снимать со счета часть прибыли, да и риски ограничить. Нужно чтобы в работе было задействовано 50% свободных средств, если больше то, ордер, который должен сработать должен вместо этого удалиться. Т.е., наверное так, если сумма залога по открытым ордерам одного направления < equity/2, то ордер срабатывает, если >= то удаляется.

Возможно ли реализовать такое.


Средствами MQL - да. Документация здесь.
 
chv:
SergeyKa:

Возможно ли реализовать такое.


Средствами MQL - да. Документация здесь.

Перелопатил всю документацию перед тем как выходить с темой.

Можно поконкретней?

 
SergeyKa:

Можно поконкретней?


Можно:

Руцями нужно програму писать.

:)

 
Aleksey24:
SergeyKa:

Можно поконкретней?


Можно:

Руцями нужно програму писать.

:)


может руциями напишешь пример?
 
SergeyKa:
Aleksey24:

SergeyKa:

Можно поконкретней?



Можно:


Руцями нужно програму писать.


:)


может руциями напишешь пример?

if(AccountEquity()<0.5*AccountBalance())
{
return(0);
}
Помогает?
 
SergeyKa:

У меня стоит всегда куча отложенных ордеров, они срабатывают, все свободные средства заняты в работе, а я бы хотел еще и снимать со счета часть прибыли, да и риски ограничить. Нужно чтобы в работе было задействовано 50% свободных средств, если больше то, ордер, который должен сработать должен вместо этого удалиться. Т.е., наверное так, если сумма залога по открытым ордерам одного направления < equity/2, то ордер срабатывает, если >= то удаляется.

Возможно ли реализовать такое.

Конечно , возможно. Только непонятна фраза:"...ордер, который должен сработать должен вместо этого удалиться. ... Так сначала сработать , потом удалиться или вообще не сработать, или сработать, но с меньшим объёмом позиции ? Постановка задачи должна быть чёткой, без двусмысленности и туманных формулировок. Сначала Вы пишите "...50% свободных средств.". Потом, " < equiti/2". Это разные совсем вещи и значения.
 
Valmars:
SergeyKa:

У меня стоит всегда куча отложенных ордеров, они срабатывают, все свободные средства заняты в работе, а я бы хотел еще и снимать со счета часть прибыли, да и риски ограничить. Нужно чтобы в работе было задействовано 50% свободных средств, если больше то, ордер, который должен сработать должен вместо этого удалиться. Т.е., наверное так, если сумма залога по открытым ордерам одного направления < equity/2, то ордер срабатывает, если >= то удаляется.

Возможно ли реализовать такое.

Конечно , возможно. Только непонятна фраза:"...ордер, который должен сработать должен вместо этого удалиться. ... Так сначала сработать , потом удалиться или вообще не сработать, или сработать, но с меньшим объёмом позиции ? Постановка задачи должна быть чёткой, без двусмысленности и туманных формулировок. Сначала Вы пишите "...50% свободных средств.". Потом, " < equiti/2". Это разные совсем вещи и значения.


50%=1/2 или нет?

в тот момент когда ордер должен бы сработать он удаляется так же как это происходит, когда недостаточно свободных средств

для меня тут все понятно как это должно работать, но я не знаю как это закодировать - отсюда и неточности и размытости формулировки

 
cloud666:
SergeyKa:
Aleksey24:

SergeyKa:

Можно поконкретней?



Можно:


Руцями нужно програму писать.


:)


может руциями напишешь пример?

if(AccountEquity()<0.5*AccountBalance())
{
return(0);
}
Помогает?

не очень...

если так то что?

много отложенных ордеров

и они должны остаться на своих местах, за исключением того, кот. должен бы сработать.

 
SergeyKa:


50%=1/2 или нет?

в тот момент когда ордер должен бы сработать он удаляется так же как это происходит, когда недостаточно свободных средств

для меня тут все понятно как это должно работать, но я не знаю как это закодировать - отсюда и неточности и размытости формулировки

50% безусловно, 1/2,

но отчего Вы их берёте? Свободные средства - это свободная маржа, она отражается в Вашем теминале "Свободно...."

На языке MQL4 это:

AccountFreeMargin( )

Эквити = свободная маржа + блокированная маржа:

AccountEquity( ) = AccountFreeMargin( ) + AccountMargin( )

Так от чего хотите брать половину: от эквити, т. е. все средства, или от свободных денег ? В зависимости от размера плеча, можно и так, и так.

Вообще, для этого существует функция:

AccountFreeMarginCheck( string symbol, int cmd, double volume)
Не буду её описывать, посмотрите в документации, желательно (настоятельно) её использовать при расчёте размера лота, чтобы не получать ошибок при установке ордера.
 
Valmars:
SergeyKa:


50%=1/2 или нет?

в тот момент когда ордер должен бы сработать он удаляется так же как это происходит, когда недостаточно свободных средств

для меня тут все понятно как это должно работать, но я не знаю как это закодировать - отсюда и неточности и размытости формулировки

50% безусловно, 1/2,

но отчего Вы их берёте? Свободные средства - это свободная маржа, она отражается в Вашем теминале "Свободно...."

На языке MQL4 это:

AccountFreeMargin( )

Эквити = свободная маржа + блокированная маржа:

AccountEquity( ) = AccountFreeMargin( ) + AccountMargin( )

Так от чего хотите брать половину: от эквити, т. е. все средства, или от свободных денег ? В зависимости от размера плеча, можно и так, и так.

Вообще, для этого существует функция:

AccountFreeMarginCheck( string symbol, int cmd, double volume)
Не буду её описывать, посмотрите в документации, желательно (настоятельно) её использовать при расчёте размера лота, чтобы не получать ошибок при установке ордера.


Спасибо за разъяснения

Тогда так

If (NormalizeDouble((AccountEquity()/AccountMargin()),1)>0,5)

Это самая простая часть....

Вот дальше....

Как выбрать именно тот ордер, кот. нужен?