标签: metatrader4

How can I cancel a trade when another is open and keep the open trade for a given duration?

I have written the code below that opens a buy and sell trade (a certain number of pips above and below the ask and bid price) at a specific time.

  1. How can I close/cancel one immediately when the other is opened?

  2. 如果说获利X点或在一分钟后(取决于先达到哪种条件),如何关闭未平仓交易?

我不太确定自己在下面的代码中做了正确的事情,非常感谢您的帮助。

double spread = Ask-Bid;
extern datetime time;
extern int pipGap = 7;
extern int lotSize = 0.01;
extern int closeTimeInSeconds = 60;


int start() {
  if (TimeCurrent() >= StrToTime(time)){

    OrderSend(Symbol(),OP_BUYSTOP,lotSize, Ask + Point*pipGap, 0,0,0);
    OrderSend(Symbol(),OP_SELLSTOP,lotSize, Bid - …
Run Code Online (Sandbox Code Playgroud)

metatrader4 mql4

15
推荐指数
1
解决办法
448
查看次数

如何编写用矩形标记列出的蜡烛图案的mql4代码(EA)

我是编写mql4代码的新手,如果在以下烛台图案出现时能获得一些绘制矩形的帮助,将不胜感激:

图。1:

图片取自https://imgur.com/a/fRoPzsm

Run code snippet

<blockquote class="imgur-embed-pub" lang="en" data-id="a/fRoPzsm"><a href="//imgur.com/a/fRoPzsm">Demand Zone 1</a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>
Run Code Online (Sandbox Code Playgroud)

图2:

图片取自https://imgur.com/a/4E8KE1R

Run code snippet

<blockquote class="imgur-embed-pub" lang="en" data-id="a/4E8KE1R" data-context="false"><a href="//imgur.com/a/4E8KE1R">Demand Zone 2</a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>
Run Code Online (Sandbox Code Playgroud)

图3:

图片取自https://imgur.com/a/h6D6o6R

Run code snippet

<blockquote class="imgur-embed-pub" lang="en" data-id="a/h6D6o6R"><a href="//imgur.com/a/h6D6o6R">Hidden Demand Zone</a></blockquote><script async src="//s.imgur.com/min/embed.js" charset="utf-8"></script>
Run Code Online (Sandbox Code Playgroud)

和相应的供应区域,
并以指定的点数止损和止盈开立挂单。

请原谅我不直接包含图像。我没有足够的投票赞成这样做。

以下是链接图像中烛台图案的说明:

需求区

candlestick pattern当出现至少两个或多个连续的看涨蜡烛(最后一个看涨蜡烛的高点为该时间段的高点),然后跟随一个或多个看跌蜡烛的高低比最后一个看涨蜡烛的低点时,将发生一般(需求区域) 。然后最后是形成新高的看涨蜡烛。矩形区域是需求区域,从最后一个看跌蜡烛的开盘价到最低价截取。

隐藏需求区

当一系列连续的看涨蜡烛的蜡烛的低位,低于前一根蜡烛以及其高位和其收盘价重合时,隐藏的需求区域将从看涨蜡烛的低位转向开盘。

此处提供针对需求区域和供应区域的完整说明。

我知道,bullishbearish蜡烛可由下式确定


    if ( ( Open[1] - Close[1] ) > 0)
    {
      // candle is bearish
    } …
Run Code Online (Sandbox Code Playgroud)

mt4 metatrader4 mql4

14
推荐指数
1
解决办法
490
查看次数

评估需要一个线程暂时运行.使用"监视"窗口执行评估

完全卡住了.我正在测试MetaTrader API并在尝试在VS 2010的立即窗口中运行方法时获取下一个错误:

mscorlib.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常

System.Runtime.Remoting.dll中出现'System.Threading.ThreadAbortException'类型的第一次机会异常

评估需要一个线程暂时运行.使用"监视"窗口执行评估.

这是什么意思?是否会因运行时版本的差异而发生(api 2.0,app 4.0)?

c# exception-handling thread-exceptions metatrader4

12
推荐指数
3
解决办法
1万
查看次数

我可以在MetaTrader4上使用MQL4以外的语言吗?

我的任务是将C#市场策略迁移到MetaTrader.

  1. 有没有办法自动完成这项工作?(例如,是否可以将C#解析为它的AST,然后进行翻译?)

  2. MetaTrader是否接受其他语言?

c# metatrader4 mql4

7
推荐指数
1
解决办法
4920
查看次数

MetaTrader的异步Web请求

我试图看看是否可以为MetaTrader构建一个可以发出异步互联网请求的自定义指标,以便将数据发布到带有PHP接口的服务器上.

这些请求可能需要一些时间才能处理Web服务器,因此我担心如果以同步方式执行这些请求,它们将阻止指示器不断更新新的tick数据.

MT4是否有可用的异步库?

algorithmic-trading metatrader4 mql4

7
推荐指数
1
解决办法
3566
查看次数

如何将Metatrader 4警报或电子邮件指示信号转换为EA交易以开启交易?

我一直在使用指标来进行交易.我没有开发指标,所以我只能访问该.ex4文件.如何在警报或电子邮件信号中提取止盈,开放交易和止损值以开启交易?请参阅下面的电子邮件和警报信号示例.

在此输入图像描述

在此输入图像描述

algorithmic-trading metatrader4 mql4

7
推荐指数
1
解决办法
2039
查看次数

随着利润增加,如何在止损和当前价格之间保持10点的利润差距

我想另一个条件添加到该解决方案在这个岗位。我希望当交易获利10点时,止损将增加10点。更具体地说,假设我已经设置了一个待处理的买单,止损位比开盘价低10点,止盈位为50点。如果交易获利10个点,那么止损将向上移动10个点,如果交易获利为20个点,则止损将向上移动另一个10个点,而当交易获利30和40个点时,同样会发生直到达到50点止盈为止。这里的想法是,止损会增加10个点,而利润会增加10个点,但是止损不会下降。因此,如果止损为获利10个点,而价格为获利23个点并且突然下降,它将以10个止损获利退出交易。

设置以上条件对我来说似乎很复杂。我还没完成。

以下是我要解决的代码的相关部分(请注意,其余代码与上述链接的问题解决方案相同)。

//=========================================================
    //CLOSE EXPIRED STOP/EXECUTED ORDERS
    //---------------------------------------------------------
    for( int i=OrdersTotal()-1; i>=0; i-- ) {
        if(OrderSelect( i, SELECT_BY_POS, MODE_TRADES ))
            if( OrderSymbol() == Symbol() )
                if( OrderMagicNumber() == viMagicId) {
                    if( (OrderType() == OP_BUYSTOP) || (OrderType() == OP_SELLSTOP) )
                        if((TimeCurrent()-OrderOpenTime()) >= viDeleteStopOrderAfterInSec)
                            OrderDelete(OrderTicket());

                    if( (OrderType() == OP_BUY) || (OrderType() == OP_SELL) )
                        if((TimeCurrent()-OrderOpenTime()) >= viDeleteOpenOrderAfterInSec) {
                            // For executed orders, need to close them
                            double closePrice = 0;
                            RefreshRates();
                            if(OrderType() == OP_BUY)
                                closePrice  = Bid;
                            if(OrderType() == …
Run Code Online (Sandbox Code Playgroud)

trading algorithmic-trading metatrader4 mql4

7
推荐指数
1
解决办法
267
查看次数

使用 Java 的 MetaTrader 4 Fix 协议

我的机器上安装了 MT4 客户端,并且可以成功检索源。不过,我用java编写了一个程序,使用FIX协议来拉取数据。我想知道我的 java 程序如何提取我在 MT4 客户端上看到的数据。

java protocols fix-protocol metatrader4

5
推荐指数
1
解决办法
5621
查看次数

R 和 Metatrader 4

R 有一种从其他来源(例如雅虎财经等)收集数据的好方法

library(quantmod)
getSymbols("YHOO",src="google") 
Run Code Online (Sandbox Code Playgroud)

有没有办法将 Metatrader 4 收集到 R 中

例如:

library(*******)
getSymbols("***",period=1hr, src="Metatrader4") 
Run Code Online (Sandbox Code Playgroud)

r metatrader4

5
推荐指数
1
解决办法
2937
查看次数

如何在 MQL4 中计算(添加)日期时间值?

使用 MQL4 我在处理datetime.

我想做的是datetime按月或按年排列。

目前我就是这样做的。

datetime myDate;

myDate[0] = D'2010.01.01 00:00';
myDate[1] = D'2010.02.01 00:00';
myDate[2] = D'2010.03.01 00:00';
myDate[3] = D'2010.04.01 00:00';
.
.
Run Code Online (Sandbox Code Playgroud)

不过我想像下面这样做

myDate[0] = D'2010.01.01 00:00';
for (int i = 1;i < 6 ;i+=){
    myDate[i] = myDate[i - 1] + 1year;
}
Run Code Online (Sandbox Code Playgroud)

如果是月份,

myDate[0] = D'2010.01.01 00:00';
for (int i = 1; i < 12 ; i++){
    myDate[i] = myDate[i - 1] + 1month
}
Run Code Online (Sandbox Code Playgroud)

问:如何计算加1month1year

algorithmic-trading mt4 metatrader4 mql4

5
推荐指数
1
解决办法
2万
查看次数