Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1127

 
Так и не понял в чём вопрос?
 
MrBrooklin:

Здравствуйте, Владимир!

Помогите модифицировать старт работы скрипта, который приведен ниже:

Нужно, что бы скрипт устанавливал отложенные ордера не от ask и bid, а от hight и low предыдущего бара (свечи).

С уважением, Владимир.

Примерно так:

//--- 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()
  {

и больше советник уже не будет размещать отложенные ордера до своего следующего перезапуска

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

Здравствуйте, Владимир!

Для повышения самообразования подскажите, как изменить код, чтобы советник размещал отложенные ордера на каждом баре. Пробовал просто удалить все выделенное желтым цветом, но он сразу начинает открывать и устанавливать тысячи ордеров и позиций.

С уважением, Владимир.

 
MrBrooklin:

Здравствуйте, Владимир!

Для повышения самообразования подскажите, как изменить код, чтобы советник размещал отложенные ордера на каждом баре. Пробовал просто удалить все выделенное желтым цветом, но он сразу начинает открывать и устанавливать тысячи ордеров и позиций.

С уважением, Владимир.

Необходимо определять момент рождения нового бара и только тогда размещать отложенные ордера:

//+------------------------------------------------------------------+
//|                                                         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:

Необходимо определять момент рождения нового бара и только тогда размещать отложенные ордера:

Это же абсолютно очевидно! Откуда такие вопросы? От лени или ещё от чего?

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

Это же абсолютно очевидно! Откуда такие вопросы? От лени или ещё от чего?

Пользователь MrBrooklin делает только первые шаги, поэтому нуждается в подсказках. Все когда то начинали и были зелеными.

 
Vladimir Karputov:

Пользователь MrBrooklin делает только первые шаги, поэтому нуждается в подсказках. Все когда то начинали и были зелеными.

Я не против в принципе. Но логика то должна быть?

Хочу чтобы на новом баре делалось что-то. Ну так, в первую очередь, нужно определить этот самый новый бар. 

Это вопросы не новичка, а лентяя, который хочет чтобы ему всё разжевали положили в ротик. А мозг включить - религия не позволяет?

Причина обращения: