思想交流 - 页 35

 
OnGoing:
不管它是什么,没有足够的交易来得出任何结论。
你可以多次增加交易 - 股权阶梯将是百万和频繁的,但FS将减少。
 
alex12:
你可以多次增加交易 - 股权阶梯将是小而频繁的,但FS将减少。
就这样吧,结果还是会比较可靠的。
 

我昨天偶然看到了一个有趣的结果。

这个想法是为了快速追踪一种货币与另一种货币的关系如何。

我们下载这个专家顾问,它也在本论坛的代码库中 ReverseSystemBEST

它使用文件中的历史数据来测试一个工具--我们从2000年开始测试美元/法郎,在年底的时候

测试,打开图表,看到以下图片。

此外,我们把它保存为一个模板。打开欧元日线图并打开保存的模板

在这个图表上。然后在图标上点击2次鼠标,右键选择删除所有图标。

因此,你会看到如下图片。

也就是说,你可以看到,美元/法郎和欧元兑美元绝对是镜像货币工具。





 
alex12:

我昨天偶然看到了一个有趣的结果。

这个想法是为了快速追踪一种货币与另一种货币的关系如何。

我们下载这个专家顾问,它也在本论坛的代码库中 ReverseSystemBEST

它使用文件中的历史数据来测试一个工具--我们从2000年开始测试美元/法郎,在年底的时候

测试,打开图表,看到以下图片。

此外,我们把它保存为一个模板。打开欧元日线图并打开保存的模板

在这个图表上。然后在图标上点击2次鼠标,右键选择删除所有图标。

因此,你会看到如下图片。

也就是说,你可以看到,美元/法郎和欧元兑美元绝对是镜像货币工具。






哦,我们有多少奇妙的发现......
 
这个想法是为了创建一个指标

这是我最初用ticks提出的想法,但事实证明,在测试者
,没有tick历史,所以我把它转移到了bar。
这个想法是一个条形的组合。设置可以是:

Up - Buy:

Bullish = 0, Value
Bears = 0, Value
Colour
Line Thickness

Down - Sell:

Bears = 0, Value
Bulls = 0, Value
Colour
Line Thickness

例如一个条形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个柱状体的最低价的值
,=计算出平均价格,并在这个柱状体组合的平均价格上画一条线
。我还希望用同一个指标把这个组合用一个圆圈勾画出来

接下来你可以用这个指标编写一个EA,并检查结果。

如果有人写了一个指标和/或顾问,如果你不介意的话,请把它贴在这里。

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

顺便说一句--可以用积分来做--直接在网上交易就可以了。
不是像WOC EA那样按时间,而是完全按点的组合,结果是
,专家顾问不会按历史进行交易,而是按当前情况进行交易。但就是这样,
,可能是太浅薄和不靠谱了--虽然我自己也不确定
[Deleted]  

leonid553:

有一个Envelopes 指标,使用它的经典战术是众所周知的。但由于其结构,它过于 "敏感",或具有较大的周期--它滞后了很多信号。然而,如果我们将这一指标平滑化,情况将立即发生变化!我们选择边界的偏差,使边界只覆盖蜡烛的尖端,我们通过这些交叉点严格按照趋势进入。- 通过这些边框的斜率角度(例如),以编程方式设置它(趋势)。

有一个版本在购买时起作用。另一个版本适用于销售。同时,我们竟然错过了在趋势反转时的亏损交易!- 没有讽刺!此外,在平房期间--没有交易!(因为趋势是由斜率的角度决定的!)

这是一张平滑的指标图--入口点用箭头表示。

还有一招。你可以把它作为一个过滤器使用,也可以作为一个单独的版本。随机的。它不应该按照经典的规则来使用,而应该是有点非标准的!"。在超买/超卖区的外侧和内侧交叉时进入,反之亦然。- 我已经在随机窗口中用箭头显示了这些条目。

我已经用上述两种方法制作了原始的专家顾问系统。 到目前为止,结果令人满意...

应版主Granit77的要求,原帖被删除,关于过滤随机指标的专家顾问的讨论被移到这里https://www.mql5.com/ru/forum/112887/page15#518639

 
alex12:
这个想法是为了创建一个指标。

这个想法最初是由我用蜱虫发明的,但事实证明,在测试器中没有蜱虫历史。
所以我把它转移到了酒吧。
其本质是一个组合棒。设置可能如下。

上--买。

看涨=0,价值。
Bears = 0, 意味着
颜色
线条厚度

下跌--卖出。

Bears = 0, Value
看涨=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条的最低价格=计算平均价格并画线
我还希望这个条形组合能被画成一个圆。
使用相同的指标。
然后你可以用这个指标写一个EA并检查结果。

如果有人写了一个指标和/或顾问,如果你不介意的话,请把它贴在这里。

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

顺便说一句--可以用积分来做--只需要在线交易。
不是像WOC-advisor中那样按时间,而是精确地按点的组合。
专家顾问不会根据历史数据进行交易,而是根据当前情况进行交易。但它是如此。
尽管我并不确定。
虽然我自己并不确切知道。

我做了一个如上所述的自定义指标。相当有趣--因为=准确(明确无误地识别出给定的分形图案)。


下面是代码本身。

//+------------------------------------------------------------------+
//|                             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个烛台进行的。左边的时间框架是M30,右边的是D1。任何接近零的东西都意味着在过去的X个蜡烛中没有任何"镜像"[平均]。

就像现在这样,这些仪器的运动是相似的,有时是在同一个方向,这一点被周期性的关联所证实。但它甚至不是协整的,这一点被非平稳的欧元兑美元图表所证明(尽管我不能明确地确认它--我没有测试过,我认为它是无意义的)。

 
alex12:

这里有一只如上所述的定制火鸡。相当有趣--因为=准确(正确检测分形图案)。

下面是代码本身。


谢谢你!有趣的想法!

它显示在所有TF上。但是黄色分形有问题。它在所有TF上的绘制距离不同,与蓝色上的不一样。

请检查一下!

SetArrow(217, PaleGoldenrod, nm, tm, fractal+4*delta*Point, Width);//?????