我从来没有创建过一个EA,但我有一个交易,每30分钟发生一次,我在英镑兑美元上进行交易。
如果不是那么复杂的话,我也许能在这方面提供帮助。
请为我提供更多信息
当当前蜡烛图突破前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分钟蜡烛图开始时用挂单 进行交易。当其中一个订单被激活时,我会删除另一个订单。
我现在很清楚了。
这几天将开始编码。让我消化一下。
:)
我现在很清楚了。
这几天将开始编码。让我消化一下。
:)
我想知道你是否可以添加一些东西,在交易失败后将输入的手数增加一倍,只是为了在交易失败后的下一次输入,这有助于保持非常低的损失。
我将在本周进行交易,尝试使用追踪止损,我以前从未这样做过,只是一直在争取5个点。
我想知道你是否可以添加一些东西,在交易失败后将输入的手数增加一倍,只是为了在交易失败后的下一次输入,这有助于保持非常低的损失。
我将在本周进行交易,尝试使用追踪止损,我以前从未这样做过,只是一直追求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