新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 626

 
Ihor Herasko:

编写你自己的蜱虫,并把它们放在策略测试器中

但有什么更方便用户的吗?

 
Andrey Sokolov:

但更方便用户的东西?

自己不会做的事就不能写吗?那么https://www.mql5.com/ru/job

以下是该文章https://www.mql5.com/ru/articles/4566

你读了它,就按照你自己的分配法则进行引用吧

如果MT4需要自己的图表和刻度线,那么请阅读文章,从MT5导出报价并导入MT4。

再简单不过了

如果你能为MT4编程,在MetaEditor中打开MT4的PeriodConverter脚本,那里的代码很清晰,而且相当紧凑,你不需要花太多时间就能搞清楚,然后创建自己的图表并进行测试。

ZS:我记得我在论坛上发布了一个用Wehrstrass函数创建图表的脚本。

https://www.mql5.com/ru/forum/86386/page988#comment_7843056

 

你好。该函数为市场附近存在的头寸或订单返回一个标志(函数在论坛上找到)。对于测试代码,如果在当前价格上下200点左右,没有头寸,它应该开仓。为什么它在每一个刻度上都以几乎相同的价格开仓?

//+------------------------------------------------------------------+
//|                                                    testprpos.mq4 |
//|                        Copyright 2018, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2018, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict
//--- input parameters
input int      Input1;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(!ExistOPNearMarket(Symbol(),-1,200))
     {
      int ticket=OrderSend(Symbol(),OP_BUY,1,Ask,300,0,0,"_",16384,0,clrGreen);
      if(ticket<0)
        {
         Print("OrderSend завершилась с ошибкой #",GetLastError());
        }
      else
         Print("Функция OrderSend успешно выполнена");
      //--- 

     }

  }
//+------------------------------------------------------------------+
bool ExistOPNearMarket(string sy="",int op=-1,int mn=-1,int ds=1000000) 
  {
   int i,k=OrdersTotal(),ot;

   if(sy=="" || sy=="0") sy=Symbol();
   double p=MarketInfo(sy,MODE_POINT);
   if(p==0) if(StringFind(sy,"JPY")<0) p=0.0001; else p=0.01;
   for(i=0; i<k; i++) 
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) 
        {
         ot=OrderType();
         if((OrderSymbol()==sy) && (op<0 || ot==op)) 
           {
            if(mn<0 || OrderMagicNumber()==mn) 
              {
               if(ot==OP_BUY || ot==OP_BUYLIMIT || ot==OP_BUYSTOP) 
                 {
                  if(MathAbs(MarketInfo(sy, MODE_ASK)-OrderOpenPrice())<ds*p) return(True);
                 }
               if(ot==OP_SELL || ot==OP_SELLLIMIT || ot==OP_SELLSTOP) 
                 {
                  if(MathAbs(OrderOpenPrice()-MarketInfo(sy, MODE_BID))<ds*p) return(True);
                 }
              }
           }
        }
     }
   return(False);
  }
//+------------------------------------------------------------------+
 
我在迁移EA 时遇到了一个问题,按钮变得不活跃了,我无法迁移,有人遇到过这种情况吗?
 
Aleksei Petrenko:
我在迁移EA 时遇到了一个问题,按钮变得不活跃了,我无法迁移,有人遇到过这种情况吗?
 
Aleksei Petrenko:


 
Ghabo:

你好。该函数为市场附近存在的头寸或订单返回一个标志(函数在论坛上找到)。对于测试代码,如果在当前价格上下200点左右,它应该开仓,没有仓位。为什么它在每一个刻度上都以几乎相同的价格开仓?

调用时检查参数的数量

ExistOPNearMarket(Symbol(),-1,200)

和它的描述

 
Galim_V:

调用时检查参数的数量

和它的描述

谢谢你。
 
我有一个在python上的二进制机器人,问题是:我怎样才能在没有拐杖的情况下从机器人的终端向它发送信号?
 

你能告诉我如何计算一项交易的抵押品吗?


尝试了两种方法

(0.1 * Ask*MarketInfo(Symbol(),MODE_LOTSIZE))/AccountInfoInteger(ACCOUNT_LEVERAGE)


而这个人

FreeMarginCheck=AccountFreeMarginCheck(Symbol(),OP_BUY,0.1);

 double val=AccountFreeMargin()-FreeMarginCheck;



如果我的存款货币是 美元,第一种在欧元兑日元上给出了奇怪的结果。我是否需要在配方中添加一些东西?

第二种方法偶尔也能工作,有时是正确的数值,有时是一些胡言乱语(这取决于存款)。

原因: