intCopyBuffer(
int indicator_handle, // handle индикатораint buffer_num, // номер буфера индикатораint start_pos, // откуда начнем int count, // сколько копируемdouble buffer[] // массив, куда будут скопированы данные
);
应改成
intCopyBuffer(
int indicator_handle, // handle индикатора int buffer_num, // номер буфера индикатора datetime start_time, // с какой даты int count, // сколько копируем double buffer[] // массив, куда будут скопированы данные
);
我检查指标是否准备好了(在OnCalculate 的开头)。
你也可以添加一个周期检查
1.只是澄清一下。现在很清楚,我们说的是同一件事。
2) 我理解,但我不同意你必须翻转数组来做这件事。是否有必要为两个终端配备一个指标?这几乎是把镰刀和斧头合二为一。
3.据我所知,Buffer[]在函数CopyBuffer() 中被接收器使用,只获得一个指标值。
4.你没有注意到最重要的事情。拷贝指标值的开始不应该由条形指数决定,而是由第i个条形的时间决定。
1.好的。
2.我颠倒了数组,因为我从四个方面重写了指标--在其中一切工作正常,所有数据都是正确的。其中的一切都与按照循环中读取数据的确切顺序获取数据有关。如果我们不翻转缓冲区,我们将不得不从头开始写指标--为了什么?这是很复杂的。我引用这个指标只是作为一个例子,说明从一个非本地人那里获得数据是多么的错误。
不,在Buffer[]中,数据是一个一个地插入到循环中的--在循环的每个迭代中,从AO()中取出的一个值被插入。
4.你说的 "开始复制 "是什么意思?
1.良好。
2.我之所以翻转数组,是因为我正在从四个方面重写指标--在其中一切工作正常,所有数据都是正确的。一切都与按照循环中读取数据的确切顺序获取数据联系在一起。如果我们不翻转缓冲区,我们将不得不从头开始写指标--为了什么?这是很复杂的。我引用这个指标只是作为一个例子,说明从一个非本地人那里获得数据是多么的错误。
不,在Buffer[]中,数据被逐一插入循环中--在循环的每个迭代中,从AO()中获取的一个值被插入。
4.你说的 "开始复制 "是什么意思?
2.没有什么能阻止你建立一个从0到rate_total-1的循环。
3.是的,我在什么地方搞错了。
4.
应改成
"从哪里开始 "或 "从什么日期开始",这是开始将指标值复制到接收器阵列中。
3.是的,我在某个地方搞乱了一些东西。
4.在你的代码中。
应改成
"我们从哪里开始 "或 "从什么日期开始",这是开始将指标值复制到接收器阵列中。
如果我从循环索引中读取数值,为什么要传递日期?你有没有运行这个测试指标?它总是只从一个--设置中指定的电流因子--中提取AO。无论你如何切换当前的时间框架,AO图总是与你在设置中设置的时间框架相对应。
在这种情况下,所有的数据都被返回,但在我正在修改的指标中,数据没有从非本地价格返回。
你不需要这个测试指标--来自非本地电流的数据已经被返回。但在我的数据没有返回,但我以同样的方式得到它们。
如果我从循环索引中读取数值,为什么要传递日期?你有没有运行这个测试指标?它总是只从一个--设置中的setff来绘制AO。无论你如何切换当前的时间框架,AO图总是与你在设置中设置的时间框架相对应。
在这种情况下,所有的数据都被返回,但在我正在修改的指标中,数据没有从非本地价格返回。
你不需要这个测试指标--来自非本地电流的数据已经被返回。但我的没有,但我以完全相同的方式获得数据。
因为零条H4包含四个H1条。如果你要求H1期的指数2,你会得到H4期第2条的指标值。
我几乎不明白我能够写什么。
目前是13:35。当前H1条的开放时间=13:00。你试图通过bar=1的索引复制指标值,即当前H1期的12:00条。但在H4时段,你得到的不是12:00,而是8:00。
对于H1来说,第一条是12:00
对于H4,第一个小节是8:00
那里和那里的酒吧指数都是第一...
关于交易、自动交易系统和交易策略测试的论坛
虫子,虫子,问题
fxsaber, 2017.04.12 08:38
有点小题大做了。绕过赋值运算符关于交易、自动交易系统和测试交易策略的论坛
我无法从高时间框架中获得指标数据
Artyom Trishkin, 2017.04.14 01:23
四天来,我一直试图从指标中的高级时间框架中获取标准AO指标的数据,但仍然没有办法...
我在循环中读取AO数据,但正是在循环中没有历史数据。当前栏上有数据。问题是什么?我做错了什么?
关于交易、自动交易系统和交易策略测试的论坛
mql5语言的特点、技巧和窍门
fxsaber, 2017.02.27 18:40
谢谢你的提示!在野外,它是SymbolInfoMarginRate。所以现在是这样的double GetMarginRequired( const string Symb )
{
MqlTick Tick;
double MarginInit, MarginMain;
return((SymbolInfoTick(Symb, Tick) && SymbolInfoMarginRate(Symb, ORDER_TYPE_BUY, MarginInit, MarginMain)) ? MarginInit * Tick.ask *
SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_VALUE) / (SymbolInfoDouble(Symb, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0);
}
我们需要明确的是,在MT5中,不同方向的保证金要求可能有很大不同。也就是说,单一的MT4变体可能无法工作。当然,在外汇市场上,情况不会是这样的。但你必须记住。因此,一般来说,你应该这样写
bool MyOrderCalcMargin( const ENUM_ORDER_TYPE action, const string symbol, const double volume, const double price, double &margin )
{
double MarginInit, MarginMain;
const bool Res = SymbolInfoMarginRate(symbol, action, MarginInit, MarginMain);
margin = Res ? MarginInit * price * volume * SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_VALUE) /
(SymbolInfoDouble(symbol, SYMBOL_TRADE_TICK_SIZE) * AccountInfoInteger(ACCOUNT_LEVERAGE)) : 0;
return(Res);
}
高亮显示的 可以返回0。BKS遇到了这个问题。
像这样做了。
我认为你做的很多事情都是 "错误的"。请描述你需要做什么:一步一步,一点一点。
究竟哪里出了问题?这就是问题所在--我做错了什么,才会从一个非本地的时间框架中获得指标数据?
例如:指标在М1上运行,而AO的数据应该从М5上获得。因此,当我们有极限>1(历史需要重新计算)时,来自M5的AO返回零,没有数据错误。一旦所有的历史被计算出来(limit==0),那么带有M5的AO的数据就会开始到达。