关闭@1x
香港:2025-03-27 00:17:48
  • 紐約:2025-03-26 11:17:48
  • 倫敦:2025-03-26 16:17:48
  • 東京:2025-03-27 01:17:48
  • 悉尼:2025-03-27 02:17:48
  • 香港:2025-03-27 00:17:48
  • 新加坡:2025-03-27 00:17:48
首頁> 資訊> 最新 >正文

【3-5】- 策略編寫實戰

策略編寫包含三大核心:信号檢查、建倉管理、持倉管理(風險控制),50行代碼編寫一個完整策略

文章來源:123财經導航 | william

在學習了一系列基本的知識後,今天帶大家進入策略編寫的實戰部分,策略編寫包含三大核心:信号檢查、建倉管理、持倉管理(風險控制),通俗一點講就是:必須從清楚進場到出場出場的一個完整流程。

  • 信号檢查:既開倉之前需知道爲什麽而開倉、開多或者開空,使開的倉位有理有據;
  • 建倉管理:信号出來以後,你可以自由決策,根據這個型号執行一系列動作,比如要開多單還是空單,亦或者要加倉還是平倉等。
  • 持倉管理或風險控制:一個完整的倉位必須有始有終,比如設置固定盈損,移動止損、甚至加倉、手數控制,加倉次數控制等。像流水線一樣,每個環節規定好該做什麽。

準備工作:

先寫好後續要使用到的外部參數。
input int fast =20,
slow =50,
magic =2024;
input double lot = 0.01;
input string cmt = "死亡均線";

信号定義:

本次策略講解我們以MA移動均線爲例進行講解,先來熟悉一下這個指标的基本參數;

首先檢查是否有新的 K 線生成,定義的一個 NewBar() 函數來實現。隻有在有新 K 線時,才會繼續執行後續的策略邏輯,以避免無節制的開倉。

  • 在有新 K 線的情況下,計算兩組不同周期的移動平均線:
  • fast1 和 fast2 是短期移動平均線,使用了 slow 周期。
  • slow1 和 slow2 是長期移動平均線,使用了 fast 周期。

信号判斷:


這裏使用了 iMA() 函數來計算移動平均線,并指定了不同的時間位移(2 和 1)來獲取當前和上一個 K 線的數值。根據兩組移動平均線的關系,判斷是否出現交叉信号:

  • 如果短期均線 fast1 上穿長期均線 slow1(即 fast1 > fast2 且 slow1 < slow2),則發出買入信号。此時先平掉任何現有的賣單,然後下達買單。
  • 如果短期均線 fast1 下穿長期均線 slow1(即 fast1 < fast2 且 slow1 > slow2),則發出賣出信号。此時先平掉任何現有的買單,然後下達賣單。

完整代碼:

#property copyright "BBTrading"
#property link      "https://www.00123.com"
#property strict

input    int fast =20,
             slow =50,
             magic =2024;
input double lot = 0.01;
input string cmt = "死亡均線";

int OnInit()
  {
   return(INIT_SUCCEEDED);
  }
void OnTick()
  {
     if(NewBar()){
        double fast1 =iMA(Symbol(),PERIOD_CURRENT,slow,0,MODE_SMMA,PRICE_CLOSE,2);
        double fast2 =iMA(Symbol(),PERIOD_CURRENT,fast,0,MODE_SMMA,PRICE_CLOSE,2);
        double slow1 =iMA(Symbol(),PERIOD_CURRENT,slow,0,MODE_SMMA,PRICE_CLOSE,1);
        double slow2 =iMA(Symbol(),PERIOD_CURRENT,fast,0,MODE_SMMA,PRICE_CLOSE,1); 
        if(fast1>fast2 && slow1<slow2){
           CloseOrder(OP_SELL);
           int res=OrderSend(_Symbol,OP_BUY,lot,Ask,20,0,0,cmt,magic);
        }
        if(fast1<fast2 && slow1>slow2){
           CloseOrder(OP_BUY);
           int res=OrderSend(_Symbol,OP_SELL,lot,Bid,20,0,0,cmt,magic);
        } 
     }
  }
void CloseOrder(int type)
  {
     for(int j = OrdersTotal() - 1; j >= 0; j--) {
        if(OrderSelect(j, SELECT_BY_POS, MODE_TRADES)){
           if(OrderSymbol() == _Symbol && OrderMagicNumber()==magic && OrderType() == type){
              bool close =OrderClose(OrderTicket(),OrderLots(),OrderClosePrice(),10);
           }
        }
     }
  }
bool NewBar()
  {
     static datetime  last;
     if(last!= Time[0]){
        last = Time[0];
        return true;
     }
     return false;

【免責聲明】123财經導航所發布的信息内容僅供交易投資者參考,并不構成投資建議“據此操作,風險自擔”。網站上部分信息内容及圖片來自于網絡/注冊作者/投稿人,版權歸原作者所有,如有侵權,請您與我們聯系關閉,郵箱:938123@qq.com。
hhhhhhh
热门评论
最新评论
还没有评论快来抢沙发吧!
第三方賬号登錄
第三方賬号登錄
第三方賬号登錄
  • *站點:
  • *網址:
  • 類型:
  • 聯系方式:
  • 簡介:

  • RRH123歡迎您的加入!如有問題請添加咨詢管理員【微信号:938123】
  • *類型:
  • *問題:
  • 圖片說明:
  • 聯系方式:

  • RRH123感謝您的反饋!如有問題請添加咨詢管理員【微信号:938123】