頂?shù)追中尾呗裕═BQ版)_第1頁
頂?shù)追中尾呗裕═BQ版)_第2頁
頂?shù)追中尾呗裕═BQ版)_第3頁
頂?shù)追中尾呗裕═BQ版)_第4頁
頂?shù)追中尾呗裕═BQ版)_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

頂?shù)追中尾呗裕═BQ版)頂?shù)追中尾呗允且环N基于技術分析的交易策略,主要用于捕捉市場的頂部和底部形態(tài)。該策略結合了移動平均線和分形形態(tài),旨在通過識別特定的價格模式來生成交易信號。**交易邏輯思路**1.**合約名稱處理**:-策略首先通過`SymbolReplace`函數(shù)對合約名稱進行處理,以提取合約代碼和交易所信息。這一過程對于后續(xù)的交易執(zhí)行至關重要,因為它確保了策略能夠準確地針對特定的合約進行操作。2.**移動平均線計算**:-在每個交易周期,策略會計算收盤價的60周期移動平均線(MA60)。這條均線作為策略判斷市場趨勢的重要參考,幫助交易者了解當前市場是處于上升趨勢還是下降趨勢。3.**分形形態(tài)識別**:-策略通過比較連續(xù)幾根K線的最高價、最低價來判斷是否出現(xiàn)頂分型或底分型形態(tài)。這些形態(tài)是市場轉折點的潛在標志,為交易者提供了入場和離場的信號。4.**交易信號生成**:-當市場出現(xiàn)特定的頂分型或底分型形態(tài),并且滿足其他相關條件(如收盤價相對于移動平均線的位置)時,策略會生成相應的交易信號。這些信號指示交易者應該進行買入還是賣出操作。5.**止損與止盈設置**:-策略在開倉時會立即設置止損點,以控制潛在的風險。同時,當市場出現(xiàn)與持倉方向相反的分形形態(tài)時,策略會考慮平倉以實現(xiàn)利潤。6.**交易執(zhí)行**:-根據(jù)生成的交易信號,策略會執(zhí)行相應的買入或賣出操作。這些操作可以是做多(買入)或做空(賣出),具體取決于市場的當前狀態(tài)和交易者的風險偏好。**策略特點**1.**趨勢跟蹤與反轉捕捉**:-該策略不僅能夠跟蹤市場的主要趨勢(通過移動平均線),還能夠捕捉市場的短期反轉點(通過分形形態(tài))。這使得交易者能夠在不同的市場環(huán)境下靈活應對。2.**風險管理**:-策略在開倉時即設置止損點,確保了交易者的風險在可控范圍內。此外,通過結合分形形態(tài)和其他條件來生成交易信號,策略進一步降低了誤判的風險。3.**自動化與靈活性**:-該策略可以自動化執(zhí)行交易決策,減少了人為干預的需要。同時,通過調整參數(shù)(如移動平均線的周期、分形形態(tài)的參數(shù)等),交易者可以根據(jù)自己的需求和偏好來定制策略。4.**適用性廣泛**:-頂?shù)追中尾呗赃m用于多種金融產品,包括股票、期貨、外匯等。只要市場存在價格波動和趨勢反轉的可能性,該策略就有可能發(fā)揮作用。函數(shù)一SymbolReplace代碼注釋:-

Params

部分:-

StringSymbolz;//合約名稱

:定義一個字符串類型的參數(shù),用于接收合約名稱。-

StringStrz("");//替換的字符

:定義一個字符串類型的參數(shù),初始值為空字符串,用于指定要進行替換的字符。-

Vars

部分:-

Array<String>AB;

:定義一個字符串數(shù)組,用于存儲分割后的合約名稱部分。-

StringSymCode;

:定義一個字符串變量,用于存儲合約代碼部分。-

StringSymExch;

:定義一個字符串變量,用于存儲合約交易所部分。-

Begin

部分:-

If(StringSplit(Symbolz,".",AB)<>2){ReturnInvalidString;}//分離合約交易所代碼

:使用

StringSplit

函數(shù)以"."為分隔符分割合約名稱

Symbolz

存入數(shù)組

AB

,如果分割結果不是兩部分,則返回無效字符串。-

SymCode=AB[0];//獲取合約代碼部分

:將數(shù)組

AB

的第一個元素賦值給

SymCode

,即獲取合約代碼部分。-

SymExch=AB[1];

:將數(shù)組

AB

的第二個元素賦值給

SymExch

,即獲取合約交易所部分。-

If(IsStringEx(SymCode,"9999"))//查找字符串部分含有9999

:如果合約代碼部分包含字符串"9999"。-

StringReplace(SymCode,"9999","9"+Strz);

:使用

StringReplace

函數(shù)將合約代碼中的"9999"替換為"9"加上參數(shù)

Strz

指定的字符。-

ElseIf(IsStringEx(SymCode,"9000"))//查找字符串部分含有9000

:如果合約代碼部分包含字符串"9000"。-

StringReplace(SymCode,"9000","9"+Strz);

:使用

StringReplace

函數(shù)將合約代碼中的"9000"替換為"9"加上參數(shù)

Strz

指定的字符。-

ElseIf(IsStringEx(SymCode,"9888"))//查找字符串部分含有9888

:如果合約代碼部分包含字符串"9888"。-

StringReplace(SymCode,"9888","9"+Strz);

:使用

StringReplace

函數(shù)將合約代碼中的"9888"替換為"9"加上參數(shù)

Strz

指定的字符。-

Else

部分:如果前面的條件都不滿足。-

If(IsStringEx(SymCode,"000"))

:如果合約代碼部分包含字符串"000"。-

StringReplace(SymCode,"000",Strz);

:使用

StringReplace

函數(shù)將合約代碼中的"000"替換為參數(shù)

Strz

指定的字符。-

ElseIf(IsStringEx(SymCode,"999"))

:如果合約代碼部分包含字符串"999"。-

StringReplace(SymCode,"999",Strz);

:使用

StringReplace

函數(shù)將合約代碼中的"999"替換為參數(shù)

Strz

指定的字符。-

ElseIf(IsStringEx(SymCode,"888"))

:如果合約代碼部分包含字符串"888"。-

StringReplace(SymCode,"888",Strz);

:使用

StringReplace

函數(shù)將合約代碼中的"888"替換為參數(shù)

Strz

指定的字符。-

If(IsStringEx(SymCode,"999"))

:如果合約代碼部分包含字符串"999"。-

ReturnSymCode+".TBFT";

:返回合約代碼加上".TBFT"。-

ReturnSymCode+"."+SymExch;

:返回合約代碼加上"."再加上合約交易所部分。函數(shù)二IsStringEx代碼注釋:-

Params

部分:-

StringStr;//原字符串

:定義一個字符串類型的參數(shù),用于接收原字符串。-

Stringdes;//查找的字符串

:定義一個字符串類型的參數(shù),用于指定要查找的字符串。-

Vars

部分:-

StringStrz;

:定義一個字符串變量。-

Begin

部分:-

//Strz=Lower(Str);//轉換成小寫字母

:注釋掉的代碼,原本用于將原字符串轉換為小寫字母。-

Strz=Str;

:將原字符串賦值給

Strz

。-

If(FindFirstOf(Strz,des)<>InvalidInteger)

:如果在

Strz

中找到

des

字符串,即

FindFirstOf

函數(shù)的返回值不是無效整數(shù)。-

ReturnTrue;

:返回真。-

ReturnFalse;

:如果沒有找到指定字符串,返回假。策略信號代碼注釋:-

Params

部分:-

NumericLots(1);

:定義一個數(shù)值類型的參數(shù),初始值為1,用于指定交易手數(shù)。-

Vars

部分:-

NumericMA60;

:定義一個數(shù)值變量,用于存儲60周期移動平均線的值。-

NumericMinPoint;//最小變動單位

:定義一個數(shù)值變量,用于存儲最小變動單位。-

NumericMQ;

:定義一個數(shù)值變量,用于存儲某個價格相關的值。-

NumericMW;

:定義一個數(shù)值變量,用于存儲某個價格相關的值。-

BoolDIFX(True);//底分型

:定義一個布爾變量,初始值為真,用于表示底分型狀態(tài)。-

BoolDFX(True);//頂分型

:定義一個布爾變量,初始值為真,用于表示頂分型狀態(tài)。-

Events

部分:-

OnBar(ArrayRef<Integer>indexs)

:當新的K線生成時觸發(fā)的事件處理函數(shù)。-

MA60=Average(Close,60);

:計算收盤價的60周期移動平均線,并賦值給

MA60

。-

PlotNumeric("MA60",MA60,0,Yellow,0);

:繪制

MA60

的值在圖表上,名稱為"MA60",顏色為黃色。-

MinPoint=MinMove*PriceScale;

:計算最小變動單位,賦值給

MinPoint

。-

MQ=AvgEntryPrice-30*MinPoint;

:計算一個用于止損的價格值,賦值給

MQ

。-

MW=AvgEntryPrice+30*MinPoint;

:計算一個用于止損的價格值,賦值給

MW

。-

DIFX=Low[2]<Low[1]AndLow[2]<Low[3]ANDHIGH[2]<HIGH[1]ANDHIGH[2]<HIGH[3];

:判斷是否為底分型狀態(tài)。-

DFX=High[2]>High[1]AndHigh[2]>High[3]ANDLOW[2]>LOW[1]ANDLOW[2]>LOW[3];

:判斷是否為頂分型狀態(tài)。-

If(MarketPosition<>1AndClose>MA60AndDIFX)//60均線之上,出現(xiàn)底分型形態(tài)做多

:如果當前沒有多頭頭寸且收盤價大于60周期移動平均線并且出現(xiàn)底分型形態(tài)。-

Buy(Lots,High);//做多

:以最高價買入指定手數(shù)。-

If(MarketPosition==1And((Close<MQ)OrDFX)&&BarsSinceEntry>0)//開倉即設止損(固定止損30跳),出現(xiàn)頂分型形態(tài)平多

:如果當前有多頭頭寸且收盤價小于

MQ

或者出現(xiàn)頂分型形態(tài)并且開倉后經過了至少一根K線。-

Sell(Lots,Low);

:以最低價賣出指定手數(shù),平多。-

If(MarketPosition<>-1AndClose<MA60AndDFX)//60均線之下,出現(xiàn)頂分型形態(tài)做空

:如果當前沒有空頭頭寸且收盤價小于60周期移動平均線并且出現(xiàn)頂分型形態(tài)。-

SellShort(Lots,Low);//做空

:以最低價賣出做空指定手數(shù)。-

If(MarketPosition==-1And((Close>MW)OrDIFX)&&BarsSinceEntry>0)//開倉即設止損(固定止損30跳),出現(xiàn)底分型形態(tài)平空

:如果當前有空頭頭寸且收盤價大于

MW

或者出現(xiàn)底分型形態(tài)并且開倉后經過了至少一根K線。-

BuyToCover(Lots,High);

:以最高價買入平倉,平空。-

Booll4e=False;//多進

:定義一個布爾變量,表示做多進場條件。-

Booll4x=False;//賣平

:定義一個布爾變量,表示平多條件。-

Bools4e=False;//空進

:定義一個布爾變量,表示做空進場條件。-

Bools4x=False;//買平

:定義一個布爾變量,表示平空條件。-

Numericl4e_price=Open;//開多價格

:定義一個數(shù)值變量,表示開多價格為開盤價。-

Numericl4x_price=Open;//平多價格

:定義一個數(shù)值變量,表示平多價格為開盤價。-

Numerics4e_price=Open;//開空價格

:定義一個數(shù)值變量,表示開空價格為開盤價。-

Numerics4x_price=Open;//平空價格

:定義一個數(shù)值變量,表示平空價格為開盤價。-

Numericlots=1;

:定義一個數(shù)值變量,表示交易手數(shù)為1。-

If(MarketPosition!=1&&l4e)

:如果當前沒有多頭頭寸并且滿足做多進場條件。-

Buy(lots,l4e_price);

:以指定手數(shù)和開多價格買入做多。-

If(MarketPosition!=-1&&s4e)

:如果當前沒有空頭頭寸并且滿足做空進場條件。-

SellShort(lots,s4e_price);

:以指定手數(shù)和開空價格賣出做空。-

If(MarketPosition==1&&BarsSinceEntry>0&&l4x)

:如果當前有多頭頭寸并且開倉后經過了至少一根K線并且滿足平多條件。-

Sell(0,l4x_price);

:以平多價格賣出平倉。-

If(MarketPosition==-1&&BarsSinceEntry>0&&s4x)

:如果當前有空頭頭寸并且開倉后經過了至少一根K線并且滿足平空條件。-

BuyToCover(0,s4x_price);

:以平空價格買入平倉。函數(shù)一SymbolReplace代碼:ParamsStringSymbolz;StringStrz("");VarsArray<String>AB;StringSymCode;StringSymExch;BeginIf(StringSplit(Symbolz,".",AB)<>2){ReturnInvalidString;}SymCode=AB[0];SymExch=AB[1];If(IsStringEx(SymCode,"9999")){StringReplace(SymCode,"9999","9"+Strz);}ElseIf(IsStringEx(SymCode,"9000")){StringReplace(SymCode,"9000","9"+Strz);}ElseIf(IsStringEx(SymCode,"9888")){StringReplace(SymCode,"9888","9"+Strz);}Else{If(IsStringEx(SymCode,"000")){StringReplace(SymCode,"000",Strz);}ElseIf(IsStringEx(SymCode,"999")){StringReplace(SymCode,"999",Strz);}ElseIf(IsStringEx(SymCode,"888")){StringReplace(SymCode,"888",Strz);}}If(IsStringEx(SymCode,"999")){ReturnSymCode+".TBFT";}ReturnSymCode+"."+SymExch;End函數(shù)二IsStringEx代碼:ParamsStringStr;Stringdes;VarsStringStrz;BeginStrz=Str;If(FindFirstOf(Strz,des)<>InvalidInteger){ReturnTrue;}ReturnFalse;End策略信號代碼:ParamsNumericLots(1);VarsNumericMA60;NumericMinPoint;NumericMQ;NumericMW;BoolDIFX(True);BoolDFX(True);EventsOnBar(ArrayRef<Integer>indexs){MA60=Average(Close,60);PlotNumeric("MA60",MA60,0,Yellow,0);MinPoint=MinMove*PriceScale;MQ=AvgEntryPrice-30*MinPoint;MW=AvgEntryPrice+30*MinPoint;DIFX=Low[2]<Low[1]AndLow[2]<Low[3]ANDHIGH[2]<HIGH[1]ANDHIGH[2]<HIGH[3];DFX=High[2]>High[1]AndHigh[2]>High[3]ANDLOW[2]>LOW[1]ANDLOW[2]>LOW[3];If(MarketPosition<>1AndClose>MA60AndDIFX)Buy(Lots,High);If(MarketPosition==1And((Close<MQ)OrDFX)&&BarsSinceEntry>

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論