29评论

1收藏

一个平仓策略的设想请版主能否用EA做出来

avatar 骨灰实战 | 7474 人阅读 | 29 人评论 | 2013-05-08

尊敬的编程高手老师:
在本论坛看见很多高手,烦请老师帮制作EA。
策略如下:(例子)
条件1:把持仓中的BUY单按照盈利大于等于10美金并且小于等于20美金之间的单子选出来;
条件2:把持仓中的SELL单按照亏损小于等于-10美金并且亏损大于0美金之间的单子选出来;
条件3:然后把符合条件1的单子相加计算总利润减去符合条件2的单子相加计算总亏损,最终得出的利润差值大于等于0美金,就把条件1和条件2的单子一起平仓。
意思是只有同时符合(条件1、条件2、条件3),才能按照利润差是大于等于0才执行一起平仓,不能单独去平仓条件1,或者条件2,。
比如这里设置利润差值是+10美元则把这些条件1和条件2的多空单子一起平仓。
--------------------------------------------
变量参数赋值开关按钮设置:
①本EA设置做个总开关,需要的时候开启。//设定TRUE就是开启这个EA,设定FALSE就是停止EA
②条件1:BUY单可以选择设置TRUE或者FALSE
SELL单可以选择设置TRUE或者FALSE
盈利大于等于10美金    //可以自由设置金额参数比如40美金
并且小于等于20美金  //  可以自由设置金额参数比如50美金
③条件2:BUY单可以选择设置TRUE或者FALSESELL单可以选择设置TRUE或者FALSE
亏损小于等于-10美金   //  可以自由设置金额参数 比如-50美金
并且亏损大于0美金  //可以自由设置金额参数 比如-10美金
④利润差可以设置参数  比如12.34美金。但必须是大于等于0的正数,不能是负数。

策略结束。请高手老师百忙中帮忙写个EA。
此致敬礼感谢。
与大家共同学习,支持论坛,支持与大家共享EA精神的好人。
""
还没有人打赏,支持一下

评论|共 29 个

乱枪打鸟

发表于 2013-5-8 23:22:30 | 显示全部楼层

也许这就是要收费了

外汇尼玛

发表于 2013-5-9 10:20:00 | 显示全部楼层

事先准备好你的策略,QQ705601985发过来。

路路通

发表于 2013-5-9 13:56:30 | 显示全部楼层

也许这就是要收费了

骨灰实战

发表于 2013-5-9 18:11:42 | 显示全部楼层

等候高手来回复

杨晨亮

发表于 2013-6-12 14:04:36 | 显示全部楼层

    计算当前持仓单的总盈亏比 .
本函数计算原理如下:循环查询所有持仓单,过滤掉非本K下商品的订单。累加所有盈利单的盈利总数和所有亏损单的亏损总数。返回 两者的比值源代码如下:
double GetYKB()
{
double PWin=0,PLose=0;
for(int i=0;i<OrdersTotal();i++)
   {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
     if(OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
     {
      if(OrderProfit()>0)
      {
      
       PWin+=MathAbs(OrderOpenPrice()-(Ask+Bid)/2);        
      }else
      {
      
       PLose+=MathAbs(OrderOpenPrice()-(Ask+Bid)/2);  
      }
     }
   }
  
if(PLose==0)return(10000);
return(PWin/PLose);
}
      平掉所有持仓单
本函数原理:先循环读取所有持仓单,并过滤掉非本K线商品的持仓单,循环的同时,用数组记录所有过滤后的持仓单的Ticket号码及多空类型。然后循环一次选择每一个Ticket对应的持仓单,并更具多空类型进行平仓。源代码如下:
bool ClosePosition()//Close all holding positions
{
bool Flag=true;
int tick[200],tp[200];  
int j=0;
  for(int i=0;i<OrdersTotal();i++)
   {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
     if(OrderSymbol()==Symbol() &&  OrderMagicNumber()==Magic)
     {
      j=j+1;
      tick[j]=OrderTicket();      
      tp[j]=OrderType();
     }
   }
if (j!=0)
{      
   for(i=1;i<=j;i++)
   {
    OrderSelect(tick[i], SELECT_BY_TICKET);
    switch(tp[i])
    {
     case OP_BUY:
      if(OrderClose(tick[i],OrderLots(),Bid,滑点偏移点数,CLR_NONE)==false) Flag=false;      
      break;
     case OP_SELL:
      if(OrderClose(tick[i],OrderLots(),Ask,滑点偏移点数,CLR_NONE)==false) Flag=false;      
      break;     
    }
   }
}
return(Flag);
}

紫衣

发表于 2014-11-15 12:46:33 | 显示全部楼层

研究研究

还要坚持多久

发表于 2015-1-2 19:30:27 | 显示全部楼层


呵呵

依路有我

发表于 2015-1-4 01:38:38 | 显示全部楼层

亏损中……………………

曋曋

发表于 2015-1-4 09:25:03 | 显示全部楼层

找版主

123下一页
您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则