Фьючерс на индекс RTS - ищем полезные индикаторы

 

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

Я не имею особого опыта торговли индексом, поэтому с интересом выслушаю все идеи, и постараюсь их проверить.

Соответственно, я думаю, что не лишним использовать для анализа сам индекс RTS, MIX? USDRUB_TOM или Si.

 
Aleksey Vyazmikin:

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

Я не имею особого опыта торговли индексом, поэтому с интересом выслушаю все идеи, и постараюсь их проверить.

Соответственно, я думаю, что не лишним использовать для анализа сам индекс RTS, MIX? USDRUB_TOM или Si.

Зачем вам индикаторы? У вас леса есть ))

Прежде всего надо понимать что такое индекс РТС и как он рассчитывается.

Судя по вашему высказыванию 

использовать для анализа сам индекс RTS, MIX? USDRUB_TOM или Si

вы не понимаете предмет обсуждения.

Хотите стать маркетмейкером?

 
Sergey Chalyshev:

Зачем вам индикаторы? У вас леса есть ))

Прежде всего надо понимать что такое индекс РТС и как он рассчитывается.

Судя по вашему высказыванию 

вы не понимаете предмет обсуждения.

Хотите стать маркетмейкером?

Да-да, я ничего не понимаю - рассказываете, в чем суть, как жить!

 
Aleksey Vyazmikin:

Да-да, я ничего не понимаю - рассказываете, в чем суть, как жить!

Щас, только пойду покурю,

а вы пока почитайте мануал ))

 
Sergey Chalyshev:

Щас, только пойду покурю,

а вы пока почитайте мануал ))

Так-так-так, и что же предлагаете - строить синтетический индекс из фьючерсов или что то покруче?

 
Aleksey Vyazmikin:

Так-так-так, и что же предлагаете - строить синтетический индекс из фьючерсов или что то покруче?

План такой: самостоятельно строите индекс РТС по методичке. Он будет рассчитываться чаще, чем 1 раз в секунду. Теоретически может получиться опережающий индикатор...

 

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

На 4ч годятся многие индикаторные 4ч форекс-стратегии с FF. Знакомый торговал машками 2-минутки, вполне успешно. Но мне не нравится риху скальпить, взбаламошная. Без индикаторов - ММ её водит довольно ответственно от ПС до ПС.

 
Alexey Kozitsyn:

План такой: самостоятельно строите индекс РТС по методичке. Он будет рассчитываться чаще, чем 1 раз в секунду. Теоретически может получиться опережающий индикатор...

К сожалению не получится ничего опережающего. На рынке в принципе этого не может быть. Другое дело оперировать данными которые реально оказывают влияние на котировку заставляя ее тикать туда или сюда. Толк будет, а получить преимущество посредством сложных мат преобразований самого котира не получится по оприори. Любое даже самое простое мат. преобразование начинает запаздывать и получить от него временное преимущество просто физически не получится. Но сама тема топика заинтересовала, потому как собираю сейчас набор из индюков именно для фортс. Ну???? Кто чем пользуется?
 
Alexey Kozitsyn:

План такой: самостоятельно строите индекс РТС по методичке. Он будет рассчитываться чаще, чем 1 раз в секунду. Теоретически может получиться опережающий индикатор...

Нельзя точно составить синтетический индекс RTS, потому как на многие акции нет фьючерсов.

Оперировать можно только MIX с валютной составляющей и то брать нужно не текущий Si, а фикс.

Но так как по MIX идет вялая торговля и долларовый фикс редко обновляется, то из этой затеи ничего не получится... 

Добавлено

Три года назад пробовал, но забросил

//+------------------------------------------------------------------+
//|                                                      MXI_RTS.mq5 |
//|                                                   Copyright 2016 |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016"
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_separate_window
#property indicator_buffers 3
#property indicator_plots   3
//--- plot Max
#property indicator_label1  "Coeff last" 
#property indicator_type1   DRAW_LINE 
#property indicator_color1  clrYellow
#property indicator_style1  STYLE_SOLID 
#property indicator_width1  1
//--- plot Max
#property indicator_label2  "Coeff buy" 
#property indicator_type2   DRAW_LINE 
#property indicator_color2  clrAqua
#property indicator_style2  STYLE_SOLID 
#property indicator_width2  1
//--- plot Max
#property indicator_label3  "Coeff sell" 
#property indicator_type3   DRAW_LINE 
#property indicator_color3  clrMagenta
#property indicator_style3  STYLE_SOLID 
#property indicator_width3  1
//---
input double USDPr = 0.02;                   //Стоимость пункта RTS в долл.
input string MIXSymb = "MIX-12.16";          //MIX символ
input string USDSymb = "USDFIX-INDEX";       //USD FIX
input string MSpSymb = "MICEXINDEXCF-INDEX"; //MICEX индекс
input string RSpSymb = "RTSI-INDEX";         //RTS индекс
//---
double LastBuffer[];
double BuyBuffer[];
double SellBuffer[];
//
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
  if (StringFind(Symbol(), "RTS-") < 0)
  {
    Alert("Индикатор должен быть на графике RTS");
    return(INIT_FAILED);
  }
//---
  IndicatorSetInteger(INDICATOR_DIGITS,8);
  IndicatorSetString(INDICATOR_SHORTNAME,"MXI_RTS");
//--- indicator buffers mapping
  SetIndexBuffer(0,LastBuffer,INDICATOR_DATA);   
  ArraySetAsSeries(LastBuffer,true);
  PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
  SetIndexBuffer(1,BuyBuffer,INDICATOR_DATA);   
  ArraySetAsSeries(BuyBuffer,true);
  PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
  SetIndexBuffer(2,SellBuffer,INDICATOR_DATA);   
  ArraySetAsSeries(SellBuffer,true);
  PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---
//---Set objects
   int window=ChartWindowFind(ChartID(),"MXI_RTS");
   ObjectCreate(ChartID(),"MXI_RTS_1",OBJ_LABEL,window,0,0);
   ObjectCreate(ChartID(),"MXI_RTS_2",OBJ_LABEL,window,0,0);
   ObjectCreate(ChartID(),"MXI_RTS_3",OBJ_LABEL,window,0,0);
//---   
   ObjectSetInteger(ChartID(),"MXI_RTS_1",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"MXI_RTS_1",OBJPROP_YDISTANCE,15);
   ObjectSetInteger(ChartID(),"MXI_RTS_1",OBJPROP_COLOR,clrYellow);
   ObjectSetString(ChartID(),"MXI_RTS_1",OBJPROP_TEXT,"Last coeff: 0");
   
   ObjectSetInteger(ChartID(),"MXI_RTS_2",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"MXI_RTS_2",OBJPROP_YDISTANCE,30);
   ObjectSetInteger(ChartID(),"MXI_RTS_2",OBJPROP_COLOR,clrAqua);
   ObjectSetString(ChartID(),"MXI_RTS_2",OBJPROP_TEXT,"Buy coeff: 0");
   
   ObjectSetInteger(ChartID(),"MXI_RTS_3",OBJPROP_XDISTANCE,5);
   ObjectSetInteger(ChartID(),"MXI_RTS_3",OBJPROP_YDISTANCE,45);
   ObjectSetInteger(ChartID(),"MXI_RTS_3",OBJPROP_COLOR,clrMagenta);
   ObjectSetString(ChartID(),"MXI_RTS_3",OBJPROP_TEXT,"Sell coeff: 0");
   ChartRedraw(ChartID());
//---
  return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+  
void OnDeinit(const int reason)
  {
    ObjectDelete(ChartID(),"MXI_RTS_1");
    ObjectDelete(ChartID(),"MXI_RTS_2");
    ObjectDelete(ChartID(),"MXI_RTS_3");
    if(reason==REASON_INITFAILED)
     {
      string a_str = "MXI_RTS";
      int window = ChartWindowFind(ChartID(), a_str ); 
      ChartIndicatorDelete(ChartID(),window,a_str);
     }
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                 const int prev_calculated,
                 const int begin,
                 const double &price[])
{
  if (prev_calculated == 0)
  {
    ArrayInitialize(LastBuffer, 0);
    ArrayInitialize(BuyBuffer, 0);
    ArrayInitialize(SellBuffer, 0);
  }
  else
  {
    int a_diff=rates_total-prev_calculated;
    if(a_diff>0)
    {
      for(int i=a_diff-1; i>0; i++)
      {
        LastBuffer[i]=LastBuffer[i+1];
        BuyBuffer[i]=BuyBuffer[i+1];
        SellBuffer[i]=SellBuffer[i+1];
      }
    }
  }
  double rts_ind_price = SymbolInfoDouble(RSpSymb, SYMBOL_LAST); 
  double mix_ind_price = SymbolInfoDouble(MSpSymb, SYMBOL_LAST);
  double usd_price = SymbolInfoDouble(USDSymb, SYMBOL_LAST);
  double rts_price = SymbolInfoDouble(Symbol(), SYMBOL_LAST);
  double mix_price = SymbolInfoDouble(MIXSymb, SYMBOL_LAST);
  double mix_ask = SymbolInfoDouble(MIXSymb, SYMBOL_ASK);
  double mix_bid = SymbolInfoDouble(MIXSymb, SYMBOL_BID);
  double rts_ask = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
  double rts_bid = SymbolInfoDouble(Symbol(), SYMBOL_BID);
  if ((rts_ind_price > 0) &&(mix_ind_price > 0)&&(usd_price > 0)&&
      (rts_price > 0) && (mix_price > 0) )
  {
    LastBuffer[0] = ( mix_price / (rts_price * USDPr * usd_price)) - (mix_ind_price / (rts_ind_price * USDPr * usd_price ));
    if((mix_ask > 0) && (mix_bid >0) && (rts_ask > 0) && (rts_bid>0))
    {
      BuyBuffer[0] = ( mix_bid / (rts_ask * USDPr * usd_price)) - (mix_ind_price / (rts_ind_price * USDPr * usd_price ));
      SellBuffer[0] = ( mix_ask / (rts_bid * USDPr * usd_price)) - (mix_ind_price / (rts_ind_price * USDPr * usd_price ));
    }
  }
  ObjectSetString(ChartID(),"MXI_RTS_1",OBJPROP_TEXT,"Last coeff: " + DoubleToString(LastBuffer[0]));
  ObjectSetString(ChartID(),"MXI_RTS_2",OBJPROP_TEXT,"Buy coeff: " + DoubleToString(BuyBuffer[0]));
  ObjectSetString(ChartID(),"MXI_RTS_3",OBJPROP_TEXT,"Sell coeff: " + DoubleToString(SellBuffer[0]));
  ChartRedraw(ChartID());
//--- return value of prev_calculated for next call
   return(rates_total);
}
//+------------------------------------------------------------------+
 

Добавлено

И вообще, торговать на ФОРТС по индикаторам (в стандартном понимании) - очень плохая идея

Индикатор для торговли на ФОРТС должен брать не исторические данные (таймфреймы),

а отслеживать какие-то закономерности, точные расчеты и прочие расчетные (не из графика) параметры.

Например индикатор тренда фьючерса (для примера):

Нужно брать текущий и последующий фьючерсы, точно считать средний спрэд (по бидам и аскам) с момента "рождения" дальнего

фьючерса, и последующие (текущие) отклонения будут индикатором для направления тренда.

И торговать не одним фьючерсом, а их парой для снижения рисков.

Типичные трендовые фьючерсы: GOLD, BR

Т.к в них заложена валютная составляющая, то они на малой дельте перекрывают комиссии,

что приводит к неплохой прибыли.

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