[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 149

 

Qui è dove ho risposto recentemente a una domanda analoga.

https://www.mql5.com/ru/forum/109048/page11

-Cercalo.

Nel tuo caso, probabilmente potresti fare così:

if ( AutoClose) { //если выключатель закрытия включен 

//----------------------------------------------------------------------
  for (int v=0; v<OrdersTotal(); v++)                             {       
      if (OrderSelect( v, SELECT_BY_POS, MODE_TRADES))               {           
        if (OrderSymbol()==Symbol()&& OrderMagicNumber()== MagicNum)   { 
//-----------------------------------------------------                  
if (OrderType() == OP_BUY) { 
      
           OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
                 //return(0); // выходим
                }       
      
 //--------------------------------------------------------
if (OrderType() == OP_SELL) { 
     
                 OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
                // return(0); // выходим
                }       
   
 //-------------------------------------------------------                       
    }  // Symbol()  
  } // select
 } //total
} //Close_
 

Signori, per favore, spiegate la differenza tra

NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,10,0)],4)
da
NormalizeDouble(High[iHighest(NULL,0,MODE_HIGH,iBarShift(NULL,0,Time[1],FALSE),1)] + 10 * Point,4)

Non capisco cosa sia iBarShift e cosa faccia

 
rid >> :

Qui è dove ho risposto recentemente a una domanda analoga.

Una domanda per intenditori".

-Vedi questo.

Nel tuo caso, probabilmente potresti fare così:


Grazie, rid!

Per me ha funzionato, ho fatto così.

   if (( Close_P)&& TimeCurrent()>=StrToTime( CloseHour+":00")){  // даже по времени сделал
   int slippage=3;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) break;
    if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID), slippage);
    if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK), slippage);
    }
    }


 
Dimoncheg >> :

Signori, potreste spiegare la differenza tra

da

Non capisco cosa sia iBarShift e cosa faccia

int iBarShift( simbolo stringa, int timeframe, datetime time, bool exact=false)
Cerca un bar per tempo. La funzione restituisce l'offset della barra a cui appartiene il tempo specificato. Se non c'è nessuna barra per il tempo specificato (un "buco" nella storia), la funzione restituisce, a seconda del parametro esatto, -1 o l'offset della barra più vicina.
Parametri:
simbolo - Nome del simbolo dello strumento. NULL significa simbolo corrente.
timeframe - Periodo. Può essere uno dei timeframe di un grafico. 0 significa periodo del grafico corrente.
tempo - Valore temporale da cercare.
esatto - Valore restituito se non viene trovata nessuna barra. FALSE - iBarShift ritorna più vicino. TRUE - iBarShift restituisce -1.
 
1Rakso >> :
int iBarShift(simbolo stringa, int timeframe, datetime time, bool exact=false)
Ricerca a barre per tempo. La funzione restituisce l'offset della barra a cui appartiene il tempo specificato. Se non c'è nessuna barra per il tempo specificato (un "buco" nella storia), la funzione restituisce -1 o l'offset della barra più vicina, a seconda del parametro esatto.
Parametri:
simbolo - Nome del simbolo dello strumento. NULL significa simbolo corrente.
timeframe - Periodo. Può essere uno dei timeframe di un grafico. 0 significa periodo del grafico corrente.
tempo - Valore temporale della ricerca.
esatto - Valore restituito se non viene trovata nessuna barra. FALSE - iBarShift ritorna più vicino. TRUE - iBarShift restituisce -1.

Ho letto il riferimento, ma non capisco cosa dice: "La funzione restituisce lo spostamento della barra" - cosa significa? Se ho letto la prima, significa semplicemente il numero di candele e la seconda significa qualche spostamento. Penso di aver bisogno del massimo più vicino dopo alcune condizioni, il primo caso non funzionerà perché potrei non vedere max 10 barre (e potrei non vedere neanche max 20 o 30), come dovrei descriverlo correttamente (il massimo più vicino per esempio dopo aver attraversato 2 Mascos)?

 
Dimoncheg >> :

Ho letto l'aiuto, ma non capisco cosa dice: "La funzione restituisce lo spostamento della barra" - cosa significa? Se ho letto la prima, significa semplicemente il numero di candele, e la seconda significa qualche spostamento. Penso di aver bisogno del massimo più vicino dopo alcune condizioni, il primo caso non funzionerà perché potrei non vedere max 10 barre (e potrei non vedere neanche max 20 o 30), quale sarà il modo giusto per farlo (il massimo più vicino dopo 2 incroci Mascos per esempio)?

ibarshift mostra in quale barra dall'inizio del grafico l'n-esimo secondo tempo

 
Dimoncheg >> :

L'ho letto, ma non capisco cosa dice: "La funzione restituisce lo spostamento della barra" - cosa significa? Se ho letto la prima, significa semplicemente il numero di candele, ma la seconda significa qualche spostamento. Penso di aver bisogno del massimo più vicino dopo alcune condizioni, il primo caso non funzionerà perché potrei non vedere max 10 barre (e potrei non vedere neanche max 20 o 30), quale sarà il modo giusto per farlo (il massimo più vicino per esempio dopo aver attraversato 2 Mascos)?

Dai tempo al tempo e ricevi uno schift.

Supponiamo che conosciate il tempo della barra zero.

Alcuni eventi sono passati,

La situazione è cambiata, e si vuole controllare la posizione della barra con questo tempo rispetto alla barra zero.

Qui è dove avete bisogno di questa funzione.

 

Dimoncheg

Io stesso sono un cliente di questa sezione)

======================

Ho un'altra domanda, come dividere il raggio ZZ a metà per calcolare il suo livello e fare un fix a questo livello?


   double ind1. up = iCustom(Symbol(), PERIOD_H1, "ZigZag_NK", ZZ_Depth1, 5, 3, 0, 0);
   double ind1. dn = iCustom(Symbol(), PERIOD_H1, "ZigZag_NK", ZZ_Depth1, 5, 3, 1, 0);
   if ( ind1. up != EMPTY_VALUE  ) ind1. arr_1 =- 1;
	else if ( ind1. dn != EMPTY_VALUE )   ind1. arr_1 = 1;  
   

   if (( Close_P)&& ind. arr_1 /2*Point){   // как вписать формулу что я не так делаю? 
   
   int slippage=3;
   for (int i=OrdersTotal()-1; i>=0; i--)
   {
    if (!OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) break;
    if (OrderType()==OP_BUY ) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID), slippage);
    if (OrderType()==OP_SELL) OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK), slippage);
    }
    }
 
Il mio indicatore all'interno del codice è reinizializzato, ho bisogno di sapere lo stato prima e dopo per confrontare. Qual è il modo migliore per attuare questo processo?
 
1Rakso >> :

Dimoncheg

Io stesso sono un cliente di questa sezione)

======================

Ho un'altra domanda, come dividere il raggio ZZ a metà per calcolare il suo livello e fare un fix a questo livello?


Lo zigzag non viene calcolato nell'ultimo punto. Di regola, non può essere fissato neanche a questo livello.

Motivazione: