编码帮助 - 页 485

 
NWFstudent:
假设您正在交易1小时图,您使用一个显示4小时图的MTF指标,那么我希望设置为使用下一个时间框架。

我在1小时图上交易,指标使用的是4小时数据,当我把时间框架换成4小时时,我想让指标换到4小时以上的时间框架,所以现在它将使用日数据。

我找到了这个主题,但由于我不是程序员,我不确定在哪里粘贴代码,或者是否需要对实际的指标进行修改。

下一个时间框架 - MQL4论坛

我想把这个指标添加到精英论坛的 "Traders Dynamic_Cb_ssa norm Index_alerts+arrows new 1.01"。

新生代学生

你可以在这篇文章中看到你如何以简单的方式做到这一点:https://www.mql5.com/en/forum/181187/page24(包括自动选择第三个更高的时间框架)。

 

嗨,mladen。

这是最后一次....,我保证。

正如你现在所知,我是ADX指标的忠实粉丝。

我以多种方式使用它,并且从不违背它进行交易。

我也喜欢三只鸭子指标的原理

并曾试图将两者结合起来,但没有任何收获。

我将再试一次,然后再试试其他的东西。

在我看来,所附的指标只有提到指标的区域--第54、57、60行。

其他的似乎都是与时间框架有关。

我曾试图删除 所有提到的 "sma和SMA"--以及adx和ADX,但没有成功。

有没有可能,如果有的话(在不占用你太多时间的情况下),请告诉我如何做。

祝您周末愉快。

附加的文件:
 
Jeeves:
你好,mladen。

最后一次是在....,我保证。

正如你现在所知,我是ADX指标的忠实粉丝。

我以多种方式使用它,并且从不违背它进行交易。

我也喜欢三只鸭子指标的原理

并曾试图将两者结合起来,但没有任何收获。

我将再试一次,然后再试试其他的东西。

在我看来,所附的指标只有提到指标的区域--第54、57、60行。

其他的似乎都是与时间框架有关。

我曾试图删除所有提到的 "sma和SMA"--以及adx和ADX,但没有成功。

是否有可能,如果有的话(在不占用你太多时间的情况下),请让我知道如何做。

祝你周末愉快。

杰维斯

你不能在该指标中使用adx而不是sma。Adx值在一个完全不同的数值范围内,不能像该指标的代码中那样与Bid值进行比较。

 
mladen:
NWFstudent 你可以在这个中看到你如何以简单的方式做到这一点:https://www.mql5.com/en/forum/181187/page24(包括自动选择第三高的时间框架)。

谢谢,这是很直接的复制粘贴

 

亲爱的。

谁能帮助我。

这个 "OrderModify功能 的无效票 "是怎么回事?

但在其他方面可以交易。

extern double lots = 0.1;

extern double stopsize = 200;

外部双倍profsize = 100。

外置双倍风险=0.01。

int err;

int ticket;

双重止损。

双倍利润。

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

for (int i=0; i <= OrdersTotal(); i++)

{

如果(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

如果(OrderSymbol() == Symbol()

TotalOrders++;

}

如果(TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_SELL, getLots(Risk), Bid, 3, 0, 0, NULL,LimeGreen);

stop=(Bid+stopsize*Point)。

prof=(Bid-profsize*Point)。

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue)。

}

err=GetLastError();

评论(" ")。

}

 
hock87:
亲爱的。

谁能帮助我?

这个 "OrderModify函数的无效票 "是怎么回事?

但在其他方面可以交易。

这意味着您的订单没有被接受/执行,OrderSend()函数 的结果是返回-1。在尝试修改一个新创建的订单之前,一定要检查该票据号码是否>-1。

 

有没有简单的文件(不是历史文件)使用的例子?

 
mladen:
xtractalpha 我必须测试一下,看看发生了什么。如果我找到了问题所在,将在这里公布。

亲爱的Mladen,

关于我的请求,你有什么最新进展吗?

祝您周末愉快

预先感谢。

蒂埃里

 
xtractalpha:
亲爱的Mladen,

关于我的请求,你有什么最新进展吗?

祝您周末愉快

预先感谢。

蒂埃里

蒂埃里

删除你代码中的第74行和第137行(你在这两行中都调用了LotsizeCalc()函数,这样你就人为地推高了每一个刻度 的手数。)

删除这两行后,应该可以正常工作了

 
mladen:
蒂埃里

删除你的代码的第74行和第137行(你在这两行中都调用了LotsizeCalc()函数,这样你就人为地推高了每一个tick的手数)。

删除这几行后,它应该可以正常工作

谢谢你的快速回复

我已经删除了这两行代码,但EA仍然以错误的手数开仓交易。

这真的很奇怪,为什么EA无视我的马丁格尔法则。因为EA只在手数为0.10或0.20的情况下打开交易.... (见图片)。

屏幕截图:Lightshot

我认为我的lotsizecalc函数是问题所在。我希望当我输掉一笔交易时,该函数能将我的手数乘以马丁格尔金额。

我的马丁格尔金额是1.5,我的手数是0.10。这意味着当我连续输掉5笔交易时,手数将是:0.1, 0.15, 0.22, 0.34, 0.51。

double LotsizeCalc() { if(lastOrderProfit()<0 && tradeNumber <=MaximumTrades) { tradeNumber++; malot=OrderLots()*MartingaleAmount; } else { malot = LotSize; tradeNumber=1; } return(malot); }

谁能检查一下这个代码?

谢谢。

蒂埃里