sp=MarketInfo(sy,MODE_SPREAD);
//-------------- Проверка StopLevel ---------------
level=MarketInfo(sy,MODE_STOPLEVEL ); // Значение уровня установки стоповif (level==0) level=sp*2;
然后已经将止损单的大小与收到的水平进行比较,并使用计算出的正确值进行止损单。
//+----------------------------------------------------------------------------+double pa=MarketInfo(Symbol(),MODE_ASK), // цена Ask
pb=MarketInfo(Symbol(),MODE_BID), // цена Bid
sl=0, tp=0;
if(OrderType()==OP_BUY) {
sl=NormalizeDouble(MathMin(pb-StopLoss*Point,pb-(level+1)*Point),Digits);
tp=NormalizeDouble(MathMax(pb+TakeProfit*Point,pb+(level+1)*Point),Digits);
// далее используем полученные уровни // sl для цены StopLoss // и tp для цены TakeProfit
}
if(OrderType()==OP_SELL) {
sl=NormalizeDouble(MathMax(pa+StopLoss*Point,pa+(level+1)*Point),Digits());
tp=NormalizeDouble(MathMin(pa-TakeProfit*Point,pa-(level+1)*Point),Digits());
// далее используем полученные уровни // sl для цены StopLoss // и tp для цены TakeProfit
}
//+----------------------------------------------------------------------------+
那又怎样?"这有用吗?)
嗯,是的。你可以自己检查一下=)将金额设置在700美元以上,然后测试一下=)。5分钟的间隔
你也可以修改它,让它每天晚上自己启动=)。
嗯,是的。你可以自己检查一下=)将金额设置在700美元以上,然后测试一下=)。5分钟的间隔
你也可以修改它,让它每天晚上自己启动=)
我明白了)))。那么,祝你在征服有利可图的高地时好运吧))
你好。
如果我这样尝试,我有一个问题,但我从来没有发现它......如果我这样尝试,订单将把前一栏的价值作为TakeProfit......。我两种方法都试过了......订单从来没有看到这个变量并跳过它......结果,TP被设置为0或1或2......
脑子里想的东西都试过了,但没有用....。最不清楚的是,如果我把 "TP ="换成 "Print",它就会写出所有的东西。帮助一个初学者....我将非常感激。
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 50, 0, (Ask +((High[1]-Low[1])*3)*Point), "", 123, 0, Blue) 。
_______________________________________________________________________________________
for (int i=1;i<=1;i++)
TP=((High[i]- Low[i])*3)。
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 50, 0, Ask + TP*Point, "", 123, 0, Blue)。
____________________________________________________________________________________________
你好。
如果我这样尝试,我有一个问题,但我从来没有发现它......如果我这样尝试,订单将把前一栏的价值作为TakeProfit......。我用不同的方法试了一下......订单从来没有看到过这个变量并跳过它......结果,TP被设置为0或1或2......。
脑子里想的东西都试过了,但没有用....。 最不清楚的是,如果我把 "TP ="换成 "Print",它就会写出所有的东西。 帮助一个初学者....我将非常感激。
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 50, 0, (Ask +((High[1]-Low[1])*3)*Point), " ", 123, 0, Blue);
_______________________________________________________________________________________
for (int i=1;i<=1;i++)
TP=((High[i]- Low[i])*3)。
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 50, 0, Ask + TP*Point, "", 123, 0, Blue)。
____________________________________________________________________________________________
OrderSend() 中的thp不是点数,而是订单将被关闭的价格,当你设置thp时,有必要记住关于冻结的水平(每个DTZ都有自己的问题)。
可能是有用的,谢谢Artem。
artmedia70 15.12.2013 22:34 #
还有一个未计入的StopLevel。如果你不知道,它可能等于零,那么它的计算方法就不同。以Alpari为例,它始终是零,但有限制,它们被算作价差*2。
因此,首先定义StopLevel。
在全球范围内。
然后在start():
然后已经将止损单的大小与收到的水平进行比较,并使用计算出的正确值进行止损单。
我的代码中也不只是有项目,我有一个价格值...
我想我明白你的代码是怎么说的,但它应该如何帮助......?
我的代码中也不只是有项目,我有一个价格值...
我想我明白你的代码中写了什么,但它应该如何帮助......?
解释
鉴于。
低=1.3674
高=1.3811
询问=1.3734
你的计算结果。
问价+((High[1]-Low[1])*3)*点=1.3734+((1.3811-1.3674)*3)*点=1.3734+(0.0137*3)*点=1.3734+(0.0411)*点=1.3734+411=412.3734 - 对我来说似乎不是一个好的报价)
只要去掉点的乘法,就可以了)
我的代码中也不只是有项目,我有一个价格值...
我想我明白你的代码是怎么说的,但它应该如何帮助......?
你可以正常打印TP,但当你下订单时,你会把它乘以一个点,把一切都搞乱了...
我的代码中也不只是有项目,我有一个价格值...
我想我明白你的代码是怎么说的,但它应该如何帮助......?
也许这不是一个大数字,而是一个非常小的数字,这就是为什么你把TP设置为0或1。
你能告诉我如何做一个虚拟的尾巴,如何取代OrderModify()?
我有一个带尾随的机器人块,包括普通的和我自己的特定块(用于新闻运动)。
我可以把它寄给你,但这取决于你)。
你正常打印TP,但在下订单时,你又一次乘以点,把一切都搞乱了......。
非常感谢,这很有帮助),只是删除了这个点,奇迹都完成了))))。
正如我所想的,这个错误非常小,但却如此令人讨厌......