Caratteristiche utili da KimIV - pagina 23

 

La funzione NumberOfBarCloseLastPos().

Questa funzione restituisce il numero di chiusura della barra dell'ultima posizione o -1. La selezione delle posizioni da prendere in considerazione è definita da parametri esterni:

  • sy - Nome dello strumento di mercato. Se questo parametro è impostato, la funzione considererà solo le posizioni di questo strumento. Il valore predefinito - NULL significa lo strumento di mercato corrente.
  • tf - Timeframe. Il valore predefinito 0 indica l'intervallo di tempo corrente.
  • op - operazione commerciale, tipo di posizione. Valori validi: OP_BUY, OP_SELL o -1. Il valore predefinito -1 significa qualsiasi posizione.
  • mn - Identificatore di posizione, MagicNumber. Il valore predefinito -1 significa qualsiasi identificatore.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара закрытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarCloseLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersHistoryTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) t=OrderCloseTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
HH. In allegato c'è uno script per testare la funzione NumberOfBarCloseLastPos().
 
 
 
KimIV:

Funzione DeleteOrders(). Versione per tester.

La funzione DeleteOrders() è progettata per cancellare gli ordini pendenti BuyLimit, BuyStop, SellLimit e SellStop. op - Tipo di operazione commerciale, tipo di ordine pendente. È possibile uno dei cinque valori: -1, OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT o OP_SELLSTOP. Il valore predefinito di -1 significa qualsiasi ordine.
mn
- MagicNumber, numero di identificazione dell'ordine in sospeso. Il valore predefinito -1 significa qualsiasi magia.

Salve. A pagina 10 questa funzione è stata impostata per essere applicata.

L'ho applicato nel mio Expert Advisor per eliminare gli ordini pendenti. O meglio, volevo usarlo. Ho messo la funzione al di fuori della sezione int start

L'ho incollato.

if (isCloseLastPosByTake(NULL,OP_BUY, My order Buy ))   {
              DeleteOrders(NULL, -1,  My order Sell);   }

Ma durante la compilazione, ottengo un errore

'clDelete' - variabile non definita C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1155, 40)

Come posso eliminare questo errore?

E quando uso la funzione ClosePositions() - Chiudi leposizioni al prezzo di mercato, tutto va bene - nessun errore!

/ anche se inserisco solo la funzione DeleteOrders e non la applico ancora - questo errore si compila ancora!

 
Rita писал (а):
Ma quando lo si compila si ottiene un errore
'clDelete' - variabile non definita C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1155, 40)
Come posso eliminare questo errore? Cos'è questo 'clDelete'?

Lì, a pagina 10 nell'allegato c'è il file test_DeleteOrders.mq4

Scaricatelo e cercate qualsiasi riferimento a clDelete in esso.

 

L'ho scaricato e l'ho guardato! Quindi? Ho scoperto che tutto quello che dovevo fare era impostare il colore dell'icona di chiusura!

Ma ora non è più tutto a posto. Ora quell'errore è sparito. Ma è apparso un altro errore - alla funzione ClosePositions() - che non c'era prima.

if (L_2Sell==true)                 {  
        ClosePositions(NULL, -1,Magic);
                                      }

ClosePosBySelect' - la funzione non è definita C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (905, 47)
E non c'è uno script nelle vicinanze (p. 14) per controllare

Puoi dirmi come risolvere questo errore?

 
Rita писал (а):
ClosePosBySelect' - funzione non definita C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (905, 47)

Questo errore significa che ClosePosBySelect() non è definito.

Rita ha scritto (a):
Puoi dirmi come risolvere questo errore?
Trova il codice della funzione ClosePosBySelect() e incollalo nel tuo file EA. Si prega di fare riferimento alla pagina 13.
 

Scusa se ti disturbo ancora! Ho messo la funzione ClosePositions() che hai specificato accanto a ClosePosBySelect(), e sono apparsi sei errori dopo la compilazione! Mi sento arrabbiato!

Io stesso ho avuto a che fare con quattro di loro. Slittamento, colore, numero di tentativi di chiusura....Sono rimasti due errori, -

file audio -

'UseSound' - variabile non definita C:\Program Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 13)

NameFileSound' - variabile non definita C:³ Files\MetaTrader - Alpari\experts\0005.mq4 (1002, 33)

Da dove lo prendo? Dove li metto?

Bene extern bool UseSound = false;//Switch off

Lo metterò nelle PROPRIETÀ DELL'ESPERTO, ma cos'è NameFileSound' e dove lo prendo?

**************************************************************************

L'ho trovato e l'ho messo in globale.

extern bool UseSound = false;//выключатель звука
extern string NameFileSound="alert.wav";

E poi invece di un solo errore il compilatore ne ha lanciati altri 4:

'GetNameOP' - la funzione non è definita

'ErrorDescription' - la funzione non è definita

'else' - token inaspettato

'GetNameOP' - la funzione non è definita

Questi errori sembrano continuare a presentarsi all'infinito. Per usare una funzione ClosePositions(), ho dovuto prima crearne un'altra - ClosePosBySelect(). E l'altro a sua volta richiede alcuni suoni - campanelli e fischietti. E quando sto lottando per trovare queste campane e campanelli totalmente inutili, ottengo tutti i tipi di strani errori -'else' - token inaspettati e altri errori. Non ho ancora iniziato a usare questa funzione. L'ho impostato solo tra gli altri!

Potete dirmi come posso risolvere questi errori? Ho commentato tutti questi GetNameOP. Gli errori sembrano essere spariti. Ma la funzione funzionerà bene senza di loro?

 
Rita писал (а):
E qui invece di un solo errore il compilatore ne ha lanciati altri 4:
'GetNameOP' - la funzione non è definita

Nella prima pagina dell'allegato testrSetOrder.mq4

Rita ha scritto:
ErrorDescription' - la funzione non è definita

Nel codice del tuo EA inserisci la seguente linea

#include <stdlib.mqh>.

Rita ha scritto:
'else' - token inaspettato
Quando fate come descritto sopra, l'errore scomparirà da solo.
 

La funzione NumberOfBarOpenLastPos().

Questa funzione restituisce il numero di barra dell'ultima posizione aperta o -1. La selezione delle posizioni da prendere in considerazione è specificata da parametri esterni:

  • sy - Nome dello strumento di mercato. Se questo parametro è impostato, la funzione considererà solo le posizioni dello strumento specificato. Il valore predefinito - NULL significa lo strumento di mercato corrente.
  • tf - Timeframe. Il valore predefinito 0 indica l'intervallo di tempo corrente.
  • op - operazione commerciale, tipo di posizione. Valori validi: OP_BUY, OP_SELL o -1. Il valore predefinito -1 significa qualsiasi posizione.
  • mn - Identificatore di posizione, MagicNumber. Il valore predefinito -1 significa qualsiasi identificatore.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 19.02.2008                                                     |
//|  Описание : Возвращает номер бара открытия последней позиции или -1.       |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ("" или NULL - текущий символ)          |
//|    tf - таймфрейм                  (    0       - текущий таймфрейм)       |
//|    op - операция                   (   -1       - любая позиция)           |
//|    mn - MagicNumber                (   -1       - любой магик)             |
//+----------------------------------------------------------------------------+
int NumberOfBarOpenLastPos(string sy="0", int tf=0, int op=-1, int mn=-1) {
  datetime t;
  int      i, k=OrdersTotal();

  if (sy=="" || sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy) {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderOpenTime()) t=OrderOpenTime();
            }
          }
        }
      }
    }
  }
  return(iBarShift(sy, tf, t, True));
}
HH. In allegato c'è uno script per testare la funzione NumberOfBarOpenLastPos().