新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 592

 

请告知为什么添加#property strict字符串会阻止箭头的绘制,以下是所有代码

//+------------------------------------------------------------------+

//| 震荡复习.mq4 ||

//| Copyright 2018, MetaQuotes Software Corp.

//| https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2018, MetaQuotes Software Corp."

#属性链接 "https://www.mql5.com"

#财产版本 "1.00"

#属性 indicator_separate_window

#属性 indicator_buffers 5

#property indicator_plots 4

//------ 绘制信号器

#property indicator_label1 "信号器"

#属性 indicator_type1 DRAW_LINE

#property indicator_color1 clrRed

#property indicator_style1 STYLE_SOLID

#property indicator_width1 1

//------绘制Z

#property indicator_label2 "Z"

#属性 indicator_type2 DRAW_LINE

#属性指标_颜色2 clrBeige

#property indicator_style2 STYLE_DOT

#property indicator_width2 1

//--------情节湾

#property indicator_label3 "海湾"

#属性 indicator_type3 DRAW_ARROW

#property indicator_color3 clrLightSkyBlue

#property indicator_style3 STYLE_SOLID

#property indicator_width3 1

//--------情节卖点

#property indicator_label4 "卖出"

#属性 indicator_type4 DRAW_ARROW

#property indicator_color4 clrDeepPink

#property indicator_style4 STYLE_SOLID

#property indicator_width4 1

//----输入参数

输入int PCCI=14; //指标期PCCI

输入双KCCI=1.1; //调整系数

输入 int PMOM=14; //动量指标的周期。

输入 int KMOM=1111; // 平滑系数

输入 int PATR=14; // 指标周期 ATR

输入 int KATR=111111; // 平滑系数

输入 int PFOR=14; // Forse指标的周期。

输入 int KFOR=1111; // 平滑系数

输入 int PTVR=12; // TVI指标的周期p

输入 int PTVS=12; // TVI指标的周期c

输入 int PTVU=5; //TPI指标的周期。

输入 int KTVl=111; // 平准化系数

输入 int POSF=12; // AOS快速指标的周期。

输入 int POSS=26; // AOS指标槽的周期。

输入 int POSZ=9; //AOS指标的小周期

输入 int KAOS=111111; // 平滑系数

输入 int KAD=111; //AOS指标的位移系数

输入双倍KK=2.0; // 箭头的过滤器

输入int Amendment=20; //在指标窗口中以可消化的格式绘制箭头。

//----指标缓冲区

双重SignalerBuffer[]。

double Z_Buffer[];

double BayBuffer[]; double BayBuffer[];

double SellBuffer[]; double SellBuffer[];

double PatchBuffer[];

//+------------------------------------------------------------------+

//|自定义指标初始化功能

//+------------------------------------------------------------------+

int OnInit()

{

IndicatorSetInteger(INDICATOR_DIGITS,0)。

SetIndexBuffer(0,SignalerBuffer)。

SetIndexBuffer(1,Z_Buffer)。

SetIndexBuffer(2,BayBuffer)。

SetIndexBuffer(3,SellBuffer)。

SetIndexBuffer(4,PatchBuffer)。

SetIndexStyle(0,DRAW_LINE)。

SetIndexStyle(1,DRAW_LINE)。

SetIndexStyle(2,DRAW_ARROW)。

SetIndexStyle(3,DRAW_ARROW)。

SetIndexArrow(2,241);

SetIndexArrow(3,242)。

SetIndexEmptyValue(2,0.0)。

SetIndexEmptyValue(3,0.0)。

IndicatorShortName("Basement signaler(" +(string) PATR + ")")。

//---

return(INIT_SUCCEEDED)。

}

//+------------------------------------------------------------------+

//|自定义指标迭代函数|

//+------------------------------------------------------------------+

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 , limit=rates_total-prev_calculated 。

双CIC、ATR、MOM、FORC、AO、AC、AD、TVI、OSMA ;

//---- 设置计数参数

if(prev_calculated==0)limit--。

否则limit++。

//---- 计

for(i=limit-1; i>=0; i--)

{

cci=iCCI(NULL,0,PCCI,PRICE_TYPICAL,i)/KCCI。

mom=(iMomentum(NULL,0,PMOM,PRICE_TYPICAL,i)-100)*KMOM 。

forc=iForce(NULL,0,PFOR,MODE_SMA,PRICE_TYPICAL,i)*KFOR。

tvi=iCustom(NULL,0, "TVI_v2",PTVR,PTVS,PTVU,4,i)*KTVl ;

osma=iOsMA(NULL,0,POSF,POSS,POSZ,PRICE_TYPICAL,i)*KAOS。

atr=iATR(NULL,0,PATR,i)*KATR。

ao=iAO(NULL,0,i)*KAOS ;

ac=iAC(NULL,0,i)*KAOS ;

ad=iAD(NULL,0,i)/KAD ;

SignalerBuffer[i]=(CCI+MOM+FORC+TVI+OSMA+ATR+AO+AC+AD)/9。

}

for(i=limit-1; i>=0; i--)

{

Z_Buffer[i] = (SignalerBuffer[i]+SignalerBuffer[i-1])/2 ;

PatchBuffer[i] = MathAbs(SignalerBuffer[i]-Z_Buffer[i]) ;

}

for(i=0; i<limit && !IsStopped(); i++)

{

如果(Z_Buffer[i]>SignalerBuffer[i]&&Z_Buffer[i+1]<SignalerBuffer[i+1]&&PatchBuffer[i]>KK)

BayBuffer[i]=SignalerBuffer[i]-Amendment。

如果(Z_Buffer[i]<SignalerBuffer[i]&&Z_Buffer[i+1]>SignalerBuffer[i+1]&&PatchBuffer[i]>KK)

SellBuffer[i]=SignalerBuffer[i]+Amendment。

}

//---为下一次调用返回prev_calculated的值

return(rate_total)。

}

//+------------------------------------------------------------------+


Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • www.mql5.com
Задавайте вопросы по техническому анализу, обсуждайте торговые системы и улучшайте свои навыки программирования торговых стратегий на языке MQL5. Общайтесь и обменивайтесь опытом на форуме с трейдерами всего мира и помогайте ответами новичкам — наше сообщество развивается вместе с вами. Машинное обучение роботов Привет всем, я занимаюсь...
 
Alekseu Fedotov:
对该指标的卖方。

谢谢你...
 
谁能告诉我,如果在EA测试期间,它拒绝复制缓冲区,该怎么办?
 
Roman Sharanov:
谁能告诉我,如果在EA测试期间,它拒绝复制缓冲区,该怎么办?

找出原因。

 
Artyom Trishkin:

找出原因。

它可能是什么呢?是代码的大小问题吗?我特意关闭了所有的逻辑,只留下了缓冲区的复制,什么都没有。

 
Roman Sharanov:

它可能是什么呢?是代码的大小问题吗?我特意关闭了所有的逻辑,只留下了缓冲区的复制,什么都没有。

每个人在周末都有心灵感应......
 

运行测试 时弹出内存不足的错误(无法启动)。如何解决这个问题?

重新启动终端后,测试开始了,然后在几次测试后又没有内存了。

Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
Тестирование стратегий - Алгоритмический трейдинг, торговые роботы - MetaTrader 5
  • www.metatrader5.com
Тестер стратегий позволяет тестировать и оптимизировать торговые стратегии (советники) перед началом использования их в реальной торговле. При тестировании советника происходит его однократная прогонка с начальными параметрами на исторических данных. При оптимизации торговая стратегия прогоняется несколько раз с различным набором параметров...
 
Juer:

运行测试 时弹出内存不足的错误(无法启动)。如何解决这个问题?

重新启动终端后,测试开始了,然后在几次测试后又出了内存。

你正在测试的程序吃掉了你所有的内存。寻找其中的错误。检查演示中的 "日志 "和 "专家顾问 "日志(不是在测试器中)--那里怎么说?也许,这说明了在时间框架变化过程中的内存泄漏问题。

没有代码,我不会进一步猜测。

 
Artyom Trishkin:

你正在测试的程序吃掉了你所有的内存。寻找其中的错误。看看演示中的日志 "Log "和 "Expert Advisors"(不是在测试器中)--那里怎么说?也许,这说明了在时间框架变化过程中的内存泄漏问题。

如果没有代码,我不会进一步猜测。

测试结束 后,日志中有很多未删除的对象。几千名...这是个问题吗?

 
Juer:

测试结束后,日志里有一堆不成功的对象。几千名...这就是问题所在吗?

这时 他们就能肯定地回答。

原因: