|
|
自己通过教学编写的海龟资金管理,但是好像无法在EA当中准确获取应该建立的海**寸,希望可以得到前辈的指点。
以下部分为源码:
//---海龟资金管理
double turtle_Lots(string symbol,int turtle)
{
double lots = 0; // 初始仓位
double total_money = accountInfo.Equity(); // 账户净值
double turtle_Money = 0; // 海龟投入的资金总额
if(turtle_Money <= 0) return 0;
int digits = (int)SymbolInfoInteger(symbol,SYMBOL_DIGITS); // 获取指定交易品种的点值
double n = NormalizeDouble(MathAbs(ATR[1]),digits) / point; // 将ATR值转为整点值
if(n < 0) return 0;
//---获取点值
double tickVal = SymbolInfoDouble(symbol,SYMBOL_TRADE_TICK_VALUE);
if(tickVal <= 0) return 0;
//---计算手数 = 海龟资金投入总额/ATR/点值
lots = NormalizeDouble(turtle_Money/n/tickVal,digits);
//---进行规范化处理
double lotstep = SymbolInfoDouble(symbol,SYMBOL_VOLUME_STEP); // 获取交易执行的最小成交量???翻译感觉不是很准确
lots = MathRound(lots/lotstep) * lotstep;
// 判断是否超过持仓限制
double minVolume = SymbolInfoDouble(symbol,SYMBOL_VOLUME_MIN);
double maxVolume = SymbolInfoDouble(symbol,SYMBOL_VOLUME_MAX);
if(lots >= minVolume && lots <= maxVolume)
return true;
return lots;
}
复制代码 |
|