[警告关闭!]任何新手问题,为了不给论坛添乱。专业人士,不要走过。没有你,哪里都不能去。 - 页 875

 
reag:

是的,第一个选项不起作用,虽然我在一个非标准的时间框架内工作,但第二个选项起作用。谢谢大家!


第一个选项是有效的--在模拟账户上至少20天(没有更多的时间来检查),在测试者的历史上10年。

ZS:好吧,如果它不工作,它就不工作 :)

 
IgorM:


第一个选项是有效的--在模拟账户上至少20天(没有更多的时间来检查),并且在测试器上有10年的历史。

ZS:嗯,不工作就是不工作 :)

第一个是在真实账户中工作。对我来说,它的作用可能是因为图表窗口非常大。可能是由于图表窗口非常大,没有达到最大限度而起作用...但也许EA是这样的 - 他将会做得很好...:)
 
Andrei01:
它在演示中并不可怕。:) 但在真正的网站上,可能最好不要冒险,正常地做......。可能是由于图表窗口非常大,没有达到最大...但也许EA是这样的 - 它将做得很好...:)


并非如此--通过计算条数,我可以 "不错过 "载入历史的时刻--在这些时刻,最好等待一下,历史不仅在TF结束时载入,有时也会在TF开始时载入--好吧,这是一个大秘密,嘘嘘嘘嘘。

:)

 
IgorM:


并非如此--通过计算条数,我可以 "不错过 "载入历史的时刻--在这些时刻,最好等待一下,历史不仅在TF结束时载入,有时也会在TF开始时载入--好吧,这是个大秘密嘘嘘嘘嘘

:)


事实证明,第二个变体也不起作用......。指示器阵列中的条形数字无论如何都不会改变!我理解这是因为非标准的时间框架。它是由标准的Period_Converter_Opt形成的,我从M1到M2得到它,当我打开M2时,Bars等于窗口中Max bar的一半,当我达到窗口中Max bar的值时,SetIndexBuffer 数组的运算停止了...()
 
reag:

事实证明,第二个选项也不起作用......。指示器阵列中的条形数字无论如何都不会改变!我想这是因为非标准的时间框架。它是由标准的Period_Converter_Opt形成的,我从M1到M2得到它,当我打开M2时,Bars等于窗口中Max bar的一半,当我达到窗口中Max bar的值时,SetIndexBuffer索引数组的运算停止...()


但是,至少新酒吧 的一些参数可以与记忆中的酒吧进行比较?

如果你有一个非标准的TF--是否有可能你认为是零的条形图--其指数不是0,而是1?

 
IgorM:


但是,至少新酒吧的一些参数可以与记忆中的酒吧进行比较?

如果你有一个非标准的TF--有可能你认为是零的条形图有一个0、1以外的索引?


识别新条形的算法是有效的,但图表在达到窗口中的最大条形后就停止了;我假设煽动SetIndexBuffer索引数组 停止。问题是这样的,即启用后一切工作正常,然后图表冻结,条形图移动......因此,该指示器不工作!
 
reag:

算法本身可以识别一个新的条形图,但图表在达到窗口中的最大条形图后就停止了,我假设SetIndexBuffer索引数组的运算会停止。问题是这样的,即启用后一切正常,然后图表冻结,条形图移动......因此,该指示器不工作!

如果它在启动时工作,也许问题在于重新绘制的条数定义不正确。
 
IgorM:

如果它在启动时出现这种情况,问题可能是没有正确定义要重绘的条数。

#property indicator_chart_window
#property show_inputs
#property indicator_buffers 3 // 缓冲区的数量
#property indicator_color1 DarkSeaGreen // 第一行的颜色。
#property indicator_color2 SaddleBrown // 第二行的颜色。
#property indicator_color3 SaddleBrown // 第二行的颜色。

外部intHistory=300; //计算历史的条数
外部int Arrows=1;
extern int Line=0; // 用于计算的条数。
//extern int Left_Right= 5; // Horizontal offset (bar)
extern int Up_Right=8; // 垂直偏移(点)。
static int up = 1, intPost=600;
静态数据时间VPPosLStr,time0new,time0old。
double Line_0[],Line_1[],Line_2[]; //数据数组的声明

//--------------------------------------------------------------------
int init() //Special function init()
{

如果(Arrows==1 && Line==1)int Style=1;
如果(Arrows==1 && Lines!=1)style=3;
如果(Arrows!=1 && Lines==1)style=2;
switch(Style) // 头部开关
{ // 身体启动开关
案例1 :
//--------------------------------------------------------------------
SetIndexBuffer(0,Line_0); // 将数组分配给缓冲区0。
SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);//线条样式
SetIndexEmptyValue(0,0.0)。
//--------------------------------------------------------------------
SetIndexBuffer(1,Line_1); // 将数组分配给缓冲区1。
SetIndexStyle(1,DRAW_ARROW,EMPTY,1); //线条风格
SetIndexArrow(1,217)。
//--------------------------------------------------------------------
SetIndexBuffer(2,Line_2); // 将数组分配给缓冲区2。
SetIndexStyle (2,DRAW_ARROW,EMPTY,1); //线条风格
SetIndexArrow(2,218)。
//--------------------------------------------------------------------
break; // 选项。
案例2 :
//--------------------------------------------------------------------
SetIndexBuffer(0,Line_0); // 将一个数组分配给缓冲区0。
SetIndexStyle(0,DRAW_SECTION,STYLE_DOT,1);//线条风格
SetIndexEmptyValue(0,0.0)。
突破。
案例3 :
//--------------------------------------------------------------------
SetIndexBuffer(1,Line_1); // 将数组分配给缓冲区1。
SetIndexStyle(1,DRAW_ARROW,EMPTY,1); //线条风格
SetIndexArrow(1,217)。
//--------------------------------------------------------------------
SetIndexBuffer(2,Line_2); // 将数组分配给缓冲区2。
SetIndexStyle (2,DRAW_ARROW,EMPTY,1); //线条风格
SetIndexArrow(2,218)。
//--------------------------------------------------------------------
突破。
缺省:break; // 案例不匹配
}
int k=Bars; // 体内开关的结束

return(0); // 退出特殊的init()。
}
//--------------------------------------------------------------------
int start() // 特殊函数start()
{
//----+ 检查条数是否正确。
//计算该指标
如果(History-1 < 15)
return(0);

//+--- +==========================================+
int i, // 酒吧索引
n, // 正式参数(索引)。
k, // 索引数组的索引元素的索引
Counted_bars; // 计算的条数
双线。
iBarShift(NULL, 0, VrPostStr)。
//评论(indpostr," ",up)。
//--------------------------------------------------------------------
/* Counted_bars=IndicatorCounted(); // 计算的条数
//----,检查是否有错误
如果(Counted_bars < 0)
返回(-1)。
i=Bars-Counted_bars-1+indicatorCounted; //第一个未被计算的指标的索引
if (i>History-1) // 如果有很多条,那么.
i=History-1; // ......计算给定的数字
time0new=Time[0];
如果(time0old!=time0new)
{
i=History-1。
time0old=time0new。
评论("Bars",Bars,", History",History,", i",i)。
}

for(i=i-1; i >= 3; i--) //在未计算的小节上循环。
{
如果(up==0)
{
Line=Low[i];

如果(Line<Low[i-1] && Line<Low[i-2] && Bpostr<Time[i])
{
Line_0 [i] = Line[i];
Line_0 [i] = Line;
Line_2[i] = Lin-up_down*Point;
up=1。
继续。
}
}
if(up==1) //以两个蜡烛图为标准建立菲波网格,并回滚。
{
线=高[i]。

如果(Line>High[i-1] &&Line>High[i-2]&&Bpostr<Time[i])
{
Line_0[i] = Line[i];
Line_0[i] = Line;
Line_1[i] = Line+Up_down*Point;
up=0。
}
}
//计算下一栏的指数
}
// WindowRedraw()。
//--------------------------------------------------------------------
return(0);
}
//--------------------------------------------------------------------
int deinit()
{

return(0);
}
 
reag:


   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0; i<limit; i++){
我是这样写指标的,这是我的标准指标起点--它有点捉襟见肘,但当我在处理mql时,我是这样写的,这就是它保持的方式。
很难理解你的代码--用西里尔字母命名的变量让我感到害怕--我对注释感到困惑。
 
IgorM:
我是这样写指标的,这是我的标准指标起点
很难理解你的代码--西里尔字母的变量名让我感到害怕--我对注释感到困惑。

是的,这只是我的尝试......Cyrillic )),在非标准时间框架上,Bars和IndicatorCounted()的组合并不完全有效,当Bars窗口中的最大条数被超过时,就不再继续。
原因: