БИРЖА ИДЕЙ - страница 35

 
OnGoing:
Что бы это ни было, сделок довольно мало, чтобы делать какие-то выводы.
можно многократно увеличить сделки - лесенка эквити будет млкая и частая, но ФВ уменьшится.
 
alex12:
можно многократно увеличить сделки - лесенка эквити будет млкая и частая, но ФВ уменьшится.
Пусть так, результат будет все равно достоверней.
 

Я вчера набрел случайно на интересный результат.

Идея заключается - Отследить по быстрому как ведет себя одна влюта относительно другой.

Скачиваем этот эксперт, он есть также в Кодабазе этого форума: ReverseSystemBEST

он тестирует инструмент, беря из файла исторических данных.Тестим с 2000 года доллар/франк и в конце

теста открываем график и видим следующую картину.Смотреть ниже:

Дальше сохраняем как шаблон. Открываем дневной график евробакс и открываем сохраненный шаблон

на этом графике. Затем 2 раза кликаем мышью по значкам и правой кнопкой выбираем удалить все значки.

в результате вы увидите картину как Ниже.

То есть видно что доллар/франк и евробакс – абсолютно зеркальные валютные инструменты.





 
alex12:

Я вчера набрел случайно на интересный результат.

Идея заключается - Отследить по быстрому как ведет себя одна влюта относительно другой.

Скачиваем этот эксперт, он есть также в Кодабазе этого форума: ReverseSystemBEST

он тестирует инструмент, беря из файла исторических данных.Тестим с 2000 года доллар/франк и в конце

теста открываем график и видим следующую картину.Смотреть ниже:

Дальше сохраняем как шаблон. Открываем дневной график евробакс и открываем сохраненный шаблон

на этом графике. Затем 2 раза кликаем мышью по значкам и правой кнопкой выбираем удалить все значки.

в результате вы увидите картину как Ниже.

То есть видно что доллар/франк и евробакс – абсолютно зеркальные валютные инструменты.






О сколько нам открытий чудных ......
 
Идея - создать индикатор.

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

Вверх - Бай:

Бычьи = 0, Значение
Медвежьи = 0, Значение
Цвет
Толщина линии

Вниз - Селл:

Медвежьи = 0, Значение
Бычьи = 0, Значение
Цвет
Толщина линии

Например один бар 1вверх и 2 вниз, 1вверх и 3 вниз, далее 1/4, 1/5, !/6, 1/7 и т.д. для Селл.
Для Бай - 1 бар вниз и 2 бара вверх, 1 вниз и 3 вверх, дальше 1/4, 1/5 и т.д.

Например возьмем комбинацию баров 3 вверх и 7 вниз ( 3/7 сокращенно ) для Селл. Берем значение
наивысшей цены 3-его бара и наинизшую цену 7-ого бара = вычисляем среднюю цену и проводим линию
по средней цене этой комбинации баров.Также я хотел бы чтобы такая комбинация была обрисована кругом
при помощи этого же индикатора.
Дальше можно написать советник по этому индикатору и проверить результат.

Если кто-нибудь напишет индикатор и/или советник, то выложите сюда,если не жалко.

--------------------------------------------------------------------------------------------------------------+

Кстати - это можно и с Пунктами проделать - прямо Онлайн торговать только нужно.
Не по времени, как в WOC-советнике, а именно по комбинациям Пунктов.Получится
что советник будет торговать не по истории, а По Текущей ситуации. Но это так,
наверно слишком мелко и неправдоподобно получится - хотя я точно сам толком
не могу знать.
 

leonid553:

Есть индикатор Envelopes, и известна классическая тактика работы по нему. Но он в силу своей структуры излишне "чувствителен", либо при большом периоде, - сильно запаздывает с сигналами. Однако, если мы этот индткатор сгладим, - то ситуация сразу меняется! Подбираем отклонение границ, так чтобы границы захватывали лишь самые кончики свечей и входим по этим пересечениям строго по тренду,. - задав его(тренд) программно по углу наклона(например) этих границ.

Одна версия - работает в бай. Другая - в селл. При этом мы удивительным образом пропускаем убыточные сделки на переломах тренда! - без иронии! И кроме того при флете - также сделок нет! (т.к. тренд у нас задан углом наклона!)

Вот график сглаженного индикатора - входы показал стрелками.

И ещё один прием. Можно использовать как фильтр, либо как отдельную версию. По Стохастику. Использовать его не по классическим правилам. А немного нестандартно! Взять большой период и входить при пересечении не снаружи внутрь границ зон перекупл/перепрод, а наоборот - изнутри наружу! - входы показал стрелками в окне стохастика.

По обоим описанным приемам я уже сделал примитивные эксперты. Результаты пока удовлетворительные...

По просьбе модератора Granit77 первоначальное сообщение удалено, а обсуждение эксперта на фильтрованном стохастике перенесено сюда https://www.mql5.com/ru/forum/112887/page15#518639

 
alex12:
Идея - создать индикатор.

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

Вверх - Бай:

Бычьи = 0, Значение
Медвежьи = 0, Значение
Цвет
Толщина линии

Вниз - Селл:

Медвежьи = 0, Значение
Бычьи = 0, Значение
Цвет
Толщина линии

Например один бар 1вверх и 2 вниз, 1вверх и 3 вниз, далее 1/4, 1/5, !/6, 1/7 и т.д. для Селл.
Для Бай - 1 бар вниз и 2 бара вверх, 1 вниз и 3 вверх, дальше 1/4, 1/5 и т.д.

Например возьмем комбинацию баров 3 вверх и 7 вниз ( 3/7 сокращенно ) для Селл. Берем значение
наивысшей цены 3-его бара и наинизшую цену 7-ого бара = вычисляем среднюю цену и проводим линию
по средней цене этой комбинации баров.Также я хотел бы чтобы такая комбинация была обрисована кругом
при помощи этого же индикатора.
Дальше можно написать советник по этому индикатору и проверить результат.

Если кто-нибудь напишет индикатор и/или советник, то выложите сюда,если не жалко.

--------------------------------------------------------------------------------------------------------------+

Кстати - это можно и с Пунктами проделать - прямо Онлайн торговать только нужно.
Не по времени, как в WOC-советнике, а именно по комбинациям Пунктов.Получится
что советник будет торговать не по истории, а По Текущей ситуации. Но это так,
наверно слишком мелко и неправдоподобно получится - хотя я точно сам толком
не могу знать.

Вот сваял на заказ индюк по описанию выше. Довольно интересный получился - потому что = Точный ( Безошибочно определяет заданные Фрактальные Паттерны ).


Вот сам код:

//+------------------------------------------------------------------+
//|                             Copyright © 2010, Trishkin Artyom A. |
//|                                           support@goldsuccess.ru |
//|                                           Skype: Artmedia70      |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, Trishkin Artyom A."
#property link      "support@goldsuccess.ru"

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1 Gold
#property indicator_color2 LightBlue
//---- input parameters
extern int        BarsBefore=2;        // Баров до...
extern int        BarsAfter=2;         // Баров после
extern int        Width=2;             // Размер значка
extern int        BarsToProcess=100;   // Количество баров для поиска
//---- buffers
double FractUpBuffer1[];
double FractDnBuffer2[];
string sy, Prefix, NameIND;
int    tf;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
   SetIndexStyle(0,DRAW_ARROW,EMPTY,0);
   SetIndexBuffer(0,FractUpBuffer1);
   SetIndexArrow(0,119);
   SetIndexLabel(0,"Fractal Up");
   SetIndexEmptyValue(0,0.0);
   
   SetIndexStyle(1,DRAW_ARROW,EMPTY,0);
   SetIndexBuffer(1,FractDnBuffer2);
   SetIndexArrow(1,119);
   SetIndexLabel(1,"Fractal Dn");
   SetIndexEmptyValue(1,0.0);
//----
   NameIND="Pattern_v1_01";
   IndicatorShortName(NameIND+"_"+GetNameTF(Period()));
   Prefix=NameIND+"_"+GetNameTF(Period());    // Префикс для имён объектов
   sy=Symbol();
   tf=Period();
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
{
// -------- Блок удаления всех объектов, построенных на графике --------
   string Name_Del[1]; 
   int Quant_Del=0;                    
   int Quant_Objects=ObjectsTotal();   
   int LenPref=StringLen(Prefix);
   ArrayResize(Name_Del,Quant_Objects);
   for(int k=0; k<Quant_Objects; k++) {
      string Obj_Name=ObjectName(k);   
      string Head=StringSubstr(Obj_Name,0,LenPref);
      if (Head==Prefix) {                              
         Quant_Del+=1;        
         Name_Del[Quant_Del-1]=Obj_Name;
         }
     }
   for(int i=0; i<Quant_Del; i++)    
      ObjectDelete(Name_Del[i]); 
// ----- Конец блока удаления всех объектов, построенных на графике -----
   return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start() {
   int   counted_bars=IndicatorCounted();
   int   i, k, j, limit;
//----
   if(counted_bars>0)      counted_bars--;
   limit=Bars-counted_bars;
   if(limit>BarsToProcess) limit=BarsToProcess;
   
//   if (limit>0) 
      FindUpFractals(BarsBefore, BarsAfter);
      FindDnFractals(BarsBefore, BarsAfter);
   
//----
   return(0);
}
//==============================================================================
// --------------------------------- Функции ----------------------------------+
//==============================================================================
int FindDnFractals(int nl, int nr) {
   int      i, k, nb;
   double   fractal;
   datetime tm;
   string   nm;
   bool     fl, fr;
   int delta=SetDistance(Period());
   for (i=BarsToProcess; i>0; i--) {
      fl=false;
      FractDnBuffer2[i]=0;
      if (Open[i]<Close[i]) {                   
         for (k=1; k<=nl; k++) {
            if (Open[i+k]>Close[i+k]) fl=true;
            else { fl=false; break; }
            }
         if (!fl || Open[i+nl+1]>Close[i+nl+1]) continue;
         fr=false;
         for (k=0; k<nr; k++) {
            if (Open[i-k]<Close[i-k]) fr=true;
            else { fr=false; break; }
            }
         if (!fr || Open[i-nr]<Close[i-nr] || iBarShift(sy,tf,Time[i-nr])==0) continue;
         if (Low[i]<Low[i+1]) { fractal=Low[i]; nb=i; tm=Time[i];}
         else { fractal=Low[i+1]; nb=i+1; tm=Time[i+1]; }
         FractDnBuffer2[nb]=fractal;
         nm=Prefix+"_Down_Fractal_"+nl+"/"+nr+"_"+TimeToStr(tm);
         fractal=MathMin(Low[i], Low[i+1]);
         SetArrow(218, LightBlue, nm, tm, fractal-delta*Point, Width);
         WindowRedraw();
         }
      }
   return(0);
}   
//+----------------------------------------------------------------------------+
int FindUpFractals(int nl, int nr) {
   int      i, k, nb;
   double   fractal;
   datetime tm;
   string   nm;
   bool     fl, fr;
   int delta=SetDistance(Period());
   for (i=BarsToProcess; i>0; i--) {
      fl=false;
      FractUpBuffer1[i]=0;
      if (Open[i]>Close[i]) {                   
         for (k=1; k<=nl; k++) {
            if (Open[i+k]<Close[i+k]) fl=true;
            else { fl=false; break; }
            }
         if (!fl || Open[i+nl+1]<Close[i+nl+1]) continue;
         fr=false;
         for (k=0; k<nr; k++) {
            if (Open[i-k]>Close[i-k]) fr=true;
            else { fr=false; break; }
            }
         if (!fr || Open[i-nr]>Close[i-nr] || iBarShift(sy,tf,Time[i-nr])==0) continue;
         if (High[i]>High[i+1]) { fractal=High[i]; nb=i; tm=Time[i];}
         else { fractal=High[i+1]; nb=i+1; tm=Time[i+1]; }
         FractUpBuffer1[nb]=fractal;
         nm=Prefix+"_Up_Fractal_"+nl+"/"+nr+"_"+TimeToStr(tm);
         fractal=MathMax(High[i], High[i+1]);
         SetArrow(217, PaleGoldenrod, nm, tm, fractal+4*delta*Point, Width);
         WindowRedraw();
         }
      }
   return(0);
}   
//+----------------------------------------------------------------------------+
string GetNameTF(int TimeFrame=0) {
   switch (TimeFrame) {
      case PERIOD_M1:  return("M1");
      case PERIOD_M5:  return("M5");
      case PERIOD_M15: return("M15");
      case PERIOD_M30: return("M30");
      case PERIOD_H1:  return("H1");
      case PERIOD_H4:  return("H4");
      case PERIOD_D1:  return("Daily");
      case PERIOD_W1:  return("Weekly");
      case PERIOD_MN1: return("Monthly");
      default:         return("UnknownPeriod");
      }
}
//+----------------------------------------------------------------------------+
int SetDistance(int TimeFrame) {
   switch (TimeFrame) {
      case PERIOD_M1:  return(1);
      case PERIOD_M5:  return(1);
      case PERIOD_M15: return(2);
      case PERIOD_M30: return(3);
      case PERIOD_H1:  return(4);
      case PERIOD_H4:  return(4);
      case PERIOD_D1:  return(4);
      case PERIOD_W1:  return(4);
      case PERIOD_MN1: return(4);
      default:         return(0);
      }
}
//+----------------------------------------------------------------------------+
void SetArrow(int cd, color cl, string nm, datetime t1=0, double p1=0, int sz=0) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_ARROW, 0, 0, 0);
   ObjectSet(nm, OBJPROP_TIME1    , t1);
   ObjectSet(nm, OBJPROP_PRICE1   , p1);
   ObjectSet(nm, OBJPROP_ARROWCODE, cd);
   ObjectSet(nm, OBJPROP_COLOR    , cl);
   ObjectSet(nm, OBJPROP_WIDTH    , sz);
}
//+----------------------------------------------------------------------------+
Файлы:
 
alex12:

Вот сваял на заказ индюк по описанию выше. Довольно интересный получился - потому что = Точный ( Безошибочно определяет заданные Фрактальные Паттерны ).


Вот сам код:

Благодарим за код. Почему-то показывает только на часовике, на другиз таймах нет.
 

То есть видно что доллар/франк и евробакс – абсолютно зеркальные валютные инструменты.

А может нужно быть немного аккуратнее со словом "абсолютно"?

Для тех кто в танке Комментарий к картинке: усреднение бралось за X= 10, 20, 100 и 250 свечек. ТФ слева М30, справа D1. Всякое нахождение около нуля означает отсутствие за последние X свечек [в среднем] какой либо "зеркальности".

А так инструменты ходят похоже, иногда однонаправленно, о чём свидетельствуют периодические корреляции. Но никак даже не коинтегрированно, о чём нам говорит явно не стационарный график EURCHF (хотя не берусь утверждать однозначно - не тестил, думаю бессмысленно).

 
alex12:

Вот сваял на заказ индюк по описанию выше. Довольно интересный получился - потому что = Точный ( Безошибочно определяет заданные Фрактальные Паттерны ).

Вот сам код:


Спасибо! Интересная задумка!

У меня показывает на всех ТФ. Но что-то напутано в жёлтом фрактале. На всех ТФ рисуется на разных дистанциях и не так, как на синем.

Проверьте, пожалуйста!

SetArrow(217, PaleGoldenrod, nm, tm, fractal+4*delta*Point, Width);//?????
Причина обращения: