如何编码? - 页 120

 
denis68:
matrixebiz 你说的删除这两行是什么意思;我怎么做呢,我无法进入我试过的AC指标的代码。

你在MetaEditor中打开Accelerator.mq4(它在你的指标文件夹中),在这两行前面加上//,然后保存为新名称AcceleratorMod.mq4,然后点击编译。

附加的文件:
 
hiachiever:
不,这是不正确的。

在for循环中,你从6开始,递减到1。这意味着在for循环执行的最后一环,它进行了 "if (i == 1) qqeacross = True; "检查。最终结果是,如果qqeacross发生了,输出将是真。

这可能带来的唯一问题是,如果qqeacross在之前的循环中被设置为真。为了克服这个问题,你应该在for循环之前设置qqeacross = false; 。通过这种方式,你可以确保如果qqeacross = true,那么它是由刚刚完成的循环设置的。

干杯。

hiachiever

因此,即使它说 "如果(i == 1)qqeacross = True;",然后i=4(因为倒计时),qqeacross仍将= True?

 

谢谢hiachiever!

hiachiever:
做到这一点的方法是在全局范围内创建一个变量(即在init之前)。

譬如

int BarCount;

int init ()

然后在你的止损代码中使用以下内容。

如果(BarCount<Bars)

{

SL=iLow(Symbol(),Period(),iLowest(Symbol(),Period(),MODE_LOW,StopLossBars,0)) 。

StopLossBars++;

BarCount=Bars。

}

这将使StopLossBars在每个新条形上增加1。

对你的代码唯一的补充是,当新的交易开始时,将 "StopLossBars "重置为原来的默认值。

谢谢。

欢欢

谢谢你,hiachiever,你的帮助非常好,不过我还想请你帮一个小忙。

我想我明白你的代码是如何工作的,我确信我可以把它复制到我的EA 。 但我不确定如何将止损点重置为默认值。 这是EA最后的代码,用于做多或做空。

void goLong()

{

int ticket = OrderSend(Symbol(),OP_BUY,GetLots(100),Ask,maxSlippage,0,0,"Long",MagicNumber,0,Green);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Long");

}

void goShort()

{

int ticket = OrderSend(Symbol(),OP_SELL,GetLots(100),Bid,maxSlippage,0,0,"Short",MagicNumber,0,Red);

if (screenshots) WindowScreenShot(Symbol()+Period()+"_"+Hour()+Minute()+"_.gif",1024,768);

if (showAlerts) Alert(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

Print(Symbol()+" "+Period()+" TrendLevel at "+DoubleToStr(Level,0)+": Going Short");

}

double stopLoss(int ordertype)

能否请您帮助提供一些重置止损点的代码?

再次感谢。

 

matrixebiz 我已经做了,现在我无法编译我的EA,当我在我的EA中加入以下几行时

double ac1 = iCustom(NULL, 0, "AcceleratorMod", 1, 1);

double ac2 = iCustom(NULL, 0, "AcceleratorMod", 2, 1);

double ac11 = iCustom(NULL, 0, "AcceleratorMod", 1, 2);

双倍ac22 = iCustom(NULL, 0, "AcceleratorMod", 2, 2)。

bool acbuy = ac2==0 && ac11==0; // 红色变为石灰色

bool acsell = ac1==0 && ac22==0; // Lime 变为 Red。

我得到12个错误。AC变量没有定义。

我想感谢你的帮助。

 

我想StopLossBars是一个全局变量,通过用户输入来设置,对吗?

那么我的做法是这样的。

让用户输入的变量是gStopLossBars,然后在你的初始函数 中把它分配给你的本地变量,比如......

StopLossBars = gStopLossBars。

然后在你的买入和卖出函数中简单地使用同样的赋值来重置StopLossBars。

有意义吗?

希望这对你有帮助。

拉克斯

 

Ac+ao+psar

大家好。

有谁能把AC+AO+PSAR结合起来成为一个新的带有警报/邮件的指标?请给我发邮件。谢谢。

 
luxinterior:
我想StopLossBars是一个全局变量,通过用户输入来设置,对吗?

我的做法是这样的。

让用户输入的变量是gStopLossBars,然后在你的初始函数中把它分配给你的本地变量,比如...

StopLossBars = gStopLossBars。

然后在你的买入和卖出函数中简单地使用同样的赋值来重置StopLossBars。

有意义吗?

希望这有帮助。

卢克斯

这很有意义。 非常感谢。

 

我怎样才能检测到新的蜡烛开始的时间?

请谁给我一些建议,我怎样才能创建一个EA,在新的蜡烛开始时发出一个挂单(每日TF)?

谢谢

 
:: 嗨!检查这个指标 里面的代码...(只针对你的开盘时间,它不是一个EA)
tcl:
请谁给我一些建议,我怎样才能创建一个EA,在新条形图开始时发出挂单(日线TF)? 谢谢
 

有谁能阻止这一切循环往复的发生?

void BEM ()

{

int pips;

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

{

OrderSelect(k, SELECT_BY_POS, MODE_TRADES)。

如果(OrderType()==OP_BUY && OrderSymbol()==Symbol () && OrderMagicNumber()==Magic)

{

pips = (Bid - OrderOpenPrice())/Point;

如果((pips >= BE) && (OrderStopLoss() < OrderOpenPrice()))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()+ 12*Point, OrderTakeProfit (), 0, LightBlue);

}

}

如果(OrderType()==OP_SELL && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)

{

pips = (OrderOpenPrice() - Ask)/Point;

如果((pips >= BE) && (OrderStopLoss() > OrderOpenPrice()))

{

OrderModify (OrderTicket (), OrderOpenPrice (),OrderOpenPrice ()- 12*Point, OrderTakeProfit (), 0, Pink);

}

}

}

}

原因: