MetaTrader 4 电脑版安装指南

xlbdh2:

请教大家一个mt4的ea编程技术问题,源代码如下:

void c_z17_m1_1k()

{

int i;

string t=Hour();

float c1[8],c2[8],c3[8],c4[8];

string c_k,c_k1[8],c_k2[8],c_k3[8],c_k4[8];

for(int i=0; i<=7; i++)

c1[i]=10000*(Close[i]-Close[i+1]);

c2[i]=10000*(Close[i+1]-Close[i+2]);

c3[i]=10000*(Close[i+2]-Close[i+3]);

c4[i]=10000*(Close[i+3]-Close[i+4]);

c_k=c_k1[i]+c_k2[i]+c_k3[i]+c_k4[i];

k17[8]={-7,-5,-1,0,1,5,7,14};

for(int u=0; u<=7; u++)

if(k17[u]==c_k && t=="17") OrderSend("CADCHF", OP_SELL, 0.01, Bid, 25, Ask+24*Point, Ask-25*Point,0,0,8);

}

void c_z17_m1_2k()

{

int i;

string t=Hour();

float c1[8],c2[8],c3[8],c4[8];

string c_k,c_k1[8],c_k2[8],c_k3[8],c_k4[8];

for(int i=0; i<=7; i++)

c1[i]=10000*(Close[i]-Close[i+1]);

c2[i]=10000*(Close[i+1]-Close[i+2]);

c3[i]=10000*(Close[i+2]-Close[i+3]);

c4[i]=10000*(Close[i+3]-Close[i+4]);

c_k=c_k1[i]+c_k2[i]+c_k3[i]+c_k4[i];

k17[8]={-9,-6,-2,0,2,6,9,13};

for(int u=0; u<=7; u++)

if(k17[u]==c_k && t=="17") OrderSend("CADCHF", OP_SELL, 0.01, Bid, 25, Ask+24*Point, Ask-25*Point,0,0,8);

}

void c_z17_m1_3k()

{

int i;

string t=Hour();

float c1[8],c2[8],c3[8],c4[8];

string c_k,c_k1[8],c_k2[8],c_k3[8],c_k4[8];

for(int i=0; i<=7; i++)

c1[i]=10000*(Close[i]-Close[i+1]);

c2[i]=10000*(Close[i+1]-Close[i+2]);

c3[i]=10000*(Close[i+2]-Close[i+3]);

c4[i]=10000*(Close[i+3]-Close[i+4]);

c_k=c_k1[i]+c_k2[i]+c_k3[i]+c_k4[i];

k17[8]={-11,-7,-3,0,3,7,11,15};

for(int u=0; u<=7; u++)

if(k17[u]==c_k && t=="17") OrderSend("CADCHF", OP_SELL, 0.01, Bid, 25, Ask+24*Point, Ask-25*Point,0,0,8);

}

void c_z17_m1_4k()

{

int i;

string t=Hour();

float c1[8],c2[8],c3[8],c4[8];

string c_k,c_k1[8],c_k2[8],c_k3[8],c_k4[8];

for(int i=0; i<=7; i++)

c1[i]=10000*(Close[i]-Close[i+1]);

c2[i]=10000*(Close[i+1]-Close[i+2]);

c3[i]=10000*(Close[i+2]-Close[i+3]);

c4[i]=10000*(Close[i+3]-Close[i+4]);

c_k=c_k1[i]+c_k2[i]+c_k3[i]+c_k4[i];

k17[8]={-12,-8,-4,0,4,8,12,16};

for(int u=0; u<=7; u++)

if(k17[u]==c_k && t=="17") OrderSend("CADCHF", OP_SELL, 0.01, Bid, 25, Ask+24*Point, Ask-25*Point,0,0,8);

}

void contral_m1_17k()

{

int Magic;

int a=0;

for(int i=OrdersTotal()-1; i>=0; i--)

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==TRUE)

if(OrderType()==OP_SELL && OrderMagicNumber()==Magic)

a++;

if(a<2)

c_z17_m1_1k();

if(a<2)

c_z17_m1_2k();

if(a<2)

c_z17_m1_3k();

if(a<2)

c_z17_m1_4k();

else if(a=2)

for(int i=OrdersTotal()-1; i>=0; i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true)

if(int(TimeCurrent()-OrderOpenTime())/60>20)

if(OrderType()==OP_SELL) OrderClose(OrderTicket(),0.01,Bid,25);

}

else OrderClose(OrderTicket(),0.01,Bid,25);

}

代码块c_z17_m1_1k()~c_z17_m1_4k()代表4个做空的策略,代码块contral_m1_17k()是控制这4个做空策略进行交易。

现在希望contral_m1_17k()实现如下功能:

1.当整个空单少于8单,某个策略少于2单,符合做空策略要求且满足设定的Hour(如在4k里,c_k吻合k17[8]设定的8个值中任意一个,同时t=17),则该策略就可 以成交1单,当然只能成交1单.

2.单个策略大于2单,立刻把那个策略的空单平掉(平仓顺序是,先平浮盈,在平不亏不赚)。

3.整个空单大于8单,则把有浮盈的空单立刻平掉。

谢谢各位高手~指导。


TOP