AVPetrovich

 
Уровень 6

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2090



РЕКОМЕНДУЮ



Анализ временных рядов.Корреляция.Парный трейдинг.

Один умный человек посоветовал разобрать тему анализ временных рядов.Чтоб понять что такое корреляция валютных пар и с чем её едят. Углубятся в математику, статистику не будем.Расписывать формулы и подавно.Анализ временных рядов даёт на понимание движения валют в определенный промежуток времени.Если мы возьмем две валютных пара с положительной корреляциеё EURUSD и GBPUSD — 0.95. Мы видим что в течении года они двигались с отклонениями но в одну сторону. Если покупать одну пару и продавать другую(определяем по свопам)будет движения в одну сторону только с отклонением.Это отклонение может быть как плюсом так и минусом.Так как рынок хаотичен постоянного минуса не может быть- значит это будет просадка. А при выходе в плюс мы будем закрывать сделки.
Андрей просьба написать советник для двух валютных пар.
1 пара параметры: Размер лота, направление сделки, общий профит.
2 пара параметры: Размер лота, направление сделки, общий профит.
В прошло топике я получил от тебя ответ что в базе есть такие советники, но это ни то.Они написаны с какими то не нужными индикаторами.
  • 0
  • Просмотров: 1824
  • 14 апреля 2022, 10:22
  • AVPetrovich
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Индикатор плеча для МТ5
Следующая запись в группе  
Защитник депозита (сейф)
13 апреля 2022
14 апреля 2022

Комментарии (15)

+
0

//+------------------------------------------------------------------+
//|                                                 pair trading.mq4 |
//|                                               Copyright 2021, Ve |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2021, Ve"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
extern string s1="===============";
extern string S1     ="EURUSD";     //первая пара
extern double Lots1  =0.01;         //Лот 1 пара
enum Trade_direction1
  {
    Buy1=0,                         //Buy      
    Sell1=1                         //Sell          
  };
input Trade_direction1 Trade1 =0;   //направление сделки 
extern string s2="===============";
extern string S2     ="GBPUSD";     //вторая пара
extern double Lots2  =0.01;         //Лот 2 пара
enum Trade_direction2
  {
    Buy2=0,                         //Buy   
    Sell2=1                         //Sell     
  };
input Trade_direction2 Trade2 =0;   //направление сделки 
extern string s3="===============";
extern int Profit    =10;           //общий профит
extern int Slip          = 30;      //проскальзывание
extern int Magic         = 123;     //Magic
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+

void PutOrder(int type,double price,string symbol,double lot)
  {
   int r=0;
   color clr=Lime;
   double MINLOT = MarketInfo(symbol,MODE_MINLOT);
   double MAXLOT = MarketInfo(symbol,MODE_MAXLOT);
   
   if(lot<MINLOT)
     lot=MINLOT;
   if(lot>MAXLOT)
     lot=MAXLOT;

   if(type==1 || type==3 || type==5)
     {
      clr=Red;
     }

   if(type==0 || type==2 || type==4)
     {
      clr=Blue;
     }

   r=OrderSend(symbol,type,lot,NormalizeDouble(price,Digits),Slip,0,0,"",Magic,0,clr);
   return;
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit()
  {
   double pr=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==S1 || OrderSymbol()==S2) && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0)
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

            if(OrderType()==1)
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void CloseAll()
  {
   bool cl;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if((OrderSymbol()==S1 || OrderSymbol()==S2) && OrderMagicNumber()==Magic)
           {
            if(OrderType()==0)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Bid,Digits),Slip,White);
              }
            if(OrderType()==1)
              {
               RefreshRates();
               cl=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(Ask,Digits),Slip,White);
              }
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int CountTrades(string symbol)
  {
   int count=0;
   
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==symbol && OrderMagicNumber()==Magic)
           {
            if(OrderType()<2)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   double bid_s1= MarketInfo(S1,MODE_BID);
   double bid_s2= MarketInfo(S2,MODE_BID);
   double ask_s1=MarketInfo(S1,MODE_ASK);
   double ask_s2=MarketInfo(S2,MODE_ASK);
   
   if(AllProfit()>0 && AllProfit()>=Profit)
     CloseAll();
   
   if(CountTrades(S1)<1)
     {
      switch (Trade1)
       {
        case 0: PutOrder(0,ask_s1,S1,Lots1);break;
        case 1: PutOrder(1,bid_s1,S1,Lots1);break;
       }
     }
   if(CountTrades(S2)<1)
     {
      switch (Trade2)
       {
        case 0: PutOrder(0,ask_s2,S2,Lots2);break;
        case 1: PutOrder(1,bid_s2,S2,Lots2);break;
       }
     }
   
  }
//+------------------------------------------------------------------+

avatar

  13  verta81 Сообщений: 357

  • 15 апреля 2022, 17:35
+
0
Я еще обычно делаю простую проверку на корреляцию между парами такой функцией:


extern string   a4         = "входные параметры индикатора корреляции";
extern ENUM_TIMEFRAMES Tf = PERIOD_H1; // таймфрейм 
extern int    Correl_Period  = 14; 
extern double MinCor         = 0.50;  
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
 double Correl(string base,string hedge,int shift)
   {
   shift=0;
   double u1=0,l1=0,s_1=0;
   int base_bn=iBarShift(base,0,Time[shift],false);
   int hedge_bn=iBarShift(hedge,0,Time[shift],false);   
   
      for(int i = Correl_Period - 1; i >= 0; i--){
         u1 +=(iClose(base,Tf,base_bn+i)-iMA(base,Tf,Correl_Period,0,MODE_SMA,PRICE_CLOSE,base_bn+i))* 
              (iClose(hedge,Tf,hedge_bn+i)-iMA(hedge,Tf,Correl_Period,0,MODE_SMA,PRICE_CLOSE,hedge_bn+i));
         l1 += MathPow(iClose(base,Tf,base_bn+i)-iMA(base,Tf,Correl_Period,0,MODE_SMA,PRICE_CLOSE,base_bn+i),2);
         s_1 += MathPow(iClose(hedge,Tf,hedge_bn+i)-iMA(hedge,Tf,Correl_Period,0,MODE_SMA,PRICE_CLOSE,hedge_bn+i),2);
      }
   double dMathSqrt = MathSqrt(l1*s_1);
   if(dMathSqrt > 0) 
       return(u1 / dMathSqrt);
    return(0);   
  }
//+------------------------------------------------------------------+

может стоит и Ваш советник добавить, сократит число ложных открытий позиции.;) *hi* 
avatar

  16  ssg Сообщений: 817

  • 15 апреля 2022, 18:15
+
0
Огромное СПАСИБО.Я уже хотел тут грешным делом тоже куда нибудь до 28.*zapoy* 
avatar

  6  AVPetrovich Автор Сообщений: 163

  • 15 апреля 2022, 19:58
+
0
Возник вопрос.Как протестировать такой советник в МТ4? Слышал какой то софт есть.
avatar

  6  AVPetrovich Автор Сообщений: 163

  • 15 апреля 2022, 20:13
+
0
только на демо
avatar

  13  verta81 Сообщений: 357

  • 15 апреля 2022, 21:33
+
0
на демо, уже поставил.
avatar

  6  AVPetrovich Автор Сообщений: 163

  • 15 апреля 2022, 21:40
+
0
Осталось дело за малым.Просчитать возможную просадку и прибыль.Есть идеи как это сделать?
avatar

  6  AVPetrovich Автор Сообщений: 163

  • 15 апреля 2022, 22:22
+
0
1.Открыть два графика.
2.Взять единую точку отсчета (например 1 апреля).
3.Виртуально открыть по позиции на каждом графике.
4.С карандашом в руках считать разницу в пунктах, скажем каждые четыре часа.
Всего будет 180 баров.Всё это свести в таблицу.
5.Есть другой вариант — написать индикатор.;) 
avatar

  16  ssg Сообщений: 817

  • 16 апреля 2022, 04:16
+
0
Мы рассматриваем корреляцию за год 0,96.Полная просадка будет при двежении активов -1,0. Возьмем среднею волотильность за год по двум активам.Вот и будет возможная просадка. Только есть подозрение что даже при использовании 0,01 лота, цифра будет такая что Ларри Вильямс столько не зароботал, сколько просадить мы сможем.
avatar

  6  AVPetrovich Автор Сообщений: 163

  • 16 апреля 2022, 11:40
+
+1
Прошу дать добрый совет: какие пары можно взять для торговли?
У которых корреляция ближе к 1?
Редактирован: 16 апреля 2022, 04:35
avatar

  17  Boris54 Сообщений: 763 - ПенSионер

  • 16 апреля 2022, 04:33
+
0
Eurusd-Gbpusd.В это связки всегда будет положительная корреляция. Здесь ключевая валюта доллар.Так как есть понятие Паритет покупательной способности, изменения доллара будет происходить по отношению сразу к двум валютам.Только ни факт что она всегда будет высокая.
avatar

  6  AVPetrovich Автор Сообщений: 163

  • 16 апреля 2022, 11:54
+
+1
Кроме того, что будет меняться ситуация с экономикой в Америке, еще и будет независимо друг от друга меняться ситуация в Европе и Англии. Следовательно Ваше утверждение
Eurusd-Gbpusd.В это связки всегда будет положительная корреляция.

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

  16  ssg Сообщений: 817

  • 16 апреля 2022, 12:48
+
0
В это ситуации USd это одна коробка товара.За 1 EUR мы покупаем одну коробку товары.За 2 GBP мы тоже можем купить такую же коробку с товаром.Поэтому мы не можем за 2GBP купить 2 EUR только 1.
avatar

  6  AVPetrovich Автор Сообщений: 163

  • 16 апреля 2022, 14:46
+
0
Немного образно: содержимое коробок разное.Или размеры коробок разные.А по штукам — да, все верно.
avatar

  16  ssg Сообщений: 817

  • 16 апреля 2022, 15:30
+
0
Однозначно сказать нельзя.Корреляция это всегда вещь временная.Зависит и от экономики стран, и от внешней политика и… Но правда достаточно высокая корреляция может сохраняться долго.Например отношение евро/франк = 1.2 сохранялась более 20 лет.
Сегодня наверное я бы смотрел связь сырьевых валют cad,aud,nzd к usd и jpy.
Наверное можно смотреть Европу eur и chf, им там всем не весело и у всех «бардак».
Традиционно смотрят криптовалюту. Признаки по которым можно смотреть пары у всех разные.
avatar

  16  ssg Сообщений: 817

  • 16 апреля 2022, 04:56

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари