乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Metatrader4交易系統(tǒng):官方EA自動交易系統(tǒng)的編制基本框架

       qilong 2012-02-24
      Metatrader4交易系統(tǒng):官方EA自動交易系統(tǒng)的編制基本框架
      聲明:智能化EA自動交易系統(tǒng)僅僅是作為特定條件下的自動執(zhí)行,其是否能夠盈利取決于市場行情以及編制自動執(zhí)行的語言設(shè)定,切勿太過于依賴EA,畢竟它永遠跟不上人腦那樣可以根據(jù)市場的變化而重新作出正確的判斷;本文作為資源共享以供娛樂,由依賴EA產(chǎn)生的盈虧將自行承擔,本文概不負責。

      Introduction
      介紹
      鑒于中國眾多的交易者對交易系統(tǒng)了解不多,本文解釋使用MQ4語言編制自動交易系統(tǒng)的基本知識.
      Title 編制自動交易系統(tǒng)的基本知識
      一個交易系統(tǒng)大致包括以下幾個方面:

      1
      、開倉策略,即什么條件滿足時開倉, 如某條線和某條線上交叉或下交叉;

      2
      、平倉策略,即什么條件滿足時平倉, 包括止贏設(shè)置,止損設(shè)置,和跟蹤止贏設(shè)置三個方面;

      3
      、資金管理, 其中一個方面就是下單的大?。?/SPAN>

      4
      、時間管理, 如持倉時間,開平倉時間間隔等;

      5
      、賬戶狀態(tài)分析,如交易歷史,當前資金/倉位/各倉為盈虧狀態(tài)等;

      當然一個交易系統(tǒng)不必包括全部內(nèi)容,本文做為入門知識也僅通過實例介紹交易系統(tǒng)程序的基本構(gòu)成;


      //+------------------------------------------------------------------+
      //|                          Designed by OKwh, China              |
      //|                  Copyright 2007, OKwh Dxdcn                    |
      //|                               
      http://blog.sina.com.cn/meta5 |
      //+------------------------------------------------------------------+
      #property  copyright "Copyright 2007 , Dxd, China."
      #property  link      "http://blog.sina.com.cn/FXTrade , 
      http://www.metaquotes.cc"
      #define MAGICMA 200610011231
      //+------------------------------------------------------------------+
      //|
      注意沒有指標文件那些property                  |
      //+------------------------------------------------------------------+
      extern int whichmethod = 1;  //1~4
      種下單方式  1 僅開倉, 2 有止損無止贏, 3 有止贏無止損, 4 有止贏也有止損
      extern double TakeProfit = 100;  //
      止贏點數(shù)
      extern  double StopLoss = 20;    //
      止損點數(shù)
      extern double MaximumRisk    = 0.3; //
      資金控制,控制下單量
      extern double TrailingStop =25;    //
      跟蹤止贏點數(shù)設(shè)置
      extern  int maxOpen = 3;  //
      最多開倉次數(shù)限制
      extern  int maxLots = 5;  //
      最多單倉持倉量限制
      extern int bb = 0;      //
      非零就允許跟蹤止贏
      extern double MATrendPeriod=26;//
      使用26均線開倉條件參數(shù) 本例子

      int i, p2, xxx,p1, res;
      double Lots;
      datetime lasttime;      //
      時間控制, 僅當一個時間周期完成才檢查條件
      int init()  //
      初始化
      {
      Lots = 1;
      lasttime = NULL;
      return(0);
      }
      int deinit() { return(0); } //
      反初始化
      //
      主程序
      int start()
      {
      CheckForOpen();    //
      開倉平倉條件檢查和操作
      if (bb>0)  CTP();  //
      跟蹤止贏
      return(0);
      }
      //+------
      下面是各子程序--------------------------------------------+
      double LotsOptimized()  //
      確定下單量,開倉調(diào)用資金控制
      {
      double lot=Lots;
      int  orders=HistoryTotal();  // history orders total
      int  losses=0;            // number of losses orders without a break
      //MarketInfo(Symbol(),MODE_MINLOT);   
      相關(guān)信息
      //MarketInfo(Symbol(),MODE_MAXLOT);
      //MarketInfo(Symbol(),MODE_LOTSTEP);
      lot=NormalizeDouble(MaximumRisk * AccountBalance()/AccountLeverage(),1);    //
      開倉量計算
      if(lot<0.1) lot=0.1;
      if(lot>maxLots) lot=maxLots;
      return(lot);
      }
       
      //
      平倉持有的買單
      void CloseBuy()
      {
      if (OrdersTotal( ) > 0 ) 
      {
        for(i=OrdersTotal()-1;i>=0;i--)
        {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)    break;
        if(OrderType()==OP_BUY)
        {
          OrderClose(OrderTicket(),OrderLots(),Bid,3,White);
          Sleep(5000);
        }
        }
      }
      }
      //
      平倉持有的賣單
      void CloseSell()
      {
      if (OrdersTotal( ) > 0 ) 
      {
        for(i=OrdersTotal()-1;i>=0;i--)
        {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)    break;
        if(OrderType()==OP_SELL)
          {
          OrderClose(OrderTicket(),OrderLots(),Ask,3,White);
          Sleep(5000);
          }
        }
      }
      }
      //
      判斷是否買或賣或平倉
      int buyorsell()  //
      在這個函數(shù)計算設(shè)置你的交易信號 這里使用MACD MA 做例子
      {
        double MacdCurrent, MacdPrevious, SignalCurrent;
        double SignalPrevious, MaCurrent, MaPrevious;
        MacdCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,0);
        MacdPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_MAIN,1);
        SignalCurrent=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,0);
        SignalPrevious=iMACD(NULL,0,12,26,9,PRICE_CLOSE,MODE_SIGNAL,1);
        MaCurrent=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,0);
        MaPrevious=iMA(NULL,0,MATrendPeriod,0,MODE_EMA,PRICE_CLOSE,1);
      if(MacdCurrent<0 && MacdCurrent>SignalCurrent && MacdPrevious<SignalPrevious
          && MaCurrent>MaPrevious)
        return (1); //
      Ma在上升,Macd0線上,并且兩線上交叉
      if(MacdCurrent>0 && MacdCurrent<SignalCurrent && MacdPrevious>SignalPrevious
          && MaCurrent<MaPrevious)
        return (-1); //

      return (0); //
      不交易
      }
      int nowbuyorsell = 0;
      void CheckForOpen()
      {
      if (Time[0] == lasttime ) return; //
      每時間周期檢查一次 時間控制
      lasttime = Time[0];
      nowbuyorsell = buyorsell(); //
      獲取買賣信號

      if (nowbuyorsell == 1) //
      買 先結(jié)束已賣的
        CloseSell();
      if (nowbuyorsell == -1) //
      賣 先結(jié)束已買的
          CloseBuy();
      if (TimeDayOfWeek(CurTime()) == 1)
        {
        if (TimeHour(CurTime()) < 3 ) return; //
      周一早8點前不做具體決定于你的時區(qū)和服務(wù)器的時區(qū) 時間控制
        }
      if (TimeDayOfWeek(CurTime()) == 5)
        {
        if (TimeHour(CurTime()) > 19 ) return; //
      周五晚11點后不做
        }

      if (OrdersTotal( ) >= maxOpen) return ; 
      //
      如果已持有開倉次數(shù)達到最大,不做
      if (nowbuyorsell==0) return;  //
      不交易
      TradeOK();  //
      去下單交易
      }
      void TradeOK()  //
      去下單交易
      {
      int error ;
      if (nowbuyorsell == 1) //

        {
          switch (whichmethod)
          {
          case 1:  res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);break;
          case 2:  res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-StopLoss*Point,0,"",MAGICMA,0,Blue); break;
          case 3:  res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);break;
          case 4:  res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",MAGICMA,0,Blue);break;
          default : res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);break;
          }
          if (res <=0)
          {
          error=GetLastError();
          if(error==134)Print("Received 134 Error after OrderSend() !! ");        // not enough money
          if(error==135) RefreshRates();  // prices have changed
          }
          Sleep(5000);
          return ; 
        }
      if (nowbuyorsell == -1) //

        {
          switch (whichmethod)
          {
          case 1:  res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); break;
          case 2:  res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+StopLoss*Point,0,"",MAGICMA,0,Red); break;
          case 3:  res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,Bid-TakeProfit*Point,"",MAGICMA,0,Red); break;
          case 4:  res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,"",MAGICMA,0,Red); break;
          default : res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red); break;
          }
          if (res <=0)
          {
          error=GetLastError();
          if(error==134) Print("Received 134 Error after OrderSend() !! ");        // not enough money
          if(error==135) RefreshRates();  // prices have changed
          }
          Sleep(5000);
          return ; 
        }
      }
      void CTP()  //
      跟蹤止贏
      {
      bool bs = false;
      for (int i = 0; i < OrdersTotal(); i++)
      {
        if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)    break;
        if (OrderType() == OP_BUY)
        {
          if ((Bid - OrderOpenPrice()) > (TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT)))    //
      開倉價格當前止損和當前價格比較判斷是否要修改跟蹤止贏設(shè)置
          {
          if (OrderStopLoss() < Bid - TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT))
          {
            bs = OrderModify(OrderTicket(), OrderOpenPrice(), Bid - TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(),0, Green);
          }
          }
        }
        else if (OrderType() == OP_SELL)
        {
          if ((OrderOpenPrice() - Ask) > (TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT)))  //
      開倉價格當前止損和當前價格比較判斷是否要修改跟蹤止贏設(shè)置

          {
          if ((OrderStopLoss()) > (Ask + TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT)))
          {   
            bs = OrderModify(OrderTicket(), OrderOpenPrice(),
              Ask + TrailingStop * MarketInfo(OrderSymbol(), MODE_POINT), OrderTakeProfit(),0, Tan);
      }
          }
        }
      }
      }

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多