如何编码? - 页 166

 

谢谢你的回答。

但是,如果在平仓时有滑点,这就不起作用了,对吗?

 
codersview:
大家好。

我得到了一个关于RSI和MA的EA的问题...

我得到的指标工作正常...我只想把它转换为EA...

我试着做了几件事。IndicatorCounted()在EA中不起作用,所以我尝试对for循环的数值进行硬编码(bar=0; bar<15; bar++),我得到了正确的RSI,但SMA没有给出正确的数值......

我附上了SMA与RSI交叉的代码...。

所以,谁能帮助我把这个指标转换为EA。

***************************************************************************************************************************************

#属性 indicator_separate_window

#属性 indicator_buffers 2

#属性 indicator_color1 草坪绿

#属性 indicator_color2 DarkBlue

double ExtMapBuffer1[];

double ExtMapBuffer2[]。

int init()

{

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS))。

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,2);

SetIndexBuffer(1,ExtMapBuffer2)。

返回(0)。

}

int deinit()

{

return(0);

}

int start()

{

int bar, limit;

int counted_bars=IndicatorCounted();

if(counted_bars<0) return(-1);

如果(counted_bars>0) counted_bars--。

limit=Bars-IndicatorCounted()。

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

ExtMapBuffer1 = iRSI(NULL,0,14,PRICE_TYPICAL,bar)。

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

ExtMapBuffer2=iMAOnArray(ExtMapBuffer1,Bars,14,0,MODE_SMA,bar)。

返回(0)。

}

***************************************************************************************************************************************

谢谢你,谢谢你。

加内什

加内什。

试着按时间顺序做条形图。

不要用for(bar=0; bar<limit; bar++)

使用for(bar=limit-1; bar>=0; bar--)

查兹莫尼

 

你好

谢谢你的快速回复...我试过了,但没有任何区别......。

如果我们在循环中使用Bars,它必须计算每一个tick 的全部数值(所有的bars)......而且可能会有延迟。此外,SMA值也是零。

在指标中,我们将通过使用IndicatorCounted()只计算新条的RSI和EMA,但我们不能在EA中使用它。

问题的确切点在于第二个for循环和iMAOnArray的值。

第一个for循环工作得很好,即使我们对它进行硬编码......

 
jan100:
谢谢你的回答。但如果在平仓时有滑点,这就不起作用了,对吗?

有些经纪人在评论区写上[sl]和[tp]。你也可以使用它。

 

谢谢,我会试试的。

怎样才能选择具有正确魔力数字的最后一个关闭的订单?

 
jan100:
谢谢。我会试试的。怎么可能用正确的数字来选择最后一个关闭的订单呢?

如果你在历史列表中找到它,这是一个已关闭的订单,如果在总列表中 - 尚未打开。

 

Ea代码请求。在开立新的头寸时关闭之前的订单

你好,我想申请一个代码,当新的头寸打开时,之前的订单将自动关闭,意思是我不想使用止盈 或追踪。

例子。

当买入订单打开时,之前的卖出订单将被关闭。

当卖出订单打开时,之前的买入订单将被关闭。

我发现代码是OrderCloseBy(),但我不知道到底该把这段代码放在哪里。

谢谢

 
darkkiller:
你好,我想申请一个代码,当新的头寸打开时,之前的订单会自动关闭。我不希望使用止盈或追踪。

例子。

当买入订单打开时,先前的卖出订单将关闭。

当卖出订单打开时,之前的买入订单将被关闭。

我发现代码是OrderCloseBy(),但我不知道到底该把这段代码放在哪里。

谢谢

问题解决

在订单发送买入后放上

{

OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // 关闭头寸

}

放在OrderSend SELL之后

{

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

}

我从ForexFactory获得的其他代码,感谢(Fulltime247,magnumfreak)

外部int MAGICTerminal=101;

extern double LOTSize=0.10;

extern string ORDERComment="Order Comment Text";

//TOTAL数...

int btotal=0; int stotal=0; int ticket=0; double closelots=0; bool xbool;

for( int cnt=OrdersTotal()-1;cnt>=0;cnt--)

{

xbool=OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

如果(OrderType()==OP_BUY && OrderMagicNumber()==MAGICTerminal && OrderSymbol()==Symbol()){btotal++; ticket=OrderTicket(); closelots=OrderLots(); }

if(OrderType()==OP_SELL &&OrderMagicNumber()==MAGICTerminal &&OrderSymbol()==Symbol()){total++; ticket=OrderTicket(); closelots=OrderLots(); }

}//结束总数计数。

if(WHATEVER YOUR CONDITION FOR A BUY)

{

if(btotal>0){OrderClose(ticket,closelots,Bid,3,CLR_NONE); }

ticket=OrderSend(Symbol(),OP_BUY,LOTSize,Ask,3,0,0,ORDERComment,MAGICTerminal,0,Magenta)。

}

if(WHATEVER YOUR CONDITION FOR A SELL)

{

if(stotal>0){OrderClose(ticket,closelots,Ask,3,CLR_NONE); }

ticket=OrderSend(Symbol(),OP_SELL,LOTSize,Bid,3,0,0,ORDERComment,MAGICTerminal,0,Lime) 。

}
 
 

我是MT4的新手。

我想计算shortMA越过longMA后的条数,有谁知道如何编码这个功能?

谢谢。

原因: