Gogetter EA - 页 2

 
Maji:
说实话,我不确定我是否能帮助你。首先,因为我必须花时间去做,而现在对我来说,时间是很紧张的。第二是因为到目前为止,我让 "指标 "做所有的图画,从来没有用EA来做。这是有可能的,我认为理论是一样的。

我相信Codersguru曾写过一章关于画线、箭头等的内容。试着读一读吧

再次,复制和粘贴仍然需要你了解你在做什么。没有什么比自我帮助更重要,你很好地证明了这一点。继续努力工作。

好吧,你问倒我了,我会接受一些努力工作的荣誉。 TGIF!!我一直在为这个问题奔波劳碌。我应该休息一下。

如果有一个指标可以在图表上显示开仓和平仓的箭头,我想这也是可行的......我发现我的真实账户在测试器中自己画出所有的东西,不需要我告诉它做什么......另一方面,我的模拟账户......有问题

我更关心的是多次交易的时间问题......如果我使用 "滴答模式",情况会有所改善吗?我一直在观察这个前瞻性测试,它每条街做一次交易,这可能会使交易在信号发出后相隔很远的点。如果我想在一个信号上开5个头寸,我希望是在信号出现时,而不是在信号出现后的半小时内...(笑)。

 

建立1.01 -长

这有一个我稍微研究过的信号,可以工作。现在与gogetshorts使用的移动 平均线和一些信号逻辑有一些不同......我从原来的gogetter上提取了信号,在多头上工作,并对它进行了一些调整。

它最喜欢GPB/USD的5mTF。它在其他时间框架上几乎是崩溃的。

请享受,请发表你的结果/问题等。

附加的文件:
 
eric79:
嗨,祝贺你的曲线看起来不错。我认为可以改进的一点是测试的建模质量。90%会更好。

我在GGS 2.11上得到了非常接近的结果。

我不习惯使用版本号构建号......因为这是我的第一次冒险......那是Graham从factoid论坛上添加的......这是另一件需要跟踪的事情....,现在图表窗口中应该有当前的构建和版本号...... 相同的逻辑和代码,只是外观更好。

在我们进行改进的时候,我让它们都在演示中进行前向测试。

附加的文件:
 

我仍然希望在这些范围内开发更多的进入信号和参数

 

我觉得很奇怪,当某样东西前一天还能用,后一天就不能用了,而且我也没有做任何改动...。

我的EA在策略测试器中,当我改变'maxopentrade'设置时,它没有反应......无论如何它都使用两笔交易,如果我告诉它'0',它仍然使用两笔交易......它早些时候甚至今天都工作得很好,现在它突然决定,无论我告诉它什么,它都要允许两笔开放交易....

上周,如果它告诉它一次允许5笔交易,它就一次允许5笔交易,当我告诉它一次允许1笔交易时,它就一次允许1笔交易....。我已经看到了它的作用!

现在我不能让它工作,以拯救我。什么原因?

我想也许我在如果MaxOpenTrade这一行丢失了一个括号或其他东西......

TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0); [/PHP]

so I changed it to this...

[PHP] TradeSettings();

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

if(OrdersTotal() < MaxOpenTrade){

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("Error opening BUY order : ", GetLastError());

}

}

}

if (EachTickMode) TickCheck = True;

if (!EachTickMode) BarCount = Bars;

return(0);

没有改善,它仍然忽略了MaxOpenTrade控件。

好吧,如果我跟踪我正在改变的两个信号,那就有帮助了....lol,如果我只使用2号信号,而改变1号信号的设置,那就有意义了,哈?

是的,我已经失去了我的弹珠。

 
for (int o = 0; o <= MaxOpenTrade; o ++)

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);

if(Ticket > 0) {

if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY order opened : ", OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

return(0);

但这并没有做到在同一时间修改订单......。我想我需要用订单修改功能 做一些类似的事情,这样他们也会在同一时间修改......

 

我不确定,但我认为这不是做你想做的事情的正确方法。

使用下面这个函数。

int CountTrades()

{

int count=0;

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

if((OrderType()==OP_SELL) || (OrderType()==OP_BUY))

count++;

}//for

return(count);

}

现在在你的程序中调用它为

if CountTrades<MaxTrades then....

另外,摆脱那种在 "for "循环中向上计数的习惯,使用倒数的方式。当你试图关闭交易时,这将是非常有用的,一般来说,这将导致一个更一致的编码风格。

祝您好运。

 

好的,我做到了,我用CountTrades()更新了GGlongs Ea中的所有东西,甚至是你之前做的CloseAll(),它使用的是OrdersTotal()...所以在这个特定的构建中的所有东西现在都在倒数,而不是上升,我经常调用那个函数

EA现在似乎可以在同一时间打开多个订单,并在同一时间对它们进行s/l或t/p。

另一方面,修改它们....,这很不稳定,不能同时修改它们......

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

return(0);

if (!EachTickMode) BarCount = Bars;

[/PHP]

something about this doesn't work right...however when I do this although it becomes crazy it ends up being more profitable...

this is the code for the 'altered' version that corresponds to the test reports below...when it's like this basically it doesn't modify anything at all....

//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

for (int t = 0; t < MaxOpenTrade; t ++)

if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

this is the code that corresponds to the 'unaltered' reports below... This modifys but not as I imagine it should doing them all at the same time....

[PHP]//Trailing stop for long position

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop || OrderOpenPrice() - Bid >= 0) { //below trigger the Ilevel==Ask

if(OrderStopLoss() < Bid - Point * TrailingStop || OrderStopLoss() == 0) {

//for (int t = 0; t < MaxOpenTrade; t ++)

//if(CountTrades() < MaxOpenTrade)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);

//return(0);

if (!EachTickMode) BarCount = Bars;

TrailingStopMode = False; //resets mode after each order

StopLossMode = False; //resets mode after each order

continue;

虽然我不喜欢这种修改方式,但根据报告,它还是有很多好处的....。

我希望能够控制修改,按照我想要的方式进行,只是想知道我能不能做到。也许最终这样做更好,但我想知道如何让它同时修改它们,就像它在开盘和收盘时那样。

附加的文件:
 

现在,现在......你已经走了这么远......所以要认真思考......你有counttrades代码,为什么不修改它来做订单修改的事情呢......类似这样的事情

int ModifyTrades()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

你已经掌握了基础知识,现在就看你如何解决其他问题了。

好运。

 
Maji:
现在,现在......你已经走了这么远......所以认真思考......你有counttrades代码,为什么不修改它来做订单修改的事情......像这样的事情

int ModifyTrades()

{

int trade;

for(trade=OrdersTotal()-1;trade>=0;trade--)

{

OrderSelect(trade,SELECT_BY_POS,MODE_TRADES);

if(OrderSymbol()!=Symbol()||OrderMagicNumber()!=MagicNumber)

continue;

if(OrderSymbol()==Symbol()||OrderMagicNumber()==MagicNumber)

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen); /etc.

}//for

}

你已经掌握了基本知识,现在就看你如何解决其他问题了。

好运。

这很有效...见附件...

.htm文件太大,无法上传......我只想说,它确实修改了每个订单在同一时间的倒计时....,它甚至有相当大的利润 ,对于这个糟糕的信号来说,这并不坏。

附加的文件: