初学者的问题 MQL5 MT5 MetaTrader 5 - 页 1127

 
还是不明白问题是什么?
 
MrBrooklin:

你好,弗拉基米尔!

请帮助我修改下面这个脚本的开头。

我需要脚本不是根据卖出价和买入价来设置挂单,而是根据前一栏(蜡烛图)的高度和低度来设置。

真诚的,弗拉基米尔。

像这样。

//--- start work
   double start_price_ask=0.0;
   double start_price_bid=0.0;
//---
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(m_symbol.Name(),Period(),start_pos,count,rates)!=count)
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CopyRates ");
      return;
     }
//---
   if(InpPending==stop)
     {
      start_price_ask=rates[1].high+ExtUpGap;
      start_price_bid=rates[1].low-ExtDownGap;
     }
   else
      if(InpPending==limit)
        {
         start_price_ask=rates[1].low-ExtDownGap;
         start_price_bid=rates[1].high+ExtUpGap;
        }
 

关于交易、自动交易系统和策略测试的论坛

初学者的常见问题 MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.09.18 12:49

大约是这样的。

//--- start work
   double start_price_ask=0.0;
   double start_price_bid=0.0;
//---
   MqlRates rates[];
   ArraySetAsSeries(rates,true);
   int start_pos=0,count=3;
   if(CopyRates(m_symbol.Name(),Period(),start_pos,count,rates)!=count)
     {
      Print(__FILE__," ",__FUNCTION__,", ERROR: CopyRates ");
      return;
     }
//---
   if(InpPending==stop)
     {
      start_price_ask=rates[1].high+ExtUpGap;
      start_price_bid=rates[1].low-ExtDownGap;
     }
   else
      if(InpPending==limit)
        {
         start_price_ask=rates[1].low-ExtDownGap;
         start_price_bid=rates[1].high+ExtUpGap;
        }

太好了!!!。谢谢你!

问候,弗拉基米尔。

 
为什么我不能在全参数枚举中使用自定义标准,这有什么神圣的意义?
 

关于交易、自动交易系统和策略测试的论坛

初学者的常见问题 MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.08.31 14:38

请。

请注意在全局程序级别上声明的m_first_start变量

bool        m_first_start  = false;
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()

在OnTick结束时,这个变量被赋予 "true "的值。

//---
   m_first_start=true;
  }
//+------------------------------------------------------------------+
//| Refreshes the symbol quotes data                                 |
//+------------------------------------------------------------------+
bool RefreshRates()
  {

而EA在下次重启之前将不再下挂单

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   if(m_first_start)
      return;

你好,弗拉基米尔!

请告知如何修改代码,使EA在每个柱子上都有挂单,以提高我的自学能力。我试着简单地删除所有的黄色标记,但它会立即开始打开并放置成千上万的订单和头寸。

真诚的,弗拉基米尔。

 
MrBrooklin:

你好,弗拉基米尔!

为了提高我的自学能力,请告诉我如何修改代码,使EA在每个柱子上都放置挂单。我试着简单地删除所有标记为黄色的东西,但它立即开始打开并放置成千上万的订单和头寸。

真诚的,弗拉基米尔。

你应该检测到新柱状体诞生的时刻,并在那时才下挂单

//+------------------------------------------------------------------+
//|                                                         Test.mq5 |
//|                              Copyright © 2019, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2019, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.000"
/*
   barabashkakvn Trading engine 3.043
*/
#include <Trade\SymbolInfo.mqh>
//---
CSymbolInfo    m_symbol;                     // object of CSymbolInfo class
//--- input parameters

//---
datetime m_prev_bars             = 0;        // "0" -> D'1970.01.01 00:00';

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

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//--- we work only at the time of the birth of new bar
   datetime time_0=iTime(m_symbol.Name(),Period(),0);
   if(time_0==m_prev_bars)
      return;
   ЗДЕСЬ РАЗМЕЩАТЬ КОД ПО ВЫСТАВЛЕНИЮ ОТЛОЖЕННЫХ ОРДЕРОВ
//---
  }
//+------------------------------------------------------------------+
附加的文件:
Test.mq5  4 kb
 

谢谢你,弗拉基米尔,感谢你的提示。

尊敬的弗拉基米尔。

 
Vladimir Karputov:

有必要确定一个新的柱状体何时诞生,然后才下挂单

这绝对是显而易见的!这些问题从何而来?是因为懒惰还是其他原因?

 
Сергей Таболин:

这绝对是显而易见的!这些问题从何而来?是因为懒惰还是其他原因?

布鲁克林先生 刚刚迈出第一步,所以他需要一个提示。每个人在开始的时候,都曾经是绿色的。

 
Vladimir Karputov:

布鲁克林先生 刚刚迈出第一步,所以他需要一些提示。每个人一开始都是绿色的。

我原则上不反对。但这其中一定有一个逻辑?

我希望在新酒吧上做一些事情。那么,首先,你需要定义这个新酒吧。

这些问题不是一个初学者,而是一个想把所有东西都嚼碎了塞进嘴里的懒人。你不能使用你的大脑吗?

原因: