编码帮助 - 页 258

 
Tomcat98:
嗨,Mladen ,大家好。

该死的新建筑!

在B625中,我现在得到了新的警告。

"'OrderSelect'的返回值应被检查"

对于以下代码。

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES);"

如何纠正?

谢谢大家。

Tomcat98

Tomcat98

做到以下几点。

声明一个全局布尔变量(例如,像这样)。

bool dummyResult。

然后简单地把 "dummyResult ="放在OrderSelect的前面--那么你就会有以下结果。

dummyResult = OrderSelect(i,SELECT_BY_POS,MODE_TRADES)。

 
Tomcat98:
嗨,Mladen ,大家好。

该死的新建筑!

在B625中,我现在得到了新的警告。

"'OrderSelect'的返回值应被检查"

对于以下代码。

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES);"

如何纠正?

谢谢大家。

Tomcat98

好吧,你可以用一些努力的代价来摆脱它。

但是我有一个永久的警告,我不能用任何方法来删除(除了删除源代码的那一行)。

struct Empty {};[/CODE]

results in

[CODE]! struct has no members, size assigned to 1 byte

如果我只把它作为dll调用的超类型(我不知道这个空结构有什么其他用途),这就是无用信息。

 

Hi Mladen,

是的,它起作用了。

干得好。

非常感谢您的帮助。

真诚的。

Tomcat98

 

大家好。

自从一些天以来,我在我的EA中使用的一个指标中不时地收到以下错误。

2014.04.10 09:01:49.533 2014.01.08 03:45 Access violation write to 0xFFFFFFFE in 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\D5D5AE2430FC68F628F143CAFA9XXXX\MQL4\indicators\MyDailyFibo.ex4'

我使用MT版本4。Build 625

请帮助我找到这个问题的根本原因。如果你需要查看该指标,请告诉我。它并不总是出现,但非常频繁......

谢谢,并致以最诚挚的问候。

安东尼

 
Antony1:
大家好。

几天以来,我在我的EA中使用的一个指标中零星地出现了以下错误。

2014.04.10 09:01:49.533 2014.01.08 03:45 Access violation write to 0xFFFFFFFE in 'C:\Users\...\AppData\Roaming\MetaQuotes\Terminal\D5D5AE2430FC68F628F143CAFA9XXXX\MQL4\indicators\MyDailyFibo.ex4'

我使用MT版本4。Build 625

请帮助我找到这个问题的根本原因。如果你需要查看该指标,请告诉我。它并不总是出现,但非常频繁......

谢谢,并致以最诚挚的问候。

安东尼

安东尼

这不是你的指标的问题

这是一个新的metatrader 4的问题(它在适当的内存分配和访问方面有问题--build 628有点好,但不多)。

 

你好。

我需要帮助,我试图写这个指标(Wilder trailing stop candles MTF)。

第一个问题:我的指标在该信号之前的1条街画出买入信号,我知道这是由于斜率的计算方式,但我不知道如何解决这个问题。

第二个问题:颜色不一致,可能是我在这部分的缓冲区弄错了,但我自己也搞不清楚,我无法解决

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_trailing_stop_mtf_1.mq4

野生动物_蔓生动物_停止.mq4

 
thefxpros:
你好。

我需要帮助,我试图写这个指标(Wilder trailing stop candles MTF)。

第一个问题:我的指标在该信号之前的1条街画出买入信号,我知道这是由于斜率的计算方式,但我不知道如何解决这个问题。

第二个问题:颜色不一致,可能是我在这部分的缓冲区弄错了,但我自己也搞不清楚,我无法解决

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

mmmhh,颜色匹配。也许我需要先写灯芯缓冲器,然后再写灯体缓冲器?

 
thefxpros:
mmmhh,颜色匹配。也许我需要先写wickbuffers,再写bodybuffers?

Thefxpros

最简单的方法是改变Wilders尾随止损指标(否则你会陷入一些复杂的if then else结构中)。这里有一个版本,有一个你想要的内部缓冲器:趋势。如果它等于1,趋势是上升,如果它等于-1,趋势是下降。用这个指标代替原来的指标,只需读取缓冲区4的值--之后一切就简单了

附加的文件:
 
mladen:
thefxpros 最简单的方法是改变Wilders尾随止损指标(否则你会陷入一些复杂的if then else结构中)。这里有一个版本,有一个你想要的内部缓冲器:趋势。如果它等于1,趋势是上升,如果它等于-1,趋势是下降。使用这个指标代替原来的指标,只需读取缓冲区4的值--之后一切都很简单。

像这样吗?

//------------------------------------------------------------------

#property copyright "thefxpros"

#property link "thefxpros@katamail.com"

//------------------------------------------------------------------

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 LimeGreen

#property indicator_color2 Orange

#property indicator_color3 DarkGreen

#property indicator_color4 FireBrick

#property indicator_width1 1

#property indicator_width2 2

//

//

//

extern int TimeFrame = 0;

extern int Length = 2;

extern double Coeff = 1.75;

extern color UpBodyColor = LimeGreen;

extern color DnBodyColor = Orange;

extern color UpWickColor = DarkGreen;

extern color DnWickColor = FireBrick;

extern int WickWidth = 1;

extern int BodyWidth = 2;

//

double UpBodyBuffer[];

double DnBodyBuffer[];

double UpWickBuffer[];

double DnWickBuffer[];

double TrendBuffer[];

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

//| |

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

int init()

{

IndicatorBuffers(6);

SetIndexBuffer(0,UpWickBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, UpWickColor);

SetIndexBuffer(1,DnWickBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, DnWickColor);

SetIndexBuffer(2,UpBodyBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, UpBodyColor);

SetIndexBuffer(3,DnBodyBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, DnBodyColor);

SetIndexBuffer(4,TrendBuffer);

IndicatorShortName("Wilders trailing stop MTF candles("+Length+","+Coeff+")");

Length = MathMax(Length,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("Wilders trailing stop MTF candles("+TimeFrameStr+")");

return(0);

}

//----

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

//| MTF function |

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

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

for(i=0,y=0;i<limit;i++)

{

if (Time<TimeArray[y]) y++;

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

int slope=iCustom(Symbol(),TimeFrame,"Wilders trailing stop with trend",Length,Coeff,4,y);

if (slope == 1)

{

UpWickBuffer = High;

DnWickBuffer = Low;

UpBodyBuffer = MathMax(Open,Close);

DnBodyBuffer = MathMin(Open,Close);

}

if (slope == -1)

{

DnWickBuffer = High;

UpWickBuffer = Low;

DnBodyBuffer = MathMax(Open,Close);

UpBodyBuffer = MathMin(Open,Close);

}

}

return(0);

}

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

我不敢相信,第一次尝试就成功了..... 还有什么比我写的更好的吗(删除trendbuffer是的,我现在看到了)?

谢谢 Mladen

附加的文件:
cattura_2.jpg  72 kb
 
mladen:
你不能在图表上画以英寸为单位的线(使用metatrader完全不可能,我怀疑在任何交易平台上都不可能)。而且这些线是水平线对象而不是趋势线(趋势线可以有限制,但水平线不能)。如果没有确切的数学规则,这些线应该如何绘制(取决于价格,而不是英寸),它们根本无法绘制,从这些数字序列来看,规则对每一条线都是独一无二的。

好的,谢谢,我找到了一个更好的、你可以编辑的indy。这是在forexfactory做的一个未完成的项目,现在找不到他了。请用我的数字替换00、20、50、80。线路也是聚在一起的,而不是只放在特殊数字5、15、31、45和67上。

谢谢

附加的文件:
原因: