新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 672 1...665666667668669670671672673674675676677678679...1953 新评论 Igor Makanu 2018.10.19 10:02 #6711 inter78:事实上,我做了,但我不喜欢漫长的反应时间 时间不长,只是打个勾......但总的来说,你需要阅读帮助。 你不能通过 "尝试 "来学习MQL,它是基于С++的,但它与МТ平台相联系,所以你需要研究帮助。 你的代码中已经有了文件处理和与全局变量 和图形的工作 ...每次打勾都有很多不必要的操作 如果你想快速执行,请使用OnChartEvent(),它不会在测试器中生成,但首先开始研究MQL4的帮助。 inter78 2018.10.19 10:22 #6712 Igor Makanu:操作时间不长,是一个一个的嘀......但总的来说,开始阅读帮助,你不能靠 "直觉 "来学习MQL,MQL是基于C++的,但它与MT平台绑定,你不看帮助是不行的。 你的代码中已经有了文件处理和与全局变量 和图形的工作 ...每次打勾都有很多不必要的操作 如果你想快速执行,请使用OnChartEvent(),它不会在测试器中生成,但首先开始研究MQL4的帮助。 我可能要请技师来让它清醒过来。我将不能够。这个指标在处理无限数量的开放图表时非常方便。这些按钮显示符号的当前利润和买入和卖出订单的数量。 X-place 2018.10.19 14:03 #6713 大家好。在代码库中发现了一个有用的Ind-Fractals指标。然而,它在每个条形上都画出分形,而不是正确地计算它们。我想使用这个指标,但它 "坏了"((帮助我找到一个错误,我曾试图联系作者,但他不回复信息。为方便起见,这里重复了代码。#property copyright "Copyright © 2005, MetaQuotes Software Corp.#属性链接 "http://www.metaquotes.net"//----#property indicator_chart_window#property indicator_buffers 8#property indicator_color1 Red#property indicator_color2 Red#property indicator_color3 Blue#property indicator_color4 Blue#property indicator_color5 Lime#property indicator_color6 Lime#property indicator_color7 Sienna#property indicator_color8 Sienna//---- 输入参数外部bool Comm=true。//---- 缓冲区双倍ExtMapBuffer1[]。双倍ExtMapBuffer2[]。双倍ExtMapBuffer3[]。双倍ExtMapBuffer4[]。双倍ExtMapBuffer5[]。双倍ExtMapBuffer6[]。双倍ExtMapBuffer7[]。双倍ExtMapBuffer8[]。//+------------------------------------------------------------------+//|自定义指标初始化功能//+------------------------------------------------------------------+int init(){//---- 指标SetIndexStyle(0,DRAW_ARROW);//指标线样式SetIndexArrow(0,217); //规定了箭头类型SetIndexBuffer(0,ExtMapBuffer1);//将指标缓冲区 与一维动态数组的双倍类型绑定。该功能有2个版本。SetIndexEmptyValue(0,0.0);//设置指标线的空值。SetIndexStyle(1,DRAW_ARROW)。SetIndexArrow(1,218);SetIndexBuffer(1,ExtMapBuffer2)。SetIndexEmptyValue(1,0.0)。SetIndexStyle(2,DRAW_ARROW)。SetIndexArrow(2,217);SetIndexBuffer(2,ExtMapBuffer3)。SetIndexEmptyValue(2,0.0)。SetIndexStyle(3,DRAW_ARROW)。SetIndexArrow(3,218)。SetIndexBuffer(3,ExtMapBuffer4)。SetIndexEmptyValue(3,0.0)。SetIndexStyle(4,DRAW_ARROW)。SetIndexArrow(4,217);SetIndexBuffer(4,ExtMapBuffer5)。SetIndexEmptyValue(4,0.0)。SetIndexStyle(5,DRAW_ARROW)。SetIndexArrow(5,218)。SetIndexBuffer(5,ExtMapBuffer6)。SetIndexEmptyValue(5,0.0)。SetIndexStyle(6,DRAW_ARROW)。SetIndexArrow(6,217);SetIndexBuffer(6,ExtMapBuffer7)。SetIndexEmptyValue(6,0.0)。SetIndexStyle(7,DRAW_ARROW)。SetIndexArrow(7,218)。SetIndexBuffer(7,ExtMapBuffer8)。SetIndexEmptyValue(7,0.0)。return(0); }//+------------------------------------------------------------------+//|Custor指示器去初始化功能|//+------------------------------------------------------------------+int deinit() {return(0); }//------------------------------------------------------------------bool Fractal(string F,int Per,int shift) {如果(Period()>Per)返回(-1)。Per=Per/Period()*2+MathCeil(Per/Period()/2)。如果(shift<Per)返回(-1)。如果(shift>Bars-Per)返回(-1)。for(int i=1;i<=Per;i++) {如果(shift+i>=Bars || shift-i<0) 返回(-1)。如果(F=="U") {如果(High[shift+i]>High[shift])返回(-1)。如果(High[shift-i]>=High[shift])返回(-1); }如果(F=="L") {如果(Low[shift+i]<Low[shift])返回(-1)。如果(Low[shift-i]<=Low[shift])返回(-1); } }return(1); }//------------------------------------------------------------------int start(){int D1=1440,H4=240,H1=60,M15=15,B;双P。int counted_bars=IndicatorCounted();//最后一次调用指标后未改变的条数。B=Bars-counted_bars。如果(counted_bars==0) B--;if(Period()==D1)P=150*Point;// period返回当前图表周期。如果(Period()==H4)P=70*Point。如果(Period()==H1)P=40*Point。if(Period()==30)P=30*Point;如果(Period()==M15)P=20*Point。如果(Period()==5)P=10*Point;如果(Period()==1)P=5*Point;for(int shift=B;shift>0;shift--){如果(Fractal("U",M15,shift)==1) ExtMapBuffer1[shift]=High[shift]+P;否则ExtMapBuffer1[shift]=0。if(Fractal("L",M15,shift)==1) ExtMapBuffer2[shift]=Low[shift]-P。否则ExtMapBuffer2[shift]=0。if(Fractal("U",H1,shift)==1) ExtMapBuffer3[shift]=High[shift]+P;否则ExtMapBuffer3[shift]=0。if(Fractal("L",H1,shift)==1) ExtMapBuffer4[shift]=Low[shift]-P。否则ExtMapBuffer4[shift]=0。if(Fractal("U",H4,shift)==1) ExtMapBuffer5[shift]=High[shift]+P;否则ExtMapBuffer5[shift]=0。if(Fractal("L",H4,shift)==1) ExtMapBuffer6[shift]=Low[shift]-P。否则ExtMapBuffer6[shift]=0。如果(Fractal("U",D1,shift)==1) ExtMapBuffer7[shift]=High[shift]+P;否则ExtMapBuffer7[shift]=0。if(Fractal("L",D1,shift)==1) ExtMapBuffer8[shift]=Low[shift]-P;否则ExtMapBuffer8[shift]=0。}if(Comm) Comment("D1 - brown\n H4 - green\n H1 - blue\nM15 - red")。return(0);} MetaQuotes Software Corp. www.metaquotes.net Миллионы трейдеров и сотни брокеров не могут ошибаться — они выбрали MetaTrader 5 для торговли на Форексе и финансовых рынках! Узнать больше Any questions from newcomers KG Support & Resistance MTF_Resistance_Support with Alert... very psyman 2018.10.19 20:13 #6714 我在这里因为这种代码被骂过,这是我第一次有这种情况 :-) 该代码应插入 一个用Alt+S打开的表格中。 Artyom Trishkin 2018.10.19 20:19 #6715 psyman:我在这里因为这种代码被骂过,这是我第一次有这种情况 :-) 你必须把代码粘贴 到一个按Alt+S打开的表格中。你会被责骂吗?没有任何方式。你想怎么写代码就怎么写。但是......如果你想得到问题的答案,请试着尊重那些你正在寻求帮助的人。就这么简单。 psyman 2018.10.19 20:22 #6716 关于交易、自动交易系统和策略测试的论坛 对MQL4新手的任何问题,对算法和代码的帮助和讨论 Artyom Trishkin, 2018.10.18 08:07 这么说吧:在编辑器中创建一个指标模板,在创建时添加适当数量的输入变量和绘图缓冲区。 接下来,让我们从具体的任务中分析一下该怎么做。我上次就是这么做的,只是改变了变量和数组的名称。 当使用iMA时,它只在周和日,即蜡烛包含100点以上的情况下起作用,它在较低的时间框架上没有任何作用。原因似乎是四舍五入。 如果使用iMAOnArray,所有TFs的i-ras窗口都是空的。日志中没有任何错误。 //+------------------------------------------------------------------+ //| _null.mq4 | //| Copyright 2014, MetaQuotes Software Corp. | //| http://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2014, MetaQuotes Software Corp." #property link "http://www.mql5.com" #property version "1.00" #property strict #property indicator_separate_window #property indicator_buffers 1 #property indicator_plots 1 //--- plot OC #property indicator_label1 "O-C" #property indicator_type1 DRAW_LINE #property indicator_color1 clrSteelBlue #property indicator_style1 STYLE_SOLID #property indicator_width1 1 //--- indicator buffers double ip1Buf[]; input int ip1=100; double tmp1[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { IndicatorBuffers(2); string s_name1; s_name1="O-C (" + IntegerToString(ip1) + ")"; IndicatorShortName(s_name1); SetIndexLabel(0, s_name1); SetIndexBuffer(1, tmp1); //--- indicator buffers mapping SetIndexBuffer(0,ip1Buf); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { int i; Print("rates_total = ",rates_total); for(i=1; i<rates_total-1; i++) { //Print("i = ",i); tmp1[i]=MathMax(open[i],close[i])-MathMin(open[i],close[i]); // tmp1[i]=close[i]; //ip1Buf[i]=iMA(NULL,0,1,0,0,tmp1[i],0); ip1Buf[i]=iMAOnArray(tmp1,1,1,0,0,0); } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+ Igor Makanu 2018.10.19 20:32 #6717 psyman: 如果使用iMAOnArray,所有TF上的i-ra窗口都是空的。日志中没有任何错误。你在使用iMAOnArray()时周期为1,即iMAOnArray()的值基本上是数组tmp1的值。 如果你想弄清楚你在计算什么,就把循环缩短for(i=1; i<10; i++) 并解印所有你想计算的数据,虽然不计算一些复杂的公式可能更容易,但使用iMAOnArray()建立iMA和iMAOnArray()--iMA和iMAOnArray()都是相同的计算....唉,如果你能在这个论坛上得到一个技术问题的答案,你就应该学会计算和处理这些信息。 Artyom Trishkin 2018.10.19 20:53 #6718 psyman:上次我这样做,只是改变了变量和数组的名称。 当使用iMA i-r时,只在周和日工作,在蜡烛中超过100点,它不在较低的TF上画任何东西。其原因似乎是四舍五入。 如果使用iMAOnArray,所有TFs的i-ras窗口都是空的。日志中没有任何错误。 第一个周期计算第一个缓冲区的数值。 第二周期通过第一周期计算的数值来计算MA。 考虑一下iMAOnArray()是什么意思。在阵列上写下MA。你如何翻译它?每个人的指尖上都有一个谷歌翻译器。放-译-收。阵列上的MA。 这意味着它是一个基于初步计算和填充阵列的移动平均线。 相应地:第一周期--准备必要的阵列,第二周期--根据第一周期准备的阵列构建移动平均线。 那你是怎么做的?你在第一个数组中输入一个值(其他值还没有准备好),并尝试在这个值上建立MA。 我给了你一个模板。 关于交易、自动交易系统和策略测试的论坛 任何关于MQL4初学者的问题,帮助和讨论算法和代码 Artyom Trishkin, 2018.10.18 09:39 指标。 //+------------------------------------------------------------------+ //| TestMA.mq5 | //| Copyright 2018, MetaQuotes Software Corp. | //| https://mql5.com/ru/users/artmedia70 | //+------------------------------------------------------------------+ #property copyright "Copyright 2018, MetaQuotes Software Corp." #property link "https://mql5.com/ru/users/artmedia70" #property version "1.00" #property indicator_chart_window #ifdef __MQL4__ #property strict #property indicator_buffers 2 #else #property indicator_buffers 3 #property indicator_plots 2 #endif //--- plot MAstd #property indicator_label1 "Calculation MA" #property indicator_type1 DRAW_LINE #property indicator_color1 clrBlue #property indicator_style1 STYLE_SOLID #property indicator_width1 4 //--- plot MAcalc #property indicator_label2 "Standart MA" #property indicator_type2 DRAW_LINE #property indicator_color2 clrDarkOrange #property indicator_style2 STYLE_DOT #property indicator_width2 2 //--- input parameters input int InpPeriod = 10; // Period input ENUM_MA_METHOD InpMethod = MODE_EMA; // Method input ENUM_APPLIED_PRICE InpAppliedPrice = PRICE_CLOSE; // Applied price //--- indicator buffers double BufferMAcalc[]; double BufferMAstd[]; double BufferPrice[]; //--- int digits; int period_ma; int handle_ma; CAvg avg(); //--- includes //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- #ifdef __MQL4__ IndicatorBuffers(3); #endif period_ma=(InpPeriod<1? 1 : InpPeriod); digits=Digits()+1; //--- indicator buffers mapping SetIndexBuffer(0,BufferMAcalc,INDICATOR_DATA); SetIndexBuffer(1,BufferMAstd,INDICATOR_DATA); SetIndexBuffer(2,BufferPrice,INDICATOR_CALCULATIONS); //--- ArraySetAsSeries(BufferMAcalc,true); ArraySetAsSeries(BufferMAstd,true); ArraySetAsSeries(BufferPrice,true); //--- #ifdef __MQL5__ ResetLastError(); handle_ma=iMA(NULL,PERIOD_CURRENT,period_ma,0,InpMethod,InpAppliedPrice); if(handle_ma==INVALID_HANDLE) { Print("Error creation iMA(",(string)period_ma,"): ",GetLastError()); return INIT_FAILED; } #endif //--- Comment("\nMA type: ",avg.MethodToString(InpMethod),", price: ",avg.PriceToString(InpAppliedPrice),", period: ",(string)period_ma); //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[], const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[]) { //--- Установка массивов буферов как таймсерий #ifdef __MQL5__ ArraySetAsSeries(open,true); ArraySetAsSeries(high,true); ArraySetAsSeries(low,true); ArraySetAsSeries(close,true); #endif //--- Проверка количества доступных баров if(rates_total<fmax(period_ma,4)) return 0; //--- Проверка и расчёт количества просчитываемых баров int limit=rates_total-prev_calculated; if(limit>1) { limit=rates_total-1; ArrayInitialize(BufferMAcalc,EMPTY_VALUE); ArrayInitialize(BufferMAstd,EMPTY_VALUE); ArrayInitialize(BufferPrice,0); } //--- Подготовка данных #ifdef __MQL5__ int count=(limit>1 ? rates_total : 1),copied=0; copied=CopyBuffer(handle_ma,0,0,count,BufferMAstd); if(copied!=count) return 0; #endif //--- Расчёт индикатора for(int i=limit; i>=0 && !IsStopped(); i--) { #ifdef __MQL4__ BufferMAstd[i]=iMA(NULL,PERIOD_CURRENT,period_ma,0,InpMethod,InpAppliedPrice,i); #endif BufferPrice[i]=avg.AppliedPrice(InpAppliedPrice,NULL,PERIOD_CURRENT,i); BufferMAcalc[i]=avg.GetMA(rates_total,InpMethod,period_ma,i,BufferPrice); } //--- return value of prev_calculated for next call return(rates_total); } //+------------------------------------------------------------------+你可以扔掉与五有关的一切,得到一个四的模板。虽然这个模板是多平台的--你可以把它用于两个终端--只需设置你的缓冲区和它们的数量。在这个模板中,有两张图和一个计算,可以在这里看到。 //--- indicator buffers mapping SetIndexBuffer(0,BufferMAcalc,INDICATOR_DATA); SetIndexBuffer(1,BufferMAstd,INDICATOR_DATA); SetIndexBuffer(2,BufferPrice,INDICATOR_CALCULATIONS); //--- psyman 2018.10.19 21:00 #6719 =另外,你使用iMAOnArray()的周期为1,即iMAOnArray()的值基本上是数组tmp1的值。 我已经尝试了不同的值来使用,1仍然是这些实验的最后一个变量。 由于某些原因,ip1Buf[4]=2147483647.0在所有TF上的i-r缓冲区写的是同一个数字,例如,而数组的值都是不同的tmp1[4]=0.1300000000000097,等等。 但即使如此,也应该画出一条直线,而在i-r图表上绝对没有,刻度是从0到0的标记。 Igor Makanu 2018.10.19 21:13 #6720 psyman:=另外,你使用iMAOnArray()的周期为1,即iMAOnArray()的值基本上是数组tmp1的值。 我已经尝试了不同的值来使用,1仍然是这些实验的最后一个变量。 由于某些原因,所有TF上的i-ras缓冲区都被写入相同的数字,例如ip1Buf[4] = 2147483647.0,尽管数组的值都是不同的tmp1[4] = 0.1300000000000097,等等。 但即使在这种情况下,也应该画出一条直线,而在i-r图表上绝对没有,刻度是从0到0的标记。2147483647.0 好开始使用搜索引擎!https://www.mql5.com/ru/forum/224831 再一次,我刚刚写了Artem,你需要自己阅读,从一个简单的开始......在图表上用指标画出收盘价,然后试着让它变得更复杂,在一个周期内做同样的事情,在第二个周期内根据已经计算出的收盘价的缓冲区做МА计算。 2147483647 в буфере 2018.01.15www.mql5.com День Добрый! Подскажите, пожалуйста, что это за хрень. Не первый раз сталкиваюсь... 1...665666667668669670671672673674675676677678679...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
事实上,我做了,但我不喜欢漫长的反应时间
时间不长,只是打个勾......但总的来说,你需要阅读帮助。 你不能通过 "尝试 "来学习MQL,它是基于С++的,但它与МТ平台相联系,所以你需要研究帮助。
你的代码中已经有了文件处理和与全局变量 和图形的工作 ...每次打勾都有很多不必要的操作
如果你想快速执行,请使用OnChartEvent(),它不会在测试器中生成,但首先开始研究MQL4的帮助。
操作时间不长,是一个一个的嘀......但总的来说,开始阅读帮助,你不能靠 "直觉 "来学习MQL,MQL是基于C++的,但它与MT平台绑定,你不看帮助是不行的。
你的代码中已经有了文件处理和与全局变量 和图形的工作 ...每次打勾都有很多不必要的操作
如果你想快速执行,请使用OnChartEvent(),它不会在测试器中生成,但首先开始研究MQL4的帮助。
大家好。
在代码库中发现了一个有用的Ind-Fractals指标。然而,它在每个条形上都画出分形,而不是正确地计算它们。我想使用这个指标,但它 "坏了"((帮助我找到一个错误,我曾试图联系作者,但他不回复信息。为方便起见,这里重复了代码。
#property copyright "Copyright © 2005, MetaQuotes Software Corp.
#属性链接 "http://www.metaquotes.net"
//----
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Blue
#property indicator_color4 Blue
#property indicator_color5 Lime
#property indicator_color6 Lime
#property indicator_color7 Sienna
#property indicator_color8 Sienna
//---- 输入参数
外部bool Comm=true。
//---- 缓冲区
双倍ExtMapBuffer1[]。
双倍ExtMapBuffer2[]。
双倍ExtMapBuffer3[]。
双倍ExtMapBuffer4[]。
双倍ExtMapBuffer5[]。
双倍ExtMapBuffer6[]。
双倍ExtMapBuffer7[]。
双倍ExtMapBuffer8[]。
//+------------------------------------------------------------------+
//|自定义指标初始化功能
//+------------------------------------------------------------------+
int init()
{
//---- 指标
SetIndexStyle(0,DRAW_ARROW);//指标线样式
SetIndexArrow(0,217); //规定了箭头类型
SetIndexBuffer(0,ExtMapBuffer1);//将指标缓冲区 与一维动态数组的双倍类型绑定。该功能有2个版本。
SetIndexEmptyValue(0,0.0);//设置指标线的空值。
SetIndexStyle(1,DRAW_ARROW)。
SetIndexArrow(1,218);
SetIndexBuffer(1,ExtMapBuffer2)。
SetIndexEmptyValue(1,0.0)。
SetIndexStyle(2,DRAW_ARROW)。
SetIndexArrow(2,217);
SetIndexBuffer(2,ExtMapBuffer3)。
SetIndexEmptyValue(2,0.0)。
SetIndexStyle(3,DRAW_ARROW)。
SetIndexArrow(3,218)。
SetIndexBuffer(3,ExtMapBuffer4)。
SetIndexEmptyValue(3,0.0)。
SetIndexStyle(4,DRAW_ARROW)。
SetIndexArrow(4,217);
SetIndexBuffer(4,ExtMapBuffer5)。
SetIndexEmptyValue(4,0.0)。
SetIndexStyle(5,DRAW_ARROW)。
SetIndexArrow(5,218)。
SetIndexBuffer(5,ExtMapBuffer6)。
SetIndexEmptyValue(5,0.0)。
SetIndexStyle(6,DRAW_ARROW)。
SetIndexArrow(6,217);
SetIndexBuffer(6,ExtMapBuffer7)。
SetIndexEmptyValue(6,0.0)。
SetIndexStyle(7,DRAW_ARROW)。
SetIndexArrow(7,218)。
SetIndexBuffer(7,ExtMapBuffer8)。
SetIndexEmptyValue(7,0.0)。
return(0); }
//+------------------------------------------------------------------+
//|Custor指示器去初始化功能|
//+------------------------------------------------------------------+
int deinit() {return(0); }
//------------------------------------------------------------------
bool Fractal(string F,int Per,int shift) {
如果(Period()>Per)返回(-1)。
Per=Per/Period()*2+MathCeil(Per/Period()/2)。
如果(shift<Per)返回(-1)。
如果(shift>Bars-Per)返回(-1)。
for(int i=1;i<=Per;i++) {
如果(shift+i>=Bars || shift-i<0) 返回(-1)。
如果(F=="U") {
如果(High[shift+i]>High[shift])返回(-1)。
如果(High[shift-i]>=High[shift])返回(-1); }
如果(F=="L") {
如果(Low[shift+i]<Low[shift])返回(-1)。
如果(Low[shift-i]<=Low[shift])返回(-1); } }
return(1); }
//------------------------------------------------------------------
int start()
{
int D1=1440,H4=240,H1=60,M15=15,B;
双P。
int counted_bars=IndicatorCounted();//最后一次调用指标后未改变的条数。
B=Bars-counted_bars。
如果(counted_bars==0) B--;
if(Period()==D1)P=150*Point;// period返回当前图表周期。
如果(Period()==H4)P=70*Point。
如果(Period()==H1)P=40*Point。
if(Period()==30)P=30*Point;
如果(Period()==M15)P=20*Point。
如果(Period()==5)P=10*Point;
如果(Period()==1)P=5*Point;
for(int shift=B;shift>0;shift--)
{
如果(Fractal("U",M15,shift)==1) ExtMapBuffer1[shift]=High[shift]+P;
否则ExtMapBuffer1[shift]=0。
if(Fractal("L",M15,shift)==1) ExtMapBuffer2[shift]=Low[shift]-P。
否则ExtMapBuffer2[shift]=0。
if(Fractal("U",H1,shift)==1) ExtMapBuffer3[shift]=High[shift]+P;
否则ExtMapBuffer3[shift]=0。
if(Fractal("L",H1,shift)==1) ExtMapBuffer4[shift]=Low[shift]-P。
否则ExtMapBuffer4[shift]=0。
if(Fractal("U",H4,shift)==1) ExtMapBuffer5[shift]=High[shift]+P;
否则ExtMapBuffer5[shift]=0。
if(Fractal("L",H4,shift)==1) ExtMapBuffer6[shift]=Low[shift]-P。
否则ExtMapBuffer6[shift]=0。
如果(Fractal("U",D1,shift)==1) ExtMapBuffer7[shift]=High[shift]+P;
否则ExtMapBuffer7[shift]=0。
if(Fractal("L",D1,shift)==1) ExtMapBuffer8[shift]=Low[shift]-P;
否则ExtMapBuffer8[shift]=0。
}
if(Comm) Comment("D1 - brown\n H4 - green\n H1 - blue\nM15 - red")。
return(0);
}
我在这里因为这种代码被骂过,这是我第一次有这种情况 :-)
该代码应插入 一个用Alt+S打开的表格中。
我在这里因为这种代码被骂过,这是我第一次有这种情况 :-)
你必须把代码粘贴 到一个按Alt+S打开的表格中。
你会被责骂吗?没有任何方式。你想怎么写代码就怎么写。但是......如果你想得到问题的答案,请试着尊重那些你正在寻求帮助的人。就这么简单。
关于交易、自动交易系统和策略测试的论坛
对MQL4新手的任何问题,对算法和代码的帮助和讨论
Artyom Trishkin, 2018.10.18 08:07
这么说吧:在编辑器中创建一个指标模板,在创建时添加适当数量的输入变量和绘图缓冲区。
接下来,让我们从具体的任务中分析一下该怎么做。
我上次就是这么做的,只是改变了变量和数组的名称。
当使用iMA时,它只在周和日,即蜡烛包含100点以上的情况下起作用,它在较低的时间框架上没有任何作用。原因似乎是四舍五入。
如果使用iMAOnArray,所有TFs的i-ras窗口都是空的。日志中没有任何错误。
如果使用iMAOnArray,所有TF上的i-ra窗口都是空的。日志中没有任何错误。
你在使用iMAOnArray()时周期为1,即iMAOnArray()的值基本上是数组tmp1的值。
如果你想弄清楚你在计算什么,就把循环缩短for(i=1; i<10; i++)
并解印所有你想计算的数据,虽然不计算一些复杂的公式可能更容易,但使用iMAOnArray()建立iMA和iMAOnArray()--iMA和iMAOnArray()都是相同的计算....唉,如果你能在这个论坛上得到一个技术问题的答案,你就应该学会计算和处理这些信息。
上次我这样做,只是改变了变量和数组的名称。
当使用iMA i-r时,只在周和日工作,在蜡烛中超过100点,它不在较低的TF上画任何东西。其原因似乎是四舍五入。
如果使用iMAOnArray,所有TFs的i-ras窗口都是空的。日志中没有任何错误。
第一个周期计算第一个缓冲区的数值。
第二周期通过第一周期计算的数值来计算MA。
考虑一下iMAOnArray()是什么意思。在阵列上写下MA。你如何翻译它?每个人的指尖上都有一个谷歌翻译器。放-译-收。阵列上的MA。
这意味着它是一个基于初步计算和填充阵列的移动平均线。
相应地:第一周期--准备必要的阵列,第二周期--根据第一周期准备的阵列构建移动平均线。
那你是怎么做的?你在第一个数组中输入一个值(其他值还没有准备好),并尝试在这个值上建立MA。
我给了你一个模板。
关于交易、自动交易系统和策略测试的论坛
任何关于MQL4初学者的问题,帮助和讨论算法和代码
Artyom Trishkin, 2018.10.18 09:39
指标。
你可以扔掉与五有关的一切,得到一个四的模板。虽然这个模板是多平台的--你可以把它用于两个终端--只需设置你的缓冲区和它们的数量。在这个模板中,有两张图和一个计算,可以在这里看到。
=另外,你使用iMAOnArray()的周期为1,即iMAOnArray()的值基本上是数组tmp1的值。
我已经尝试了不同的值来使用,1仍然是这些实验的最后一个变量。
由于某些原因,ip1Buf[4]=2147483647.0在所有TF上的i-r缓冲区写的是同一个数字,例如,而数组的值都是不同的tmp1[4]=0.1300000000000097,等等。
但即使如此,也应该画出一条直线,而在i-r图表上绝对没有,刻度是从0到0的标记。
=另外,你使用iMAOnArray()的周期为1,即iMAOnArray()的值基本上是数组tmp1的值。
我已经尝试了不同的值来使用,1仍然是这些实验的最后一个变量。
由于某些原因,所有TF上的i-ras缓冲区都被写入相同的数字,例如ip1Buf[4] = 2147483647.0,尽管数组的值都是不同的tmp1[4] = 0.1300000000000097,等等。
但即使在这种情况下,也应该画出一条直线,而在i-r图表上绝对没有,刻度是从0到0的标记。
2147483647.0 好开始使用搜索引擎!https://www.mql5.com/ru/forum/224831
再一次,我刚刚写了Artem,你需要自己阅读,从一个简单的开始......在图表上用指标画出收盘价,然后试着让它变得更复杂,在一个周期内做同样的事情,在第二个周期内根据已经计算出的收盘价的缓冲区做МА计算。