Caratteristiche utili da KimIV - pagina 37

 
KimIV писал (а) >>

La funzione isLossLastPos().

Questa funzione restituisce il flag di perdita dell'ultima posizione chiusa. Flag up - True - l'ultima posizione è stata chiusa con una perdita. Flag omesso - Falso - l'ultima posizione è stata chiusa o a zero, o con un profitto. Questa funzione non considera gli swap e le commissioni. La selezione delle posizioni è definita da parametri esterni:

  • sy - Nome dello strumento di mercato. Se si specifica questo parametro, la funzione considererà solo le posizioni dello strumento specificato. Il valore predefinito "" significa qualsiasi strumento di mercato. NULL significa lo strumento 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 di -1 significa qualsiasi identificatore.
P.S. In allegato c'è uno script per testare la funzione isLossLastPos().

Per non moltiplicare il numero di funzioni relative all'ultima posizione chiusa, suggerisco la seguente variante:

int LastClosePos(string sy="", int op=-1, int mn=-1) {
  datetime t;
  int      i, j=-1, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (t<OrderCloseTime()) {
                t=OrderCloseTime();
                j=OrderTicket();              }
              else
                return(j);
            }
          }
        }
      }
    }
  }
  return(-1);
}

Questa funzione definisce il numero di biglietto dell'ultima posizione chiusa...

Ulteriori azioni con il numero del biglietto sono a discrezione del programmatore, a seconda di un problema da risolvere...

 

Funzione FindNearFractal().

Questa funzione cerca il frattale più vicino e restituisce il suo livello di prezzo. La funzione accetta i seguenti parametri opzionali:

  • sy - Nome dello strumento. "" o NULL - simbolo corrente. Il valore predefinito è NULL.
  • tf - Timeframe. Valore predefinito 0 - simbolo corrente.
  • modalità - Tipo di frattale. MODE_LOWER e MODE_UPPER sono ammessi. Il valore predefinito è MODE_LOWER.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Поиск ближайшего фрактала. Возвращает ценовой уровень.         |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy   - наименование инструмента      ("" или NULL - текущий символ)     |
//|    tf   - таймфрейм                     (    0       - текущий ТФ)         |
//|    mode - тип фрактала                  (MODE_LOWER|MODE_UPPER)            |
//+----------------------------------------------------------------------------+
double FindNearFractal(string sy="0", int tf=0, int mode=MODE_LOWER) {
  if (sy=="" || sy=="0") sy=Symbol();
  double f=0;
  int    d=MarketInfo(sy, MODE_DIGITS), s;
  if (d==0) if (StringFind(sy, "JPY")<0) d=4; else d=2;

  for (s=2; s<100; s++) {
    f=iFractals(sy, tf, mode, s);
    if (f!=0) return(NormalizeDouble(f, d));
  }
  Print("FindNearFractal(): Фрактал не найден");
  return(0);
}
 

Esempi di utilizzo di FindNearFractal().

  • Il prezzo del frattale inferiore più vicino sul grafico corrente.
    Message(FindNearFractal());
  • Prezzo del frattale superiore più vicino sul grafico H4 del simbolo corrente.
    Message(FindNearFractal(NULL, PERIOD_H4, MODE_UPPER));
  • Prezzo del frattale inferiore più vicino sul grafico GBPUSD M30.
    Message(FindNearFractal("GBPUSD", PERIOD_M30, MODE_LOWER));
    

SZY. In allegato c'è uno script per testare la funzione FindNearFractal().

 
KimIV писал (а) >>

Примеры использования функции SetVLine().

  1. Голубая сплошная вертикальная линия на текущем баре.
  2. Сиреневая толстая линия на восьмом баре.
  3. Сетка пунктирных линий на барах 14:00.

ЗЫ. Во вложении скрипт для тестирования функции SetVLine().

KimIV
писал (а)
>>

Esempi di come usare SetVLine().

  1. Linea verticale solida blu sulla barra corrente.
  2. Linea spessa lilla sull'ottava barra.
  3. Una griglia di linee tratteggiate sulle barre 14:00.

ZS. In allegato c'è uno script per testare la funzione SetVLine().

Ciao Igor,
Potrebbe per favore mostrarmi un esempio di come una tale funzione può essere utilizzata in un indicatore.
Sto cercando di migliorare l'indicatore PreviousiHighsvAndhLows0 e aggiungere un segno per tempo.

Usando l'esempio di SetVLine() e disegnando il segno all'apertura della barra con un certo tempo...
Finora, la mia versione dell'indicatore disegna delle sciocchezze.
Ho già chiesto aiuto sul forum, ma i principianti non sono viziati qui...

Grazie comunque, le vostre funzioni sono molto utili per l'apprendimento passo dopo passo, ma naturalmente sarebbe bello se ci fossero molti più suggerimenti o esempi

 
obabuev писал (а) >>
Potrebbe per favore mostrarmi un esempio di come una tale funzione possa essere utilizzata in un indicatore.
Sto cercando di migliorare l'indicatore e di aggiungervi un disegno temporale.
Usando l'esempio di SetVLine() e disegnando un segno all'apertura della barra con un certo tempo...

Mostra nell'illustrazione quali segni vuoi disegnare.

 

Funzione GetExtremumZZZBar().

Questa funzione cerca un estremo dell'indicatore ZigZag standard personalizzato e restituisce il numero della barra. La funzione accetta i seguenti parametri opzionali:

  • sy - Nome dello strumento. "" o NULL - il simbolo corrente. Il valore predefinito è NULL.
  • tf - Timeframe. Il valore predefinito è 0 - l'intervallo di tempo corrente.
  • ne - Numero estremo. 0 - ultimo, 1 - precedente, 2 - precedente, ecc.
  • dp, dv, bs - parametri ZigZaga: ExtDepth, ExtDeviation, ExtBackstep rispettivamente.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает номер бара экстремума ЗигЗага по его номеру.        |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
int GetExtremumZZBar(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bc=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=0; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bc, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(i);
    }
  }
  Print("GetExtremumZZBar(): Экстремум ЗигЗага номер ",ne," не найден");
  return(-1);
}
 

Esempi di utilizzo della funzione GetExtremumZZZBar().

  • Il numero della barra con l'ultimo estremo di ZigZag sul grafico corrente.
    Message(GetExtremumZZBar());
  • Il numero della barra con il penultimo estremo di ZigZag sul grafico H4 del simbolo corrente.
    Message(GetExtremumZZBar(NULL, PERIOD_H4, 1));
  • Trova l'ultima rottura di ZigZag sul grafico corrente e traccia una linea verticale attraverso di essa.
    int n=GetExtremumZZBar(NULL, 0, 1);
    SetVLine(Magenta, "", Time[n]);

ZS. In allegato c'è uno script per testare la funzione GetExtremumZZZBar().

 
KimIV писал (а) >>

Mostra nell'illustrazione quali segni vuoi disegnare.

Grazie, Igor, per aver risposto,
Mi ci sono voluti due giorni, ma ho fatto il segno.
Ora sto cercando di farne un altro.
Ne ho bisogno per i test
Usando il vostro indicatore i-AnyRange, voglio fare
L'indicatore elaborerà il tempo con una deviazione casuale.
Per esempio -
l'indicatore ha
time1=10:05;
tempo2=15:35;
e nell'indicatore stesso per i calcoli delle linee dell'indicatore usa
T1=tempo1(+/-random)
T2=tempo2(+/-random)
ma dobbiamo anche impostare i limiti massimi di deviazione, per esempio
max casuale =5min;
L'enigma è proprio come limitare la casualità a 5 minuti?
Probabilmente avete esempi simili

File:
 
obabuev писал (а) >>

ma è necessario impostare anche i limiti massimi di deviazione, ad esempio
max casuale =5min;
Il problema è solo come limitare la casualità a 5 minuti?
Dovete avere esempi simili.

5 minuti sono 300 secondi:

void init() {
  MathSrand(TimeLocal());
}

void start() {
  double a=MathRand()/32767.0*300;
  int b=MathFloor(a);
  Comment(b);
}
 
KimIV писал (а) >>

Cinque minuti sono 300 secondi:

Grazie naturalmente, ma non risponde del tutto alle domande,
Come aggiungere int b alla stringa Time2 minuti ora o come fare più meno casuale

>> Ci darò un'occhiata, naturalmente, ma mi è difficile.