- 显示:
- 9388
- 等级:
- 已发布:
- 2020.04.06 13:17
-
需要基于此代码的EA交易或指标吗?请在自由职业者服务中订购 进入自由职业者服务
效果图:(由于中间隔了很长一段时间没开,所以资金有跳空现象)
输入时:
“InpPeriod”是文件保存周期,currect代表当前图表周期;
“InpTimerSec”是OnTimer周期,默认是1秒,填“0”时代表不输出显示至图表。
本"Expert"会在“Files”产生三个以上文件,如图:
“.log”是日志文件,“.dat”是保存的数据文件,“.csv”是记录周期数据的文件,可以用excel打开,用“open,high,low,close”这些数据画出股价图,如下:

23 | 2020.04.06 12:00:00 | 2346.93 | 2357.5 | 2342.21 | 2355.69 | 42.72 |
推荐使用"InpTimerSec>=1",其代码如下:
定义“Symbol”:
m_currency_symbol = Currency() + "_" + IntegerToString(AccountNumber());
首先用“CustomSymbolCreate”创建一个自定义交易品种,然后替换图表:
bool ControlAccount::SetCustom(void) { bool is_custom; if(!SymbolExist(this.Symbol(),is_custom) || !is_custom) if(!CustomSymbolCreate(this.Symbol())) { Print("CustomCreate error:",GetLastError()); return false; } return SymbolSelect(this.Symbol(),true) && CustomSymbolSetInteger(this.Symbol(),SYMBOL_DIGITS,this.Digits()); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ bool ControlAccount::SetShow(void) { return SetCustom() && ChartSetSymbolPeriod(0,this.Symbol(),ExtPeriod); }
在“OnTimer”中,把相关账户资金信息赋于"MqlTick"结构中,并CustomTicksAdd:
void ControlAccount::UpdateTick(MqlTick &tick,uint flags = TICK_FLAG_LAST)const { tick.time = TimeTradeServer(); tick.bid = Equity(); tick.ask = Balance(); tick.last = FreeMargin(); tick.volume = long(Margin() * 100);//pow(10,this.Digits()) tick.time_msc = tick.time * 1000; //GetTickCount() tick.flags = flags; tick.volume_real = Profit(); }
void ControlAccount::OnTimer() { if(!Check()) return; if(Refresh()) { UpdateTick(m_ticks[0]); if(!CustomTicksAdd(this.Symbol(),m_ticks)) ArrayPrint(m_ticks); } }
你在其他EA可以用"CopyRates"或者"iBars"等访问该自定义交易品种的时间序列来做风控。
需要注意的是:
1.如果账户中有订单,最好用服务器连续开着,否则隔了一段时间后会出现资金跳空现象。
2.账户出入金会出现跳空或者K线拉长,因为在这个盘,你就是主力。

于主图显示,类似于期货日内均线,可以选择更多的结算周期

该指标可以获取两个不同货币对各个时期的K线价格,然后通过简单的加减乘除显示在副图上,用来分析当前平台上没有的自定义商品走势。