需要帮助创建一个非常简单的EA

 
我从来没有创建过一个EA,但我有一个交易,每30分钟发生一次,我在英镑兑美元上进行交易。
 
crazfoto:
我从来没有创建过一个EA,但我有一个交易,每30分钟发生一次,我在英镑兑美元上进行交易。

如果不是那么复杂的话,我也许能在这方面提供帮助。

请为我提供更多信息

 
doshur:

如果不是那么复杂的话,我也许能帮上忙。

请向我提供更多信息

很好。唯一的规则是。


当当前蜡烛突破前30米蜡烛的高点或低点1点时进入(高点买入,低点卖出)。

只交易20点以上的蜡烛。

一旦订单被激活,止损点是前30分钟蜡烛图的低点(或高点)。

如果没有突破蜡烛或下达订单,那么就等待下一个30分钟的蜡烛形成20点或更大。


我打算在本周的交易中尝试使用追踪止损,看看我是否能获得更多的点。


让我知道。再次感谢

 

当当前蜡烛图突破前30米蜡烛图的高点或低点1点时进入(高点买入,低点卖出)。

明白了这一点


只交易20点或更大的蜡烛。

你是说前一根蜡烛的高点-低点给了20点或更多?


一旦订单被激活,止损是前30分钟蜡烛的低点(或高点)。

请进一步解释


如果没有突破蜡烛或下达订单,那么就等待下一个30分钟的蜡烛形成20点或更大。

请澄清第2点


:)


问候

Doshur

 
doshur:

当当前蜡烛图突破前30米蜡烛图的高点或低点1个点时进入(高点买入,低点卖出)。

理解了这一点


只交易20点或更大的蜡烛。

你的意思是前一根蜡烛的高点和低点之间有20个或更多的点?


一旦订单被激活,止损点是前30分钟蜡烛图的低点(或高点)。

请进一步解释


如果没有突破蜡烛或下达订单,则等待下一个20点或更大的30分钟蜡烛的形成。

请澄清第2点


:)


问候

Doshur

是的。之前的蜡烛必须是20点或更大的交易,这样我们就有了合适的规模的面板。


止损

例子。

前一个高点是1.7500

前一个低点是1.7480

买入指令是1.7001到1.7506,止损是1.7480。

或者卖出指令为1.7479,最高价为1.7474,最低价为1.7500。



现在,如果我们有了我们的范围,而订单从未被放置,即市场从未突破高点或低点来激活订单,那么之前的30分钟范围将被取消,新的30分钟蜡烛(现在将成为我们之前的范围)将成为新的交易数字。


例如。


之前的高点是1.7550

之前的低点是1.7500

新的30分钟蜡烛图保持在我们的范围之间,订单从未被激活。


我们得到一个新的30米蜡烛,之前的范围是。

高点1.7540

低点1.7520


所以这就成了我们新的交易范围,而1.7550 1.7500的范围则被忽略了。


我在新的30分钟蜡烛图开始时用挂单 进行交易。当其中一个订单被激活时,我会删除另一个订单。

 

我现在很清楚了。

这几天将开始编码。让我消化一下。

:)

 
doshur:

我现在很清楚了。

这几天将开始编码。让我消化一下。

:)

我想知道你是否可以添加一些东西,在交易失败后将输入的手数增加一倍,只是为了在交易失败后的下一次输入,这有助于保持非常低的损失。


我将在本周进行交易,尝试使用追踪止损,我以前从未这样做过,只是一直在争取5个点。

 
crazfoto wrote>>

我想知道你是否可以添加一些东西,在交易失败后将输入的手数增加一倍,只是为了在交易失败后的下一次输入,这有助于保持非常低的损失。

我将在本周进行交易,尝试使用追踪止损,我以前从未这样做过,只是一直追求5点。

有趣的策略。我写了下面的代码来实现。代码有很多评论,所以你应该能够理解并修改它。不过Staregy的回测结果并不理想。

//+------------------------------------------------------------------+
//| 30分钟的战略.mq4
//| Copyright © 2008, Brendan Kelly | //| 版权所有。
//| |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008, Brendan Kelly"
#property link ""
Extern string Order_Comment = "30Min Strategy";
extern double Lots = 0.1;
extern int TakeProfit = 5;

static bool ReadyToTradeThisBar = false;
int MagicNumber = 9999;

开始()
{

如果(NewBar()) // 这是在每个新条的开始阶段进行的。
{
CloseAllOpenOrders(); //首先关闭上一交易日留下的任何现有交易。
如果(High[1]-Low[1]>=20*Point) //如果前一个柱子至少有20个长点
ReadyToTradeThisBar = true; //那么我们就可以交易此条。
否则 //否则
ReadyToTradeThisBar = false; //我们不能交易此条。
}

//这是每一个tick都要做的
如果 (ReadyToTradeThisBar == true) //如果我们可以交易这个柱子
{
如果(OrdersTotal() < 1) //并且如果当前没有交易的话
{
如果(Ask > High[1] + 1*Point) //并且如果当前的卖价大于前一栏的高价加1
{ //然后下一个买入订单
OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Low[1],Ask+ TakeProfit*Point,Order_Comment,MagicNumber,0,Blue)。
ReadyToTradeThisBar = false; //防止进一步的交易,直到当前交易被关闭。
}
if(Bid < Low[1] - 1*Point) //并且如果当前的卖出价格低于前一栏的低点减去1
{ //然后下一个卖出订单
OrderSend(Symbol(),OP_SELL,Lots,Bid,3,High[1],Bid- TakeProfit*Point,Order_Comment,MagicNumber,0,Red)。
ReadyToTradeThisBar = false; //防止进一步的交易,直到当前交易被关闭。
}
}
}

return(0);
}//结束


//##########################Support Functions ##########################################

// 如果当前条形/烛台刚刚形成,该函数返回值为true
bool NewBar()
{
static datetime PreviousBar;
如果(PreviousBar<Time[0])
{
PreviousBar = Time[0];
return(true);
}
否则
{
return(false);
}
return(false); // 在if - else语句没有被执行的情况下
}

//关闭所有未结订单和挂单
int CloseAllOpenOrders()
{
int OrderCount = OrdersTotal();
int index = 0;
int TicketNumber = 0;
for(index=OrderCount-1;index>-1;index--)
{
OrderSelect(index,SELECT_BY_POS,MODE_TRADES)。
如果(OrderMagicNumber()==MagicNumber)
{

TicketNumber = OrderTicket();
如果(OrderType() == OP_BUY || OrderType() == OP_SELL )
{
OrderClose(TicketNumber,Lots,Bid,3,Red)。
}
}
}
return(0);
}

谢谢

Brendan

 
很好。我是否能够修改它,使其在2小时的蜡烛上也能工作?<br / translate="no">
 
我知道为什么这不起作用了。它每隔半小时就自动取消每笔订单,而不是让市场将其止损或获利。我看到很多订单本来是可以支付的,但机器人关闭了订单。
 

谢谢Brendan提供的代码。

我还没有测试这段代码,但似乎如果你激活了EA,如果所有的规则都得到满足,它是否会立即执行订单,即使当前的价格 已经比前一栏的价格高出10点。