Domande dai principianti MQL5 MT5 MetaTrader 5 - pagina 1127

 
Non hai ancora capito qual è la domanda?
 
MrBrooklin:

Ciao Vladimir!

Per favore aiutatemi a modificare l'inizio dello script qui sotto:

Ho bisogno dello script per impostare gli ordini pendenti non da ask e bid, ma da hight e low della barra precedente (candlestick).

Sinceramente, Vladimir.

Come questo:

//--- 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;
        }
 

Forum sul trading, sistemi di trading automatico e test di strategia

FAQ da principianti MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.09.18 12:49

Più o meno così:

//--- 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;
        }

Grande!!! Grazie!

Saluti, Vladimir.

 
Perché non posso usare un criterio personalizzato in un'enumerazione di parametri completa, qual è il sacro significato di questo?
 

Forum sul trading, sistemi di trading automatico e test di strategia

FAQ da principianti MQL5 MT5 MetaTrader 5

Vladimir Karputov, 2019.08.31 14:38

Per favore.

Fate attenzione alla variabile m_first_start dichiarata a livello globale del programma

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

Alla fine di OnTick a questa variabile viene assegnato il valore "true"

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

e l'EA non piazzerà più ordini in sospeso fino al suo prossimo riavvio

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

Ciao Vladimir!

Si prega di consigliare come modificare il codice in modo che l'EA abbia piazzato ordini pendenti su ogni barra. Ho provato a cancellare semplicemente tutte le marcature gialle, ma iniziava immediatamente ad aprire e piazzare migliaia di ordini e posizioni.

Sinceramente, Vladimir.

 
MrBrooklin:

Ciao Vladimir!

Per migliorare la mia auto-educazione, per favore consigliate come cambiare il codice in modo che l'EA piazzi ordini pendenti su ogni barra. Ho provato a cancellare semplicemente tutti quelli segnati in giallo, ma inizia immediatamente ad aprire e piazzare migliaia di ordini e posizioni.

Sinceramente, Vladimir.

Dovresti rilevare il momento in cui nasce una nuova barra e piazzare ordini pendenti solo allora:

//+------------------------------------------------------------------+
//|                                                         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;
   ЗДЕСЬ РАЗМЕЩАТЬ КОД ПО ВЫСТАВЛЕНИЮ ОТЛОЖЕННЫХ ОРДЕРОВ
//---
  }
//+------------------------------------------------------------------+
File:
Test.mq5  4 kb
 

Grazie, Vladimir, per il suggerimento.

Con rispetto, Vladimir.

 
Vladimir Karputov:

È necessario determinare quando nasce una nuova barra e solo allora piazzare ordini pendenti:

È assolutamente ovvio! Da dove vengono queste domande? Per pigrizia o per qualcos'altro?

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

È assolutamente ovvio! Da dove vengono queste domande? Per pigrizia o per qualcos'altro?

MrBrooklin sta facendo i suoi primi passi, quindi ha bisogno di un suggerimento. Tutti hanno iniziato ed erano verdi in un momento o nell'altro.

 
Vladimir Karputov:

MrBrooklin sta facendo i suoi primi passi, quindi ha bisogno di qualche consiglio. Tutti hanno iniziato una volta ed erano verdi.

Non sono contrario per principio. Ma ci deve essere una logica?

Voglio che si faccia qualcosa per il nuovo bar. Bene, prima di tutto, dovete definire questa nuova barra.

Queste domande non sono da principiante, ma da pigro che vuole tutto masticato e messo in bocca. Non puoi usare il tuo cervello?

Motivazione: