如何编码? - 页 77

 

一目了然的锦绣十字星只开买盘!

大家好。

在过去的几周里,我一直在编程,并且进展得相当不错。但是我遇到了一个问题,我最近试图编写的相当简单的系统不能为我工作。我已经重写了大约五次,使用不同的代码,尝试了专家顾问构建器和改变其他交叉策略等,但该系统只能打开买入交易。(在我遇到的其他问题中)任何帮助都将是非常感激的,因为它似乎是一个有利可图的系统。(好吧,每个人在编程时似乎都是这么想的,但手动逐条回测显示出积极的结果。)

系统:图表设置

一目了然的Kinko Hyo指标,默认设置为9、26、52。只显示Tenkan-Sen和Kijun-Sen,隐藏Senkou和Chikou线。

第一个入口(解释为长线/买入--同样适用于卖出的操作方向)

Tenkan-Sen与Kijun-Sen交叉,并且价格在Kijun-Sen之上。 止损为Tenkan-Sen以下的货币对价差。 在Kijun-Sen处止损--价差点数,除非出现反向信号(你在那里关闭)。

重返市场(有时一些交易在赶上 "大行情 "之前就被止损了

如果止损被击中,在Tenkan-Sen和Kijun-Sen交叉之前,如果价格收于Tenkan-Sen之上,并且Tenkan-Sen仍然在Kijun-Sen之上,则可以重新开仓。 止损同前。

摘要

当Tenkan-Sen交叉于Kijun-Sen之上时进场做多,止损在Kijun-Sen之下一定距离。 如果在交叉之前止损并发生反转,如果价格上升到Tenkan-Sen之上,可以重新进场做多。 没有止盈,只是跟踪Kijun-Sen的止损。

这个系统确实倾向于喜欢趋势,但在区间波动的市场中损失不应该太大。我计划在日线上进行交易,但当我的专家系统运行时,也可能进行其他交易。事实上,在我测试过的一些市场上,该EA目前是盈利的,甚至在其正常工作之前就已经盈利了

如果有人能解读出我的错误所在,请附上MQ4。

谢谢。

霍华德

P.S. 如果能在这方面得到一些帮助就更好了,因为明天是我的生日,如果能得到一些帮助就更好了!

我也向所有认为一目连不应该自动化的从业者道歉,因为它是为了 "一目了然 "地交易市场。然而,我觉得这个指标是如此美妙,尤其是Kijun-Sen,它在许多长期趋势中的回调之外进行交易,因此它非常适合于自动化

附加的文件:
ikh_pro.mq4  5 kb
 
gmax111:
我在写一个买入和卖出EMA值的EA。我想通过在买入前检查最后10个柱状体的收盘价是否高于EMA来过滤它......有人能帮助我吗?

bool OkToBuy()

{

for(int j = 1, j < 11, j ++) if(Close[j] < EMA) return(false);

return(true);

}

 
Michel:

bool OkToBuy()

{

for(int j = 1, j < 11, j ++) if(Close[j] < EMA) return(false);

return(true);

}

谢谢你,米歇尔。

这是那些让我感到困惑的事情之一,但现在我觉得自己像个傻瓜一样想太多了,哈哈......。再次感谢!!!。

 

如何编码!?

我认为这个Ea非常好......

但只在一对中打开一个订单...为什么?

 

致阿德里亚

阿德里亚

我对你的问题产生了兴趣,并进行了操作。

看起来你需要做的事情是这样的。

首先,全局声明Var1、Var2。

然后尝试这样做。

if (Hour() == 12) Var1 = iHigh(NULL,0,1)。

如果(Hour() == 12) Var2 = iLow(NULL,0,1)。

Metaeditor导航器给出了Hour()的解释。

在TSD中搜索 "交易时间 "可以得到更多的例子。

如果你的EA显示出前景,你能给我一份副本吗?

大贝

 

致大贝

我创建了类似的EA。你必须根据你的图表时间来改变TIME值。

图表时间。

附加的文件:
 

需要帮助解决这个功能closealltrades

我注意到经纪人有时会重新报价,导致EA无法关闭

订单。 我怎样才能防止EA继续下去,直到所有的订单根据其神奇的数字被关闭。

顺序继续下去,也许可以设置一个5秒钟的睡眠函数 和一个while循环来检查并关闭订单,然后再继续。

循环来检查并在继续之前关闭订单。 下面是

closealltrades函数。 谢谢你的帮助,并提前感谢。

void CloseAllTrades()

{

int rc;

int cnt;

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

如果(OrderMagicNumber()==GetMagicNumber()

{

rc= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow) 。

if(!rc)

Log("Close error="+GetLastError())。

}

}

}

 
hedge4x:
我注意到经纪人有时会重新报价,导致EA无法关闭

的订单。 我怎样才能防止EA继续下去,直到所有的订单根据其神奇的数字被关闭。

暂停,也许可以设置一个5秒钟的睡眠功能和一个while循环来检查和关闭订单。

一个while循环来检查并在继续之前关闭订单。 下面是

closealltrades函数。 谢谢你的帮助,并提前感谢。

void CloseAllTrades()

{

int rc;

int cnt;

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

如果(OrderMagicNumber()==GetMagicNumber()

{

rc= OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow) 。

if(!rc)

Log("Close error="+GetLastError())。

}

}

}

bool IsAllClosed ; //Global variable

void CloseAllTrades()

{

int cnt;

IsAllClosed = true;

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

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);

if (OrderMagicNumber()==GetMagicNumber())

IsAllClosed = IsAllClosed && OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), MarketInfo(OrderSymbol(), MODE_SPREAD), Yellow);

}

}

void start()

{

while(!IsAllClosed) {CloseAllTrades(); return;}

...

 

谢谢

谢谢你,米歇尔,谢谢你的帮助。

我将试一试。

 

这一行 while(!IsAllClosed) {CloseAllTrades(); return;}。

在主程序中的这句话将关闭所有未结头寸,如果MT下跌

而我又启动了它。 是否有办法将这一行

在closealltrades函数 中,这样它就不会在MT4重启后关闭所有未结头寸了。

在MT4重新启动后不关闭所有未结头寸?

谢谢。