编码帮助 - 页 245

 
mladen:
马塞里纳

仅仅是第一部分(其余部分仅仅是该部分的变化)。

如果ema(7)< ema(21),并且之前的ema(7)<之前的ema(21),那么如果ema(of rsi(14),9)< rsi(14),就是买入信号。

你也可以这样说。

如果macd(7,12)<和之前的macd(7,12)<0,那么如果ema(of rsi(14),9)<rsi(14)的信号为买入。

谢谢你的回答,mladen,是否可以用这个标准来编码一个MT4指标?

谢谢

 
macerina:
谢谢你的回答 mladen 是否可以用这个标准来编码一个mt4指标?

马卡里娜

那是一个简单的MACD+RSI系统。我相信已经有这样的系统了。如果没有这样的系统,做一个指标是很容易的,然后它就会被做出来。

 
mladen:
请张贴你试图实现你在这里所描述的代码的部分:https://www.mql5.com/en/forum/174385/page162(不是在订单上放置3个获利和管理3个跟踪止损,而是试图做你所描述的部分),然后,也许有人可以帮助你的编码。

//计算未平仓的买入订单。

iOpenOrders_Buy = CntOrd(iOrderType_Buy,MagicNumber,Symbol())。

//计算未平仓的卖单。

iOpenOrders_Sell = CntOrd(iOrderType_Sell,MagicNumber,Symbol())。

如果(iOpenOrders_Buy==3 || iOpenOrders_Sell==3)

{

if(TrailingStop>0 && TrailingStart>0) TrailOrder (TrailingStart, TrailingStop);

}

如果(iOpenOrders_Buy==1 || iOpenOrders_Sell==1)

{

if(TrailingStop_2>0 && TrailingStart_2>0) TrailOrder_3 (TrailingStart_2, TrailingStop_2);

}

//////////////////////////////////////////////////////////////////////////////////////////////

这是EA寻找所附交易对的未平仓订单数量的部分。

如果它发现有3个订单,它将遵循通常的追踪止损功能。如果它发现只有一个交易在运行,那么它将遵循第二个追踪止损功能。

这对单个货币对来说运行得很好,但当我把这个EA连接到多个图表(货币对)时,它就不工作了,因为它通过'OrdersTotal()'函数获取所有未结订单。

我马上想到一个问题:你怎么知道有3个订单,然后只剩下1个(该EA中没有一行代码试图找出这一点)。

//结束 - 关闭开放的卖出头寸------------------------------------------

double OpenPrice=Ask;

int count=3。

如果(count==3)

{

BuyOrder_1=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_1, "Buy Order", MagicNumber, 0,Blue)。

if (BuyOrder_1>0) //检查订单是否被开启

{

sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + " 买入订单1成功发送。Ticket=" + BuyOrder_1;

count = count - 1;

//////////////////////////////////////////////////////////////

因此,count是递减的,打开订单直到count=1。因此,最初count=3时,有3个订单被打开。

 
Oridroo:
//计算未平仓的买入订单。

iOpenOrders_Buy = CntOrd(iOrderType_Buy,MagicNumber,Symbol())。

//计算开放的卖出订单。

iOpenOrders_Sell = CntOrd(iOrderType_Sell,MagicNumber,Symbol())。

如果(iOpenOrders_Buy==3 || iOpenOrders_Sell==3)

{

if(TrailingStop>0 && TrailingStart>0) TrailOrder (TrailingStart, TrailingStop);

}

如果(iOpenOrders_Buy==1 || iOpenOrders_Sell==1)

{

if(TrailingStop_2>0 && TrailingStart_2>0) TrailOrder_3 (TrailingStart_2, TrailingStop_2);

}

//////////////////////////////////////////////////////////////////////////////////////////////

这是EA寻找所附交易对的未平仓订单数量的部分。

如果它发现有3个订单,它将遵循通常的追踪止损功能。如果它发现只有一个交易在运行,那么它将遵循第二个追踪止损功能。

这对单个货币对来说运行得很好,但是当我把这个EA附加到多个图表(货币对)上时,它就不工作了,因为它通过'OrdersTotal()'函数获取所有未结订单。

//结束 - 关闭未平仓的卖出头寸------------------------------------------

double OpenPrice=Ask;

int count=3。

如果(count==3)

{

BuyOrder_1=OrderSend(Symbol(), iOrderType_Buy, LotSize,OpenPrice,Slippage,dStopLossPrice,dTakeProfitPrice_1, "Buy Order", MagicNumber, 0,Blue)。

if (BuyOrder_1>0) //检查订单是否被开启

{

sLog_CheckBuyConditions = sLog_CheckBuyConditions + sNL + " 买入订单1成功发送。Ticket=" + BuyOrder_1;

count = count - 1;

//////////////////////////////////////////////////////////////

因此,计数是减少的,开单直到计数=1。因此,3个订单被打开,因为最初计数=3。

问题是:它是如何知道曾经有3个已开订单,然后只剩下一个?只剩下一个已开订单的事实并不能说明什么。您必须在已关闭的订单列表中查看 另外两个属于三联单的订单,由于经纪人可以改变您的评论字段,您没有办法知道一些订单是同一个三联单的一部分(在订单列表中没有字段可以用来标记一些订单是属于同一组订单的)。

你可以尝试使用文件来保存属于三联单的票号,但是,在试图从另一个终端使用同一EA的情况下,你会得到可怕的错误。当你重新安装metatrader时,同样的事情也会发生。使用全局变量就更糟糕了(它们和使用文件几乎是一回事--但更糟糕),所以没有任何有意义的方法可以让你正确追踪三联单。

那么,你如何发现1个已开订单是3个订单中的最后一个已开订单,还是一个新的三联订单中的第一个已开订单?

 
mladen:
问题如下:它是如何知道曾经有3个开仓的订单,然后只剩下一个了?只剩下一个已开的订单这一事实并不表明什么。你必须在已关闭的订单列表中查看另外两个属于三联单的订单,由于经纪人可以改变你的评论字段,你没有办法知道一些订单是同一个三联单的一部分(在订单列表中没有字段可以用来标记一些订单属于同一个订单组)。 那么,你如何发现一个已打开的订单是3个订单中最后一个已打开的订单,还是一个新三联单的第一个已打开的订单?

Mladen,

查看你的邮件,需要编码员

梦想有一个大的PM图标 !

 
mladen:
那么,你如何发现1个已开的订单是3个订单中最后一个已开的订单,还是一个新的三联订单中第一个已开的订单?

有一个条件。

如果(MA_Difference_1>=Value_Diff && iOpenOrders_Buy ==0)

因此,我确保如果有任何现有的买入订单,它不会打开任何新的买入订单,尽管条件得到满足。只有当没有任何现有的买入/卖出订单时,它才会打开一个新的订单。

因为它一次打开3个相同类型的订单(买入/卖出),如果其中两个已经关闭,那么剩下的一个肯定是相同类型的。

我已经测试过了。所以不会有任何混淆。

 
Oridroo:
有一个条件。

如果(MA_Difference_1>=Value_Diff && iOpenOrders_Buy ==0)

因此,我确保如果有任何现有的买入订单,它不会打开任何新的买入订单,尽管得到条件的满足。只有当没有任何现有的买入/卖出订单时,它才会打开一个新的订单。

因为它一次打开3个相同类型的订单(买入/卖出),如果其中两个已经关闭,那么剩下的一个肯定是相同类型的。

我已经测试过了。所以没有任何疑惑。

在整个事情中,有很多假设。第一个假设是,当你试图打开3个订单时,它实际上会打开3个订单。如果它只开一个呢?以此类推...

对不起。但似乎我们一直在谈论不同的事情。我希望有人能帮助你,因为我不能。

快乐交易

 
mladen:
在整个事情中,有很多的假设。第一个假设是,当你试图打开3个订单时,它实际上会打开3个订单。如果它只开了一个呢?以此类推...

对不起。但似乎我们一直在谈论不同的事情。我希望有人能帮助你,因为我不能。

交易愉快

如果你不能,也没关系。

我已经用不同的经纪商测试了一段时间,到目前为止,它还没有 "失败 "开出3个订单。

无论如何,我想你至少可以告诉我,在我调用'OrdersTotal()'时,什么地方/逻辑使EA能够区分不同的交易对?

任何小的EA例子都可以。

 
macerina:
谢谢你的回答 mladen 是否可以用这个标准来编码一个mt4指标?

马卡里纳

检查这个帖子中的指标:https://www.mql5.com/en/forum/173574/page432。它与阿斯本图形代码描述的几乎完全一样。

 

谢谢你Mladen的代码...这是否像您在前面的逻辑中解释的那样,有双重macd 比较和50交叉。

谢谢你