如何编码? - 页 117

 
mystified:
我已经为HMA添加了水平线。

#属性 indicator_separate_window

#属性 indicator_buffers 2

#属性 indicator_color1 黑色

#属性 indicator_color2 红色

#属性 indicator_width1 2

#属性 indicator_minimum 0

#属性 indicator_maximum 100

#属性 indicator_level1 80

#属性 indicator_level2 60

#属性 indicator_level3 40

#属性indicator_level4 20

#属性 indicator_levelcolor DarkSlateGray

但指标并没有正确地出现在一个单独的窗口上。希望得到任何帮助。

因为指标是强制绑定的。

删除这两行。

#property indicator_minimum 0

#属性 indicator_maximum 100

水平线只在有界指标上运行良好,但要做有界指标,计算必须包括极限。

例如。RSI = 100-(100/(1+U/D))

通过这个公式,我们知道该指标将在0-100之间移动,因为我们可以包括70-30水平,而不用担心它们会消失。

另一个例子是MACD = EMA(CLOSE, 12)-EMA(CLOSE, 26))。

我们在M5上设置了一个水平,当我们移动到H1时,最有可能的是该水平已经消失。

因此,我们采用同样的公式并做一些改变,MACD=(EMA(CLOSE,12)-EMA(CLOSE,26))/EMA(CLOSE,26)。现在我们有了一个百分比指标。虽然没有界限,但我们失去水平的概率较小。

[删除]  

谢谢Linuxer。

 
我已经创建了一个非常简单的EA和一个系统,我至少在3个时间框架内使用。但问题是它不会停止打开,我不想为一个货币对有3个EA和3个图表。

i need a code that would only do one order for buy and for sell per bar per TF and still open if it is on a different bar. i can have buy and sell and the same bar.

有时我在3个不同的TF中有3个信号。我想接受所有的订单,但我希望每个TF只有一个订单,我仍然可以在另一个TF中接受另一个订单,如果它仍然开放,但在一个不同的酒吧。

例如。

4小时内有1个信号

1小时内有1个信号,但它在4小时内落在柱子上

30分钟内有1个信号,但1小时和4小时只有一个柱状。

3个信号将被打开。

我可以使用魔法数字作为过滤器的手段。

谁能帮助我?非常感谢。

到目前为止,这是我所想的。

30分钟

如果(magicnumber == 123)

{

if (iTime(OrderOpenTime()) != iTime(Symbol(),PERIOD_M30,0))

{//我的订单代码}

}

我没有MT4,但我知道在逻辑或代码中有些东西是不对的。所以请大家帮助我。

我想,我们也有类似的问题,与Matrixebiz。

谁能帮帮我?

 
mystified:
谢谢Linuxer。

这只是上一篇文章中的例子(因为现在你有振荡器HMA ),仍然是MACD,但计算方式不同。

[Deleted]  
 

如何在D1时间段的开盘蜡烛上开始交易?

有没有人知道在D1时间框架下,当新的蜡烛开始时,要求EA开始交易的代码?

这里的逻辑是。

在D1 TF中,当新的蜡烛(这意味着新的一天)开始时,EA将打开两个位置,买入和卖出,每个位置的TP=10点。

当蜡烛关闭时,EA将关闭所有的头寸,并开始为新的蜡烛重新开仓。

非常简单的规则,但我还是找不到这个简单规则的代码....

我是MQL4编码的新手,我已经搜索并阅读了许多资料和论坛,以了解更多关于MQL4编码的信息,但没有找到我需要的东西。

谢谢你...

 

这是我的代码....,请帮助我解决这个问题。

我试着用我之前问过的代码,这里是EA的示例代码。

int start()

{

LastPrice=0;

LastProfit=0;

LastTicket=0;

LastLots=Lots;

利润=0。

ProfitPip=0;

PairOrder=0;

OrdersOpened = 0;

PreviousOrders = OrdersOpened;

double Spread = MarketInfo(Symbol(),MODE_SPREAD);

PipValue=MarketInfo(Symbol(),MODE_TICKVALUE)。

ArrayCopyRates(rate, Symbol(), PERIOD_D1)。

如果(DayOfWeek()==0 || DayOfWeek()==6)

{

//在节假日不进行交易。

return(0);

}

否则

{

如果(newbar()==Period())

{

for (int cnt = OrdersTotal() - 1; cnt >= 0; cnt --)

{

OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)。

如果(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)

{

OrderClose(OrderTicket(), OrderLots(), OrderClosePrice(), Slippage, Color1)。

}

}

OpenBuy();

OpenSell()。

}

}

}

int newbar()

{

双重g。

int m,s,k;

m=Time[0]+Period()*60-TimeCurrent()。

g=m/60.0。

s=m%60。

m=(m-m%60)/60。

返回(m)。

}

空白的OpenBuy()

{

双重 ldLot, ldStop, ldTake;

字符串 lsComm;

ldLot = GetSizeLot();

ldStop = Ask-Point*StopLoss;

ldTake = NormalizeDouble(GetTakeProfitBuy(),Digits)。

OrderSend(Symbol(),OP_BUY,ldLot,NormalizeDouble(Ask,Digits),Slippage,ldStop,ldTake, "BUY",Magic,0,Color1);

}

空白的OpenSell()

{

double ldLot, ldStop, ldTake;

字符串 lsComm;

ldLot = GetSizeLot();

ldStop = Bid+Point*StopLoss。

ldTake = NormalizeDouble(GetTakeProfitSell(),Digits)。

OrderSend(Symbol(),OP_SELL,ldLot,NormalizeDouble(Bid,Digits),Slippage,ldStop,ldTake, "SELL",Magic,0,Color1)。

}

double GetSizeLot()

{

返回(Lots)。

}

double GetTakeProfitBuy()

{

return(Ask+TakeProfit*Point);

}

double GetTakeProfitSell()

{

return(Bid-TakeProfit*Point);

}

昨晚我上传了我的vps,但今天早上我检查了一下,但我的样本EA没有打开任何交易,这里有人能帮助我修复我的样本EA吗?

顺便说一下,我也把它附在这里

[删除]  

持续时间更长的警报

嗨,我是个新手,想了解其中的来龙去脉,希望能得到任何帮助。

我目前的指标有以下代码用于生成警报,但这个警报只持续一声,我有没有办法让它持续30或60秒,或者至少比1声警报长一点?

如果(setalert == 1 && shift == 0) {

Alert(Symbol(), " ", period, " ", pattern)。

setalert = 0;

}

谢谢

 

重新编码到metatrader(克林格成交量振荡器)。

克林格震荡器(KO)是由Stephen J. Klinger开发的。Klinger先生从Joseph Granville、Larry Williams和Marc Chaikin等知名技术人员先前对成交量的研究中学习,着手开发一个基于成交量的指标,以帮助进行短期和长期分析。

开发KO的目的是为了实现两个看似相反的目标:既要有足够的敏感度来提示短期的顶部和底部,又要有足够的准确性来反映资金流入和流出证券的长期情况。

KO是基于以下原则的。

* 价格范围(即高点-低点)是运动的衡量标准,成交量是运动背后的力量。高点+低点+收盘的总和定义了一个趋势。当今天的总和大于前一天的总和时,就会出现积累。反之,当今天的总和小于前一天的总和时,就会出现分布。当总和相等时,现有的趋势被维持。

* 成交量产生价格的连续日内变化,反映买入和卖出压力。KO将每天积累和分配的股票数量之间的差异量化为 "量力"。一个强大的、上升的成交量力量应该伴随着上升趋势,然后在上升趋势的后期和随后的下降趋势的早期阶段逐渐收缩。在这之后,应该有一个上升的成交量力量,反映出在底部形成之前的一些积累。

* 通过将成交量转换为一个震荡指标,代表34期和55期指数移动平均线与13期触发器之间的差异,可以很容易地跟踪进入和离开证券的成交量的力量。将这种力量与价格行为相比较,可以帮助识别顶部和底部的分歧。

解释

Klinger先生推荐使用KO的以下准则。

1.最可靠的信号出现在主流趋势的方向上。严格的止损准则(即未能穿透零线或违反触发线)应保持有效。

2.2.最重要的信号发生在KO与基础价格行动相背离时,特别是在超买/超卖区域的新高或新低。例如,当一只股票创下一个周期的新高或新低,而KO未能确认这一点时,趋势可能正在失去动力并接近完成。

3.3.如果价格处于上升趋势中(即高于89天指数移动平均线),当KO跌至零点以下的异常低位,转而上升,并穿过其触发线时买入。如果价格处于下降趋势(即低于89天指数移动平均线),当KO上升到零点以上的异常高位,转而下降,并越过其触发线时卖出。

虽然KO对于在趋势方向上的交易时机选择有很好的效果,但它对趋势的影响就不那么大了。这可能会给试图逆向 "剥头皮 "交易的交易者带来问题。然而,当KO与其他技术指标 结合使用时,可以取得更好的效果。推荐威廉的%R用于确认超买/超卖的价格状况,推荐杰拉尔德-阿佩尔的MACD用于确认价格的短期方向。

提示

斯蒂芬-克林格建议使用以下公式来查看流入和流出证券的累积资金。

cum(kvo())

绘制该公式的13期移动平均线,作为进入购买和出售交易的触发线。

贸易站的代码来源

类型。函数,名称。VForce

Vars:TSum(0), Trend(0), DM(0), CM(0);

TSum = High + Low + Close。

如果TSum>TSum[1],那么

趋势=1

否则

趋势=-1。

如果趋势=趋势[1],那么

CM = CM + 范围

否则

CM = Range + Range[1];

如果CM为0,那么

VForce = Volume * AbsValue(2 * (DM/CM) -1) * Trend * 100;

类型。函数,名称。KVO

输入。

FastX(Numeric),

SlowX(Numeric); Vars:

FXAvg(0),

SXAvg(0)。

FXAvg = XAverage(VForce, FastX);

SXAvg = XAverage(VForce, SlowX);

KVO = FXAvg - SXAvg;

类型。指标,名称。克林格成交量震荡器

输入。

FastX(34),

SlowX(55),

TrigLen(13),

Smooth(1);

Vars:

Trigger(0);Trigger = XAverage(KVO(FastX, SlowX), TrigLen);IF Smooth <= 1 Then Begin

Plot1(KVO(FastX, SlowX), "KVO")。

Plot2(Trigger, "KVO Trigger")。

结束 否则开始Plot1(Summation(KVO(FastX, SlowX), Smooth), "KVO")。

Plot2(Summation(Trigger, Smooth), "KVO Trigger")。

结束。

Plot3(0, "Zero");

如果Plot1越过Plot2或者Plot1越过Plot2以下或者

Plot2高于Plot3或者Plot2低于Plot3,那么

警报 = 真。

谁能帮我把这个编码转换为Mql4?

谢谢

[Deleted]