您需要 登录 才可以下载或查看,没有帐号?注册
//+------------------------------------------------------------------+
//| 19.mq4 |
//| bz. |
//| http://blog.163.com|
//+------------------------------------------------------------------+
#property copyright 下载更多外汇EA,外汇指标,交易系统,就到【外汇EA之家】
#property link http://www.eazhijia.com
#property description ①小数位置即对应整数网格取值位置,如;黄金正数个位取0,EUR小数0.00X取3 ②价格超过上阻力值不在开买单,超过下阻力不在开卖单,等于0无限制
#define BLWGZMA1 20050710
//宏定义命令#define用法,定义本EA操作的订单的唯一标识号码,
#define NL n
extern double 基础单量 = 0.1; //直接用交易量,
extern double 止赢 = 100; //直接出场点数,等于0此数无计算,无止赢
extern double 止损 =1000; //直接出场点数,等于0此数无计算,无止损
extern int 小数位置 = 0; //小数位置即对应取值位置,如;黄金正数个位取0,EUR小数0.00X取3
extern double 上阻力 = 0; //价格超过上阻力值不在开买单,超过下阻力不在开卖单,等于0无限制
extern double 下阻力 = 0;
//+------------------------------------------------------------------+
//全局变量
int wgb1=0,wgb2=0,wgb3=0,wgb4=0,wgb5=0,wgb6=0,wgb7=0,wgb8=0,wgb9=0,wgb0=0;
int wgs1=0,wgs2=0,wgs3=0,wgs4=0,wgs5=0,wgs6=0,wgs7=0,wgs8=0,wgs9=0,wgs0=0;
double wgd1,wgd2,wgd3,wgd4,wgd5,wgd6,wgd7,wgd8,wgd9,wgd0;
int OMb=0,OMp=0;
//+------------------------------------------------------------------+
//| expert initialization function
// 初始化 |
//+------------------------------------------------------------------+
int init()
{
if(基础单量 MarketInfo(Symbol(), MODE_MINLOT))
alert( 亲,基础单量 最小允许标准手数!
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function
//反初始化 |
//+------------------------------------------------------------------+
int deinit()
{
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Start function |
//主程序
//+------------------------------------------------------------------+
void start()//主程序—-每次成交价所驱动的运算过程
{
//---- check for history and trading—对交易历史进行检查
if(Bars 200 || IsTradeAllowed()==false)
return;
//如果K线数少于200根,或者如果允许智能交易交易=假时,返回
//+------------------------------------------------------------------+
//图表左上角显示相关信息
string str;
str = 当前订单数目= + OrdersTotal() + NL +
.................... + NL +
区间市值上限 + 上阻力 + NL +
区间设置下限 + 下阻力 + NL +
.................... + NL ;
Comment( str );
//+------------------------------------------------------------------+
//定义局部变
double wg,jg1,jg2;
jg1=NormalizeDouble(Bid/1000,3+小数位置-1);
//计算 ,当前价格除以100,并将结果保留小数点1位
jg2=jg1*1000;
if(小数位置==-2)
wg=100;
if(小数位置==-1)
wg=10;
if(小数位置==0)
wg=1;
if(小数位置==1)
wg=0.1;
if(小数位置==2)
wg=0.01;
if(小数位置==3)
wg=0.001;
if(小数位置==4)
wg=0.0001;
if(小数位置==5)
wg=0.00001;
if(小数位置==6)
wg=0.00001;
wgd0 = jg2;
wgd1 = wg*1+jg2;
wgd2 = wg*2+jg2;
wgd3 = wg*3+jg2;
wgd4 = wg*4+jg2;
wgd4 = wg*5+jg2;
wgd6 = wg*6+jg2;
wgd7 = wg*7+jg2;
wgd8 = wg*8+jg2;
wgd9 = wg*9+jg2;
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
CalculateCurrentOrders();
//当前持仓单的数量
CheckForOpen();
//则进行开仓检查。
//if(OrdersTotal() 0)
//CheckForClose();
//则进行平仓检查。
//----
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Check for open order conditions
//自定义函数(无返回值) 开仓策略 |
//+------------------------------------------------------------------+
void CheckForOpen()//开仓检查(判断开仓条件及其处理)
{
int res; //定义局部变量res为整数型
//+-----------
//止损止赢计算,
double bzs,bzy,szs,szy;
if(止损==0)
{
bzs=0;
szs=0;
}
else
{
szs=Bid+止损*Point;
bzs=Ask-止损*Point;
}
if(止赢==0)
{
bzy=0;
szy=0;
}
else
{
szy=Bid-止赢*Point;
bzy=Ask+止赢*Point;
}
//+-----------
int sss=0,bbb=0;
if(下阻力==0)
sss=1;
if(下阻力!=0)
{
if(Bid 下阻力)
sss=1;
else
sss=0;
}
if(上阻力==0)
bbb=1;
if(上阻力!=0)
{
if(Ask 上阻力)
bbb=1;
else
bbb=0;
}
//---- sell conditions-卖出条件
if(OMp==1)
{
if(wgs1==0)
{
if( Bid==wgd1 )
{
res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy, wgs1 ,BLWGZMA1,0,Red);
//发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
wgs1=1;
}
}
if(wgs2==0)
{
if( Bid==wgd2 )
{
res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy, wgs2 ,BLWGZMA1,0,Red);
//发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
wgs2=1;
}
}
if(wgs3==0)
{
if( Bid==wgd3 )
{
res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy, wgs3 ,BLWGZMA1,0,Red);
//发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
wgs3=1;
}
}
if(wgs4==0)
{
if( Bid==wgd4 )
{
res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy, wgs4 ,BLWGZMA1,0,Red);
//发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
wgs4=1;
}
}
if(wgs5==0)
{
if( Bid==wgd5 )
{
res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy, wgs5 ,BLWGZMA1,0,Red);
//发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
wgs5=1;
}
}
if(wgs6==0)
{
if( Bid==wgd6 )
{
res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy, wgs6 ,BLWGZMA1,0,Red);
//发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
wgs6=1;
}
}
if(wgs7==0)
{
if( Bid==wgd7 )
{
res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy, wgs7 ,BLWGZMA1,0,Red);
//发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
wgs7=1;
}
}
if(wgs8==0)
{
if( Bid==wgd8 )
{
res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy, wgs8 ,BLWGZMA1,0,Red);
//发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
wgs8=1;
}
}
if(wgs9==0)
{
if( Bid==wgd9 )
{
res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy, wgs9 ,BLWGZMA1,0,Red);
//发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
wgs9=1;
}
}
if(wgs0==0)
{
if( Bid==wgd0 )
{
res=OrderSend(Symbol(),OP_SELL,基础单量,Bid,3,szs,szy, wgs0 ,BLWGZMA1,0,Red);
//发送仓单(当前货币对,卖出方向,开仓量计算(),买价,滑点=3,无止损,无止赢,订单编号,标上红色箭头)
wgs0=1;
}
}
}
//---- buy conditions-买入条件
if(OMb==1)
{
if(wgb1==0)
{
if ( Ask==wgd1 )
{
res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy, wgb1 ,BLWGZMA1,0,Blue);
//发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
wgb1=1;
}
}
if(wgb2==0)
{
if (Ask==wgd2 )
{
res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy, wgb2 ,BLWGZMA1,0,Blue);
//发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
wgb2=1;
}
}
if(wgb3==0)
{
if ( Ask==wgd3 )
{
res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy, wgb3 ,BLWGZMA1,0,Blue);
//发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
wgb3=1;
}
}
if(wgb4==0)
{
if (Ask==wgd4 )
{
res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy, wgb4 ,BLWGZMA1,0,Blue);
//发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
wgb4=1;
}
}
if(wgb5==0)
{
if (Ask==wgd5 )
{
res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy, wgb5 ,BLWGZMA1,0,Blue);
//发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
wgb5=1;
}
}
if(wgb6==0)
{
if (Ask==wgd6 )
{
res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy, wgb6 ,BLWGZMA1,0,Blue);
//发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
wgb6=1;
}
}
if(wgb7==0)
{
if (Ask==wgd7 )
{
res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy, wgb7 ,BLWGZMA1,0,Blue);
//发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
wgb7=1;
}
}
if(wgb8==0)
{
if (Ask==wgd8 )
{
res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy, wgb8 ,BLWGZMA1,0,Blue);
//发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
wgb8=1;
}
}
if(wgb9==0)
{
if (Ask==wgd9 )
{
res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy, wgb9 ,BLWGZMA1,0,Blue);
//发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
wgb9=1;
}
}
if(wgb0==0)
{
if (Ask==wgd0 )
{
res=OrderSend(Symbol(),OP_BUY,基础单量,Ask,3,bzs,bzy, wgb0 ,BLWGZMA1,0,Blue);
//发送仓单(当前货币对,买入方向,开仓量计算(),卖价,滑点=3,无止损,无止赢,订单编号,标上蓝色箭头)
wgb0=1;
}
}
}
//----
}
//+------------------------------------------------------------------+
//| Check for close order conditions
//自定义函数(无返回值) 平仓策略 |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Calculate open positions
//自定义函数(返回-整数型数据) 仓单查询与统计 |
//+------------------------------------------------------------------+
int CalculateCurrentOrders()//函数作用,计算当前持仓单的数量
{
//----
wgb1=0;wgb2=0;wgb3=0;wgb4=0;wgd5=0;wgb6=0;wgb7=0;wgb8=0;wgb9=0;wgb0=0;
wgs1=0;wgs2=0;wgs3=0;wgs4=0;wgs5=0;wgs6=0;wgs7=0;wgs8=0;wgs9=0;wgs0=0;
for(int i=0;i OrdersTotal();i++)
//计次循环(i=0至订单数目,i=i+1)-循环检测当前的订单队列
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
//如果 没有本系统交易的仓单类型,则跳出循环
if(OrderSymbol()==Symbol() OrderMagicNumber()==BLWGZMA1)
//如果 仓单货币对是当前货币对 且 仓单编号是本系统编号 时
//(判断这个订单是不是当前EA操作的,避免EA误操作其他程序控制的持仓单)
{
if(OrderType()==OP_BUY OrderComment()== wgb1 )
wgb1=1;
if(OrderType()==OP_BUY OrderComment()== wgb2 )
wgb2=1;
if(OrderType()==OP_BUY OrderComment()== wgb3 )
wgb3=1;
if(OrderType()==OP_BUY OrderComment()== wgb4 )
wgb4=1;
if(OrderType()==OP_BUY OrderComment()== wgb5 )
wgb5=1;
if(OrderType()==OP_BUY OrderComment()== wgb6 )
wgb6=1;
if(OrderType()==OP_BUY OrderComment()== wgb7 )
wgb7=1;
if(OrderType()==OP_BUY OrderComment()== wgb8 )
wgb8=1;
if(OrderType()==OP_BUY OrderComment()== wgb9 )
wgb9=1;
if(OrderType()==OP_BUY OrderComment()== wgb0 )
wgb0=1;
if(OrderType()==OP_SELL OrderComment()== wgs1 )
wgs1=1;
if(OrderType()==OP_SELL OrderComment()== wgs2 )
wgs2=1;
if(OrderType()==OP_SELL OrderComment()== wgs3 )
wgs3=1;
if(OrderType()==OP_SELL OrderComment()== wgs4 )
wgs4=1;
if(OrderType()==OP_SELL OrderComment()== wgs5 )
wgs5=1;
if(OrderType()==OP_SELL OrderComment()== wgs6 )
wgs6=1;
if(OrderType()==OP_SELL OrderComment()== wgs7 )
wgs7=1;
if(OrderType()==OP_SELL OrderComment()== wgs8 )
wgs8=1;
if(OrderType()==OP_SELL OrderComment()== wgs9 )
wgs9=1;
if(OrderType()==OP_SELL OrderComment()== wgs0 )
wgs0=1;
}
}
return(0);
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+复制代码
外汇交易有很大的风险性,本站所有资源均来自网络,请选择使用,如若出现亏损,本站不承担任何责任!