我写了一段代码

一、我写了一段代码

  我写了一段代码。这是一句多么简单的话,“我写了一段代码”,就这么简单。没写过代码的人可能,只是有可能看不出这其中的奥妙,代码专业的人可能也是觉得无所钓位。但是我还是要说,因为这不仅仅是说我写了一段代码,虽然也只能说我写了一段代码。

二、我写了一段什么样的代码

  那么我倒底写了一段什么样的代码,我写了这样一段代码,诸君请看:

double
       ask,
       bid,
       平仓量,
       最近支撑价格,
       最近阻力价格,
       现有多单总数,
       现有空单总数,
       多单的持仓量,
       空单的持仓量,
       多单开仓价格,
       空单开仓价格,
       多单止损价格,
       空单止损价格;
input double 
       交易量=3.0,
       盈亏比=5.0,
       点差=0.00030;
input string
       币种="EURUSD";
//+--Expert tick function--+
void OnTick()
{
name1();
/*
//---打印“现有多单总数”
Print("现有多单总数=",现有多单总数);
//---打印“多单开仓价格”
Print("多单开仓价格=",多单开仓价格);
//---打印“多单止损价格”
Print("多单止损价格=",多单止损价格);
//---打印“最近阻力价格”
Print("最近阻力价格=",最近阻力价格);
//---打印“最近支撑价格”
Print("最近支撑价格=",最近支撑价格);
//---打印“当前ask价格”
Print("ask=",ask);
//---打印“当前bid价格”
Print("bid=",bid);*/
ask=SymbolInfoDouble(币种,SYMBOL_ASK);
bid=SymbolInfoDouble(币种,SYMBOL_BID);
{if((最近支撑价格>0)&&(最近阻力价格>0)
&&(现有多单总数==0)
&&(bid>(最近阻力价格+点差)))
{name4();}
}
{if(((bid-多单开仓价格)>(多单开仓价格-多单止损价格))
&&(多单的持仓量==3))
{平仓量=1.5;name3();}
}
{if(((bid-多单开仓价格)>2*(多单开仓价格-多单止损价格))
&&(多单的持仓量==1.5))
{平仓量=1.0;name3();}
}
}
//+--Expert name4 function--+
void name4()
{
//---开仓
MqlTradeRequest request= {};
MqlTradeResult result= {};
//---请求结构体
request.action=TRADE_ACTION_DEAL;
request.price=ask;
request.symbol=币种;
request.type=ORDER_TYPE_BUY;
request.volume=交易量;
request.sl=最近支撑价格-点差;
request.tp=request.price+(盈亏比*(request.price-request.sl));
request.deviation=5;
request.magic=2;
if(OrderSend(request,result))
{
Print("开多单成功");
}
}
//+--Expert name3 function--+
void name3()
{
//---遍历持仓
for(int i=0;i<PositionsTotal();i++)
{
//---获取订单
ulong pos_ticket=PositionGetTicket(i);
ulong pos_magic=PositionGetInteger(POSITION_MAGIC);
string pos_symbol=PositionGetSymbol(i);
double pos_volume=PositionGetDouble(POSITION_VOLUME);
ENUM_POSITION_TYPE pos_type
=(ENUM_POSITION_TYPE)
PositionGetInteger(POSITION_TYPE);//?????????????ENUM
//---平仓
MqlTradeRequest request= {};
MqlTradeResult result= {};
bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
//---请求结构体
request.action=TRADE_ACTION_DEAL;
request.position=pos_ticket;
request.symbol=pos_symbol;
request.volume=平仓量;
request.magic=pos_magic;
//---指定品种条件
if(pos_symbol==币种)
{if(pos_type==POSITION_TYPE_BUY)
{request.type=ORDER_TYPE_SELL;
request.price=bid;}
//---确定发送请求
if(OrderSend(request,result))
{Print("平仓返回指令=","平多单成功");}
}
}
}
//+--Expert name1 function--+
void name1()
{
//---初始化,否则持续累加
现有多单总数=0;
现有空单总数=0;
//---获取最近阻力价格
for(int x=2;iHighest(币种,0,MODE_HIGH,x,1)    
!=iHighest(币种,0,MODE_HIGH,x-1,1);x++)//遍历K线  x=2 
最近阻力价格=iHigh(币种,PERIOD_CURRENT,x);//关键阻力位置  趋势相对高点
//---获取最近支撑价格
for(int y=2;iLowest(币种,0,MODE_LOW,y,1)
!=iLowest(币种,0,MODE_LOW,y-1,1);y++)//遍历K线  y=2
最近支撑价格=iLow(币种,PERIOD_CURRENT,y);//关键支撑位置  趋势相对低点
//---遍历当前所有持仓,否则只计算个别订单
for(int m=0;m<PositionsTotal();m++)
{
//---获取所有订单
if(PositionGetTicket(m)>0)
//---获取多单
{if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_BUY)//订单类型==多单
//---计算订单
  {现有多单总数++;//遍历累加所有多单
   多单开仓价格=PositionGetDouble(POSITION_PRICE_OPEN);
   多单止损价格=PositionGetDouble(POSITION_SL);
   多单的持仓量=PositionGetDouble(POSITION_VOLUME);}
//---获取空单
{if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL)//订单类型==空单
//---计算订单
  {现有空单总数++;//遍历累加所有空单
   空单开仓价格=PositionGetDouble(POSITION_PRICE_OPEN);
   空单止损价格=PositionGetDouble(POSITION_SL);
   空单的持仓量=PositionGetDouble(POSITION_VOLUME);}
}
}
}
}

  我以为我会洋洋洒洒,前呼后应,前世今生,前因后果的写个五百万来字。原来因为知识有限,资源有限,能力有限,格局有限,成果有限,经历有限,资历有限。

  就写这么点儿... ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值