Caratteristiche utili da KimIV - pagina 59

 
Elenco aggiornato delle funzioni
File:
f_kimiv_1.rar  12 kb
 

Igor, potresti dirmi se esiste una funzione che determina il valore minimo in pip per piazzare un ordine pendente?

Grazie!

 
mozg писал(а) >>
Igor, potresti dirmi se esiste una funzione che definisce il valore minimo in pip per piazzare un ordine pendente?
MarketInfo(Symbol(), MODE_STOPLEVEL);
 

Ciao Igor, potresti scrivere una funzione che impedisca all'EA di riprodurre il segnale? Significa che lo stato, dopo aver aggiunto questo blocco di codice dovrebbe apparire così: comprare, vendere, comprare, vendere, comprare, vendere.... ecc...

 
Shniperson писал(а) >>

Ciao Igor, potresti scrivere una funzione che impedisca all'EA di riattivare il segnale? Cioè, lo stato, dopo aver aggiunto questo blocco di codice dovrebbe apparire così... comprare, vendere, comprare, vendere, comprare, vendere.... ecc...

oscillazioni...

//+----------------------------------------------------------------------------+
//|  Управление позициями.                                                     |
//+----------------------------------------------------------------------------+
void ManagePositions() {
  double sl=0, tp=0;
  int    bs= GetTradeSignal();

  if ( bs>0) {
    if ( ExistPositions(NULL, OP_SELL, Magic)) ClosePositions(NULL, OP_SELL, Magic);
    if (! ExistPositions(NULL, OP_BUY, Magic)) {
      if ( StopLoss  >0) sl=Ask- StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Ask+ TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_BUY, Lots, sl, tp, Magic);
    }
  }
  if ( bs<0) {
    if ( ExistPositions(NULL, OP_BUY, Magic)) ClosePositions(NULL, OP_BUY, Magic);
    if (! ExistPositions(NULL, OP_SELL, Magic)) {
      if ( StopLoss  >0) sl=Bid+ StopLoss  *Point; else sl=0;
      if ( TakeProfit>0) tp=Bid- TakeProfit*Point; else tp=0;
      OpenPosition(NULL, OP_SELL, Lots, sl, tp, Magic);
    }
  }
}
//+----------------------------------------------------------------------------+
//|  Возвращает торговый сигнал:                                               |
//|     1 - покупай                                                            |
//|     0 - сиди, кури бамбук                                                  |
//|    -1 - продавай                                                           |
//+----------------------------------------------------------------------------+
int GetTradeSignal() {
  int bs=0;

  if ( условия для покупки) bs=1;
  if ( условия для продажи) bs=-1;

  return( bs);
}

EsisterePosizioni()

ChiudiPosizioni()

 

La funzione NormalizePrice().

Questa funzione restituisce il valore del prezzo normalizzato. La normalizzazione viene eseguita utilizzando i valori della funzione MarketInfo(MODE_TICKSIZE || MODE_DIGITS). La funzione NormalizePrice() prende i seguenti parametri:

  • np - Valore del lotto normalizzato. Parametro richiesto.
  • sy - Nome dello strumento commerciale. NULL o "" - simbolo corrente. Valore predefinito - "".
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 21.08.2008                                                     |
//|  Описание : Возвращает нормализованное под размер тика значение цены.      |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    np - нормализуемое значение цены.                                       |
//|    sy - наименование инструмента        ("" или NULL - текущий символ)     |
//+----------------------------------------------------------------------------+
double NormalizePrice(double np, string sy="") {
  if ( sy=="" || sy=="0") sy=Symbol();
  double pp, ts=MarketInfo(Symbol(), MODE_TICKSIZE);
  int    di=MarketInfo(Symbol(), MODE_DIGITS);

  if ( ts>0) pp=NormalizeDouble( np/ ts, 0)* ts;
  else {
    if ( di>0) pp=NormalizeDouble( np* di, 0)/ di; else pp= np;
  }
  return( pp);
}

SZZ. In allegato c'è uno script per testare la funzione NormalizePrice().

 

(Domanda da principiante).

Lo stimato KimIV ha scritto una funzione:

GetExtremumZZPrice().


double GetExtremumZZPrice(string sy="", int tf=0, int ne=0, int dp=12, int dv=5, int bs=3) {
  if (sy=="" || sy=="0") sy=Symbol();
  double zz;
  int    i, k=iBars(sy, tf), ke=0;

  for (i=1; i<k; i++) {
    zz=iCustom(sy, tf, "ZigZag", dp, dv, bs, 0, i);
    if (zz!=0) {
      ke++;
      if (ke>ne) return(zz);
    }
  }
  Print("GetExtremumZZPrice(): Экстремум ЗигЗага номер ",ne," не найден");
  return(0);
}
Che tipo di codice dovrebbe essere usato per memorizzare i prezzi dell'ultimo minimo e massimo in 2 variabili? ( la mia mente è fritta ;(((())
 
WroC писал(а) >>
Che tipo di codice dovrebbe essere usato per memorizzare i prezzi dell'ultimo minimo e massimo in 2 variabili?
void start() {
  double p1= GetExtremumZZPrice("", 0, 0);
  double p2= GetExtremumZZPrice("", 0, 1);

  if ( p1> p2) Comment("Последний максимум ", p1, "\n Последний минимум ", p2);
  else Comment("Последний максимум ", p2, "\n Последний минимум ", p1);
}
 

KimIV

Grazie!

 
Igor, ciao!
Per quanto sono capace, ho cercato di capire il materiale che avete presentato. Ad essere onesti non ho ancora usato expert advisor o script, e non ho alcuna esperienza pratica con essi, ma ho bisogno di creare uno script che mi aiuti a piazzare un gran numero di ordini.
Il compito dello script è quello di facilitare l'immissione di ordini pendenti (principalmente Buy stop e Sell stop).
Cioè, i parametri dello script sono impostati come segue:
1. Livello da cui vengono piazzati gli ordini (per esempio, EUR / USD Buy Stop da 1,3000)
2. La dimensione di ogni ordine (per esempio, 0,01).
Fase di immissione degli ordini (ad esempio 1 pip)
4. TP di ogni ordine (ad esempio 3 pip)
5. Il numero di ordini pendenti (per esempio 70) o il livello fino al quale gli ordini pendenti devono essere piazzati (per esempio fino a 1,3070).
I parametri di stop loss e trailing stop nello script sono desiderabili ma non necessari...
Lo script dovrebbe avviare il computer ogni 3-4 ore, analizzare la situazione e decidere di impostare gli ordini per rompere il range verso l'alto (o verso il basso), con 1 pip di apertura, ma con un TP minimo (3 pip). Così, in caso di un movimento di prezzo verso il lato necessario questi ordini inizieranno ad essere aperti e se il prezzo necessario viene raggiunto, saranno chiusi da TP. Poi una variante è possibile quando saranno tutti chiusi su un TP - se il movimento del prezzo passa tutti gli ordini o una parte degli ordini (6 unità) saranno aperti e saranno "meno". In questo caso dovremmo impostare la prossima "scala" di ordini in direzione opposta con altri parametri (dimensione del lotto, passo, TP, numero di ordini) che sembrerebbero essere i migliori per un trader.
Alla fine di una giornata di trading le "posizioni opposte" saranno chiuse, lasciando così il trader con circa 6 ordini diretti verso l'alto (o verso il basso).
Grazie in anticipo per la risposta dell'esperto!
Motivazione: