Ну, если соображаешь - вставь эти куски и доработай эксперт.
Эксперт 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