2014年7月14日 星期一

外匯 - 瑞士法郎的交易策略 [程式碼]


EasyTrader ArtNo 178
芝商所是全球衍生性商品交易服務龍頭,2010年執行了31億筆期貨與選擇權合約,涵括所有類別資產,總值近1千兆美元。交易方式包括交易所期貨與選擇權買賣,或中央櫃買結算交易。所有交易均受到芝商所結算系統的中央對手機制保護。芝商所提供全球化投資服務,全球最多樣的衍生性金融商品都可在芝商所的單一交易平台Globex取得。

芝商所旗下擁有4個主要交易中心
  • 1、芝加哥商品交易所(CME)
  • 2、紐約商業交易所 (NYMEX)
  • 3、芝加哥期貨交易所(CBOT)
  • 4、紐約商品交易所 (COMEX)

從1800年代中期開始,上述交易所就開始與期貨市場共同成長,如今在芝商所整合下,更能為全球提供金融風險管理機會。
外匯期貨合約是一種交易所制定的標準化的法律契約。該合約規定交易雙方各自支付一定的保證金和佣金,並按照交易幣種、數量、交割月份與地點等買賣一定數量的外匯。在實踐中,交易雙方很少進行實際貨幣的交割,而是在到期前作反向操作使原有合約對衝掉。

外匯期貨合約的主要特點
1、外匯期貨交易是在交易所集中公開競價交易的一種合約,通常交易場所固定,交易時間有限制。
2、外匯期貨合約是標準化合約。
3、外匯期貨合約實行保證金制度。


(1)瑞郎貨幣特徵
 由于瑞士奉行中立和不結盟政策,所以瑞士被認為是世界最安全的地方,被稱為傳統避險貨幣,加之瑞士政府對金融、外匯采取的保護政策,使大量的外匯涌入瑞士。瑞士法郎也成為穩健受歡迎的國際結算與外匯交易貨幣。

(2)影響瑞郎的因素

影響瑞士法郎的基本面因素
 Swiss National Bank(SNB): 瑞士國家銀行。瑞士國家銀行在制訂貨幣政策和匯率政策上有著極大的獨立性。不像大多數其它國家的中央銀行,瑞士央行并不使用特定的貨幣市場利率來指導貨幣狀況。直到1999年秋,央行一直使用外匯互換和回購協議作為影響貨幣供應量和利率的主要工具。

 由于使用了外匯互換協議,貨幣流動性的管理成為影響瑞士法郎的主要因素。當央行想提高市場流動性,就會買入外幣,主要是美圓,并賣出瑞士法郎,從而影響匯率。

 從1999年12月開始,央行的貨幣政策發生了轉移,從貨幣主義經驗者的方式(主要以貨幣供應量為目標)轉移到以基于通貨膨脹的方式,并定為2.00%的年通貨膨脹上限。央行將使用一定范圍內的3月期倫敦銀行間拆借利率(LIBOR)作為控制貨幣政策的手段。



瑞士法郎期貨 15 分K 留倉 交易週期 2010/01/01 ~ 2013/11/26 交易成本 美金 $75 元






瑞士法郎期貨 30 分K 留倉 交易週期 2010/01/01 ~ 2013/11/26 交易成本 美金 $75 元





瑞士法郎期貨 60 分K 留倉 交易週期 2010/01/01 ~ 2013/11/26 交易成本 美金 $75 元






60 分K 策略程式碼
{ ***** System Code Start here *****}

{ Public inputs }
Inputs:LuckyNet(0),IntraDay(2), TradeStopLoss(0.044),TradeProfit(0.021) ;
Inputs:TradeInday(1),Time1SW(1),Time1B(100),Time1E(700) ;
Inputs:Time2SW(0),Time2B(900),Time2E(1300),Time3SW(0) ;
Inputs:Time3B(900),Time3E(1300),PositionSW(0) ;
inputs:Frac_LMM(1.77),NBar_LM(17),Frac_SMM(3.21),NBar_SM(7) ;

{ Public Variables }
Vars:Cond_LE(false),Cond_SE(false),CondNet_L(false),CondNet_S(false),
UBuy(0),USell(0),BuyStop(0),SellStop(0),BuyStopA(0),SellStopA(0),
NewBuyStopA(0),NewSellStopA(0),PL(0),PS(0),LastTradeDay(false) ;
Vars:TimeOK1(true),TimeOK2(true),TimeOK3(true),PosSW(true) ;

{ BuyMode Setup }
inputs:Bar_L1(39) ;
inputs:NBar_LE(6),Frac_LE(3.41) ;

{ SellMode Setup }
inputs:Bar_S1(46),NBar_SE(17),Frac_SE(1.20) ;

{ Exit Long Position Setup }

{ Exit Short Position Setup }

{ BuyMode Variable Setup }

{ SellMode Variable Setup }
Vars:SE_ATR(0) ;

{ Exit Long Position Variable Setup }
Vars:LMM_ATR(0) ;

{ Exit Short Position Variable Setup }
Vars:TS_ATR(0),Trigger_TSA(false) ;
Vars:SMM_ATR(0) ;

{ initial profit and loss }
if MarketPosition = 0 then begin
   PL = AvgPrice*TradeProfit ;
   PS = AvgPrice*TradeStopLoss ;
end ;

{ ATR calculate for code }
LMM_ATR = AvgTrueRange(NBar_LM);
SMM_ATR = AvgTrueRange(NBar_SM);
SE_ATR = AvgTrueRange(NBar_SE);

{ Entry and Exit prices }
UBuy = Highest(High,Bar_L1) ;
USell = Average(Open, Bar_S1) - Frac_SE * SE_ATR ;

{ Long and Short Entry Condition Setup }
Cond_LE = DayofWeek(Date) >= 3 ;
Cond_SE = DayofMonth(Date) <= 7 ;

{ Combine Trade Number in day }
Cond_LE = Cond_LE and EntriesToday(date) <= TradeInDay ;
Cond_SE = Cond_SE and EntriesToday(date) <= TradeInDay ;

{ Combine Trade time zone in day }
if Time1SW = 0 then TimeOK1 = true else TimeOK1 = (time >= Time1B and time <= Time1E) ;
if Time2SW = 0 then TimeOK2 = true else TimeOK2 = (time >= Time2B and time <= Time2E) ;
if Time3SW = 0 then TimeOK3 = true else TimeOK3 = (time >= Time3B and time <= Time3E) ;

if Time1SW = 1 then Begin
   Cond_LE = Cond_LE and TimeOK1 ;
   Cond_SE = Cond_SE and TimeOK1 ;
end ;

{ Check Position status for entry}
if PositionSW = 0 then PosSW = true else PosSW = (MarketPosition = 0) ;
Cond_LE = Cond_LE and PosSW ;
Cond_SE = Cond_SE and PosSW ;

{ Entry Long orders }
if Cond_LE then Buy next bar at UBuy Stop ;

{ Entry Short orders }
if Cond_SE then SellShort next bar at USell Stop ;

{ Exit orders, long trades }
If MarketPosition > 0 then begin
   PL = EntryPrice(0)* TradeProfit;
   PS = EntryPrice(0)* TradeStopLoss ;
   If BarsSinceEntry = 0 then begin
      BuyStop = EntryPrice - Frac_LMM * LMM_ATR;
   end;
   SetStopLoss(PS * BigPointValue) ;
   SetProfitTarget(PL * BigPointValue) ;
end;

{ Exit orders, short trades }
If MarketPosition < 0 then begin
   PL = EntryPrice(0)* TradeProfit;
   PS = EntryPrice(0)* TradeStopLoss ;
   If BarsSinceEntry = 0 then begin
      SellStop = EntryPrice + Frac_SMM * SMM_ATR;
   end;
   BuytoCover next bar at SellStop stop;
end;

if IntraDay = 0 then SetExitonClose
else if IntraDay = 1 and LastTradeDay then SetExitonClose ;

{***************** End of Strategy ************}

雖然不熟悉此商品,不過透過人工智慧策略產生器的協助,還是產出了一些策略,而且很特別的是,當限制進場時間在 01:00 ~07:00 時,績效都會比其他時段好很多喔

瑞士法郎期貨的歷史資料下載連結

沒有留言:

張貼留言