标签: mql5

如何使用 CopyRates() 搜索和过滤看涨吞没形态的多个时间范围

我尝试使用CopyRates()到(所有时限搜索几个时限看涨吞没烛台模式(看跌蜡烛,随后一个更大的看涨蜡烛)H2,以M10一个内H4看涨的蜡烛它关闭后)。我阅读了 的定义,CopyRates()但我发现实施起来有点困难。这里的想法来自我想要过滤具有最大看跌与看涨蜡烛对比率的模式的模式。看看我在下面做了什么:

OnTick()

for (int i=ArraySize(timeframes); i>=1; i--)   {
    
    if(CopyRates(Symbol(), timeframes[i - 1], 1, MyPeriod, rates)!=MyPeriod) {
        Print("Error CopyRates errcode = ",GetLastError()); 
        return;
    }

    // Using bullish engulfing pattern:
    if ((rates[numCandle].open < rates[numCandle].close) &&
        (rates[numCandle + 1].open > rates[numCandle + 1].close) &&
        (rates[numCandle + 1].open < rates[numCandle].close) &&
        (rates[numCandle + 1].close > rates[numCandle].open)) {

        // Not too certain what should be done here
    }
}
Run Code Online (Sandbox Code Playgroud)

这是其他相关代码:

input int …
Run Code Online (Sandbox Code Playgroud)

algorithmic-trading metatrader5 mql5

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

接受MQL5中Python生成的套接字输出

我创建了一个类似于以下的套接字文件,并希望MQL5必须读取套接字的输出.请参阅以下python代码;
daemon.py

import socket
#import arcpy

def actual_work():
    #val = arcpy.GetCellValue_management("D:\dem-merged\lidar_wsg84", "-95.090174910630012 29.973962146120652", "")
    #return str(val)
    return 'dummy_reply'


def main():
    sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
    try:
        sock.bind( ('127.0.0.1', 6666) )

        while True:
            data, addr = sock.recvfrom( 4096 )
            reply = actual_work()
            sock.sendto(reply, addr)
    except KeyboardInterrupt:
        pass
    finally:
        sock.close()


if __name__ == '__main__':
    main()
Run Code Online (Sandbox Code Playgroud)

client.py

import socket
import sys


def main():
    sock = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
    sock.settimeout(1)
    try:
        sock.sendto('', ('127.0.0.1', 6666))
        reply, _ = sock.recvfrom(4096)
        print reply
    except socket.timeout: …
Run Code Online (Sandbox Code Playgroud)

python sockets zeromq python-3.x mql5

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

如何正确关闭已打开的订单?(发送订单时不能将票号传递给“位置”)

我想开一个订单,没问题,但是如果我想关闭这个订单,我需要票号,票我不能手动写,开单后会给。

文档中,我得到了这个: 在此处输入图片说明

但我不能将 0 以外的任何东西传递给"position": 0(第 20 行),否则它不会打开订单。

同时,如果 position = 0,它将打开一个订单,我将从 中获得一个持仓单result.order,然后我必须手动将其复制并粘贴到position来自关闭订单功能中,就像它将关闭订单一样。

那么,有没有一种方法可以不在每个打开的订单后手动复制票号并将其粘贴到关闭功能中?或者提前为打开和关闭订单写一张独特的票?

先感谢您!

import MetaTrader5 as mt5

if not mt5.initialize():
    print("initialize() failed, error code =",mt5.last_error())
    quit()
    
symbol = "EURUSD"
lot = 0.1
point = mt5.symbol_info(symbol).point
price = mt5.symbol_info_tick(symbol).ask
deviation = 20

def buy():
    request = {
        "action": mt5.TRADE_ACTION_DEAL,
        "symbol": symbol,
        "volume": lot,
        "type": mt5.ORDER_TYPE_BUY,
        "price": price,
        "position": 0, # can't pass anything else than 0 here, otherwise it will not …
Run Code Online (Sandbox Code Playgroud)

python metatrader5 mql5

9
推荐指数
1
解决办法
265
查看次数

如何找到2小时到15分钟时间范围内烛形图出现的最大次数

我试图搜索找出如何在一定时间范围内搜索模式。显然,该模式可能会根据时间范围出现几次,这就是为什么我对重复的最大次数特别感兴趣。

为了说明我要进一步实现的目标,请说我正在搜索从2小时到15分钟图表的模式,然后在2小时图表中找到它,然后再钻入下一个1小时的时间范围,最后得出在1小时图上的两个模式中,我将继续30分钟(两个1小时模式)和15分钟,直到获得最大的时间。

我认为将需要一种返回下一个较低时间范围的方法。我已经能够写出来,请参见下面的代码。我真的很感谢您的帮助。

ENUM_TIMEFRAMES findLowerTimeframe(ENUM_TIMEFRAMES timePeriod)
{
   int timeFrames[5] = {15, 20, 30, 60, 120};

   int TFIndex=ArrayBsearch(timeFrames, (int)timePeriod);

   return((ENUM_TIMEFRAMES) timeFrames[TFIndex - 1]);
}
Run Code Online (Sandbox Code Playgroud)

编辑

我没有添加特定的烛台图案,因为我认为这不是我的问题中最重要的部分。问题的症结在于如何在几个连续的时间框架内搜索模式,以找到该模式在该时间范围内出现的最大次数。

algorithmic-trading metatrader5 mql5

8
推荐指数
1
解决办法
111
查看次数

如何判断 3 条移动平均线何时在 4 根蜡烛或更少的时间内交叉

我一直在使用 2 条移动平均线交叉,这是非常直接的。我想在混合中添加三分之一,我试图找出在 4 根蜡烛或更少的时间内检查是否发生这种情况。

对于两个移动平均线,我使用了以下内容:

  // if shift5MA > shift0MA 
   if (shift5MAArray[1] > shift0MAArray[1]) {
      
      //if shift5MA < shift0MA VALID SELL
      if (shift5MAArray[2] < shift0MAArray[2]) {
         signal = "sell";
      }
      }
   
   if (shift5MAArray[1] < shift0MAArray[1]) {
      
      //if shift5MA > shift0MA
      if (shift5MAArray[2] > shift0MAArray[2]) {
         signal = "buy";
      }
      }

Run Code Online (Sandbox Code Playgroud)

我如何检查 3 条移动平均线何时在 4 根蜡烛或更少的时间内相互交叉,如图像中的三个交叉:

在此处输入图片说明

algorithmic-trading metatrader5 mql5

6
推荐指数
1
解决办法
153
查看次数

如何在服务器中执行 MQL4 程序?

我已经使用 MQL4 语言实现了一个要在 MetaTrader 中执行的智能交易系统。

现在,如果我需要执行它,我总是需要运行 MetaTrader 并将我的 EA 程序附加到其中的实时货币对图表。

我想知道是否有一种方法可以在服务器中执行 MQL4 脚本,这样我就不需要让我的计算机始终处于开启状态。我用谷歌搜索了这个问题,但我找不到合适的答案。

我发现有一种方法可以将数据从 MetaTrader 传输到网络服务器(MQL 到 PHP),但我不知道它是否有助于解决我的问题(http://mql4-php.iinuu.eu/

提前致谢。

php webserver mql4 mql5 server

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

如何反编译一个ex4文件new build 600+

如果您不知道,ex4 文件是用 MQL 语言(自动交易机器人)创建的文件。

有一个反编译器可以反编译此类文件的旧版本,但是在版本 600 之后没有反编译器。

我有需要反编译的有价值的 EA(外汇机器人)。你能帮我吗?

robot forex mql4 mql5

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

如何使自定义指标中的 OnCalculate() 函数在 MQL5/OpenCL 中使用 GPU?

我已经使用 MQL5 创建了一个指标。

分析后,我读到的程序说我的 CPU 的 99% 被我的OnCalculate().

这是我的功能:

int OnCalculate( const int     rates_total,
                 const int     prev_calculated,
                 const int     begin,
                 const double &price[]
                 )
  {
//--- check for bars count
      float tempprice[];
      ArrayResize( tempprice, ArraySize( price ) );
      if (  rates_total <  InpMAPeriod - 1 + begin ) return( 0 ); // not enough bars for calculation
//--- first calculation or number of bars was changed
      if (  prev_calculated == 0 ) ArrayInitialize( ExtLineBuffer, 0 );

      ArrayCopy( tempprice, …
Run Code Online (Sandbox Code Playgroud)

gpu opencl metatrader5 mql5

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

将 mql4 EA 转换为 mql5

我一直在试图弄清楚如何将我的 MQL4 代码更改为 MQL5。到目前为止,我已经能够更改 RSI 和 MACD 条件以及 SendOrder(),但是还有很多,例如 ModifyOrder() 和 CloseOrder() 以及我无法完成的其他事情。我知道这是一口口水,但我真的很感激在完成这个过程中得到一些帮助。

这是原始 MQL4 代码:

extern int MagicNumber=112223;
extern double Lots =0.005;
extern double StopLoss=0;
extern double TakeProfit=0;
extern int TrailingStop=0;
extern int Slippage=3;

int mode_main = 0;
int mode_signal = 1;
//+------------------------------------------------------------------+
//    expert start function
//+------------------------------------------------------------------+
int start()
{
  double MyPoint=_Point;
  if(Digits==3 || Digits==5) MyPoint=Point*10;

  double TheStopLoss=0;
  double TheTakeProfit=0;
  if( TotalOrdersCount()==0 ) 
  {
     int result=0;
     if((iMACD(NULL,PERIOD_M5,12,26,9,PRICE_CLOSE,mode_signal,0)<iMACD(NULL,PERIOD_M5,12,26,9,PRICE_CLOSE,mode_main,0))&&(iRSI(NULL,PERIOD_M5,2,PRICE_CLOSE,0)>84)) // Here is your open buy rule
     {
        result=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,"EA",MagicNumber,0,Blue);
        if(result>0)
        { …
Run Code Online (Sandbox Code Playgroud)

algorithmic-trading metatrader5 mql5

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

如何在 VS Code 中编码和编译 mql4 和 mql5 语言?

我转向了 mql4 和 mql5 编程语言。但是,MetaEditor 编码起来非常菜鸟, https://i.stack.imgur.com/sVtJQ.png 所以我想编写mql4语言并使用VS Code进行编译。

如果您有任何解决方案请与我们分享......

谢谢

forex mql4 mql5 technical-indicator expert-advisor

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