//+----------------------------------------------------------------------------------------------------------------------------------------+ //| Check to see if any order open on this currency pair |//+----------------------------------------------------------------------------------------------------------------------------------------+ int OpenOrdersThisPair(string pair)
{
int total=0;
for(int i=OrdersTotal()-1; i >= 0; i--)
{
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
if(OrderSymbol()==pair) total++;
}
return (total);
}
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
double ticksize = MarketInfo(Symbol(), MODE_TICKSIZE);
if (ticksize == 0.00001 || ticksize == 0.001) // if you set this to 0 it WONT throw an order out straight away.
pips = ticksize*10;
else pips = ticksize;
return(0);
}
//TriggerBarTime works in conjunction with:int iTBT= iBarShift(NULL,60, TriggerBarTime, true),
iHH= iHighest(NULL,60, MODE_HIGH, iTBT + 1, 0);
double buyPrice = High[iHH]+PadAmount*pips;
//I then use this "buyPrice" in conjunction with OrderSend for where the price of the entry order is...
哦,对不起--我不再得到任何错误了。我只得到了买入订单,没有卖出订单......
这与我之前关于MA交叉的主题有关--我还是不明白!但我不想让自己的想法被扭曲。但我不想在别人给我答案的时候,把别人的问题绕过去,打一个死结(虽然我不明白这个答案)!我希望能有更多的人参与进来。谢谢RaptorUK的帮助!
我不能代表其他人,我没有上当受骗......。
如果你没有出错,也没有下卖单,那么OpenOrdersThisPair(Symbol())就不等于0,这个函数是什么类型的?是int还是double?
,我认为这是因为订单不是简单地放在移动平均线 交叉的地方,而是放在不同的点。
我知道这就是问题所在!我知道我以前在一个不同的主题上就这个问题问过,但我真的很希望得到这个问题的答案(是的,我知道代码很草率,我只是花了很多时间去砍伐、编译和运行策略,亲眼看到它们是如何相互沟通的。更不用说我的写法也是不必要的......但忽略了这一点......)
问题1)关于 "双倍触发时间 "行和>比节....我想了解的是,我如何告诉这个函数,当所有的移动平均线都大于前一个比较的移动平均线时,就找出它们,然后忘记确保它们保持正确的顺序......相反,从这一点上,我需要确保的是,价格收盘保持在 "i12"(60 EMA)之上--如果它做到了,那么它就可以接着其他的IF语句,通过 "OrderEntry(0) "抛出一个多头订单--如果它没有,那么它需要接着看多头(i1>i2 &&i2>i3...)线,等待它再次为真,再考虑接下来的行...
我知道答案就在我眼前,只是变得有点令人沮丧,真的很感谢这一点小插曲....。谢谢!
我想知道所有的MA都在哪里,但它们不需要一直是真的......。我只是希望在其他事情之前,这一点是真实的......在这个基础上,从这个价格开始,所有需要发生的事情是,没有任何条形收盘价低于60 EMA(多头),以保持有效的多头头寸被推出......
我正在使用TriggerBarTime来寻找所有移动平均线 按正确顺序堆积的最高点,以及随后进行的触及21 EMA的条形图......
所以,尽管你为我理顺了缩进,但这几乎就是我之前写的东西(除非我错过了什么?
(啊,是的--我知道应该是bool,这是一个错误--我只是在玩,忘了把它们换回来。)
double TriggerBarTime = (i1>i2 ..
它是真还是假 0或1,没有其他含义 iBarShift的第三个参数必须是数据时间。iBarShift(0)或(1)总是Bars-1。datetime TriggerBarTime;
我把这个放在全球部分...我不明白你之前的帖子?^
是否可以建议我相对于我在你上面的帖子如何写If行?