//+------------------------------------------------------------------+//| Soltunov.mq5 |//| Copyright 2018, MetaQuotes Software Corp. |//| https://www.mql5.com |//+------------------------------------------------------------------+#property copyright"Copyright 2018, MetaQuotes Software Corp."#property link"https://www.mql5.com/ru/users/yosuf"#property version"1.00"#property indicator_chart_window#property indicator_buffers1#property indicator_plots1//--- plot Soltonov#property indicator_label1"Soltonov"#property indicator_type1DRAW_LINE#property indicator_color1clrMagenta#property indicator_style1STYLE_SOLID#property indicator_width11//--- indicator buffersdouble SoltonovBuffer[]; // это буфер линии индикатораdouble X[]; // это вспомогательный массив для значений цены//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
//--- indicator buffers mappingSetIndexBuffer(0,SoltonovBuffer,INDICATOR_DATA);
ArrayResize(X,13); // задаем размер динамического массива X - 13ArraySetAsSeries(X,true); // для удобства обучения устанавливаем индексацию массива как в таймсерииArraySetAsSeries(SoltonovBuffer,true); // для удобства обучения устанавливаем индексацию массива как в таймсерииArrayInitialize(SoltonovBuffer,EMPTY_VALUE); // инициализируем буфер индикатора пустыми значениями//---return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total,
constint prev_calculated,
constint begin,
constdouble &price[])
{
int N=rates_total-prev_calculated;
if(N>1 && rates_total>12) // если осуществляем первый вход или была задержка больше времени одного бара, выполняем инициализацию всех баров
{
for(int i=rates_total-1; i>11; i--)
{
ArrayCopy(X,price,0,i-12,13);
Soltonov(rates_total-1-i);
}
ArrayCopy(X,price,0,rates_total-13,13);
return(rates_total);
}
elseif(N==1) ArrayCopy(X,price,0,rates_total-13,13); // если новый барelse X[0]=price[rates_total-1]; // если новый тик без образования нового бара
Soltonov(0);
return(rates_total);
}
//+------------------------------------------------------------------+// Писать код в этой функции!//+------------------------------------------------------------------+void Soltonov(int pos) // основной расчет индикатора бара pos. В массиве X, размерностью 13 находятся значение цены 13 бар, начиная от позиции pos// X[0]- значение цены бара с номером pos// X[1]- значение цены бара с номером pos+1// ....// X[12]- значение цены бара с номером pos+12
{
double Sum=0; // создаем переменную для подсчета суммы баровfor(int i=0;i<13;i++) Sum = Sum+X[i]; // суммируем 13 баров
SoltonovBuffer[pos]=Sum/13; // помещаем в значение индикаторного буфера среднее арифметическое 13 цен
}
//+------------------------------------------------------------------+
交易员用Excel工作。它就像 "石蕊试纸"。如果他不熟悉电子表格,那他到底是什么样的交易员?他是如何计算预算和资金的?
而且,如果程序员不能将excel表翻译成MQL程序,他仍然应该练习:-)
优素福正试图提出他的观点(即使是我原则上不同意的推理),但你正在做一件更糟糕的事情--你没有提供基本的帮助,而是强迫他去学习不必要的东西。同时,大家都知道,他不会开始编程,也不会把他的公式转移到mql中。你只是嘲弄,从一个人身上拿走几个月甚至几年的时间。
嗯,是的,我无法想象如何直接写到excel表格中--它是由我自己坐在那里,解开纠结--这些表格非常错综复杂地交织在一起--所以它将不得不花时间来弄清楚,并且评估工作也应该根据TOR。
此外,还是根据我的经验,当我从Excel中重写算法时,我发现了逻辑上的错误,因为我另外思考了我所写的东西--在Excel中幻想往往很方便。
此外,我建议附上文件本身。
因此,我认为你关于强迫学习的论点是没有根据的,也是没有证据的。
如果你有这个技能,为什么不接过来,通过心灵感应从他的头脑中远距离读取TOR来帮助他呢?
我已经厌倦了解谜。就像我在第一页做了一个截图,上面有解释https://www.mql5.com/ru/forum/305148。 为了使信息更容易消化,在浅显的故事上进行计算,越少越好(这样会更容易理解你)。如果你想得到帮助,请压缩你的文字卷,没有人会阅读大的文字,更不会理解它。
移位系列的第一个数值如下。
1.1376 1.1377 1.1375 1.1361 1.1358
因为你有它。
x1 x2 x3 x4 y
1.1376 1.1376 1.1377 1.1375 1.1361
那么x1和x2是同一行?从1.1358 开始的CD5怎么了?已更正
对整个计算表进行截图。
对整个计算表进行截图。
你最好将excel文件压缩,并询问相关问题。否则这将永远持续下去。你最终会折磨到优素福的。嗯,他不能这样做。
劝说得好,自己发个截图,为发展做贡献。我明天会去看看。
你得到什么样的答案,就会有什么样的问候。如果你没有明确的信息,你就不会得到任何结果。
对整个计算表进行截图。
不要担心,该方案现在已经完全修复。
最好是将Excel文件压缩后再询问相关问题。否则这将永远持续下去。你最终会折磨到优素福的。嗯,他不能这样做。
尤里,你也在网上关注吗?
尤里,你也在网上关注吗?
因此,这里是虚拟指标。
例如,这个假人是一个简单的MA指标,但它根据你的情况进行了一些简化,在性能上不是最佳的,但对学习的压力较小。
为了编写你的指标,你只需在函数体中编写计算代码即可
目前,有一个以3行形式计算的MA,周期为13。
为什么我默认为13岁?因为你自己说,你目前使用13个价格值进行计算。
这13个值位于数组X中(X[0]到X[12])。
你只需在这个函数的主体中对这13个数值进行计算,并将数值写入指标缓冲区SoltonovBuffer[pos]中。整个指标将自动形成。
在MT5中,你按下F4并进入ME(MetaEditor)。在这里你可以创建一个自定义指标(Ctrl+N),在创建时指定一个名称,例如"Soltunov"(我的是默认名称)。当代码生成后,用我的假人替换所有这些代码。
并开始掌握编程。
我建议在MT5设置中把窗口的最大条数预设为不大(5000条就足够了)。
你不需要阅读任何书籍来掌握MQL5语言。按F1键使用帮助就可以了,首先点击感兴趣的功能或词。还可以使用帮助中的搜索功能。
请看gif动画(点击图片)。
我还强烈建议立即掌握ME的内置调试器与中断点设置,以观察变量变化的能力来步入程序。
也请看动画的GIF。
祝你好运,优素福!
如果你有任何问题,如果经验法则的方法没有帮助,不要犹豫,请提出。
我认为整个世界都会帮助你。