Доработка ботов (советников, индикаторов) vol. 2

Можете помочь с отображением свечей в подвале, похожих на терминальные? Потому что тут какое-то безобразие получилось, особенно когда они переворачиваются. SingleChart.png
 

Вложения

Вложения

Доброго дня всем! Подправьте пожалуйста индикатор под новые билды, сильно грузит терминал. Если не трудно, оптимизируйте код и добавьте в настройки количество отображаемых закрытых ордеров. В похожем видел такую настройку, ставишь
меньше ордеров-меньше нагрузка.
Заранее благодарю!
ice.jpg
 

Вложения

Доброго дня всем! Подправьте пожалуйста индикатор под новые билды, сильно грузит терминал. Если не трудно, оптимизируйте код и добавьте в настройки количество отображаемых закрытых ордеров. В похожем видел такую настройку, ставишь
меньше ордеров-меньше нагрузка.
Заранее благодарю!
Посмотреть вложение 588417
Вот оптимизированная версия с параметром MaxClosedOrders и рядом улучшений производительности.2026-03-13_161941.jpg
 

Вложения

Уважаемые форумчане.
Я пытался получить помощь в доработке моего Эксперта _DBL_SHsq.mq4 , но как-то не сложилось.
Не смог получить помощь и на козырном форуме MQL5, хотя по моему мнению, задача как для среднего уровня владеющих mql4.
Попрошу подсказать мне где найти библиотеку, где можно скачать готовые скрипты (думаю наверняка существуют такие), чтобы попытаться
самостоятельно попробовать решить мою задачу. Скрипты типа : Открыть позицию, Закрыть позицию ...
Я не владею тонкостями mql.
Буду премного благодарен.
 
Я пытался получить помощь в доработке моего Эксперта _DBL_SHsq.mq4 , но как-то не сложилось.
Скорее всего был неправильно сформулированный вопрос... Надо задать его ЧЁТЧЕ, ЧЕТЧЕЕ ))), еще раз ))).
 
Последнее редактирование:
Ну, если соображаешь - вставь эти куски и доработай эксперт.
Эксперт Buy and Sell ордера отрабатывает без проблем.
Если открыты 2 лота необходимо закрыть 1 лот.
if(triger == 2) - открываем 2 лота Buy (Lots*2). Sell - аналогично.
а именно :
if triger == 1 - закрыть 1 лот Buy.
if triger == -1 - закрыть 1 лот Sell.

Я работаю в TradeStation 9.1 ( язык EasyLanguage ) - тут это пишется и работает элементарно.

вот код
 

Вложения

Ну, если соображаешь - вставь эти куски и доработай эксперт.
Эксперт Buy and Sell ордера отрабатывает без проблем.
Если открыты 2 лота необходимо закрыть 1 лот.
if(triger == 2) - открываем 2 лота Buy (Lots*2). Sell - аналогично.
а именно :
if triger == 1 - закрыть 1 лот Buy.
if triger == -1 - закрыть 1 лот Sell.

Я работаю в TradeStation 9.1 ( язык EasyLanguage ) - тут это пишется и работает элементарно.

вот код
Если я правильно понимаю,
Что было добавлено/изменено
Описание элемента
_buy_lots, _sell_lots Глобальные переменные — общий объем открытых лотов покупки/продажи
ord_in_market() Теперь, помимо флагов, _buy/_sell накапливает лоты (+= OrderLots())
Close_partial_by_type() Новая функция — частичное закрытие: находит первый ордер требуемого типа и закрывает ровно Lots из него (не весь ордер)
trigger == 1 Если открытый ордер на покупку ≥ Lots*2 → вызывает Close_partial_by_type(OP_BUY, Lots) — закрывает 1 лот, оставляя 1 лот
trigger == -1 Если открытый ордер на продажу ≥ Lots*2 → вызывает Close_partial_by_type(OP_SELL, Lots) — закрывает 1 лот, оставляя 1 лот
Логика сигнала (общая)
trigger Действие
2 Закрыть продажу → Открыть покупку × Лоты*2
1 Частично закрыть покупку: Лоты*2 → Лоты
0 Закрыть все
-1 Частично закрыть продажу: Лоты*2 → Лоты
-2 Закрыть покупку → Открыть продажу × Лоты*2
 

Вложения

Изменяется параметр из DLL или нет, как он сигналит, надо разобраться изначально с этим. Если он не изменяется там и висит (то же значение в нём), надо значит проверять его на изменение уже в эксперте на mql. 2 ордера указанным лотом открылись, один ордер закрыть надо... какой ? Старший по времени или младший ? Пишутся универсальные функции, типа openOrderSerie, где в параметрах указывается лот ордера и количество ордеров для открытия и так далее там. Создаётся структура Order, с полями, куда сохраняются данные ордеров. Пишется функция checkOrders, которая по соответствующему сигналу в массив структур собирает данные об открытых ордерах по данному инструменту, меджику и типу (OP_BUY/OP_SELL), их тикет, лот, цену открытия/закрытия и так далее... Пишется функция closeOrderSerie, в которую передается массив с данными об открытых ордерах, количество ордеров которые надо закрыть и параметр со старшего по времени или младшего надо закрывать... ну как то типа того... )
P.S. А не вот типа - я открыл 2 лота, 1 лот мне надо закрыть ))).
 
Последнее редактирование:
Ребята, спасибо за сочувствие.

Алгоритм работы DLL такой:

If AA > BB Then
Begin
Buy 2 Lots This Bar at Close ;
triger == 2 ;
End;

If Marketposition == 1 And triger == 2 Then
Begin
Sell 1 Lots Next Bar at (Entryprice + 50 point) Limit;
triger == 1 ;
StopLos == (Entryprice - 50 point);
ProfitLevel == (Entryprice + 100 point);
End;

If Marketposition == 1 And triger == 1 Then
Begin
Close All Next Bar at StopLos stop;
Close All Next Bar at ProfitLevel stop;
triger == 0 ;
End ;

// Marketposition == 1 - открыт ордер BUY .
// Marketposition == -1 - открыт ордер Sell .
// Entryprice == Close открытого ордера .
DLL брал здесь: FX1 | SharedVar - Key-Value Storage for Traders and Quants
 
Ребята, спасибо за сочувствие.

Алгоритм работы DLL такой:

If AA > BB Then
Begin
Buy 2 Lots This Bar at Close ;
triger == 2 ;
End;

If Marketposition == 1 And triger == 2 Then
Begin
Sell 1 Lots Next Bar at (Entryprice + 50 point) Limit;
triger == 1 ;
StopLos == (Entryprice - 50 point);
ProfitLevel == (Entryprice + 100 point);
End;

If Marketposition == 1 And triger == 1 Then
Begin
Close All Next Bar at StopLos stop;
Close All Next Bar at ProfitLevel stop;
triger == 0 ;
End ;

// Marketposition == 1 - открыт ордер BUY .
// Marketposition == -1 - открыт ордер Sell .
// Entryprice == Close открытого ордера .
DLL брал здесь: FX1 | SharedVar - Key-Value Storage for Traders and Quants
Ты отремонтировал чё хотел?
 
Ребята, спасибо за сочувствие.

Алгоритм работы DLL такой:

If AA > BB Then
Begin
Buy 2 Lots This Bar at Close ;
triger == 2 ;
End;

If Marketposition == 1 And triger == 2 Then
Begin
Sell 1 Lots Next Bar at (Entryprice + 50 point) Limit;
triger == 1 ;
StopLos == (Entryprice - 50 point);
ProfitLevel == (Entryprice + 100 point);
End;

If Marketposition == 1 And triger == 1 Then
Begin
Close All Next Bar at StopLos stop;
Close All Next Bar at ProfitLevel stop;
triger == 0 ;
End ;

// Marketposition == 1 - открыт ордер BUY .
// Marketposition == -1 - открыт ордер Sell .
// Entryprice == Close открытого ордера .
DLL брал здесь: FX1 | SharedVar - Key-Value Storage for Traders and Quants
а сюда длл выгрузить?
 

Посмотрели (2224) Посмотреть

Смотрят сейчас (5) Посмотреть

Отслеживают (1863) Посмотреть

Назад
Верх