http://www.weistock.com/bbs/dispbbs.asp?BoardID=4&ID=2183&skin=0
本示例以后臺自動交易的方式,展現了金字塔實現延遲信號確認的工作原理。
本代碼可以實現3天現上穿5天線后,20秒等待信號確認后,再發開倉單。
請選擇固定時間間隔模式運行后臺自動交易,間隔時間設為1秒
本公式會在運行時產生很多臨時數據,請用戶再第二天交易前清空這些歷史變量,否則會導致與第二天的臨時變量沖突。方法 工具菜單-》數據-》全局變量,進去后,選擇“清空”按鈕
MA1:=MA(CLOSE,3);
MA2:=MA(CLOSE,5);
CROS:=CROSS(MA1,MA2);
CROS2:=CROSS(MA2,MA1);
BUY1:=FALSE;
IF ISLASTBAR THEN
BEGIN
IF CROS THEN
BEGIN
//將當前信號周期置全局變量數據庫
//數據名字前加信號周期,標記周期位置
CRTEMP:='TEMP1'&NUMTOSTR( BARPOS, 0);
//讀取原有變量的時間,判斷是否到延時時間
BUYTIME1:=EXTGBDATA(CRTEMP);
BUYTIME2:=TIMETOT0(CURRENTTIME);
DEBUGOUT('D1 %.0f',BUYTIME1);
IF BUYTIME1 > 1 THEN //第一次信號的原數據庫讀取會得到0值
BEGIN
DEBUGOUT('D2 %.0f',BUYTIME2 - BUYTIME1);
IF BUYTIME2 - BUYTIME1 > 20 THEN
BEGIN
//大于20秒的延遲,表示信號已經得到確認
BUY1:=TRUE;
END
END
ELSE
BEGIN
//第一次信號位置記錄
EXTGBDATASET(CRTEMP,TIMETOT0(CURRENTTIME));
END
END
ELSE
BEGIN
//否則表示信號中間消失了
CRTEMP:='TEMP1'&NUMTOSTR( BARPOS, 0);
EXTGBDATASET(CRTEMP,0);
END
END
TBUY(BUY1,1,MKT);
TSELL(CROS2,0,MKT);