如何编码? - 页 341

 

谁能好心帮我解决这个问题。

我在这封信下面附上的代码有一个问题......,它总是在蜡烛形成的开始阶段给出信号!这导致我在较高的时间框架上迟迟不能进入交易。

这导致我在较高的时间框架内迟迟不能进入交易。你能不能帮助我们,让iny只在当前价格桥MA向上买入或向下卖出时发出警报,而不是等待另一根蜡烛的开始。

谢谢你,附上的文件

附加的文件:
smacd.mq4  4 kb
 

嗨,Mladen,你知道我可以用什么来触发我的开盘交易标准吗?

我想知道的是,如果蜡烛收盘时高于或低于移动平均线10个点,我怎样才能触发交易。

系统将根据收盘价是高于还是低于移动平均线来触发交易。

我在考虑使用iClose,但不知道如何实现它。感谢你的帮助。

谢谢。

阮文杰

 
tkuan77:
嗨,Mladen,你知道我可以用什么来触发我的开仓交易标准吗?

我想知道的是,如果蜡烛的收盘价高于或低于移动平均线10点,我怎样才能触发交易。

系统将根据收盘价是高于还是低于移动平均线来触发交易。

我在考虑使用iClose,但不知道如何实现它。感谢你的帮助。

谢谢。

莱恩

你好,姆拉登。

我已经写好了代码,它似乎在工作,但是,当满足条件时,交易有时不会被触发,我不知道从现在开始该如何去做。

//+------------------------------------------------------------------+

//---- 输入参数

extern double TakeProfit = 250.0;

extern double Lots = 0.1;

extern double StopLoss = 200.0;

//+------------------------------------------------------------------+

//|专家初始化函数|

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//|专家的去初始化功能|

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//|专家启动功能|

//+------------------------------------------------------------------+

double pBid, pAsk;

datetime newbar;

int start()

{

//+------------------------------------------------------------------+

如果(newbar==Time[0])返回(0)。

否则newbar=Time[0]。

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

double Up_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_HIGH,0)。

double Dwn_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_LOW,0);

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//-- 触发交易

//+------------------------------------------------------------------+

int ticket, total;

double CD_Close = iClose(NULL,0,1);

total = OrdersTotal(); // 检查当前开放的交易总数

if(total < 2)

{

如果(CD_Close >= Up_MA+50*Point)//Hour()==Entry_Hour_1st &&Minute()==Entry_Minute_1st)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point, Ask+TakeProfit*Point,

"My EA",Entry_magicNo_1st,0,Green)。

返回(0)。

}

如果(CD_Close <= Dwn_MA-50*Point)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point, Bid-TakeProfit*Point,

"My EA",Entry_magicNo_1st,0,Red)。

返回(0)。

}

return(0);

}

return(0);

}

//+------------------------------------------------------------------+

 
tkuan77:
你好,姆拉登。

我已经写好了代码,它似乎在工作,但是,当满足条件时,交易有时不会被触发,我不知道从现在开始该怎么做了。

//+------------------------------------------------------------------+

//---- 输入参数

extern double TakeProfit = 250.0;

extern double Lots = 0.1;

extern double StopLoss = 200.0;

//+------------------------------------------------------------------+

//|专家初始化函数 |

//+------------------------------------------------------------------+

int init()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//|专家的去初始化功能|

//+------------------------------------------------------------------+

int deinit()

{

//----

//----

return(0);

}

//+------------------------------------------------------------------+

//|专家启动功能|

//+------------------------------------------------------------------+

double pBid, pAsk;

datetime newbar;

int start()

{

//+------------------------------------------------------------------+

如果(newbar==Time[0])返回(0)。

否则newbar=Time[0]。

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

double Up_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_HIGH,0)。

double Dwn_MA = iMA(NULL,0,10,0,MODE_LWMA,PRICE_LOW,0);

//+------------------------------------------------------------------+

//+------------------------------------------------------------------+

//-- 触发交易

//+------------------------------------------------------------------+

int ticket, total;

double CD_Close = iClose(NULL,0,1);

total = OrdersTotal(); // 检查当前开放的交易总数

if(total < 2)

{

如果(CD_Close >= Up_MA+50*Point)//Hour()==Entry_Hour_1st &&Minute()==Entry_Minute_1st)

{

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,1,Ask-StopLoss*Point, Ask+TakeProfit*Point,

"My EA",Entry_magicNo_1st,0,Green)。

返回(0)。

}

如果(CD_Close <= Dwn_MA-50*Point)

{

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,1,Bid+StopLoss*Point, Bid-TakeProfit*Point,

"My EA",Entry_magicNo_1st,0,Red)。

返回(0)。

}

return(0);

}

return(0);

}

//+------------------------------------------------------------------+

你能展示一些应该触发交易而没有触发的情况吗?

 

嗨,Mladen。

请看附件中的截图。

谢谢

阮先生

附加的文件:
untitled.jpg  42 kb
 

嗨,Mladen,会不会是某些行的某种形式的错误导致了这个错误?

谢谢

 
tkuan77:
嗨,Mladen,会不会是某些行的错误导致了这个错误?谢谢

tkuan77

第一步,检查 终端的日志和专家标签,是否有一些错误信息写在那里

 
mladen:
tkuan77 作为第一步,检查终端的日志和专家标签,如果那里写有一些错误信息

嗨,mladen,谢谢,这个问题已经解决了。

然而,我的下一个问题是,我如何对交易进行相应的排序?

比如说。

在任何时间点的交易总量=2

每组标准有1笔交易。我如何确保系统不会在每组标准满足一次以上的情况下触发1次以上的交易?

以下是我的代码供参考。

total = OrdersTotal(); //检查 当前开放的交易总数

if(total < 2)

{

如果(Hour()==Entry_Hour_1st || Hour()==Entry_Hour_2nd)

{

//如果在此条件下当前没有交易,检查是否满足条件,如果是,触发交易,如果不是,不触发交易。

}

如果(Hour()==Entry_Hour_3rd || Hour()==Entry_Hour_4th)

{

//如果在这个标准下目前没有交易,检查是否满足条件,如果是,触发交易,如果不是,不触发交易。

}

}

非常感谢您的建议。谢谢。

谢谢。

 

ECN经纪商的订单到底应该如何处理?

 
apprentice coder:
ECN经纪商的订单到底应该如何处理?

编码学徒

唯一的区别是,在ECN经纪商上,你首先打开一个0 sl和tp字段的订单,然后修改订单(如果需要)以设置sl和tp,而在 "普通 "经纪商上,你可以在打开订单时放置sl和tp。 其余的都是完全一样的