量化交易軟件策略:實用自動交易技術
概述: 本文不討論眾多盈利交易技術,而是集中于若干實用非標準技術的集合,解釋它們?yōu)楹斡袃r值,并展示實戰(zhàn)適用性。
部分持倉平倉算法,利用最后一根柱線的走勢: 該算法用于當開倉后不確定價格方向時的交易。通過部分平倉,智能地彌補點差帶來的虧損,甚至產(chǎn)生盈利。部分平倉有助于獲得最大利潤,特別是在不了解未來波浪性質(zhì)的情況下。
理論: 分析波浪和價格趨勢,該算法采用了走勢回滾的可能性越大的燭條越強的假設。目的是在減少虧損的同時增加盈利。
方程式: 文章提供了一套數(shù)學方程式來計算需部分平倉的交易量,并通過不同的系數(shù)來實現(xiàn)靈活性。方程中包括了線性和冪函數(shù),并進一步詳細計算了特定系數(shù)。
代碼: 文章給出了實現(xiàn)部分平倉的MQL4/MQL5代碼示例,該代碼計算了需平倉的手數(shù),并提供了一個用于部分平倉的函數(shù)。
總結(jié): 文章提出了一個新穎的交易技術,通過理論和數(shù)學模型的解釋,展示了其如何實施和適用。這一非標準技術在理論上和實踐中都具有實用性。
在代碼中,該函數(shù)如下所示:
double CalcCloseLots(double orderlots0,double X) ?? { ?? double functionvalue; ?? double correctedlots; ?? if ( X < 0.0 ) return 0.0; ?? functionvalue=StartLotsToOnePoint*MathPow(X ,MathLog(EndLotsToOnePoint/StartLotsToOnePoint)/MathLog(PointsForEndLots)); ?? correctedlots=GetLotAniError(functionvalue); ?? if ( correctedlots > orderlots0 ) return orderlots0; ?? else return correctedlots; ?? }
調(diào)整手數(shù)的函數(shù),確保手數(shù)僅采用正確的數(shù)值,以紫色高亮顯示(沒必要展示其內(nèi)部代碼)。 該函數(shù)本身是在綠色高亮顯示的運算符下計算的,但它只是更通用函數(shù)的一部分,在此處稱為:
void PartialCloseType()// close order partially ?? { ?? bool ord; ?? double ValidLot; ?? MqlTick TickS; ?? SymbolInfoTick(_Symbol,TickS); ???????????? ?? for ( int i=0; i<OrdersTotal(); i++ ) ??????{ ??????ord=OrderSelect( i, SELECT_BY_POS, MODE_TRADES ); ???????????????????????????? ??????if ( ord && OrderMagicNumber() == MagicF && OrderSymbol() == _Symbol ) ???????? { ???????? if ( OrderType() == OP_BUY ) ????????????{ ????????????ValidLot=CalcCloseLots(OrderLots(),(Open[0]-Open[1])/_Point); ????????????if ( ValidLot > 0.0 ) ord=OrderClose(OrderTicket(),ValidLot,TickS.bid,MathAbs(SlippageMaxClose),Green); ????????????} ???????? if ( OrderType() == OP_SELL ) ????????????{ ????????????ValidLot=CalcCloseLots(OrderLots(),(Open[1]-Open[0])/_Point); ????????????if ( ValidLot > 0.0 ) ord=OrderClose(OrderTicket(),ValidLot,TickS.ask,MathAbs(SlippageMaxClose),Red); ????????????}???????? ???????? break; ???????? } ??????}