概述: 本文不讨论众多盈利交易技术,而是集中于若干实用非标准技术的集合,解释它们为何有价值,并展示实战适用性。
部分持仓平仓算法,利用最后一根柱线的走势: 该算法用于当开仓后不确定价格方向时的交易。通过部分平仓,智能地弥补点差带来的亏损,甚至产生盈利。部分平仓有助于获得最大利润,特别是在不了解未来波浪性质的情况下。
理论: 分析波浪和价格趋势,该算法采用了走势回滚的可能性越大的烛条越强的假设。目的是在减少亏损的同时增加盈利。
方程式: 文章提供了一套数学方程式来计算需部分平仓的交易量,并通过不同的系数来实现灵活性。方程中包括了线性和幂函数,并进一步详细计算了特定系数。
代码: 文章给出了实现部分平仓的MQL4/MQL5代码示例,该代码计算了需平仓的手数,并提供了一个用于部分平仓的函数。
总结: 文章提出了一个新颖的交易技术,通过理论和数学模型的解释,展示了其如何实施和适用。这一非标准技术在理论上和实践中都具有实用性。
在代码中,该函数如下所示:
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; }
调整手数的函数,确保手数仅采用正确的数值,以紫色高亮显示(没必要展示其内部代码)。 该函数本身是在绿色高亮显示的运算符下计算的,但它只是更通用函数的一部分,在此处称为:
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; } }