编码帮助 - 页 73

 

你好。

我希望有人能帮助我,让一个指标做我想做的事。

我有一个指标,可以显示主体的长度/或蜡烛的总长度,加上蜡烛柱的时间。

唯一的问题是,它不适合5位数的经纪商;时间和长度是相互投射 的,而在4位数中是完美的。

如果有人能够并且愿意修改代码,那就太好了。

谢谢。

请注意。

 

缺少一些简单的东西

我一直在为一个MA交叉EA做一个TL过滤器,任何MA交叉EA都可以,但在附件中研究了一下,因为它是一个简单的。

基本上,TL计算器给出的信号是1、2或3,取决于TL方向和价格交叉,如果TL的斜度不够大,则会出现令人讨厌的 "零除法"。

我正在学习编码,并阅读了所有Coders'Guru的PDF文件和MQL4论坛中我的大脑所能接受的内容,但由于我学得很慢,直到3周前才开始编码....。

希望得到一些指导....

问题:我不知道如何调出 "TLfilter "这个值,即当价格没有触及TL 时,它就可以进行买入。

我曾试图把它粘在买入/卖出标准中,如&TTLfilter = 3!,以及任何其他我能想到的方法,但我得到的是完全没有交易。

我还试图把它放到订单选择循环中,但没有成功。

我只是想找点线索,比如我错过了什么。

如果有人有兴趣看一下。

在连接EA之前,在图表上画一个TL,并将其命名为t6

取消TL部分底部的//--- Print ("TLfilter = ",TLfilter); return(TLfilter);以查看它在做什么。

本EA的修改由双行标记======= 1 2和3

编辑:我的编码不在这里面,因为我想确保它尽可能的干净 x_trader_v2_tlmod.mq4

附加的文件:
 

多指标

你好!

有人使用/拥有这样的多指标吗?

多重移动平均线 - MQL4代码基础

如果你看到下面,它看起来像 "自由栏 "指标...所以...我想改变这个输入指标,不想使用4ema....。我想要1ema(2个交叉点)、CCI、STOCH和SAR。

我找到了一些多重指标,但它们没有像这样的历史记录

谁能帮帮我,改改代码?

 

你好,Pearl1。

从我所看到的情况来看,它可以做到,你只需要输入调用,用你想使用的指标和信号条件替换其他3条移动平均线

 

我在尝试一些东西,但没有进展

 

你为什么不把你到目前为止的编码公布出来,并解释你想做什么。这样的话,有人可以帮助你

pearl1:
我正在尝试一些东西,但没有进展
 

int start()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

如果(Counted.Bars>0) Counted.Bars--。

int Limit = Bars - Counted.Bars;

color Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); 我在这里吸....,他总是与这个MA0.Buffer.0....所以,如果我使用RSI,Stoch,...必须为所有元素创建这个缓冲区? RSI0.Buffer.0用于RSI?

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i)。

MA1.Buffer.1 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i+1);

MA2.Buffer.0 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1);

MA4.Buffer.0 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i);

MA4.Buffer.1 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i+1);

MA1.UP.Buffer =EMPTY_VALUE;

MA1.DN.Buffer = EMPTY_VALUE;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Position + 1.0;

else MA1.UP.Buffer = Gap * P1.Position + 1.0;

如果(MA1.Buffer.0 < MA0.Buffer.0) Text.Color.1 = Text.Color.Up;

else Text.Color.1 = Text.Color.Down;

//----

MA2.UP.Buffer = EMPTY_VALUE;

MA2.DN.Buffer = EMPTY_VALUE;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Position + 1.0;

else MA2.UP.Buffer = Gap * P2.Position + 1.0;

如果(MA2.Buffer.0 < MA0.Buffer.0) Text.Color.2 = Text.Color.Up;

else Text.Color.2 = Text.Color.Down;

//----

MA3.UP.Buffer = EMPTY_VALUE;

MA3.DN.Buffer = EMPTY_VALUE;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Position + 1.0;

else MA3.UP.Buffer = Gap * P3.Position + 1.0;

如果(MA3.Buffer.0 < MA0.Buffer.0) Text.Color.3 = Text.Color.Up;

else Text.Color.3 = Text.Color.Down;

//----

MA4.UP.Buffer = EMPTY_VALUE;

MA4.DN.Buffer = EMPTY_VALUE;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Position + 1.0;

else MA4.UP.Buffer = Gap * P4.Position + 1.0;

如果(MA4.Buffer.0 < MA0.Buffer.0) Text.Color.4 = Text.Color.Up;

else Text.Color.4 = Text.Color.Down;

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4)。

//----

}

//----

return(0);

 

你不需要为所有元素创建缓冲区。

MA1.Buffer.0, MA1.Buffer.1, .... 不是缓冲区而是简单的变量。你可以用它们来做任何事情,而不需要改变它们的名字。如果你想使用它,例如,用于rsi,你可以将代码改为这样的东西。

MA1.Buffer.0 = iRSI(NULL, 0, RSI1.Period, RSI1.Price, i); MA1.Buffer.1 = iRSI(NULL, 0, RSI1.Period, RSI1.Price, i+1);

不需要改变变量的名称,就可以工作(在这种情况下只需将RSI1.Period和RSI1.Price定义为外部参数 即可)

pearl1:
int start()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

如果(Counted.Bars>0) Counted.Bars--。

int Limit = Bars - Counted.Bars;

color Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i); 我在这里吸....,他总是与这个MA0.Buffer.0....所以,如果我使用RSI,Stoch,...必须为所有元素创建这个缓冲区?RSI0.Buffer.0用于RSI?

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i)。

MA1.Buffer.1 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i+1);

MA2.Buffer.0 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1);

MA4.Buffer.0 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i);

MA4.Buffer.1 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i+1);

MA1.UP.Buffer = EMPTY_VALUE;

MA1.DN.Buffer = EMPTY_VALUE;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Position + 1.0;

else MA1.UP.Buffer = Gap * P1.Position + 1.0;

如果(MA1.Buffer.0 < MA0.Buffer.0) Text.Color.1 = Text.Color.Up;

else Text.Color.1 = Text.Color.Down;

//----

MA2.UP.Buffer = EMPTY_VALUE;

MA2.DN.Buffer = EMPTY_VALUE;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Position + 1.0;

else MA2.UP.Buffer = Gap * P2.Position + 1.0;

如果(MA2.Buffer.0 < MA0.Buffer.0) Text.Color.2 = Text.Color.Up;

else Text.Color.2 = Text.Color.Down;

//----

MA3.UP.Buffer = EMPTY_VALUE;

MA3.DN.Buffer = EMPTY_VALUE;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Position + 1.0;

else MA3.UP.Buffer = Gap * P3.Position + 1.0;

如果(MA3.Buffer.0 < MA0.Buffer.0) Text.Color.3 = Text.Color.Up;

else Text.Color.3 = Text.Color.Down;

//----

MA4.UP.Buffer = EMPTY_VALUE;

MA4.DN.Buffer = EMPTY_VALUE;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Position + 1.0;

else MA4.UP.Buffer = Gap * P4.Position + 1.0;

如果(MA4.Buffer.0 < MA0.Buffer.0) Text.Color.4 = Text.Color.Up;

else Text.Color.4 = Text.Color.Down;

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4)。

//----

}

//----

return(0);
 
pearl1:
int start()

{

//----

int Counted.Bars = IndicatorCounted(), i;

if(Counted.Bars<0) return(-1);

如果(Counted.Bars>0) Counted.Bars--。

int Limit = Bars - Counted.Bars;

color Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4;

//----

for(i=Limit; i>=0; i--)

{

MA0.Buffer.0 = iMA(NULL, 0, 1, 0, MODE_SMA, PRICE_MEDIAN, i)。

//----

MA1.Buffer.0 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i);

MA1.Buffer.1 = iMA(NULL, 0, MA1.Period, 0, MA1.Mode, MA1.Price, i+1);

MA2.Buffer.0 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i);

MA2.Buffer.1 = iMA(NULL, 0, MA2.Period, 0, MA2.Mode, MA2.Price, i+1);

MA3.Buffer.0 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i);

MA3.Buffer.1 = iMA(NULL, 0, MA3.Period, 0, MA3.Mode, MA3.Price, i+1);

MA4.Buffer.0 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i);

MA4.Buffer.1 = iMA(NULL, 0, MA4.Period, 0, MA4.Mode, MA4.Price, i+1);

MA1.UP.Buffer = EMPTY_VALUE;

MA1.DN.Buffer = EMPTY_VALUE;

if(MA1.Buffer.0 < MA1.Buffer.1) MA1.DN.Buffer = Gap * P1.Position + 1.0;

else MA1.UP.Buffer = Gap * P1.Position + 1.0;

如果(MA1.Buffer.0 <MA0.Buffer.0) Text.Color.1 = Text.Color.Up;

else Text.Color.1 = Text.Color.Down;

//----

MA2.UP.Buffer = EMPTY_VALUE;

MA2.DN.Buffer = EMPTY_VALUE;

if(MA2.Buffer.0 < MA2.Buffer.1) MA2.DN.Buffer = Gap * P2.Position + 1.0;

else MA2.UP.Buffer = Gap * P2.Position + 1.0;

如果(MA2.Buffer.0 <MA0.Buffer.0) Text.Color.2 = Text.Color.Up;

else Text.Color.2 = Text.Color.Down;

//----

MA3.UP.Buffer = EMPTY_VALUE;

MA3.DN.Buffer = EMPTY_VALUE;

if(MA3.Buffer.0 < MA3.Buffer.1) MA3.DN.Buffer = Gap * P3.Position + 1.0;

else MA3.UP.Buffer = Gap * P3.Position + 1.0;

如果(MA3.Buffer.0 <MA0.Buffer.0) Text.Color.3 = Text.Color.Up;

else Text.Color.3 = Text.Color.Down;

//----

MA4.UP.Buffer = EMPTY_VALUE;

MA4.DN.Buffer = EMPTY_VALUE;

if(MA4.Buffer.0 < MA4.Buffer.1) MA4.DN.Buffer = Gap * P4.Position + 1.0;

else MA4.UP.Buffer = Gap * P4.Position + 1.0;

如果(MA4.Buffer.0 <MA0.Buffer.0) Text.Color.4 = Text.Color.Up;

else Text.Color.4 = Text.Color.Down;

//----

//----

LabelSet(Text.Color.1, Text.Color.2, Text.Color.3, Text.Color.4)。

//----

}

//----

return(0);

啊哈,谢谢,但是这个Buffers与MA0.Buffer.0相比,....?

 

只要把IMA()的调用替换成你想要的调用(比如我给你的例子中的iRSI()),它们就应该工作,不需要替换变量名。

pearl1:
啊哈,谢谢,但是这个Buffers与MA0.Buffer.0相比,....?