Как кодировать? - страница 80

 
 

Скрытие стоплоссов

Кто-нибудь может подсказать, как скрыть стоплоссы и трейлинг-стопы в советнике? (Мне не нравится идея, что брокеры видят мои стоплоссы или трейлинг-стопы, это как мишень для них). Спасибо.

 
jturns23:
Может ли кто-нибудь сказать, как скрыть стоплоссы и трейлинг-стопы в советнике? (Мне не нравится идея, что брокеры видят мои стоплоссы или трейлинг-стопы, это как мишень для них). Спасибо.

Просто в своем коде вы определяете стоп-значение и целевое значение.

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

Если стоп достигнут, то советник должен выполнить функцию OrderClose.

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

Будьте здоровы,

Hiachiever

 
jturns23:
Кто-нибудь может рассказать, как скрыть стоплоссы и трейлинг-стопы в советнике? (Мне не нравится идея, что брокеры видят мои стоплоссы или трейлинг-стопы, это как мишень для них). Спасибо.

То, что вы пытаетесь реализовать, чаще всего называется "мягкими стопами", когда вы динамически отслеживаете P&L, закрывая ордер(ы) при достижении требуемой цели (целей) - в отличие от размещения "жестких стопов", которые брокер может увидеть и пробить...

Жесткий стоп определенной степени необходим, имо (для сценария "на всякий случай"...), но даже он не спасет вас, если у вас совершенно недобросовестный брокер - такой, как Fxopen: -.

https://www.forex-tsd.com/forum/commercial-talks/9512-complaints-and-brokers-scam#comment_273270

 

сложный вопрос!

уважаемые все

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

Как вы думаете, могу ли я решить эту проблему, используя

if(IsTradeAllowed()==false) Sleep(10000);

Не могли бы вы помочь мне решить эту проблему?

Заранее спасибо!

 

Это моя функция для закрытия всех позиций. Я думаю, что это очень просто. но советник всегда тратит много времени на закрытие всех позиций, что означает, что цена закрытия может отличаться.

Не могли бы вы помочь мне решить эту проблему?

Заранее спасибо!

void close_all_position_now(int total_order)

{

int ticket=0;

double volume=0, price=0;

for(int i=0;i<total_order;i++)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)

break;

// OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber()==magic_number && OrderType()==0)

{

ticket=OrderTicket();

volume=OrderLots();

price=Bid;

OrderClose(ticket,volume,price,slippage,CLR_NONE);

}

else if (OrderMagicNumber()==magic_number && OrderType()==1)

{

ticket=OrderTicket();

volume=OrderLots();

price=Ask;

OrderClose(ticket,volume,price, slippage,CLR_NONE);

}

else if(OrderMagicNumber()==magic_number && OrderType()>=2)

{

ticket=OrderTicket();

OrderDelete(ticket);

}

}

}

 
ys16:
... но советник всегда тратит много времени на закрытие всех позиций, что означает, что цена закрытия может отличаться. ...}

Способов закрыть много позиций по одной и той же цене всего два:

1) У них одинаковый TP (или SL).

2) Открыть противоположную позицию с размером, равным общим лотам, которые вы хотите закрыть. Позже вы можете сделать несколько CloseBy().

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

 
Michel:
Способов закрыть много позиций по одной и той же цене всего два:

1) У них одинаковый TP (или SL).

2) Откройте противоположную позицию размером в общую сумму лотов, которые вы хотите закрыть. Позже вы можете сделать несколько CloseBy().

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

Уважаемый Мишель,

Большое спасибо. Как насчет стоимости? Нужно ли мне платить за спред противоположных позиций?

В чем причина того, что советник не может закрыть все позиции за очень короткое время? Это потому, что ордерам на закрытие нужно некоторое время для исполнения.

иногда 3 позиции могут быть закрыты после одного изменения цены, но иногда может быть закрыта только 1 позиция.

Есть ли у вас какие-нибудь ресурсы, связанные с программированием на MQL4? Я не знал временной шкалы для выполнения советника.

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

Как насчет

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()==magic_number && OrderType()==OP_BUY)

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

 
ys16:
Уважаемый Мишель,

Спасибо большое. как насчет стоимости? нужно ли мне платить за спред противоположных позиций?

В чем причина того, что советник не может закрыть все позиции за очень короткое время? Это потому, что ордерам на закрытие требуется некоторое время для исполнения.

иногда 3 позиции могут быть закрыты после одного изменения цены, но иногда может быть закрыта только 1 позиция.

Есть ли у вас какие-нибудь ресурсы, связанные с программированием на MQL4? Я не знал временной шкалы для выполнения советника.

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

Как насчет

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderMagicNumber()==magic_number && OrderType()==OP_BUY)

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

Многие брокеры разрешают "полное хеджирование", это означает, что используемая маржа рассчитывается по разнице между длинными и короткими позициями. Поэтому для полностью хеджированной позиции нет используемой маржи, и вы можете закрыть обе позиции (одну за другой) без дополнительного спреда. Таким образом, вы тратите только один спред, если закрываете позицию обычным способом или открываете противоположную позицию.

Что касается времени, то время исполнения кода очень быстрое и не имеет ничего общего с временем работы дилингового центра брокера.

 

эксперт по автономному графику

Здравствуйте,

Я пытаюсь использовать эксперта на автономном графике (например, таком, который создается period_converter). Они не получают тики, поэтому необходимо использовать цикл while() внутри. Однако через несколько минут оффлайн-график показывает "Ожидание обновления" и больше не обновляется. Я подозреваю, что это своего рода тупик, потому что когда я открываю другой автономный график, он обновляется правильно, и когда я закрываю его, исходный график остается в порядке некоторое время до следующей блокировки "Ожидание обновления".

Я делаю что-то не так или это проблема MT4?

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