|
条件,首单挂单成交
然后开始执行批量挂单
仅供娱乐参考
半自动测试ea.zip
(1.2 KB, 下载次数: 0)
- double 第一单价格=0; //等待程序自动索取第一张定单的价格
- int 第一单多空=-1; //等待程序自动索取第一张定单的类型
- double 全体止盈线=0;//手动自行设置
- double 全体止损线=0;//未使用/爆仓即止损
- int 挂单数量=20;
- double 挂单头寸=0.5;
- double 期待爆仓距离=25;
- double 点差 = 2;
- double 初始保证金;
- int 每手保证金=200;//(只限杠杆500平台的USDJPY)
- double 第一单手数=0.5;
- double 平台强平线=0.2;//20%
- int init()
- { return(0); }
- int deinit()
- { return(0); }
- int start()
- {
- if(OrdersTotal()==0){
- 初始保证金=AccountEquity();
- 第一单手数=初始保证金/(平台强平线*每手保证金+期待爆仓距离*10+点差*10);
- Comment("只限USDJPY: "+DoubleToStr(第一单手数,3)+"手");
- }
- if(OrdersTotal()==1){ //当有且只有一张定单时执行
- if(OrderSelect(0,SELECT_BY_POS,MODE_TRADES)==true)//选中这唯一一张定单
- {
- if(OrderType()==OP_BUY || OrderType()==OP_SELL)//当这张定单为多单或空单时执行(挂单则不执行)
- {
- int ticket;
- if(OrderType()==OP_BUY){ //如果这一单是多单则......
- 第一单多空=OP_BUYSTOP; //则挂buystop单
- 第一单价格=OrderOpenPrice(); //这一单的开仓价
- for (int i=1; i<=挂单数量; i++){
- ticket=OrderSend(Symbol(),第一单多空,挂单头寸,第一单价格+i*0.0002,0,0,全体止盈线,"",0,CLR_NONE); //0.0002为定单之间间隔 //CLR_NONE表示不在挂单时生成小箭头
- if(ticket<0)Print("挂多: "+DoubleToStr(第一单价格+i*0.0002,4)+"失败"); //ticket<0表示挂单失败
- Sleep(3000); //挂单间隔3秒=3000毫秒/挂单间隔太小平台有时报错
- }
- }
- else if(OrderType()==OP_SELL){ //如果这一单是空单则......
- 第一单多空=OP_SELLSTOP; //则挂sellstop单
- 第一单价格=OrderOpenPrice();
- for (int j=1; j<=挂单数量; j++){
- ticket=OrderSend(Symbol(),第一单多空,挂单头寸,第一单价格-j*0.0002,0,0,全体止盈线,"",0,CLR_NONE);
- if(ticket<0)Print("挂空: "+DoubleToStr(第一单价格-j*0.0002,4)+"失败");
- Sleep(3000);
- }
- }
- }
- }
- else
- {
- Print("OrderSelect返回的错误:",GetLastError());
- }
- }
- else{ return(0); }
- return(0);
- }
复制代码 |
|