如何编码? - 页 7

 

根据我的理解,最好/最简单的方法是要看以前的酒吧,正如你所说的。 你可能会迟到,也可能不会。 我的意思是这样的。

Start()函数处理每一个tick。 而MT4在设计上,只处理每一个tick之后的时间。 这意味着一个新的条形图直到新条形图的第一个刻度才会出现在您的图表上。 因此,当您接近一个条形图的末尾时,如果您的警报是在每一个点之后响起(令人讨厌的方式),您将在条形图的最后一个点上得到一个警报。 如果你在前一个条形中寻找你的警报(非烦人的方式),你会在新条形的第一个刻度上得到一个警报。

因此,在市场活动频繁的时段,新条形图的第一个刻度可能会在前一个条形图收盘后立即发生(基于时间)。 在市场缓慢的时段,可能要等20-30秒才会有新的刻度线出现,而MT 4在你得到第一个刻度线之前不会向你显示新的条形图。

我希望这很清楚。

Keris

 

需要帮助来编码 "波动率止损进场技术"

波动率止损通过使用价格条的平均范围来计算波动率。它的计算方法是将平均范围乘以一个常数。当做空时,该值与最低收盘价相加,当做多时,与最高价相减。

范围 = (范围 x (N - 1) + 高 - 低 / N)

空头 = 最低收盘价 + 范围 x C

多头 = 最高收盘价 - 范围 x C

在强劲的趋势性市场中,最好使用波动止损。它是一种很好的入市技巧,在大多数情况下,它将优于有效的趋势线 突破,或通道突破。反向止损的作用还在于量化风险,因为它与波动性有关。常数应保持在2.5和4.0之间。

我对这个指标没有个人经验,但我在《斐波那契比率与模式识别》一书中读到过它。

如果有人能编写这个指标的代码,我将非常高兴。

附加的文件:
v.s..bmp  962 kb
 
 

Igorad,非常感谢你,Volty Channel Stop正是我在寻找的东西。

 

请帮助处理这段代码...

我想了解LSMA_in_color指标的机制,我在这个论坛的其他地方发现了它。 下面的代码是根据wt[]中的值来设置指标线段的颜色。

//========== COLOR CODING ===========================================

ExtMapBuffer3[shift] = wt[shift]; //yellow

ExtMapBuffer2[shift] = wt[shift]; //blue

ExtMapBuffer1[shift] = wt[shift]; //red

if (wt[shift+1] > wt[shift])

{

ExtMapBuffer2[shift] = EMPTY_VALUE; //turn blue off

Print ("red ",wt[shift+1]," ",wt[shift]);

}

else if (wt[shift+1] < wt[shift])

{

ExtMapBuffer1[shift] = EMPTY_VALUE; //turn red off

Print ("blue ",wt[shift+1]," ",wt[shift]);

}

else

{

ExtMapBuffer1[shift]=EMPTY_VALUE; //turn red off;

ExtMapBuffer2[shift]=EMPTY_VALUE; //turn blue off;

Print ("yellow ",wt[shift+1]," ",wt[shift]);

}

我添加了Print()函数,这样我就可以看到红、黄、蓝三种颜色条件下的实际值是什么。 似乎只有当wt[shift]==wt[shift+1]时才会出现黄色条件,但由于某些原因,当我运行这个时,日志显示它从未进入黄色条件。 每条日志记录不是红色就是蓝色。 在图表上,显然有黄色条件发生--每次从红色变为蓝色或从蓝色变为红色时,它都会在两者之间转为黄色......为什么它不把黄色条件打印到日志中?

另外,在查看日志时,我看到wt[shift]与wt[shift+1]相同的情况,但它被打印成了红色条件。 当红色条件要求wt[shift+1]>wt[shift]时,这怎么可能发生?

希望得到任何帮助

 

是的,任何帮助都是.....

 

我是一个真正的代码新手,但看起来黄色总是打开的,红色或蓝色被放在它上面或直接取代它,除非它是偶数,在这种情况下,没有什么被画在黄色上面。

 

code tocheck if last [closed] trade was a win or lose...

在mql4中是否有一种方法用于检查最后一笔交易是盈利还是亏损,在它关闭之后?

我正在尝试OrderSelect()和OrderProfit()以及使用数组的HistoryTotal()...但是OrderProfit似乎是指 "开仓订单",所以它没有给我想要的结果。

平均来说,我的系统有5次连续的胜利,1次失败。我想做的是,在一次失败的交易后,我想增加使用的手数,因为之后的交易有可能是赢的。

因此,在修改手数之前,我需要检查最后一笔平仓交易的结果是什么。

希望得到任何帮助...

 
fxdk:
在mql4中是否有一种方法用于检查最后一笔交易的结果是盈利还是亏损,在它被关闭后?

我正在尝试OrderSelect()和OrderProfit()以及使用数组的HistoryTotal(),但OrderProfit似乎是指 "未平仓订单",所以它没有给我想要的结果。

平均来说,我的系统有5次连续的胜利,1次失败。我想做的是,在一次失败的交易后,我想增加使用的手数,因为之后的交易有可能是赢的。

因此,在修改手数之前,我需要检查最后一笔平仓交易的结果是什么。

任何帮助都会被感激...

fxdk,

检查 最后一笔平仓单的利润,请使用以下代码。

int total = HistoryTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY)。

Alert(OrderProfit()); //这是最后一笔平仓单的利润或损失

 
codersguru:
fxdk,

要检查最后一个平仓订单的利润,请使用此代码。

int total = HistoryTotal();

OrderSelect(total-1,SELECT_BY_POS,MODE_HISTORY)。

Alert(OrderProfit()); //这是最后一个关闭的订单的利润或损失

我认为这可能并不总是真的。我和Slawa讨论过这个问题,似乎HISTORY和TRADE一样,并不总是按日期排序,而是取决于你在终端标签上使用的排序柱。因此,更安全的做法是扫描所有(!)HISTORY并比较关闭日期;然后记住最后一个,这样下次你就不需要扫描整个数组。