Есть ли в этом смысл и как проверить, вот в чем вопрос.
робота написать и проверить на истории
Пытаюсь разобраться с пользовательскими символами...
Пока не ясно, как на биржевой терминал подгрузить (заставить работать) пользовательский символ USDCAD.
И, я арбитражники не писал - пока не знаю, как описать точки входа/выхода - есть идеи - сообщайте.
Всё чаще замечаю, что USDCAD ведет себя более адекватно при изменении цены на нефть, в то время как рубль игнорирует данные или действует с запозданием.
Поэтому идея такая, если нефть растет, то продаем пару USDCAD и покупаем USDRUB (а лучше Si) - при получении совокупной прибыли закрываемся.
Есть ли в этом смысл и как проверить, вот в чем вопрос.
Проверить очень просто.
Нужно написать элементарный индикатор, который будет выводить
два графика, приводя UCAD в рублёвые цены, т.е понадобится ещё USDFIX - текущее значение доллара
1 график sell_UCAD - buy_Si
2 график buy_UCAD - sell_Si
Ласты брать нельзя, т.к сделки по UCAD не частые
И НИ В КОЕМ случае нельзя тестировать на ИСТОРИИ, по той же причине,
почему Ласты брать нельзя.
Добавлено
Вот "рыба" реал-тайм индикатора
Запустать ТОЛЬКО на реале
Вычисления сделаете сами
//+------------------------------------------------------------------+ //| UCAD_Si_spread.mq5 | //| Copyright © 2017, prostotrader | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2017, prostotrader" #property link "https://www.mql5.com" #property version "1.00" #property description "UCAD-Si spread" #property indicator_separate_window #property indicator_buffers 2 #property indicator_plots 2 //--- plot Deals #property indicator_label1 "Ask" #property indicator_type1 DRAW_LINE #property indicator_color1 clrRed #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- plot #property indicator_label2 "Bid" #property indicator_type2 DRAW_LINE #property indicator_color2 clrBlue #property indicator_style2 STYLE_SOLID #property indicator_width2 1 // input string UsdFix="USDFIX-INDEX"; //USDFIX индекс input int ABars=50; //Видимая область (бары) // double AskBuff[],BidBuff[]; double si_sell,si_buy,ucad_sell,ucad_buy; double usd_last; string usd_symbol,ucad_symbol; // int event_cnt; //+------------------------------------------------------------------+ //| Indicator Expert set second symbol function | //+------------------------------------------------------------------+ string SetUCADSymbol(const string aSymbol) { int str_tire = StringFind(aSymbol, "-"); int str_size = StringLen(aSymbol); if((str_tire>0) && (str_size>0)) { return("UCAD" + StringSubstr(aSymbol, str_tire, str_size - str_tire)); } return(""); } //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { int ch_bars=Bars(Symbol(),Period()); if(ch_bars<ABars+2) { Alert("Не хватает баров, перейдите на меньший тамфрейм!"); return(INIT_FAILED); } event_cnt=0; //--- IndicatorSetInteger(INDICATOR_DIGITS,0); IndicatorSetString(INDICATOR_SHORTNAME,"UCAD_Si_spread"); //--- indicator buffers mapping SetIndexBuffer(0,AskBuff,INDICATOR_DATA); ArraySetAsSeries(AskBuff,true); PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE); SetIndexBuffer(1,BidBuff,INDICATOR_DATA); ArraySetAsSeries(BidBuff,true); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE); //--- if(StringFind(Symbol(),"Si-")<0) { Alert("Индикатор должен быть на графике Si"); return(INIT_FAILED); } else { ucad_symbol=SetUCADSymbol(Symbol()); if(ucad_symbol=="") { Alert("Символ не установлен "+ucad_symbol); return(INIT_FAILED); } else { if(!SymbolSelect(ucad_symbol,true)) { Alert("Неизвестный символ: "+ucad_symbol); return(INIT_FAILED); } else { if(!MarketBookAdd(ucad_symbol)) { Alert("Second Book not added!"); return(INIT_FAILED); } usd_symbol=UsdFix; if(!SymbolSelect(usd_symbol,true)) { Alert("Неизвестный символ: "+usd_symbol); return(INIT_FAILED); } else { if(!MarketBookAdd(Symbol())) { Alert("Main Book not added!"); return(INIT_FAILED); } } } } } return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { MarketBookRelease(Symbol()); MarketBookRelease(ucad_symbol); // if(reason==REASON_INITFAILED) { int window=ChartWindowFind(ChartID(),"UCAD_Si_spread"); ChartIndicatorDelete(ChartID(),window,"UCAD_Si_spread"); } } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ void OnBookEvent(const string &symbol) { if((symbol==Symbol()) || (symbol==ucad_symbol)) { si_sell= SymbolInfoDouble(Symbol(),SYMBOL_ASK); si_buy = SymbolInfoDouble(Symbol(),SYMBOL_BID); ucad_sell= SymbolInfoDouble(ucad_symbol,SYMBOL_ASK); ucad_buy = SymbolInfoDouble(ucad_symbol, SYMBOL_BID); usd_last = SymbolInfoDouble(usd_symbol, SYMBOL_LAST); //--- call OnCalculate double price[]; OnCalculate(event_cnt,event_cnt,0,price); } } //+------------------------------------------------------------------+ //| 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(AskBuff,EMPTY_VALUE); ArrayInitialize(BidBuff,EMPTY_VALUE); } else { int diff= rates_total-prev_calculated; if(diff == 0) { for(int i=ABars-1; i>0; i--) { AskBuff[i] = AskBuff[i-1]; BidBuff[i] = BidBuff[i-1]; } } else { for(int i=1; i>(ABars+diff); i++) { AskBuff[i] = AskBuff[i+diff]; BidBuff[i] = BidBuff[i+diff]; } } //Вычисления спредов !!!!!!!!!!!!!!!!!!!!!!!!!!!!! //AskBuff[0] = //BidBuff[0] = } event_cnt=rates_total; //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+
Скорее всего арбитража не получится (см. скрин, история по close)
Добавлено
Предыдущая пара (9-17)
По скрину сходу не понять - не видны цифры в индикаторе - хорошо бы сделать дельту... в общем у меня нет индикатора и понять пока не могу по скрину.
Кроме того, нужно смотреть на точки, которые свидетельствуют о резком росте/падении нефти и соответственно на дельту, если она образовывается.
Фьючерс UCAD торгуется не очень активно, как я понимаю - поэтому думаю арбитражить USDCAD на форексе, а Si на MOEX- так будет дешевле, только вот надо понять, есть ли в этом смысл.
По скрину сходу не понять - не видны цифры в индикаторе - хорошо бы сделать дельту... в общем у меня нет индикатора и понять пока не могу по скрину.
Кроме того, нужно смотреть на точки, которые свидетельствуют о резком росте нефти и соответственно на дельту, если она образовывается.
Фьючерс UCAD торгуется не очень активно, как я понимаю - поэтому думаю арбитражить USDCAD на форексе, а Si на MOEX- так будет дешевле, только вот надо понять, есть ли в этом смысл.
На графиках и есть дельта между Si и UCAD (в рублях)
Я, пока, не вижу смысла, потому что нет явной корреляции.
Я, пока, не вижу смысла, потому что нет явной корреляции.
Что лучше сейчас коррелирует с нефтью, канадец или рубль?
Что лучше сейчас коррелирует с нефтью, канадец или рубль?
Я не смотрел, но думаю, что канадец (в силу экономики Канады)
не так сильно зависит от нефти, как рубль.
Но, сейчас, цена рубля не сильно коррелирует с нефтью, потому что
есть политически-экономические причины в России.
"Денег нет, но Вы держитесь!"
Добавлено
Если уж торговать, отталкиваясь от волатильности нефти, то
лучше самой нефтью. До марта картина не изменится, т.е
нефть не должна превышвть 60$ за барель, т.к если цена
выше, то американцам уже выгодно продавать свою сланцевую нефть.
Поэтому, когда нефть поднялась выше 58,5 можно смело шортить большими объёмами.
Добавлено
Но если смотреть в перспективу, то т.к все нефтяные фьючерсы торгуются в бэквардации, то
ожидание рынка направлено на падение стоимости нефти...
Добавлено
Вышевыложенные скрины НЕ точно отображают картину пары Si - UCAD, т.к перевод пунктов UCAD в рубли
осуществлялся по единой ТЕКУЩЕЙ цене тика, что в КОРНЕ не правильно, а СПОТа по UCAD нет, поэтому
для корректного определения цены UCAD в рублях, нужно собирать данные в реал-таме, а потом
анализировать их...
Всё чаще замечаю, что USDCAD ведет себя более адекватно при изменении цены на нефть, в то время как рубль игнорирует данные или действует с запозданием.
Поэтому идея такая, если нефть растет, то продаем пару USDCAD и покупаем USDRUB (а лучше Si) - при получении совокупной прибыли закрываемся.
Есть ли в этом смысл и как проверить, вот в чем вопрос.
Слабая линейная взаимосвязь на разных ТФ:
т.е. возможно придется вводить дополнительные признаки для уменьшения дисперсии, а какие я не знаю
Для примера вот между EURUSD и USDCHF (как должна выглядеть более менее хорошая)
Я не стал собирать тики, а просто ввёл максимальный и минимальный уровень цен.
Индикатор находился на чарте с 10-00 до 15-30, для арбирража нужно, чтобы синяя линия уровня была выше
красной линии уровня, хотя бы на 20 пунктов, но этого не произошло.
Вывод - арбитраж Si -UCAD не возможен
Добавлено
Даже, если бы был возможен, то только в период между вечерними клирингами, из-за того, что
нет СПОТ цены на UCAD, а именно в вечерний клиринг меняется цена тика UCAD (может меняться довольно сильно).
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Всё чаще замечаю, что USDCAD ведет себя более адекватно при изменении цены на нефть, в то время как рубль игнорирует данные или действует с запозданием.
Поэтому идея такая, если нефть растет, то продаем пару USDCAD и покупаем USDRUB (а лучше Si) - при получении совокупной прибыли закрываемся.
Есть ли в этом смысл и как проверить, вот в чем вопрос.