如何编码? - 页 34

 

需要帮助来编辑EuroX2_sl EA的部分内容 .......

嗨,所有的程序员。

我是外汇交易 的新手,也是这个论坛的新手。我第一次学习的是10点3,然后是EuroX2_sl,由10点3的EA脚本扩展而来。在做了一些前向测试后,对我来说,这个EA对于像我这样的新手来说是很好的学习对象。当向前测试时,它很好地打开了头寸,但当市场逆转或趋势改变时,它没有按照我的要求关闭头寸(即使我已经有条件)。也许是代码出了问题(因为我不是程序员),我想我需要你们任何人的帮助来解决这个问题。请检查一下哪部分可能出了问题?

我认为开仓是可以的,因为它可以获利,但问题是关仓,因为它没有关仓(买入或卖出),即使指标存在,这使得浮动损失相当多.......。

有谁知道这个问题,请帮助我编辑这个代码.......。

我所做的代码是:

-------- EuroX2_sl脚本的一部分,从10点扩展到3点,因为我认为是为了平仓 -------

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

// 正确地进入市场是很重要的。

// 但更重要的是正确退出......

for(cnt=0;cnt<total;cnt++)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

if(OrderType()<=OP_SELL && // 检查开仓情况

OrderType()<=OP_BUY && //检查开仓情况

OrderType()>=OP_SELL&&。

订单类型()>=OP_BUY&&。

OrderSymbol()==Symbol())// 检查符号

{

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

如果(OrderType()==OP_BUY)//多头头寸被打开

{

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

//+ 平仓的条件

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

//+--------------- 关闭买入头寸 ----------------------------

if ( Stoch_Main_M15_Cu < Stoch_Sig_M15_Cu )

//+ stochastic main < stochastic signal

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

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet) ; //平仓

return(0); // 退出

}

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

// 检查拖曳式止损

如果(TrailingStop>0)

{

如果(Bid-OrderOpenPrice()>Point*TrailingStop)

{

如果(OrderStopLoss()<Bid-Point*TrailingStop))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green) 。

返回(0)。

}

}

}

}

//+--------------- 关闭卖出头寸 --------------------------------

否则 // 转入空头头寸

{ //+ 不要删除

if(OrderType()==OP_SELL) //空头头寸被打开

{

}

//应该关闭吗?

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

if ( Stoch_Main_M15_Cu > Stoch_Sig_M15_Cu )

//+ stochastic main > stochastic signal

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

{

OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet) ; //平仓

return(0); // 退出

}

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

// 检查拖曳式止损

如果(TrailingStop>0)

{

如果((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

如果((OrderStopLoss()>(Ask+Point*TrailingStop))|| (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(), Ask+Poi nt*TrailingStop,OrderTakeProfit(),0,Red)。

返回(0)。

}

}

}

}

}

}

--------------------------------------------------------------

谢谢你。

fxgroup

 

什么是最好的周线/日线指标

这个问题可能是针对有经验的交易者的。

哪些是可靠的(已经测试过的)指标,可以让我们了解主要趋势的变化。

1- 未来一周

2- 未来一天(或第二天)。

我知道我不是在问B/S的进入水平。

注:我认为一旦我们确定了下周的走势方向,我们就可以为何时入场打下基础。

谢谢

 

mql问题

代码。

//如果我们已经开了仓,我们要处理这些仓位

//修改止损

cnt=OrdersTotal();

while(cnt>=0)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed==False)

{

Print("Ticket",OrderTicket()," modified.");//为什么在修改订单之前要写在这里(我的理解)?

如果(OrderType()==OP_SELL)

{

如果(TrailingStop>0)

{

如果((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))

{

如果(OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple) 。

返回(0)。

大家好,谁能解释一下为什么:Print("Ticket",OrderTicket()," modified.");是在修改订单之前写的。按照我的理解,即使订单没有被修改,它也会打印"订单票 被修改"。这是一段终结者的代码。

谢谢你。

 
Flytox:
代码。

//如果我们有开仓,我们就处理它们

//修改止损

cnt=OrdersTotal();

while(cnt>=0)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber) // && Reversed==False)

{

Print("Ticket",OrderTicket()," modified.");//为什么在修改订单之前要写在这里(我的理解)?

如果(OrderType()==OP_SELL)

{

如果(TrailingStop>0)

{

如果((OrderOpenPrice()-Ask)>=(TrailingStop*Point+Pips*Point))

{

如果(OrderStopLoss()>(Ask+Point*TrailingStop) || OrderStopLoss()==0)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderClosePrice()-TakeProfit*Point-TrailingStop*Point,0,Purple) 。

返回(0)。

大家好,谁能解释一下为什么:Print("Ticket",OrderTicket()," modified.");是在修改订单之前写的。按照我的理解,即使订单没有被修改,它也会打印 "订单票被修改"。这是一段终结者的代码。

谢谢你。

你是对的,应该在修改后写,否则信息应该是:"Trying to modify order :",OrderTicket()

 

谢谢你,Kalenzo,我正在学习mql,你的文章和答案非常有帮助,再次感谢。

 

如果你做以下四个编辑,可能就足够了。

1.注释掉第102行,改为

//IsTrade = True;[/PHP]

2. Change blank line 104 to be

if ( Bid > OrderOpenPrice() - GAP * Point ) IsTrade = true;

3. Change blank line 120 to be

[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;

4.添加 "GAP "变量(extern int),它是 "对冲 "应该出现的点数的设定。

不过,以前有人在这个论坛的某个地方指出,你不能在同一个符号中真正地 "对冲";这和吃亏是一样的。也许最好的办法是先吃亏,然后在价格反转时再回来....。

 
ralph.ronnquist:
如果你做以下四个编辑,可能就足够了。

1.删去第102行,改为

//IsTrade = True;[/PHP]

2. Change blank line 104 to be

if ( Bid > OrderOpenPrice() - GAP * Point ) IsTrade = true;

3. Change blank line 120 to be

[PHP]if ( Ask < OrderOPenPrice() + GAP * Point ) IsTrade = true;

4.添加 "GAP "变量(extern int),它是 "对冲 "应该出现的设定点数。

虽然,之前有人在这个论坛的某个地方指出,你不能真的在同一个符号中 "对冲";这和吃亏是差不多的。也许最好的办法是先吃亏,然后在价格反转时再回来....。

没有任何帮助。而且,更具体地说,我实际上想让我的EA做的是以下事情。

该EA将根据某些条件进行买入/卖出交易。一旦进入最初的交易,有时可能需要三到五天的时间,才能最终以止盈收场。同时,在这三到五天的时间里,可能会有几个相反方向的交易机会。我希望EA能够利用这些机会,同时保留原始交易,因为它最终会以盈利收场。这些与原始交易方向相反的额外交易机会在技术上将是对原始交易的对冲,尽管它们最终也会以获利平仓。但要清楚的是,我仍然只希望EA只在同一方向上有一个交易机会。因此,在同一时间打开的最大交易将是一个买入和一个卖出。

我希望这对你有帮助。

谢谢你的答复

 

嗯;我没有试用你的EA,但通过阅读逻辑,在我看来,阻止买入后的卖出的唯一原因是 "IsTrade "为真。(除了它不会在买入的同时开出卖出)。

因此,如果你想让卖出逻辑无条件地适用,我认为只用我的编辑(1)--忘记2-4--就能做到。或者删除"IsTrade "逻辑。

虽然,还有 "TickCheck "和 "BarCount "的从属逻辑,它可以在相同的tick或相同的bar上阻止另一个交易,但我假设你仍然想应用它。

当然,我对你省略的信号传递部分不能说太多。例如,如果发出 "Sell_Signal "需要考虑到 "BuyOrders",那么就有更多的事情要做。

 

让编码变得有趣

在你按下返回键之前,请你帮助我。

我是编码指标的新手,但我知道如何编码EA的,虽然。不是100%,但也足够好。

总之,我想知道是否有好心人可以帮助我。

请您向我解释每一行,并给我一个例子。

p.s. 这是MACD 代码的一部分。

int start()

{

int limit;//what does Limit equal,0?

int counted_bars=IndicatorCounted();

//---- last counted bar will be recounted

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//---- macd counted in the 1-st buffer

for(int i=0; i<limit; i++)//i<0?

MacdBuffer=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);

//---- signal line counted in the 2-nd buffer

for(i=0; i<limit; i++)

SignalBuffer=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);

//---- done

return(0);

}

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

如果有人或更多的人帮助我,给我一些指标编码的提示,或类似的东西,我会非常高兴。

谢谢你。

丹。

 

如何在EA中运行一个脚本?

你好。

我想知道如何在EA中的脚本目录中运行一个脚本。

如果(条件为真)

{

运行脚本。

}

预先感谢

尊敬的先生

尹志强