- 发布者:
- Vladimir Karputov
- 显示:
- 2556
- 等级:
- 已发布:
- 2017.02.07 12:07
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
思路提供者 — Hazem, MQL5 代码作者 — barabashkakvn。
操作基于两个指标: iCCI (商品通道指数, CCI) 和 iMACD (移动均线聚合/离散, MACD)。OnTradeTransaction()。
由于 CCI 和 MACD 指标具有不同的测量尺度, 因此引入了转换比率:
input int macd_coefficient=10000; // cci 和 macd 的对齐
这些值在此处对齐:
void OnTick()
{
//---
double cci=iCCIGet(back);
double macd=iMACDGet(MAIN_LINE,back)*macd_coefficient;
Comment("cci: ",DoubleToString(cci,2),"\n",
"macd: ",DoubleToString(macd,Digits()+1),"\n",
"buyLevel: ",buyLevel);
{
//---
double cci=iCCIGet(back);
double macd=iMACDGet(MAIN_LINE,back)*macd_coefficient;
Comment("cci: ",DoubleToString(cci,2),"\n",
"macd: ",DoubleToString(macd,Digits()+1),"\n",
"buyLevel: ",buyLevel);
所获数值的清晰信息立即显示在此处 - 用于直观检查。
并且, 一个有趣的想法已经实现 — EA (在 OnTradeTransaction() 函数里) 执行亏损和盈利交易的汇总 ("Number_of_losses" 变量)。如果亏损平仓 — "Number_of_losses" 递增 "1"; 如果盈利平仓, "Number_of_losses" 递减 "1"。当开仓时, 手数计算为: 如果 "Number_of_losses">"0" (这意味着当前亏损平仓超过盈利很多) 手数依据 "increase" 系数递增。如果 "Number_of_losses"<"0" (这意味着当前盈利平仓超过亏损很多) — 手数大小取自系数:
if(Number_of_losses>0.0)
ExtLot=InpLot*MathPow(2,increase);
else
ExtLot=InpLot;
ExtLot=InpLot*MathPow(2,increase);
else
ExtLot=InpLot;
测试结果 EURUSD M30, 自 2016.06.09 到 2016.12.04, 初始本金 - 3000:
由MetaQuotes Ltd译自俄语
原代码: https://www.mql5.com/ru/code/17115

基于零滞后 MACD 自定义指标进行交易。

智能交易系统基于 iAlligator (鳄鱼), iMA (移动均线) 指标。