<p id="bffd9"><cite id="bffd9"></cite></p>

      <cite id="bffd9"><b id="bffd9"><thead id="bffd9"></thead></b></cite>
        <output id="bffd9"><cite id="bffd9"></cite></output>

              <p id="bffd9"></p>

                    <p id="bffd9"></p>
                    只發布交易干貨的網站
                    用實戰期貨交易系統和心得助你重塑交易認知

                    正規期貨開戶 | 手續費只+1分

                    90%交易者的手續費都被加收超1倍,一起看看最新的交易所手續費一覽表吧!

                    MT4平臺自帶的EA:Moving Average詳解

                    由于本站模板寬度的制約,看著會比較凌亂,建議復制本文內容,粘貼在記事本中,方便閱讀。

                    ?

                    使用過MT4平臺的人都知道,MT4平臺自帶了一個自動交易的EA指標,那就是Moving Average ,下面我們詳細解釋一下該指標的語句功能,以便各位匯友學習EA的編程。

                    MT4平臺自帶的EA:Moving Average詳解

                    ??????????? //+------------------------------------------------------------------+
                    ??????????? //|??????????????????????? Moving Average.mq4???????????????????????
                    ?????????????? |
                    ??????????? //|????? Copyright ?2005, MetaQuotes Software Corp.??????? |
                    ??????????? //|????????????????? http://www.metaquotes.net/?????????????????????
                    ????????????? |
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? #define MAGICMA?? 20050610
                    ??????????? //定義本EA操作的訂單的唯一標識號碼,由此可以實現在同一賬戶上多系統操作,各操作EA的訂單標識碼不同,就不會互相誤操作。凡是EA皆不可缺少,非常非常重要!!!
                    ??????????? //宏定義命令#define用法
                    ??????????? extern double Lots???????????? = 0.1;//每單的交易量
                    ??????????? extern double MaximumRisk??????? = 0.02;//本系統最大可以動用總資金的2%
                    ??????????? extern double DecreaseFactor???? = 3;//作者定義的參數,作用要看程序中的用法
                    ??????????? extern double MovingPeriod??? = 10;//EA中使用的均線的周期
                    ??????????? extern double MovingShift??????? =3;//EA中使用的均線向左的K線偏移量
                    ??????????? //extern 確定從外部程序輸入的變量, 會直接顯現輸入數據窗口。數列本身不能作為外部變量。
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? //| Calculate open positions????????????????????????????????????????
                    ??????????????? |
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? int CalculateCurrentOrders(string symbol)//函數作用,計算當前持倉訂單的數量
                    ??????????? {
                    ??????????? int buys=0,sells=0;//定義兩個臨時變量,準備用于后面的多空訂單的個數計算
                    ??????????? //----
                    ??????????? for(int i=0;i??????????? {
                    ??????????? if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)
                    ??????????? break;//挑出持倉單的每一個訂單位置
                    ??????????? if(OrderSymbol()==Symbol() &&
                    ??????????? OrderMagicNumber()==MAGICMA)//根據訂單位置,比較是否是當前K線商品
                    ??????????? 以及訂單唯一標識號是否和本程序設置的一致,即判斷這個訂單是不是當前EA操作的。(用于避免EA誤操作其他程序控制的持倉單)
                    ?????????????????? {
                    ??????????? if(OrderType()==OP_BUY)?? buys++;//找到符合條件的持倉單后,如果是多單,則臨時變量buys增加1
                    ??????????? if(OrderType()==OP_SELL) sells++;//找到符合條件的持倉單后,如果是空單,則臨時變量sells增加1
                    ??????????? }
                    ??????????? }
                    ??????????? //---- return orders volume
                    ??????????? if(buys>0) return(buys);
                    ??????????? else??? return(-sells);//本函數返回查詢計算結束時的持倉單的個數.這種模式返回是假設不存在鎖單的。
                    ??????????? }
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? //| Calculate optimal lot size??????????????????????????????????????
                    ????????????????? |
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? double LotsOptimized()//函數目的,根據要求 計算出訂單交易量
                    ??????????? {
                    ??????????? double lot=Lots;
                    ??????????? int orders=HistoryTotal();???? // history orders total 歷史出場訂單的個數
                    ??????????? int losses=0;??????????????? // number of losses orders without a
                    ??????????? break
                    ??????????? //---- select lot size
                    ??????????? lot=NormalizeDouble(AccountFreeMargin()*MaximumRisk/1000.0,1);//通過風險系數的計算獲得當前入場單應該采用的交易量,除以1000是因為大多貨幣對匯價都在這個附近。
                    ??????????? //---- calcuulate number of losses orders without a break
                    ??????????? if(DecreaseFactor>0)
                    ??????????? {
                    ??????????? for(int i=orders-1;i>=0;i--)
                    ??????????? {
                    ??????????? if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false) { Print("Error
                    ??????????? in history!"); break; }//循環查詢出場單隊列
                    ??????????? if(OrderSymbol()!=Symbol() || OrderType()>OP_SELL) continue;//
                    ??????????? //----
                    ??????????? if(OrderProfit()>0) break;
                    ??????????? if(OrderProfit()??????????? }
                    ??????????? if(losses>1)
                    ??????????? lot=NormalizeDouble(lot-lot*losses/DecreaseFactor,1);//如果虧損額大于1,則下一入場單的交易量修正為新的計算結果。
                    ??????????? }
                    ??????????? //---- return lot size
                    ??????????? if(lot??????????? return(lot);
                    ??????????? }
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? //| Check for open order conditions????????????????????????????????
                    |
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? void CheckForOpen()//檢查入場條件的情況并作處理
                    ??????????? {
                    ??????????? double ma;
                    ??????????? int res;
                    ??????????? //---- go trading only for first tiks of new
                    ??????????? bar,注意下面采用的Volume[0],Open[1]等可以確保交易是在當前周期下k線 收盤價走完才發生的。
                    ??????????? if(Volume[0]>1)
                    ??????????? return;//如果當前K線持倉量(成交量)大于1,說明不是K線的開盤時間點,即當前k線還沒收盤確定,則直接返回
                    ??????????? 否則是K線第一個價格,則繼續下面的過程
                    ??????????? //---- get Moving Average
                    ??????????? ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);//獲得當前的均線數值
                    ??????????? //---- sell conditions
                    ??????????? if(Open[1]>ma && Close[1]??????????? {
                    ??????????? res=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
                    ??????????? return;
                    ??????????? }
                    ??????????? //---- buy conditions
                    ??????????? if(Open[1]ma)?? //如當前K開盤價小于均線,而前一K收盤價大于均線,則發出入場空單
                    ??????????? {
                    ??????????? res=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
                    ??????????? return;
                    ??????????? }
                    ??????????? //----
                    ??????????? }
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? //| Check for close order conditions????????????????????????????????
                    ??????????? |
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? void CheckForClose()//檢查出場條件的情況并作處理
                    ??????????? {
                    ??????????? double ma;
                    ??????????? //---- 只在一個k收盤另一個新出現時交易
                    ??????????? if(Volume[0]>1) return;
                    ??????????? //---- get Moving Average
                    ??????????? ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
                    ??????????? //----
                    ??????????? for(int i=0;i??????????? {
                    ??????????? if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==false)??????? break;
                    ??????????? if(OrderMagicNumber()!=MAGICMA || OrderSymbol()!=Symbol()) continue;
                    ??????????? //----確定是不是自己系統下的單子。
                    ??????????? if(OrderType()==OP_BUY)??????????? //多單平倉
                    ??????????? {
                    ??????????? if(Open[1]>ma && Close[1]??????????? OrderClose(OrderTicket(),OrderLots(),Bid,3,White);//如果持倉是多單,則當當前K開盤價小于均
                    ??????????? 線,而前一K收盤價大于均線,則發出平倉指令
                    ??????????? break;
                    ??????????? }
                    ??????????? if(OrderType()==OP_SELL)???????? //空單平倉
                    ??????????? {
                    ??????????? if(Open[1]ma)
                    ??????????? OrderClose(OrderTicket(),OrderLots(),Ask,3,White););//如果持倉是空單,則當當前K開盤價大于
                    ??????????? 均線,而前一K收盤價小于均線,則發出平倉指令
                    ??????????? break;
                    ??????????? }
                    ??????????? }
                    ??????????? //----
                    ??????????? }
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? //| Start function??????????????????????????????????????????????????
                    ??????????????????????? |
                    ??????????? //+------------------------------------------------------------------+
                    ??????????? void start()//主循環過程
                    ??????????? {
                    ??????????? //---- check for history and trading
                    ??????????? if(Bars??????????? //---- calculate open orders by current symbol
                    ??????????? if(CalculateCurrentOrders(Symbol())==0) CheckForOpen();
                    ??????????? else????????????????????????????????? CheckForClose();
                    ??????????? //----
                    ??????????? }

                    來源:外匯邦

                    本文名稱:《MT4平臺自帶的EA:Moving Average詳解》
                    本文鏈接:http://www.bjhqmc.com/tuijian/32784.html
                    免責聲明:投資有風險!入市需謹慎!本站內容均由用戶自發貢獻,或整編自互聯網,或AI編輯完成,因此對于內容真實性不能作任何類型的保證!請自行判斷內容真假!但是如您發現有涉嫌:抄襲侵權、違法違規、疑似詐騙、虛假不良等內容,請通過底部“聯系&建議”通道,及時與本站聯系,本站始終秉持積極配合態度處理各類問題,因此在收到郵件后,必會刪除相應內容!另外,如需做其他配合工作,如:設置相關詞匯屏蔽等,均可配合完成,以防止后續出現此類內容。生活不易,還請手下留情!由衷希望大家能多多理解,在此先謝過大家了~

                    我要說說 搶沙發

                    評論前必須登錄!

                    立即登錄   注冊

                    切換注冊

                    登錄

                    忘記密碼 ?

                    切換登錄

                    注冊

                    我們將發送一封驗證郵件至你的郵箱, 請正確填寫以完成賬號注冊和激活

                      <p id="bffd9"><cite id="bffd9"></cite></p>

                        <cite id="bffd9"><b id="bffd9"><thead id="bffd9"></thead></b></cite>
                          <output id="bffd9"><cite id="bffd9"></cite></output>

                                <p id="bffd9"></p>

                                      <p id="bffd9"></p>
                                      成人电影