#property link "http://babelfish.taobao.com/"
extern string comm1="只能进一个首单,只做一次循环";
extern string comm2="价位为0则直接进单";
extern int 多单1空单2=1;
extern double 价位=0;
extern bool 是否显示文字标签=true;
extern double 单量=0.1;
extern double 固定止损=20;
//extern double 止盈=20;
extern double 滑点=3;
extern string 备注="20121128 QQ 拉迪兔-无指标做单";
extern int magic=4346;
extern int 第一段加仓个数=5;
extern double 第一段加仓距离=2;
extern int 第二段加仓个数=4;
extern double 第二段加仓距离=5;
extern int 第三段加仓个数=3;
extern double 第三段加仓距离=10;
//===========================================================================
extern double 利润移动止损激活=2000;
extern double 利润移动止损回撤=300;
double 最大利润=0;
extern double 空单离场价位=0;
extern double 多单离场价位=0;
extern bool 成本保护开关=true;
extern double 获利后一次性保护激活点数=10;
extern double 获利后一次性保护点数=1;
extern bool 移动止损开关=true;
extern double 移动止损激活点数=30;
extern double 回调离场距离=10;
extern double 跳跃距离=10;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
int 系数=1;
if(Digits==3||Digits==5||(StringFind(Symbol(),"XAU",0)==0&&Digits==2)||(StringFind(Symbol(),"GOLD",0)==0&&Digits==2))系数=10;
if(StringFind(Symbol(),"XAU",0)==0&&Digits==3)系数=100;
滑点*=系数;
第一段加仓距离*=系数;
第二段加仓距离*=系数;
第三段加仓距离*=系数;
固定止损*=系数;
获利后一次性保护激活点数*=系数;
获利后一次性保护点数*=系数;
移动止损激活点数*=系数;
回调离场距离*=系数;
跳跃距离*=系数;
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
int t;
if(价位==0)
if(多单1空单2==1)
{
繁忙等待组件();
t=OrderSend(Symbol(),OP_BUY,单量,Ask,滑点,0,0,备注,magic);
if(OrderSelect(t,SELECT_BY_TICKET))
{
OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()-固定止损*Point,0,0);
报错组件("");
多单1空单2=0;
}
}
if(价位==0)
if(多单1空单2==2)
{
繁忙等待组件();
t=OrderSend(Symbol(),OP_SELL,单量,Bid,滑点,0,0,备注,magic);
if(OrderSelect(t,SELECT_BY_TICKET))
{
OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()+固定止损*Point,0,0);
报错组件("");
多单1空单2=0;
}
}
if(价位!=0)
if(多单1空单2==1)
{
if(价位>Close[0])
{
繁忙等待组件();
t=OrderSend(Symbol(),OP_BUYSTOP,单量,价位,滑点,价位-固定止损*Point,0,备注,magic);
if(t>0)
多单1空单2=0;
}
else
{
繁忙等待组件();
t=OrderSend(Symbol(),OP_BUYLIMIT,单量,价位,滑点,价位-固定止损*Point,0,备注,magic);
if(t>0)
多单1空单2=0;
}
}
if(价位!=0)
if(多单1空单2==2)
{
if(价位>Close[0])
{
繁忙等待组件();
t=OrderSend(Symbol(),OP_SELLLIMIT,单量,价位,滑点,价位+固定止损*Point,0,备注,magic);
if(t>0)
多单1空单2=0;
}
else
{
繁忙等待组件();
t=OrderSend(Symbol(),OP_SELLSTOP,单量,价位,滑点,价位+固定止损*Point,0,备注,magic);
if(t>0)
多单1空单2=0;
}
}
if(分项单据统计(OP_BUY,magic)+分项单据统计(OP_SELL,magic)==0)
最大利润=0;
double 现有利润=分类单据利润(OP_BUY,magic)+分类单据利润(OP_SELL,magic);
if(最大利润<现有利润)
最大利润=现有利润;
if(最大利润>=利润移动止损激活)
if(现有利润<=最大利润-利润移动止损回撤)
{
全部清仓(magic);
最大利润=0;
laber("利润回撤离场",Yellow);
}
int 点差距离=MarketInfo(Symbol(),MODE_SPREAD);
//=====================================================
if(分项单据统计(OP_BUY,magic)>0)
if(分项单据统计(OP_BUY,magic)<第一段加仓个数+1)
if(OrderSelect(findlassorder(OP_BUY,magic),SELECT_BY_TICKET))
if(OrderClosePrice()+点差距离*Point-OrderOpenPrice()>=第一段加仓距离*Point)
{
laber("距离:"+DoubleToStr((OrderClosePrice()+点差距离*Point-OrderOpenPrice())/Point,0),Red);
繁忙等待组件();
t=OrderSend(Symbol(),OP_BUY,单量,Ask,滑点,0,0,备注,magic);
if(OrderSelect(t,SELECT_BY_TICKET))
//OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做多指标数,Digits)-止损偏移*Point,0,0);
OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()-固定止损*Point,0,0);
报错组件("");
}
if(分项单据统计(OP_BUY,magic)>0)
if(分项单据统计(OP_BUY,magic)<第一段加仓个数+1+第二段加仓个数)
if(OrderSelect(findlassorder(OP_BUY,magic),SELECT_BY_TICKET))
if(OrderClosePrice()+点差距离*Point-OrderOpenPrice()>=第二段加仓距离*Point)
{
laber("距离:"+DoubleToStr((OrderClosePrice()+点差距离*Point-OrderOpenPrice())/Point,0),Yellow);
繁忙等待组件();
t=OrderSend(Symbol(),OP_BUY,单量,Ask,滑点,0,0,备注,magic);
if(OrderSelect(t,SELECT_BY_TICKET))
//OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做多指标数,Digits)-止损偏移*Point,0,0);
OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()-固定止损*Point,0,0);
报错组件("");
}
if(分项单据统计(OP_BUY,magic)>0)
if(分项单据统计(OP_BUY,magic)<第一段加仓个数+1+第二段加仓个数+第三段加仓个数)
if(OrderSelect(findlassorder(OP_BUY,magic),SELECT_BY_TICKET))
if(OrderClosePrice()+点差距离*Point-OrderOpenPrice()>=第三段加仓距离*Point)
{
laber("距离:"+DoubleToStr((OrderClosePrice()+点差距离*Point-OrderOpenPrice())/Point,0),Blue);
繁忙等待组件();
t=OrderSend(Symbol(),OP_BUY,单量,Ask,滑点,0,0,备注,magic);
if(OrderSelect(t,SELECT_BY_TICKET))
//OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做多指标数,Digits)-止损偏移*Point,0,0);
OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()-固定止损*Point,0,0);
报错组件("");
}
//========================================
if(分项单据统计(OP_SELL,magic)>0)
if(分项单据统计(OP_SELL,magic)<第一段加仓个数+1)
if(OrderSelect(findlassorder(OP_SELL,magic),SELECT_BY_TICKET))
if(OrderOpenPrice()-(OrderClosePrice()-点差距离*Point)>=第一段加仓距离*Point)
{
laber("距离:"+DoubleToStr((OrderOpenPrice()-(OrderClosePrice()-点差距离*Point))/Point,0),Red);
繁忙等待组件();
t=OrderSend(Symbol(),OP_SELL,单量,Bid,滑点,0,0,备注,magic);
if(OrderSelect(t,SELECT_BY_TICKET))
//OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做空指标数,Digits)+止损偏移*Point,0,0);
OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()+固定止损*Point,0,0);
报错组件("");
}
if(分项单据统计(OP_SELL,magic)>0)
if(分项单据统计(OP_SELL,magic)<第一段加仓个数+1+第二段加仓个数)
if(OrderSelect(findlassorder(OP_SELL,magic),SELECT_BY_TICKET))
if(OrderOpenPrice()-(OrderClosePrice()-点差距离*Point)>=第二段加仓距离*Point)
{
laber("距离:"+DoubleToStr((OrderOpenPrice()-(OrderClosePrice()-点差距离*Point))/Point,0),Yellow);
繁忙等待组件();
t=OrderSend(Symbol(),OP_SELL,单量,Bid,滑点,0,0,备注,magic);
if(OrderSelect(t,SELECT_BY_TICKET))
//OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做空指标数,Digits)+止损偏移*Point,0,0);
OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()+固定止损*Point,0,0);
报错组件("");
}
if(分项单据统计(OP_SELL,magic)>0)
if(分项单据统计(OP_SELL,magic)<第一段加仓个数+1+第二段加仓个数+第三段加仓个数)
if(OrderSelect(findlassorder(OP_SELL,magic),SELECT_BY_TICKET))
if(OrderOpenPrice()-(OrderClosePrice()-点差距离*Point)>=第三段加仓距离*Point)
{
laber("距离:"+DoubleToStr((OrderOpenPrice()-(OrderClosePrice()-点差距离*Point))/Point,0),Blue);
繁忙等待组件();
t=OrderSend(Symbol(),OP_SELL,单量,Bid,滑点,0,0,备注,magic);
if(OrderSelect(t,SELECT_BY_TICKET))
//OrderModify(OrderTicket(),OrderClosePrice(),NormalizeDouble(做空指标数,Digits)+止损偏移*Point,0,0);
OrderModify(OrderTicket(),OrderClosePrice(),OrderOpenPrice()+固定止损*Point,0,0);
报错组件("");
}
//=====================================
价位止损组块("上",OP_BUY,多单离场价位,magic);
价位止损组块("下",OP_SELL,空单离场价位,magic);
if(成本保护开关)
获利后一次性止损保护(获利后一次性保护点数,获利后一次性保护激活点数,magic);
if(移动止损开关==true)
gengzong(回调离场距离,跳跃距离,移动止损激活点数,magic);
//----
return(0);
}
//+------------------------------------------------------------------+
void 价位止损组块(string 属性,int type,double 离场价位,int magic)
{
if(离场价位!=0)
{
if(type==OP_BUY)
if(属性=="上")
if(Close[0]>=离场价位)
{
deleteorder(OP_BUY,magic);
}
if(type==OP_BUY)
if(属性=="下")
if(Close[0]<=离场价位)
{
deleteorder(OP_BUY,magic);
}
if(type==OP_SELL)
if(属性=="上")
if(Close[0]>=离场价位)
{
deleteorder(OP_SELL,magic);
}
if(type==OP_SELL)
if(属性=="下")
if(Close[0]<=离场价位)
{
deleteorder(OP_SELL,magic);
}
}
}
void 全部清仓(int a)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==a)
{
if(OrderType()<2)
{
繁忙等待组件();
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),滑点);
报错组件("");
}
if(OrderType()>1)
{
繁忙等待组件();
OrderDelete(OrderTicket());
报错组件("");
}
}
}
}
double 分类单据利润(int a,int b)
{
double 利润=0;
for(int i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS))
if(OrderMagicNumber()==b)
if(OrderType()==a)
利润+=OrderProfit();
return(利润);
}
/*
void 批量修改止盈止损(int type,double 止盈,double 止损,int magic)
{
if(止盈!=0)
for(int i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS))
if(OrderMagicNumber()==magic)
if(OrderTakeProfit()>NormalizeDouble(止盈,Digits)+Point||OrderTakeProfit()<NormalizeDouble(止盈,Digits)-Point)
if(OrderType()==type)
OrderModify(OrderTicket(),OrderOpenPrice(),OrderStopLoss(),止盈,0);
if(止损!=0)
for(i=0;i<OrdersTotal();i++)
if(OrderSelect(i,SELECT_BY_POS))
if(OrderMagicNumber()==magic)
if(OrderStopLoss()>NormalizeDouble(止损,Digits)+Point||OrderStopLoss()<NormalizeDouble(止损,Digits)-Point)
if(OrderType()==type)
OrderModify(OrderTicket(),OrderOpenPrice(),止损,OrderTakeProfit(),0);
}
*/
int findlassorder(int a,int c)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
if(Symbol()==OrderSymbol())
if(OrderMagicNumber()==c)
if(OrderType()==a)
return(OrderTicket());
}
return(-1);
}
void deleteorder(int a,int magic)
{
for(int i=OrdersTotal()-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==magic)
if(OrderType()==a)
{
if(OrderType()>=2)
{
繁忙等待组件();
OrderDelete(OrderTicket());
报错组件("");
}
else
{
繁忙等待组件();
OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),滑点);
报错组件("");
}
}
}
}
int 分项单据统计(int a,int magic)
{
int buy=0,sell=0,buyl=0,selll=0,buys=0,sells=0;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==magic)
switch(OrderType())
{
case OP_BUY:
buy++;
break;
case OP_SELL:
sell++;
break;
case OP_BUYLIMIT:
buyl++;
break;
case OP_BUYSTOP:
buys++;
break;
case OP_SELLSTOP:
sells++;
break;
case OP_SELLLIMIT:
selll++;
break;
}
}
switch(a)
{
case OP_BUY:
return(buy);
case OP_SELL:
return(sell);
case OP_BUYLIMIT:
return(buyl);
case OP_BUYSTOP:
return(buys);
case OP_SELLLIMIT:
return(selll);
case OP_SELLSTOP:
return(sells);
}
}
void laber(string a,color b)
{
if(是否显示文字标签==true)
{
ObjectDelete("箭头"+TimeToStr(Time[0],TIME_DATE|TIME_MINUTES)+a);
ObjectCreate("箭头"+TimeToStr(Time[0],TIME_DATE|TIME_MINUTES)+a,OBJ_TEXT,0,Time[0],Low[0]);
ObjectSetText("箭头"+TimeToStr(Time[0],TIME_DATE|TIME_MINUTES)+a,a,8,"Times New Roman",b);
}
}
//-----------------------------------------
void 繁忙等待组件()
{
while (!IsTradeAllowed() && IsTradeContextBusy()) Sleep(100);
RefreshRates();
}
//------------------------------------
void 报错组件(string a)
{
int t=GetLastError();
string 报警;
if(t!=0)
switch (t)
{
case 0:报警="错误代码:"+0+"没有错误返回";break;
case 1:报警="错误代码:"+1+"没有错误返回但结果不明";break;
case 2:报警="错误代码:"+2+"一般错误";break;
case 3:报警="错误代码:"+3+"无效交易参量";break;
case 4:报警="错误代码:"+4+"交易服务器繁忙";break;
case 5:报警="错误代码:"+5+"客户终端旧版本";break;
case 6:报警="错误代码:"+6+"没有连接服务器";break;
case 7:报警="错误代码:"+7+"没有权限";break;
case 8:报警="错误代码:"+8+"请求过于频繁";break;
case 9:报警="错误代码:"+9+"交易运行故障";break;
case 64:报警="错误代码:"+64+"账户禁止";break;
case 65:报警="错误代码:"+65+"无效账户";break;
case 128:报警="错误代码:"+128+"交易超时";break;
case 129:报警="错误代码:"+129+"无效价格";break;
case 130:报警="错误代码:"+130+"无效停止";break;
case 131:报警="错误代码:"+131+"无效交易量";break;
case 132:报警="错误代码:"+132+"市场关闭";break;
case 133:报警="错误代码:"+133+"交易被禁止";break;
case 134:报警="错误代码:"+134+"资金不足";break;
case 135:报警="错误代码:"+135+"价格改变";break;
case 136:报警="错误代码:"+136+"开价";break;
case 137:报警="错误代码:"+137+"经纪繁忙";break;
case 138:报警="错误代码:"+138+"重新开价";break;
case 139:报警="错误代码:"+139+"定单被锁定";break;
case 140:报警="错误代码:"+140+"只允许看涨仓位";break;
case 141:报警="错误代码:"+141+"过多请求";break;
case 145:报警="错误代码:"+145+"因为过于接近市场,修改否定";break;
case 146:报警="错误代码:"+146+"交易文本已满";break;
case 147:报警="错误代码:"+147+"时间周期被经纪否定";break;
case 148:报警="错误代码:"+148+"开单和挂单总数已被经纪限定";break;
case 149:报警="错误代码:"+149+"当对冲备拒绝时,打开相对于现有的一个单置";break;
case 150:报警="错误代码:"+150+"把为反FIFO规定的单子平掉";break;
case 4000:报警="错误代码:"+4000+"没有错误";break;
case 4001:报警="错误代码:"+4001+"错误函数指示";break;
case 4002:报警="错误代码:"+4002+"数组索引超出范围";break;
case 4003:报警="错误代码:"+4003+"对于调用堆栈储存器函数没有足够内存";break;
case 4004:报警="错误代码:"+4004+"循环堆栈储存器溢出";break;
case 4005:报警="错误代码:"+4005+"对于堆栈储存器参量没有内存";break;
case 4006:报警="错误代码:"+4006+"对于字行参量没有足够内存";break;
case 4007:报警="错误代码:"+4007+"对于字行没有足够内存";break;
case 4008:报警="错误代码:"+4008+"没有初始字行";break;
case 4009:报警="错误代码:"+4009+"在数组中没有初始字串符";break;
case 4010:报警="错误代码:"+4010+"对于数组没有内存";break;
case 4011:报警="错误代码:"+4011+"字行过长";break;
case 4012:报警="错误代码:"+4012+"余数划分为零";break;
case 4013:报警="错误代码:"+4013+"零划分";break;
case 4014:报警="错误代码:"+4014+"不明命令";break;
case 4015:报警="错误代码:"+4015+"错误转换(没有常规错误)";break;
case 4016:报警="错误代码:"+4016+"没有初始数组";break;
case 4017:报警="错误代码:"+4017+"禁止调用DLL ";break;
case 4018:报警="错误代码:"+4018+"数据库不能下载";break;
case 4019:报警="错误代码:"+4019+"不能调用函数";break;
case 4020:报警="错误代码:"+4020+"禁止调用智能交易函数";break;
case 4021:报警="错误代码:"+4021+"对于来自函数的字行没有足够内存";break;
case 4022:报警="错误代码:"+4022+"系统繁忙 (没有常规错误)";break;
case 4050:报警="错误代码:"+4050+"无效计数参量函数";break;
case 4051:报警="错误代码:"+4051+"无效参量值函数";break;
case 4052:报警="错误代码:"+4052+"字行函数内部错误";break;
case 4053:报警="错误代码:"+4053+"一些数组错误";break;
case 4054:报警="错误代码:"+4054+"应用不正确数组";break;
case 4055:报警="错误代码:"+4055+"自定义指标错误";break;
case 4056:报警="错误代码:"+4056+"不协调数组";break;
case 4057:报警="错误代码:"+4057+"整体变量过程错误";break;
case 4058:报警="错误代码:"+4058+"整体变量未找到";break;
case 4059:报警="错误代码:"+4059+"测试模式函数禁止";break;
case 4060:报警="错误代码:"+4060+"没有确认函数";break;
case 4061:报警="错误代码:"+4061+"发送邮件错误";break;
case 4062:报警="错误代码:"+4062+"字行预计参量";break;
case 4063:报警="错误代码:"+4063+"整数预计参量";break;
case 4064:报警="错误代码:"+4064+"双预计参量";break;
case 4065:报警="错误代码:"+4065+"数组作为预计参量";break;
case 4066:报警="错误代码:"+4066+"刷新状态请求历史数据";break;
case 4067:报警="错误代码:"+4067+"交易函数错误";break;
case 4099:报警="错误代码:"+4099+"文件结束";break;
case 4100:报警="错误代码:"+4100+"一些文件错误";break;
case 4101:报警="错误代码:"+4101+"错误文件名称";break;
case 4102:报警="错误代码:"+4102+"打开文件过多";break;
case 4103:报警="错误代码:"+4103+"不能打开文件";break;
case 4104:报警="错误代码:"+4104+"不协调文件";break;
case 4105:报警="错误代码:"+4105+"没有选择定单";break;
case 4106:报警="错误代码:"+4106+"不明货币对";break;
case 4107:报警="错误代码:"+4107+"无效价格";break;
case 4108:报警="错误代码:"+4108+"无效定单编码";break;
case 4109:报警="错误代码:"+4109+"不允许交易";break;
case 4110:报警="错误代码:"+4110+"不允许长期";break;
case 4111:报警="错误代码:"+4111+"不允许短期";break;
case 4200:报警="错误代码:"+4200+"定单已经存在";break;
case 4201:报警="错误代码:"+4201+"不明定单属性";break;
case 4202:报警="错误代码:"+4202+"定单不存在";break;
case 4203:报警="错误代码:"+4203+"不明定单类型";break;
case 4204:报警="错误代码:"+4204+"没有定单名称";break;
case 4205:报警="错误代码:"+4205+"定单坐标错误";break;
case 4206:报警="错误代码:"+4206+"没有指定子窗口";break;
case 4207:报警="错误代码:"+4207+"定单一些函数错误";break;
case 4250:报警="错误代码:"+4250+"错误设定发送通知到队列中";break;
case 4251:报警="错误代码:"+4251+"无效参量- 空字符串传递到SendNotification()函数";break;
case 4252:报警="错误代码:"+4252+"无效设置发送通知(未指定ID或未启用通知)";break;
case 4253:报警="错误代码:"+4253+"通知发送过于频繁";break;
}
if(t!=0)
{
Alert(报警);
Print(报警);
laber(报警,Yellow);
}
}
void 获利后一次性止损保护(int 保护距离,int 启动距离,int c)
{
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==c)
{
double a=OrderClosePrice();
if(OrderType()==OP_BUY)
if(a-OrderOpenPrice()>启动距离*Point)
if(OrderStopLoss()+Point<OrderOpenPrice()+保护距离*Point ||OrderStopLoss()==0)
{
繁忙等待组件();
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+保护距离*Point,OrderTakeProfit(),0);
}
if(OrderType()==OP_SELL)
if(OrderOpenPrice()-a>启动距离*Point)
if(OrderStopLoss()-Point>OrderOpenPrice()-保护距离*Point ||OrderStopLoss()==0)
{
繁忙等待组件();
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-保护距离*Point,OrderTakeProfit(),0);
}
}
}
}
void gengzong(int 保持距离,int 跳跃距离,int 启动距离,int c)
{
if(保持距离!=0)
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS))
if(OrderSymbol()==Symbol())
if(OrderMagicNumber()==c)
{
RefreshRates();
double a=OrderClosePrice();
if(OrderType()==OP_BUY)
if(a-OrderOpenPrice()>启动距离*Point)
if(a-(保持距离+跳跃距离)*Point>=OrderStopLoss()||OrderStopLoss()==0)
{
繁忙等待组件();
OrderModify(OrderTicket(),OrderOpenPrice(),a-保持距离*Point,OrderTakeProfit(),0);
报错组件("");
}
if(OrderType()==OP_SELL)
if(OrderOpenPrice()-a>启动距离*Point)
if(a+(保持距离+跳跃距离)*Point<=OrderStopLoss()||OrderStopLoss()==0)
{
繁忙等待组件();
OrderModify(OrderTicket(),OrderOpenPrice(),a+保持距离*Point,OrderTakeProfit(),0);
报错组件("");
}
}
}
}
|