[存档!]任何菜鸟问题,为了不使论坛变得混乱。专业人士,不要路过。没有你,哪里都不能去 - 4. - 页 130

 
alex12:

但在EA中还有一个代码。

例如,在这个函数中放入Print("close by CloseMarket", j);以及你发布的前一个函数中的类似内容。运行它并查看日志,看哪些打印出现,分析哪一个触发。然后类似地记录关闭执行条件中检查的变量值,找到它们触发的原因。

 
alsu:
又是什么阻止了你把EA放在你想画的确切窗口上?


我的EA在M1上工作得更好,因为它在M1上的表现更好,在M5开盘时开出1笔交易,如果条件允许,它还会补仓。我也在M5和其他TFs上使用指标。而且在开盘时测试M1更好,而在其他TFs上测试所有的ticks则不好。

我不画画,我只是看到EA所做的计算结果,并在某些地方显示,以确保一切正常。谢谢您的关注和帮助!

 
borilunad:


我的EA在M1上工作得更好,因为它在M1上的拖曳效果更好,并在M5开盘时开出1笔交易,如果条件允许,还可以补仓。而我在M5和其他TFs上使用指标。而且在开盘时测试M1更好,而在其他TFs上测试所有的ticks则不好。

我不画画,我只是看到EA的计算结果,并在某些方面显示出来,以确保一切都在有序进行。谢谢您的关注和帮助!

在M1和M5上的ticks取自同一来源,你可以使用任何图表中的任何时间框架,只需用iClose代替Close[],等等。为了更好地测试,你必须从ticks中制作更好的fxt文件,这里有 一个例子,但在一般的google中,有很多关于这个问题的信息。
 
alsu:
在M1和M5上,点数都来自同一来源,你可以使用任何图表中的任何时间框架,只要用iClose替换Close[],等等。为了更好地测试,你必须从ticks中制作更好的fxt文件,这里有 一个例子,但在一般的google中,有很多关于这个问题的信息。

实践表明,在Op上开盘比在ticks上开盘要好,而且测试效果也更好。我对蜱虫一点也不热衷。当Depo允许时,我可能会转到更高的TF,这将在一天内显示出更好的效果。我不离开交易,晚上才能睡得好。再次感谢!
 
smshev:

Print(" CloseMarket", j);在这个函数中,以及你发布的前一个函数中的类似内容。 运行它并通过日志查看这些打印机的结果,分析哪一个触发。 然后类似地记录收盘条件中检查的变量的值,并找到它们触发的原因...

谢谢你。
 
borilunad:

实践证明,在奥雷普上开盘,也比在提克上开盘要好。而且我对蜱虫一点也不感兴趣。当Depo允许时,我可能会改用更高的TF,这将在一天内显示出更好的效果。我不离开交易,晚上才能睡得好。再次感谢!
我不是说这个,我是说EA在哪里有什么区别?如果编写得当,它位于何处并不重要:即使它是在蒙古国交易所的图表上,但如果它被设置为在欧元兑美元1分钟上操作,它就会这样做。而且编程也不难,只要按规定改几行就可以了。
 

亲爱的程序员先生!我不能按MACD指标窗口的最大数值画一条水平线。

编码


#属性 indicator_separate_window
#property indicator_buffers 3
#property indicator_color1 Lime
#property indicator_color2 Red
//--- 缓冲区
双倍ExtMapBuffer1[]。
双倍ExtMapBuffer2[]。
double topBuffer[]。


bool initFinished=false; // 添加一个变量,它将记住初始化的状态。
// false - 初始化还没有发生。
// true - 已被初始化
//+------------------------------------------------------------------+
//|自定义指标初始化函数
//+------------------------------------------------------------------+
int init()
{
//---- 指标
SetIndexStyle(0,DRAW_LINE)。
SetIndexBuffer(0,ExtMapBuffer1)。
SetIndexStyle(1,DRAW_LINE)。
SetIndexBuffer(1,ExtMapBuffer2)。
SetIndexStyle(2,DRAW_NONE)。
SetIndexBuffer(2,topBuffer)。
//----
return(0);
}
//+------------------------------------------------------------------+
//|自定义指标去初始化功能|
//+------------------------------------------------------------------+
int deinit()
{
//----

//----
return(0);
}
//+------------------------------------------------------------------+
//|自定义指标迭代函数|
//+------------------------------------------------------------------+
int start()
{
int counted_bars=IndicatorCounted()。
限度。

如果(counted_bars>0)
counted_bars--。

limit=Bars-counted_bars。
//----
for(int i=0;i<limit;i++)

{
ExtMapBuffer1[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_MAIN,i)。
ExtMapBuffer2[i]=iMACD(0,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,i) 。

如果(initFinished==false)
{
IndicatorShortName("MACD_max-min")。

int win_idx=WindowFind("MACD_max-min")。
//找到我们的指标子窗口的编号

如果(win_idx<0)
{
// 如果子窗口编号为-1,则有一个错误
Print("Window not found")。
return(0);
}

double top=WindowPriceMax(win_idx)。
//找到当前图表的指定子窗口的垂直刻度的最大值


ObjectCreate("max",OBJ_HLINE,win_idx,0,top)。
//在我们的指标的一个子窗口中画一条水平线

ObjectSet("max",OBJPROP_COLOR,Yellow)。
ObjectSet("max",OBJPROP_WIDTH,0)。

WindowRedraw()。
//重新绘制窗口以看到这条线路

initFinished=true。
// 绘图完成了

}

topBuffer[i]=top。


}

//----
return(0);
}

//+------------------------------------------------------------------+


它看起来像在行

double top=WindowPriceMax(win_idx)。

顶层变量没有得到任何值,在

ObjectCreate("max",OBJ_HLINE,win_idx,0,top)。

因此,我在所需的窗口和所需的颜色中得到一个零线。 topBuffer[]也是空的。如果在这一行中用一个数字代替变量top,这一行就取这个固定值。

附加的文件:
 
IndicatorShortName最好移至init()。
 
alsu:
IndicatorShortName应该被移到init() 。
当你打开指标时,对象没有出现,你应该另外打开有指标属性的窗口,关闭它,然后对象就可以看到了。
 
win_idx是正确的吗?