您需要 登录 才可以下载或查看,没有帐号?注册
尊敬的编程高手老师:
在本论坛看见很多高手,烦请老师帮制作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精神的好人。
计算当前持仓单的总盈亏比 .
本函数计算原理如下:循环查询所有持仓单,过滤掉非本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 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);
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!