设为首页收藏本站

 找回密码
 注册
查看: 3216|回复: 0
打印 上一主题 下一主题

今天用Mt4写了个东东,发觉还是TB方便多了呀: [复制链接]

Rank: 5Rank: 5

精华
0
UID
1263
积分
1151
帖子
199
主题
70
阅读权限
60
注册时间
2008-3-3
最后登录
2008-7-21
跳转到指定楼层
1#
发表于 2008-4-10 20:21:58 |只看该作者 |倒序浏览
//+-----------------------------------------------------------------------+
//|                                                    zljxxt1d1.mq4 |
//| Copyright wg3k 2008, MetaQuotes Software Corp. |
//|                               http://www.metaquotes.net |
//+-----------------------------------------------------------------------+
#property copyright "Copyright szdfc 2008, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"
extern double dLots=0.1;
extern int iCrossX=5;
extern int iCrossY=10;
extern int iUnderX=5;
extern int iUnderY=10;
extern double dTakeProfit=50;
extern double dTrailingStop=20;
extern int iMaxPosition=1;
int iTotal,iTicketLong,iTicketShort;

//+------------------------------------------------------------------+
//| expert initialization function                             |
//+------------------------------------------------------------------+
int init()
{
        //----

        //----
        return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function                         |
//+------------------------------------------------------------------+
int deinit()
{
        //----

        //----
        return(0);
}
//+------------------------------------------------------------------+
//| expert start function                                      |
//+------------------------------------------------------------------+
int start()
{
        //----
        double dCrossM1Current,dCrossM1Previous,dCrossM2Current,dCrossM2Previous;
        dCrossM1Current=iMA(NULL,0,iCrossX,0,MODE_SMA,PRICE_CLOSE,0);
        dCrossM1Previous=iMA(NULL,0,iCrossX,0,MODE_SMA,PRICE_CLOSE,1);
        dCrossM2Current=iMA(NULL,0,iCrossY,0,MODE_SMA,PRICE_CLOSE,0);
        dCrossM2Previous=iMA(NULL,0,iCrossY,0,MODE_SMA,PRICE_CLOSE,1);
        double dUnderM1Current,dUnderM1Previous,dUnderM2Current,dUnderM2Previous;
        dUnderM1Current=iMA(NULL,0,iUnderX,0,MODE_SMA,PRICE_CLOSE,0);
        dUnderM1Previous=iMA(NULL,0,iUnderX,0,MODE_SMA,PRICE_CLOSE,1);
        dUnderM2Current=iMA(NULL,0,iUnderY,0,MODE_SMA,PRICE_CLOSE,0);
        dUnderM2Previous=iMA(NULL,0,iUnderY,0,MODE_SMA,PRICE_CLOSE,1);

        if(Bars<100)
        {
                Alert("Bars 数量不够");
                return(0);
        }
        if(dTakeProfit<10)
        {
                Alert("移动止损点数小于 10");
                return(0);
        }

        iTotal=OrdersTotal();
        //建仓
        if(iTotal<iMaxPosition)
        {
                if(AccountFreeMargin()<(1000*dLots)) //如果资金不够就不交易
                {
                        Print("您帐户中的资金不够开新仓. 剩余资金 = ", AccountFreeMargin());
                        return(0);
                }
                //买进
                if(dCrossM1Previous<=dCrossM2Previous && dCrossM1Current>dCrossM2Current)
                {
                        iTicketLong=OrderSend(Symbol(),OP_BUY,dLots,Ask,3,Ask-dTrailingStop*Point,0,"上穿:买进",0,0,Red);
                        // 上面的指令是开仓买入
                        if(iTicketLong>0)
                        {
                                if(OrderSelect(iTicketLong,SELECT_BY_TICKET,MODE_TRADES)) Print("买入: ",OrderOpenPrice());
                        }
                        else
                        {
                                Print("开多仓过程中出现故障 : ",GetLastError());
                        }
                        return(0);
                }
                //卖出
                if(dUnderM1Previous>=dUnderM2Previous && dUnderM1Current<dUnderM2Current)
                {
                        iTicketShort=OrderSend(Symbol(),OP_SELL,dLots,Bid,3,Bid+dTrailingStop*Point,0,"下穿:卖出",0,0,Yellow);
                        // 上面的指令是开仓卖出
                        if(iTicketShort>0)
                        {
                                if(OrderSelect(iTicketShort,SELECT_BY_TICKET,MODE_TRADES)) Print("卖出: ",OrderOpenPrice());
                        }
                        else
                        {
                                Print("开空仓过程中出现故障 : ",GetLastError());
                        }
                        return(0);
                }
        }
        //平仓
        if(iTotal>0)
        {
                //平空仓
                if(iTicketShort>0)
                {
                if(dCrossM1Previous<dCrossM2Previous && dCrossM1Current<dCrossM2Current)
                {
                        if(OrderClose(iTicketShort,dLots,Ask,3,Red))
                        {
                                iTicketShort=0;
                                Print("平空仓: ",OrderClosePrice());
                        }
                        else
                        {
                                Print("平空仓过程中出现故障 : ",GetLastError());
                        }
                        return(0);
                }
                }
                //平多仓
                if(iTicketLong>0)
                {
                if(dUnderM1Previous>dUnderM2Previous && dUnderM1Current<dUnderM2Current)//如果短期均线上穿长期均线,也可以说快线上穿慢线,或者也可以说是:金叉
                {
                        if(OrderClose(iTicketLong,dLots,Bid,3,Red))
                        {
                                iTicketLong=0;
                                Print("平多仓: ",OrderClosePrice());
                        }
                        else
                        {
                                Print("平多仓过程中出现故障 : ",GetLastError());
                        }
                        return(0);
                }
                }
        }
        //----
        return(0);
}
//+------------------------------------------------------------------+
欢迎加入交易开拓者QQ群:38529330,让我们一起交流,一起提高,一起赚钱吧。。。
您需要登录后才可以回帖 登录 | 注册

bottom

静态版|手机版|联系我们|交易开拓者 ( 粤ICP备07044698   

GMT+8, 2024-5-10 17:05

Powered by Discuz! X2 LicensedChrome插件扩展

© 2011-2012 交易开拓者 Inc.

回顶部