27评论

0收藏

请高手帮看下这个止盈代码对吗

 

avatar zhqqyqr | 7282 人阅读 | 27 人评论 | 2015-04-26

input int time1 = 4;
input int time2 = 13;
extern int takeprofit =30;
int start()
{
int ticket;
double ma1=iMA(NULL,0,time1,0,MODE_EMA,PRICE_CLOSE,0);
double ma2=iMA(NULL,0,time2,0,MODE_EMA,PRICE_CLOSE,0);
double ma11=iMA(NULL,0,time1,0,MODE_EMA,PRICE_CLOSE,1);
double ma22=iMA(NULL,0,time2,0,MODE_EMA,PRICE_CLOSE,1);
if (OrdersTotal() < 1) //--如果总订单数小于1
{
if (ma1<ma2&&ma11>ma22 ) //--满足开空仓条件
{
ticket = OrderSend(Symbol(),OP_SELL,1,Bid,3,0,0,"开空仓",12345,0,Red);
if (ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
Print("SELL order opened : ", OrderOpenPrice());
}
else
Print("Error opening SELL order : ", GetLastError());
return (0);
}

if ( ma1>ma2&&ma11<ma22) //--满足开多仓条件
{
ticket = OrderSend(Symbol(),OP_BUY,1,Ask,3,0,0,"开多仓",12345,0,Green);
if (ticket > 0)
{
if (OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))
Print("SELL order opened : ", OrderOpenPrice());
}
else
Print("Error opening SELL order : ", GetLastError());
return (0);
}
}

for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false) break;
if(OrderMagicNumber()!=12345 || OrderSymbol()!=Symbol()) continue;
//---- check order type
if(OrderType()==OP_BUY)
{
if(extern int TakeProfit = 30 )
OrderClose(OrderTicket(),1,Bid,3,White);//如果持仓是多单,则发出平仓指令
break;
}
if(OrderType()==OP_SELL)
{
if(extern int TakeProfit = 30 )
OrderClose(OrderTicket(),1,Ask,3,White);//如果持仓是空单则发出平仓指令
break;
""
还没有人打赏,支持一下

评论|共 27 个

Mr.m傻傻

发表于 2015-4-26 18:37:16 | 显示全部楼层

xiexiefenxiang

zhqqyqr

发表于 2015-4-26 18:48:00 | 显示全部楼层

这个代码没法编译,平仓是错误的,想让他止盈平仓,就是不知道如何实现

慕容長季

发表于 2015-4-26 20:10:13 | 显示全部楼层

我靠

pIojof

发表于 2015-4-26 22:19:43 | 显示全部楼层


呵呵

紫竹青荷

发表于 2015-4-26 23:55:25 | 显示全部楼层

看看看看。。。。

呵呵哈哈呀1

发表于 2015-4-27 09:41:17 | 显示全部楼层

你的平仓判断语句中:1、if(extern int TakeProfit = 30 )  和if(extern int TakeProfit = 30 ) 明显语法错误,编译会出错;2、应该加入判断当前止盈点是否达到设定值然后再进行平仓指令

zhqqyqr

发表于 2015-4-27 17:05:23 | 显示全部楼层

呵呵哈哈呀1 发表于 2015-4-27 09:41
你的平仓判断语句中:1、if(extern int TakeProfit = 30 )  和if(extern int TakeProfit = 30 ) 明显语法错 ...

能帮忙修改一下吗,谢谢

呵呵哈哈呀1

发表于 2015-4-27 20:12:41 | 显示全部楼层

zhqqyqr 发表于 2015-4-27 17:05
能帮忙修改一下吗,谢谢

语法好改。但是逻辑还是不对,这里判断的止盈点是输入的固定点值,并不是当前价格的实时盈利点数。所以应该加入对实时赢利点判断的逻辑。只告诉了你思路,因为我也没多少时间去帮你完善这个的。

zhqqyqr

发表于 2015-4-27 20:39:26 | 显示全部楼层

呵呵哈哈呀1 发表于 2015-4-27 20:12
语法好改。但是逻辑还是不对,这里判断的止盈点是输入的固定点值,并不是当前价格的实时盈利点数。所以应 ...

不懂,我不懂代码,这个思路是两线交叉开单,以前是再次交叉平仓,我想让他止盈平仓

123下一页
您需要登录后才可以回帖 登录 | 注册 微信登录

EA之家评论守则