外汇EA
用时间进行止盈的模型
回复:0  浏览:388
  • 楼主admin 圈主
  • 2020-01-01 14:00
前不久接触一朋友推荐的平台,有操盘手带单,属于懒人躺赚模式,据说月收益比较稳定。我将他们操盘手的交割单仔细研究以后发现,三个特点:①只设止损,不设止盈。②做单频率较低,一天一次左右。③持仓时间很短,最多也就一个小时多点。到了时间,就关仓止盈了。     这是个非常好的想法,由于外汇市场复杂多变,因此,止盈其实是非常难把握的,但由于外汇市场具有趋势性,因此,方向性又比较好把握。只是,就算能把握对方向,究竟能把多久,把握到什么程度,都是未知数。     所以,外汇市场的难易如下:①猜方向。(易)②猜方向持续点数。(难)③猜方向持续时间。(难)   因此,就统一只持仓一小会,时间到了,就走人了,不赚太多,求稳。   我将此想法编写成EA,运行情况大致如下:   测试时间是2017年1月1日至2019年6月5日。测试品种黄金。测试周期30分钟。由于只是一个入场及其简单的模型,各种参数也根本没有优化,因此模型比较粗糙,回撤比较大。但可以看出,坚持这样运行,以6000美金本金,也实现了8175美金盈利。源代码如下:extern double FirstLots=1;extern int MagicNumber = 0;extern int Slippage = 3;extern int 紧缩点数;extern int 时间=1000;extern int 止损点数;int onInit() {   return(INIT_SUCCEEDED); }void onDeinit(const int reason) { }void onTick() {     double L1=Low[1];     double L2=Low[2];     double L3=Low[3];     double H1=High[1];     double H2=High[2];     double H3=High[3];     double o1=Open[1];     double o2=Open[2];     double o3=Open[3];     double c1=Close[1];     double c2=Close[2];     double c3=Close[3];    double OrdersTotalTrue=0;    double OrdersOpenTime=0;    if (OrdersTotal() != 0)     {       for(int pos1=0; pos1L2 L2 L3 c1-o1 0  c2-o2 0  c3-o3 0 L1-L2 紧缩点数*Point L2-L3 紧缩点数*Point)         {           OrderSend(Symbol(), OP_BUY, FirstLots, NormalizeDouble(Ask,Digits), Slippage,Ask-止损点数*Point,0, Order Buy , MagicNumber, 0, Red);         }       else if(H1时间)   {     closeallorder();   } }void closeallorder() {   int t=OrdersTotal();   for(int i=t-1;i i--)     {     if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)        {         if(OrderSymbol()==Symbol()  OrderMagicNumber()==MagicNumber)         {            OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),300,Green);         }        }     }}     开仓逻辑很简单,利用红三兵或者黑三兵裸K。参数设置如下: