问吧! - 页 51

 
pawang:

如果我的问题是非常基本的,我很抱歉。

我正在学习mql4。

请帮助我如何在mql4中表达这个数学条件。

IF( (A>B) AND (|X| <1) AND (Y<Z) ) then... ... ......

|X|是绝对的;它意味着(X 1)

我从MetaEditor得到的信息是

"如果表达式太复杂"

经过多次尝试,...我没有更多的想法,所以请告诉我怎么做。

谢谢

试试这个。

if((a>b && MathAbs(x)<1) && y<z)

{

//在这里写下应该发生的事情

}

 

请教甲骨文的问题...

是否有办法让你的EA运行优化并每天自动调整设置。

我想对16个参数 进行30天的利润因素优化,并在再次开始交易前应用这些设置。它每天自动关闭约8小时,这将是一个完美的时间来运行它...

有谁知道如何编写代码...这将使它从伟大的EA水平上升到Insanley盈利的AI水平......

这也可能是一个很好的代码,每个人都可以在他们的EA中使用,市场不断地调整,为什么我们的EA不应该变得更聪明。

我也在EA论坛上发布了这个消息,直到现在才知道这个消息。

谢谢你的帮助。

 

请教一下

是否有可能在单独的窗口中创建条形指标,就像我发布的图片中的指标一样[不知道它们的正式名称是什么],比如说,如果MACD越过负值,则为红色条形,如果在负值区域,则保持红色,如果越过正值,则保持绿色等等。另外,是否有可能在价格低于移动 平均线的情况下创建同样的条形指标窗口。

如果这看起来是一个愚蠢的问题,请容忍我。当我在图表上看指标时,我倾向于尝试和预测价格会做什么,所以我想尝试有独立的窗口指标,当所有的指标显示相同的颜色时,我就会交易。[心理原因]。这些独立的条形指标的创建是我可以学习创建的,我不是任何语言的程序员。

如果有任何建议,我们将不胜感激。

dh

附加的文件:
chart.jpg  11 kb
 
pawang:
你好

如果我的问题是非常基本的,我很抱歉。

我正在学习mql4。

请帮助我如何在mql4中表达这个数学条件。

IF( (A>B) AND (|X| <1) AND (Y<Z) ) then... ... ......

|X|是绝对的;它意味着(X 1)

我从MetaEditor得到的信息是

"如果表达式太复杂"

经过多次尝试,...我没有更多的想法。所以请告诉我如何。

谢谢

if(a>b && (x 1) && y<z){

;你的代码

}

或者x == 0而不是(x 1),因为只有当x=0时MathAbs(x)< 1才是真的。

http://docs.mql4.com/basis/operations/bool

另一方面,也许你只是需要这个。

if(a>b && x<1 && y<z)

或者这样

if(a>b && x<-1 && y<z)

因为根据你的定义,x永远不会是0或-1。

我对你的绝对值的定义感到困惑

 
dxx:
是否有可能在单独的窗口中创建条形指标,就像我发布的图片中的指标一样[不知道它们的正式名称是什么],比如说如果MACD越过负值,就会出现红色条形,如果处于负值区域,就保持红色,如果越过正值,就保持绿色等等。另外,是否有可能为价格低于移动平均线的情况下创建同样的条形指标窗口。

如果这看起来是一个愚蠢的问题,请容忍我。当我在图表上看指标时,我倾向于尝试和预测价格将做什么,所以我想尝试拥有独立的窗口指标,当所有指标显示相同的颜色时,我将进行交易。[心理原因]。这些独立的条形指标的创建是我可以学习创建的,我不是任何语言的程序员。

如果有任何建议,我将非常感激。

dh

是的,这是有可能的。

 
dxx:
是否可以在单独的窗口中创建条形指标,就像我发布的图片中的指标一样[不知道它们的正式名称],比如说,如果MACD越过负值,就会出现红色条形,如果在负值区域,就保持红色,如果越过正值,就保持绿色等等。另外,是否有可能为价格低于移动平均线的情况下创建同样的条形指标窗口。

如果这看起来是一个愚蠢的问题,请容忍我。当我在图表上看指标时,我倾向于尝试和预测价格将做什么,所以我想尝试拥有独立的窗口指标,当所有指标显示相同的颜色时,我将进行交易。[心理原因]。这些独立的条形指标的创建是我可以学习创建的,我不是任何语言的程序员。

如果有任何建议,我们将不胜感激。

dh

这正是你想要的,在一个图表上加载所有4个相同的指标,都有不同的设置,如下图所示,当所有红色卖出,当所有蓝色买入。

设置

第一个设置为15分钟

第二个30分钟

第三次60分钟

第四个是140分钟

附加的文件:
 

谢谢

伙计们,谢谢你们,我将探索所发布的指标#。

非常感谢

 

是否有可能编写某种类型的指标,在另一个窗口中绘制恒定勾股图或恒定范围条?这些是不同形式的图表,不是基于时间的。例如,每当价格移动100点时,就会形成一个100点的柱状图。所以在成交量很小的情况下,不会形成柱状图。每当价格在一个区间内移动了一定数量的刻度,就会形成一个恒定的区间条。例如,每当价格充满20个点的范围时,就会形成一个设置为20的范围条。然后开始下一个条形。由于这些都不是基于时间的,我不确定在这个平台上是否可以做到。

 

为EA添加简单的警报

你好,希望能在这里找到我需要的一点帮助!你能告诉我如何为这个EA添加一个警报吗? 只是当买入的条件得到满足时,它也会向我发出警报。

谢谢你。

李奥

外部int MagicNumber = 0;

extern bool SignalMail = False;

extern bool EachTickMode = False;

外置双数 Lots = 1.0;

extern int Slippage = 3;

外部 bool StopLossMode = True;

外置 int StopLoss = 30;

外部 bool TakeProfitMode = True;

外置 int TakeProfit = 60;

外部 bool TrailingStopMode = True;

外置 int TrailingStop = 30;

#define SIGNAL_NONE 0

#define SIGNAL_BUY 1

#define SIGNAL_SELL 2

#define SIGNAL_CLOSEBUY 3

#define SIGNAL_CLOSESELL 4

int BarCount;

int Current;

bool TickCheck = False;

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

//| 专家初始化函数 |

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

int init() {

BarCount = Bars;

如果(EachTickMode)Current = 0;否则Current = 1。

return(0);

}

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

//| 专家去初始化功能|

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

int deinit() {

return(0);

}

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

//| 专家启动功能|

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

int start() {

int Order = SIGNAL_NONE;

int Total, Ticket;

double StopLossLevel, TakeProfitLevel;

if (EachTickMode && Bars != BarCount) TickCheck = False;

Total = OrdersTotal();

订单 = SIGNAL_NONE;

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

//| 变量开始 |

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

double Buy1_1 = iMA(NULL, 0, 89, 0, MODE_SMA, PRICE_CLOSE, Current + 0);

double Buy1_2 = iClose(NULL, 0, Current + 0);

double Buy2_1 = iMA(NULL, 0, 445, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

double Buy2_2 = iClose(NULL, 0, Current + 0);

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

//| 变量结束 |

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

//检查仓位

bool IsTrade = False;

for (int i = 0; i < Total; i ++) {

OrderSelect(i, SELECT_BY_POS, MODE_TRADES)。

如果(OrderType() <= OP_SELL && OrderSymbol() == Symbol() ) {

IsTrade = True。

如果(OrderType() == OP_BUY){

//关闭

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

//| 信号开始(退出买入)|

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

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

//| 信号结束(退出买入)|

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

如果(Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){

OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen)。

if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");

if (!EachTickMode) BarCount = Bars;

IsTrade = False。

继续。

}

//拖曳止损

if(TrailingStopMode && TrailingStop > 0) {

if(Bid - OrderOpenPrice() > Point * TrailingStop) {

如果(OrderStopLoss() < Bid - Point * TrailingStop) {

OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen) 。

if (!EachTickMode) BarCount = Bars;

继续。

}

}

}

} else {

//关闭

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

//| 信号开始(退出卖出)|

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

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

//| 信号结束(退出卖出)|

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

如果(Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){

OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange)。

如果(SignalMail) SendMail("[信号警报]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");

if (!EachTickMode) BarCount = Bars;

IsTrade = False。

继续。

}

//拖曳止损

if(TrailingStopMode && TrailingStop > 0) {

if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {

如果((OrderStopLoss() > (Ask + Point * TrailingStop))|| (OrderStopLoss() == 0)) {

OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange) 。

if (!EachTickMode) BarCount = Bars;

继续。

}

}

}

}

}

}

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

//| Signal Begin(Entry) |

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

如果(Buy1_1 < Buy1_2 && Buy2_1 < Buy2_2) Order = SIGNAL_BUY;

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

//| 信号结束 |

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

//买入

如果(Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (! EachTickMode && (Bars != BarCount))))){

if(!IsTrade) {

//检查自由保证金

如果(AccountFreeMargin() < (1000 * Lots)) {

Print("我们没有钱。Free Margin = ", AccountFreeMargin())。

return(0);

}

if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue) 。

如果(Ticket > 0) {

如果(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("BUY订单打开:", OrderOpenPrice())。

if (SignalMail) SendMail("[信号提示]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");

} else {

Print("打开买入订单出错。", GetLastError())。

}

}

if (EachTickMode) TickCheck = True;

如果(!EachTickMode) BarCount = Bars;

return(0);

}

}

//卖出

如果(Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount))))){

if(!IsTrade) {

//检查自由保证金

如果(AccountFreeMargin() < (1000 * Lots)) {

Print("我们没有钱。Free Margin = ", AccountFreeMargin())。

return(0);

}

if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;

if (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;

Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink) 。

如果(Ticket > 0) {

如果(OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {

Print("Sell order opened : " , OrderOpenPrice());

if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");

} else {

Print("错误打开卖出订单。", GetLastError())。

}

}

if (EachTickMode) TickCheck = True;

如果(!EachTickMode) BarCount = Bars;

return(0);

}

}

如果(!EachTickMode) BarCount = Bars;

return(0);

}

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

 

感谢和其他任务

谢谢你回答我的问题。

newdigital, Kalenzo, asmdev

也感谢大家的帮助

这是我的下一个问题。

1.)如何比较一个发生的和已经发生的东西的值?

例如,如果 "n "是现在,时间的变量,n-a="a "之前的时间。

如何比较RSI的值,当它发生在(n-a)和RSIn(现在)。

或者如何比较现在之前的三条杠和最后一条杠的MA50?

2.)根据第1点,真正的情况是...如何创造一个看涨/看跌背离?

当条件是。 在定义的时间框架内有一个最高的价格和最高的RSI。然后在时间运行后......我们遇到了一个新的最高价格,但没有紧随其后的是新的RSI的高点(RSI未能创造一个新的高点)。

我们都知道这种情况是一个高可信度的卖出信号,而买入信号是相反的,所以我希望我的EA知道这一点。

再次感谢。

原因: