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

 
ANDREY:

大家好!

我已经开始学习mql5。我首先研究了订单是如何开启的。我已经了解到,打开订单的代码写在一个单独的include文件中。我现在已经掌握了这个代码和它最后的交易变体。我很惊讶,mql4 中的开单比 mql5 中的开单要容易和简单得多。

我想问的是,我是否确定我已经有打开订单的代码的文件,我不需要写这个代码。如果这样的文件在某处可用,那么我只需要将其连接到我的EA,并设置我需要的订单参数值?如果有这样的文件,应该在哪里和如何找到它,以及它的名称是什么。

谢谢你。

如果我没有理解错的话,是#include <Trade\Trade.mqh>。

附加的文件:
ng4txc.PNG  116 kb
15vegf1.PNG  114 kb
 
SanAlex:

如果我没有理解错的话,是#include <Trade\Trade.mqh>。

非常感谢您提供的宝贵信息。

我是否正确地理解为我不必在任何地方寻找这些文件,而只需在代码的正确位置写上#include <Trade\Trade.mqh> ,这个文件就会自动加入我的专家顾问,并在需要时访问它?

 
ANDREY:

非常感谢您提供的宝贵信息。

我是否正确理解,我不需要在任何地方搜索这些文件,只需要在代码的正确位置写上#include <Trade\Trade.mqh> ,这个文件就会自动加入我的EA,EA会在需要时访问它?

是的!你不必去寻找它,它已经在那里了。

你可以看一下代码文件(Moving Averages.mq5或MACD Sample.mq5),从终端。

 
SanAlex:

是的!你不必去寻找它,它已经在那里了。

非常感谢您提供的宝贵信息。
如果我没有理解错的话,你发给我的文件叫做CLASS,这个文件是用来开立一个订单的。我认为有很多的CLASSES,每一个都有自己的目的,例如关闭订单,修改订单,输出一些信息,等等。

问题 我在哪里可以找到所有课程的清单及其详细说明?
再次感谢您的帮助。

 
ANDREY:

非常感谢您提供的宝贵信息。
如果我没有理解错的话,你发给我的文件叫做CLASS,这个文件是用来打开一个订单的。我认为有很多的CLASSES,每个CLASSES都有其特定的目的,例如,关闭一个订单,修改一个订单,输出一些信息,等等。

问:我在哪里可以找到所有课程的清单及其详细说明?
再次感谢您的帮助。

Документация по MQL5: Стандартная библиотека
Документация по MQL5: Стандартная библиотека
  • www.mql5.com
Стандартная библиотека MQL5 написана на языке MQL5 и предназначена для облегчения написания программ (индикаторов, скриптов, экспертов) конечным пользователям. Библиотека обеспечивает удобный доступ к большинству внутренних функций MQL5.
 
Artyom Trishkin:

非常感谢您提供的宝贵信息。我现在将开始消化它,即就我的精神能力而言,同化.....。

 
ANDREY:

大家好!

我已经开始学习mql5。我首先研究了订单是如何开启的。我已经了解到,打开订单的代码写在一个单独的include文件中。我现在已经掌握了这个代码和它最后的交易变体。我很惊讶,mql4 中的开单比 mql5 中的开单要容易和简单得多。

我想问的是,我是否确定我已经有打开订单的代码的文件,我不需要写这个代码。如果这样的文件在某处可用,那么我只需要将其连接到我的EA,并设置我需要的订单参数值?如果有这样的文件,应该在哪里和如何找到它,以及它的名称是什么。

谢谢你。

对我来说,我有一个不同的方法来写一个EA。我只是需要为自己纠正一下。

-为什么要重新发明车轮,因为它已经被创造出来了。

----------------------------------------------------------------------

这就是我们接过指标的地方

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- prepare trade class to control positions if hedging mode is active
   ExtHedging=((ENUM_ACCOUNT_MARGIN_MODE)AccountInfoInteger(ACCOUNT_MARGIN_MODE)==ACCOUNT_MARGIN_MODE_RETAIL_HEDGING);
   ExtTrade.SetExpertMagicNumber(MA_MAGIC);
   ExtTrade.SetMarginMode();
   ExtTrade.SetTypeFillingBySymbol(Symbol());
//--- Moving Average indicator
   ExtHandle=iMA(_Symbol,_Period,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE);
   if(ExtHandle==INVALID_HANDLE)
     {
      printf("Error creating MA indicator");
      return(INIT_FAILED);
     }
//--- ok
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+

在这里,我们对它们进行设置,使指标根据信号正确打开。

//+------------------------------------------------------------------+
//| Check for open position conditions                               |
//+------------------------------------------------------------------+
void CheckForOpen(void)
  {
   MqlRates rt[2];
//--- go trading only for first ticks of new bar
   if(CopyRates(_Symbol,_Period,0,2,rt)!=2)
     {
      Print("CopyRates of ",_Symbol," failed, no history");
      return;
     }
   if(rt[1].tick_volume>1)
      return;
//--- get current Moving Average 

   double   ma[1];
   if(CopyBuffer(ExtHandle,0,0,1,ma)!=1)
     {
      Print("CopyBuffer from iMA failed, no data");
      return;

     }
//--- check signals
   ENUM_ORDER_TYPE signal=WRONG_VALUE;

   if(rt[0].open>ma[0] && rt[0].close<ma[0])
      signal=ORDER_TYPE_SELL;    // sell conditions
   else
     {
      if(rt[0].open<ma[0] && rt[0].close>ma[0])
         signal=ORDER_TYPE_BUY;  // buy conditions
     }
//--- additional checking
   if(signal!=WRONG_VALUE)
     {
      if(TerminalInfoInteger(TERMINAL_TRADE_ALLOWED) && Bars(_Symbol,_Period)>100)
         ExtTrade.PositionOpen(_Symbol,signal,TradeSizeOptimized(),
                               SymbolInfoDouble(_Symbol,signal==ORDER_TYPE_SELL ? SYMBOL_BID:SYMBOL_ASK),
                               0,0);
     }
//---
  }
//+------------------------------------------------------------------+
 
Artyom Trishkin:

为了帮助我更好地了解MQL5,如果你能把这个简单的代码从MQL4翻译成MQL5 代码,我将非常感激

谢谢你的帮助。

int s1,SL,a;
double Lou=Bid,Hay,DL=0.0030;
void OnTick()
{
if (Bid < Lou)
{
Lou=Bid;
}
if (Bid > Hay)
Hay=Bid;
if (Bid - Lou > DL&& Lou!=0)
{
Lou=Bid;
Hay=Bid;
s1=1;
}
////=======================
if (Hay-Bid>0.0000)
if (s1==1)
{
for(int c=0; c<=500;c+=20)
{
a++;
{
SL=300+c;
OrderSend(Symbol(),OP_SELL,0.1,Bid, 3,Ask+SL*Point,Ask-SL/3*Point,"300",100);
Lou=Bid;
Hay=Bid;
}
}
a=0;
s1=0;
}
}
 

numPosOr= 4;

numStepCount= 1。

iK = (numPosOr - numStepCount) / numPosOr;

为什么这种计算方式使iK=0?

 
Sysmart:

numPosOr= 4;

numStepCount= 1。

iK = (numPosOr - numStepCount) / numPosOr;

为什么这种计算方式使iK=0?

请给我整个代码

原因: