编码帮助 - 页 197

 
mladen:
你可以添加它来再次绘制这些额外的线条--像这样:
if (add>0) { drawLine(totalLevels,current+diff+add,addLinesColor,addLinesStyle); drawLine(totalLevels,current+diff-add ,addLinesColor,addLinesStyle); }
,它将在所有 "基本 "线条周围绘制这些额外的线条。

再次感谢你mladen

 

在编程中需要帮助的警报

嗨,我是整个mql4编程 的新手。

我想创建一个新的 "all in one "警报。

我有Fx MNT, Super Signal和CHT Value Chart的报警信号。

现在我想只有一个警报,当MNT、超级信号、价值图和RSI处于正确位置时。

如何编写这个代码?我可以使用现有的报警部分,并将它们全部放在一个大的代码中吗?

敬请期待。

 
Slow Moe:
你好,我对整个mql4的编程很陌生。

我想创建一个新的 "一体式 "警报。

我有Fx MNT,超级信号和CHT价值图的报警信号。

现在我想只有一个警报,当MNT、超级信号、价值图和RSI处于正确位置时。

如何编写这个代码?我可以使用现有的报警部分并把它们都放在一个大的代码中吗?

尊敬的Slow先生

缓慢

你可以这样做,但 "负责 "从所有这些指标中获取数据的代码并不简单(尤其是带参数 的部分,你需要向所有指标声明外部参数,以便发现是否应该触发警报)。

 

连续收高/收低

附件中的文件有许多条件,可以通过选择真/假来包含。

我想把另一个条件变成真/假:是否有

2个连续的较高收盘价的多头?

如果有,那么如果由 "真 "启用的其他条件也存在,就会产生向上的箭头。

有2个连续的较低收盘价的空头吗?

如果有,那么如果由 "真 "启用的其他条件存在,那么就会产生向下的箭头。

收盘次数可以是一个变量吗?

谁能把这个额外的条件编入Stoch_Indy指标? 谢谢你。

附加的文件:
 
person77:
附件中的文件有许多条件,可以通过选择真/假来包含。

我想把另一个条件作为真/假纳入:是否有

2个连续的较高收盘价的多头?

如果有,那么如果由 "真 "启用的其他条件也存在,就会产生向上的箭头。

有2个连续的较低收盘价的空头吗?

如果有,那么如果由 "真 "启用的其他条件存在,那么就会产生向下的箭头。

收盘次数可以是一个变量吗?

谁能把这个额外的条件编入Stoch_Indy指标? 谢谢你。

人77

试试这个

为此添加了UseConsecutiveCloseBars选项。不仅仅是测试收盘价,而且收盘价必须大于开盘价才能成为连续上涨,或者必须低于开盘价才能成为连续下跌。

附加的文件:
 
mladen:
人77

试试这个

为此添加了UseConsecutiveCloseBars选项。不仅仅是测试收盘价,而且收盘价必须大于开盘价才能成为连续上涨,或者必须低于开盘价才能成为连续下跌。

非常好的mladen - 效果非常好。 谢谢你!"。

在我遇到的几个例子中,允许C=O的情况基本上是有利的。

你能不能把它改成允许这样,或者,最好有一个是否允许C=O的选项?

附加的文件:
 
person77:

非常好的mladen--效果很好。谢谢你!"。

在我遇到的少数情况下,允许有C=O的情况大体上是有利的。

你能不能把它改成允许这样,或者,最好有一个选项,是否允许C=O?

人77

又增加了一个选项。AllowCloseEqualOpen。所以你现在可以用这个选项来控制 它。

附加的文件:
 

嗨,伙计们。

我有一个关于编码的问题

是否可以用这个偏好在普通图表上画出移动平均线

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

 
cain82:
嗨,伙计们。

我有一个关于编码的问题

是否可以用这种偏好在普通图表上画出移动平均线?

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0。

mFactor = 10000.0。

你所写的(dFactor和mFactor)都被评估为一个常数,而不考虑价格和条数,所以你在图表上会有一条水平线

 
mladen:
你所写的(dFactor和mFactor)都被评估为一个常数,无论价格和条数如何,所以你在图表上会有一条水平线。

谢谢你的回答

但是我怎样才能在一般的图表上获得MA的角度线,就像在这个di hystogramm代码中一样?

//---- indicator settings

#property indicator_separate_window

#property indicator_buffers 3

#property indicator_color1 LimeGreen

#property indicator_color2 FireBrick

#property indicator_color3 Yellow

#property indicator_width1 2

#property indicator_width2 2

#property indicator_width3 2

//---- indicator parameters

extern int TimeFrame = 60;

extern int MAMode = 0;

extern int MAPeriod = 50;

extern int Price = 4;

extern double AngleTreshold = 0.25;

extern int StartMAShift = 2;

extern int EndMAShift = 0;

extern int MaxBars = 500;

string TF1;

//---- indicator buffers

double UpBuffer[];

double DownBuffer[];

double ZeroBuffer[];

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

//| Custom indicator initialization function |

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

int init()

{

//---- 2 additional buffers are used for counting.

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_HISTOGRAM);

SetIndexStyle(1,DRAW_HISTOGRAM);

SetIndexStyle(2,DRAW_HISTOGRAM);

IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS)+2 );

//---- 3 indicator buffers mapping

if(!SetIndexBuffer(0,UpBuffer) &&

!SetIndexBuffer(1,DownBuffer) &&

!SetIndexBuffer(2,ZeroBuffer))

Print("cannot set indicator buffers!");

SetIndexLabel(0,"");

SetIndexLabel(1,"");

SetIndexLabel(2,"");

switch(TimeFrame)

{

case 1: TF1="M1"; break;

case 5: TF1="M5"; break;

case 15: TF1="M15"; break;

case 30: TF1="M30"; break;

case 60: TF1="H1"; break;

case 240: TF1="H4"; break;

case 1440: TF1="D1"; break;

case 10080: TF1="W1"; break;

case 43200: TF1="MN1"; break;

default: {TimeFrame = Period(); init(); return(0);}

}

IndicatorShortName("MAAngle MTF * "+TF1+" *");

//---- initialization done

return(0);

}

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

//| The angle for EMA |

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

int start()

{

double fEndMA, fStartMA;

double fAngle, mFactor, dFactor;

int nLimit, i;

int nCountedBars;

double angle;

int ShiftDif;

string Sym;

if (MAMode >= 4) MAMode = 0;

if(EndMAShift >= StartMAShift)

{

Print("Error: EndMAShift >= StartMAShift");

StartMAShift = 6;

EndMAShift = 0;

}

nCountedBars = IndicatorCounted();

dFactor = 2*3.14159/180.0;

mFactor = 10000.0;

Sym = StringSubstr(Symbol(),3,3);

if (Sym == "JPY") mFactor = 100.0;

ShiftDif = StartMAShift-EndMAShift;

mFactor /= ShiftDif;

//---- check for possible errors

if(nCountedBars<0) return(-1);

//---- last counted bar will be recounted

if(nCountedBars>0) nCountedBars--;

nLimit=Bars-nCountedBars;

nLimit=MathMax(nLimit,TimeFrame/Period());

nLimit=MathMin(nLimit,MaxBars );

//---- main loop

for(i=0; i<nLimit; i++)

{

int y = iBarShift(NULL,TimeFrame,Time);

if (TimeFrame<Period()) TimeFrame=Period();

fEndMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+EndMAShift);

fStartMA=iMA(NULL,TimeFrame,MAPeriod,0,MAMode,Price,y+StartMAShift);

// 10000.0 : Multiply by 10000 so that the fAngle is not too small

// for the indicator Window.

fAngle = mFactor * (fEndMA - fStartMA)/2.0;

//fAngle = MathArctan(fAngle)/dFactor;

DownBuffer = 0.0;

UpBuffer = 0.0;

ZeroBuffer = 0.0;

if(fAngle > AngleTreshold)

UpBuffer = fAngle;

else if (fAngle < -AngleTreshold)

DownBuffer = fAngle;

else ZeroBuffer = fAngle;

}

return(0);

}

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

原因: