Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 188

 
Vitalie Postolache:

Так комиссия не связана с пунктами цены никак. Она же взимается с ордера, независимо от количества пунктов, что прошла цена за время жизни этого самого ордера. Да, перевести в пункты можно, но это будет примерно чуть больше спреда. Вот я и спросил, какой в этом смысл? Разве что пипсаторам с целями меньше спреда?
Возможно вы правы. Я перевожу комиссию + своп(!), и тогда это имеет большой смысл, и если находимся долго в рынке, то расходы бываю до 25пп, и если не добавить эти пункты к тралу или безубытку, то в итоге закроемся в минусе
 
Vitaly Muzichenko:
Возможно вы правы. Я перевожу комиссию + своп(!), и тогда это имеет большой смысл, и если находимся долго в рынке, то расходы бываю до 25пп, и если не добавить эти пункты к тралу или безубытку, то в итоге закроемся в минусе
По свопу полностью согласен, он меняется с временем, особенно приятно, когда своп положительный и крупный ордер висит неделю-две. А комиссия разве растёт со временем? Вроде как единовременно начисляется.
 
Vitalie Postolache:
По свопу полностью согласен, он меняется с временем, особенно приятно, когда своп положительный и крупный ордер висит неделю-две. А комиссия разве растёт со временем? Вроде как единовременно начисляется.
Комиссия грубо говоря до 1пп и не меняется со временем, но всё-равно приятно, когда она учитывается при перемещении стопов безубытка и трала, не нужно ничего добавлять вручную, всё сделает программа)
 
Vitaly Muzichenko:
Комиссия грубо говоря до 1пп и не меняется со временем, но всё-равно приятно, когда она учитывается при перемещении стопов безубытка и трала, не нужно ничего добавлять вручную, всё сделает программа)


В вашем коде что-то не так:

tv=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE);

(OrderCommission()/(tv*OrderLots()))*Point()

Может так лучше?

double tv=SymbolInfoDouble(Symbol(),SYMBOL_TRADE_TICK_VALUE);
int comissionpoints=int(OrderCommission()/tv/OrderLots());
Но если комиссия меньше 1, то возвращать код будет 0. Или пункты в формате double представлять?
 
Vitalie Postolache:


В вашем коде что-то не так:

Может так лучше?

Нужно не так как лучше, а так как правильно. Код выдернул с соседней ветки, и он по всей вероятности правильный)
 
Vitaly Muzichenko:
Нужно не так как лучше, а так как правильно. Код выдернул с соседней ветки, и он по всей вероятности правильный)


Ну так вроде правильней на Point всё же не умножать. 

Если цена для ордера 1 лот двинется на 1 пипс, то его прибыль поменяется на: OnePipCharge = Tickvalue * 1Lot * 1Point. Отсюда выводим количество пунктов, если известна сумма в базовой валюте:  Pips = Charge/Lots/Tickvalue.

Не так?

 

Возвращаюсь к своей, на сегодняшний день, больной теме - модификация советником именно на ndd-счетах. 

1. Если на паре уже есть открытые ордера и открывается новый, то все тут же модифицируется (усреднение).

2. Если нет ордеров и происходит открытие, т.е. появляется один ордер, то модификации не происходит (хотя в этом же ДЦ на простом счету на той же паре все модифицируется как положено, и уже не один месяц). Модифицируется же ордер уже при следующем запуске       терминала. В общих логах на сей счет вообще ничего, в логах MQL4 пишется ошибка 130 (не правильные стопы), после открытия ордера.

3. Сегодня понаблюдал - открылся ордер, один на паре, но не модифицировался, котировки по паре поступали (предполагал такой вариант). Помня предыдущие варианты перезапустил терминал, но ордер так и не модифицировался. При запуске терминала уже утром (у меня дневные графики) ордер модифицировался.

И шо это может быть? Мнения. Может сразу в функцию открытия забить нужный ТП? Так вроде по правилам ndd-счетов в начале открытие ордера, а потом выставление ТП и СЛ.

 
Youri Lazurenko:

Возвращаюсь к своей, на сегодняшний день, больной теме - модификация советником именно на ndd-счетах. 

1. Если на паре уже есть открытые ордера и открывается новый, то все тут же модифицируется (усреднение).

2. Если нет ордеров и происходит открытие, т.е. появляется один ордер, то модификации не происходит (хотя в этом же ДЦ на простом счету на той же паре все модифицируется как положено, и уже не один месяц). Модифицируется же ордер уже при следующем запуске       терминала. В общих логах на сей счет вообще ничего, в логах MQL4 пишется ошибка 130 (не правильные стопы), после открытия ордера.

3. Сегодня понаблюдал - открылся ордер, один на паре, но не модифицировался, котировки по паре поступали (предполагал такой вариант). Помня предыдущие варианты перезапустил терминал, но ордер так и не модифицировался. При запуске терминала уже утром (у меня дневные графики) ордер модифицировался.

И шо это может быть? Мнения. Может сразу в функцию открытия забить нужный ТП? Так вроде по правилам ndd-счетов в начале открытие ордера, а потом выставление ТП и СЛ.

А вы открываете позицию сразу с ненулевыми стопом и тейком?

Попробуйте сначала открыть позицию со стопом и тейком, равными нулю, проверьте, что позиция открыта и модифицируйте её стоп и тейк на нужные значения.

 
Artyom Trishkin:

А вы открываете позицию сразу с ненулевыми стопом и тейком?

Попробуйте сначала открыть позицию со стопом и тейком, равными нулю, проверьте, что позиция открыта и модифицируйте её стоп и тейк на нужные значения.


У меня так и есть - открытие ордера с нулевыми ТП и СЛ, а потом уже модифицируется (ордер) с нужными параметрами ТП и СЛ. Я уже писал, все работает и работало нормально на других счетах, только на ndd такая фигня. До этого ни у кого с подобными счетами не работал, не могу сравнить. Может это бздык только форекс4ю, а может всех ndd-счетов. Хотелось бы узнать для дальнейшего.
 
Vitalie Postolache:


Ну так вроде правильней на Point всё же не умножать. 

Если цена для ордера 1 лот двинется на 1 пипс, то его прибыль поменяется на: OnePipCharge = Tickvalue * 1Lot * 1Point. Отсюда выводим количество пунктов, если известна сумма в базовой валюте:  Pips = Charge/Lots/Tickvalue.

Не так?

А в чём разница

Pips = Charge/Lots/Tickvalue в конкретных цифрах 8/2/4 = 1

или

Pips = Charge/(Lots*Tickvalue) в конкретных цифрах 8/(2*4) = 8/8 = 1

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

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