Петля Мёбиуса - страница 321

 
Renat Akhtyamov #:

чат GPT абсолютно в курсе:

как из нескольких валютных пар получить флетовую комбинацию?

Отличный вопрос! Создание флетовой (нейтральной к движению рынка) комбинации из нескольких валютных пар — это основа портфельного менеджмента и статистического арбитража. Вот подробное руководство, как это сделать.

1. Теоретическая основа: что такое флетовая комбинация?

Флетовая комбинация — это набор инструментов, позиции по которым открыты таким образом, что общая Exposure (чувствительность) к движению основных валют (USD, EUR, JPY и т.д.) стремится к нулю.

2. Основные методы создания флетовой комбинации

Метод 1: Треугольный арбитраж (Triangular Arbitrage)

Самый простой способ — использовать валютный треугольник:

//+------------------------------------------------------------------+ //| Пример треугольной флетовой комбинации | //+------------------------------------------------------------------+ void CreateTriangularFlat() { // EURUSD + GBPUSD + EURGBP // Логика: (EUR/USD) * (GBP/EUR) * (USD/GBP) = 1 // Если возникает дисбаланс - арбитражная возможность double lot_eurusd = 0.1; double lot_gbpusd = 0.1; double lot_eurgbp = 0.1; // BUY EURUSD + SELL GBPUSD + SELL EURGBP OrderSend("EURUSD", OP_BUY, lot_eurusd, Ask, 3, 0, 0, "Triangular", 0, 0, clrGreen); OrderSend("GBPUSD", OP_SELL, lot_gbpusd, Bid, 3, 0, 0, "Triangular", 0, 0, clrRed); OrderSend("EURGBP", OP_SELL, lot_eurgbp, Bid, 3, 0, 0, "Triangular", 0, 0, clrRed); }


Метод 2: Матричный метод (на основе валютных весов)

Более продвинутый способ — расчет через валютные веса:

//+------------------------------------------------------------------+ //| Класс для создания флетовых комбинаций | //+------------------------------------------------------------------+ class CurrencyNeutralPortfolio { private: struct CurrencyExposure { double usd; double eur; double gbp; double jpy; double chf; double aud; double cad; double nzd; }; public: //--- Матрица валютных весов для основных пар static void GetCurrencyWeights(string symbol, CurrencyExposure &weights) { ArrayInitialize(weights, 0); if(symbol == "EURUSD") { weights.eur = 1; weights.usd = -1; } else if(symbol == "GBPUSD") { weights.gbp = 1; weights.usd = -1; } else if(symbol == "USDJPY") { weights.usd = 1; weights.jpy = -1; } else if(symbol == "USDCHF") { weights.usd = 1; weights.chf = -1; } else if(symbol == "AUDUSD") { weights.aud = 1; weights.usd = -1; } else if(symbol == "USDCAD") { weights.usd = 1; weights.cad = -1; } else if(symbol == "NZDUSD") { weights.nzd = 1; weights.usd = -1; } else if(symbol == "EURGBP") { weights.eur = 1; weights.gbp = -1; } else if(symbol == "EURJPY") { weights.eur = 1; weights.jpy = -1; } else if(symbol == "GBPJPY") { weights.gbp = 1; weights.jpy = -1; } } //--- Расчет текущей экспозиции портфеля static void CalculateExposure(CurrencyExposure &total_exposure) { ArrayInitialize(total_exposure, 0); for(int i = 0; i < OrdersTotal(); i++) { if(OrderSelect(i, SELECT_BY_POS) && OrderType() <= OP_SELL) { CurrencyExposure order_exposure; string symbol = OrderSymbol(); double volume = OrderLots() * (OrderType() == OP_BUY ? 1 : -1); GetCurrencyWeights(symbol, order_exposure); // Добавляем взвешенную экспозицию total_exposure.usd += order_exposure.usd * volume; total_exposure.eur += order_exposure.eur * volume; total_exposure.gbp += order_exposure.gbp * volume; total_exposure.jpy += order_exposure.jpy * volume; total_exposure.chf += order_exposure.chf * volume; total_exposure.aud += order_exposure.aud * volume; total_exposure.cad += order_exposure.cad * volume; total_exposure.nzd += order_exposure.nzd * volume; } } } };


Метод 3: Статистический арбитраж (коинтеграция)

Самый сложный, но наиболее эффективный метод:

//+------------------------------------------------------------------+ //| Статистический арбитраж на основе коинтеграции | //+------------------------------------------------------------------+ void StatisticalArbitrageStrategy() { string symbols[] = {"EURUSD", "GBPUSD", "AUDUSD"}; int lookback_period = 100; double z_score_threshold = 2.0; //--- Получаем исторические данные double prices[][3]; GetHistoricalPrices(symbols, lookback_period, prices); //--- Проверяем коинтеграцию (упрощенная версия) double spread = CalculateSpread(prices); double z_score = CalculateZScore(spread, lookback_period); //--- Торговая логика if(z_score > z_score_threshold) { // Spread слишком широк - продаем спред OpenMeanReversionTrade(symbols, -1); } else if(z_score < -z_score_threshold) { // Spread слишком узок - покупаем спред OpenMeanReversionTrade(symbols, 1); } } //+------------------------------------------------------------------+ //| Открытие позиций mean reversion | //+------------------------------------------------------------------+ void OpenMeanReversionTrade(string &symbols[], int direction) { // Эвристические веса (должны рассчитываться на основе регрессии) double weights[] = {0.5, -0.3, -0.2}; // Пример для EURUSD, GBPUSD, AUDUSD for(int i = 0; i < ArraySize(symbols); i++) { double lot_size = 0.1 * MathAbs(weights[i]); int order_type = (weights[i] * direction > 0) ? OP_BUY : OP_SELL; OrderSend(symbols[i], order_type, lot_size, (order_type == OP_BUY) ? Ask : Bid, 3, 0, 0, "StatArb", 0, 0, clrBlue); } }


3. Практическая реализация на MQL4

Вот полный код советника для создания флетовых комбинаций:


4. Готовые флетовые комбинации

Вот несколько проверенных комбинаций:

Комбинация 1: Major Currency Basket

mq4
Copy
Download

// EURUSD + USDJPY + GBPUSD + AUDUSD + USDCAD + USDCHF // с весами: +0.2, -0.2, +0.2, +0.2, -0.2, -0.2

Комбинация 2: Carry Trade Neutral

mq4
Copy
Download

// BUY AUDJPY + SELL CHFJPY + SELL AUDUSD + BUY CHFUSD

Комбинация 3: USD Neutral

mq4
Copy
Download

// BUY EURUSD + SELL USDCHF + BUY GBPUSD + SELL USDJPY // Общая экспозиция к USD ≈ 0

5. Ключевые принципы

  1. Диверсификация - используйте разные валютные группы

  2. Корреляционный анализ - регулярно пересчитывайте веса

  3. Риск-менеджмент - ограничивайте общую экспозицию

  4. Мониторинг - следите за изменением корреляций

  5. Резервирование - оставляйте запас ликвидности

6. Важные предупреждения

⚠️ Внимание: Создание truly флетовой комбинации требует:

  • Постоянного мониторинга корреляций

  • Учета процентных ставок

  • Учета ликвидности инструментов

  • Сложных математических расчетов

Рекомендую начинать с простых треугольных комбинаций и постепенно переходить к более сложным стратегиям!

В курсе потому что эта статья в открытом доступе вместе с этим же советником.Даже тут сова похожая в код базе лежит 
 

Ребята, пожалуйста, больше не цитируйте это сообщение Рены.

Я устал пролистывать страницы.

[Удален]  
Evgeniy Chumakov #:

Ребята, пожалуйста, больше не цитируйте это сообщение Рены.

Я устал пролистывать страницы.

Это новая фишка. Нашли способ наполнять ветку смыслом:)

Теперь тс ветки это ChatGPT

То есть сами сформулировать свою идею не могут 

 
Evgeniy Chumakov #:

Ребята, пожалуйста, больше не цитируйте это сообщение Рены.

Я устал пролистывать страницы.

А вы когда листаете попутно перечитывайте ещё раз чтоб лучше усваивалось.... )

 

Как Вы интересно хотели советник тестить, если канал ЭКВИТИ всё равно рвётся, о чем неоднократно спрашивали топик_стартера (х.з. показалось, что он как то невнятно уходит от ответов).

Гоняли эту ЭКВИТИ и вдоль и поперёк уже, чем больше по времени канал - тем меньше входов и они затяжные, чем больше входов - тем не стабильнее канал.

 
Семён #:

Как Вы интересно хотели советник тестить, если канал ЭКВИТИ всё равно рвётся, о чем неоднократно спрашивали топик_стартера (х.з. показалось, что он как то невнятно уходит от ответов).

Гоняли эту ЭКВИТИ и вдоль и поперёк уже, чем больше по времени канал - тем меньше входов и они затяжные, чем больше входов - тем не стабильнее канал.

 Там для комбинаций 4х пар (если брать 28 пар из форекс) почти 500000 комбинаций получается без учёта коэффициентов, что нибудь да найдётся. А тк перебрать такое количество перебором проблематично, полагаю для этого и создана тема чтобы найти некий алгоритм поиска. Другое дело что найти то найдётся на истории а в будущем все равно разбежится.
 
Alexander Generalov #:
 Там для комбинаций 4х пар (если брать 28 пар из форекс) почти 500000 комбинаций получается без учёта коэффициентов, что нибудь да найдётся. А тк перебрать такое количество перебором проблематично, полагаю для этого и создана тема чтобы найти некий алгоритм поиска. Другое дело что найти то найдётся на истории а в будущем все равно разбежится.
Если комбинация из 3 пар проработала год и сколько еще доменя как я к этому пришел может еще год может два а из 4 это может быть пройдет 10лет иболее а иэ 8 это будет работать вечно 
 
mvf358 #:
будет работать вечно 
Да, да, да.
Вечно :))
 
Sergey Gridnev #:
Да, да, да.
Вечно :))
Представьте себе зелёненький он был
 
mvf358 #:
Представьте себе зелёненький он был

Как Вы писали этот канал проработал у Вас год, было это очень давно...

Последние каналы у Вас сколько в работе, если не секрет?