Caratteristiche utili da KimIV - pagina 80

 
zennon писал(а) >>
La funzione MovingInWL() passa semplicemente attraverso tutte le posizioni aperte, indipendentemente dai filtri sy,op,mn. Questo è vero anche per l'esempio allegato EA (pagina 55).

Andrei, grazie! Corretto...

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 23.04.2009                                                     |
//|  Описание : Перенос уровня стопа в безубыток                               |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   ( ""  - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   ( -1  - любая позиция)                  |
//|    mn - MagicNumber                ( -1  - любой магик)                    |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
  double po, pp;
  int    i, k=OrdersTotal();

  if ( sy=="0") sy=Symbol();
  for ( i=0; i< k; i++) {
    if (OrderSelect( i, SELECT_BY_POS, MODE_TRADES)) {
      if ((OrderSymbol()== sy || sy=="") && ( op<0 || OrderType()== op)) {
        if ( mn<0 || OrderMagicNumber()== mn) {
          po=MarketInfo(OrderSymbol(), MODE_POINT);
          if (OrderType()==OP_BUY) {
            if (OrderStopLoss()-OrderOpenPrice()< LevelWLoss* po) {
              pp=MarketInfo(OrderSymbol(), MODE_BID);
              if ( pp-OrderOpenPrice()> LevelProfit* po) {
                ModifyOrder(-1, OrderOpenPrice()+ LevelWLoss* po, -1);
              }
            }
          }
          if (OrderType()==OP_SELL) {
            if (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()< LevelWLoss* po) {
              pp=MarketInfo(OrderSymbol(), MODE_ASK);
              if (OrderOpenPrice()- pp> LevelProfit* po) {
                ModifyOrder(-1, OrderOpenPrice()- LevelWLoss* po, -1);
              }
            }
          }
        }
      }
    }
  }
}
Anche l'e-MovingInWL2.mq4 è fisso.
 

Buon pomeriggio Igor!

Grazie per aver dedicato così tanto tempo al forum. Igor, conosci un'opportunità per ottenere informazioni sulle richieste di acquisto/vendita in arrivo - "profondità di mercato".

 
Alex30 писал(а) >>
Igor, conosci un'opportunità per ottenere informazioni sulle richieste di acquisto/vendita in arrivo - "profondità di mercato".

no

 
Domanda agli esperti: qualcuno può dire perché il mio indicatore demo xMeterMTF.mq4 mostra tutto normale, e in euro reale vuoto (se a causa del fatto che in reale eur/usd- è elencato come eur/usddpro) se così può essere corretto
File:
xmetermtf.mq4  8 kb
xmeter.rar  34 kb
 

La funzione isTradeTimeString().

Questa funzione restituisce la bandiera che permette di commerciare in base al tempo. In realtà, controlla se l'ora corrente del server commerciale si trova all'interno di un certo periodo di tempo. Se è dentro, la funzione isTradeTimeString() restituisce true, altrimenti restituisce false. La particolarità di questa funzione è la possibilità di specificare l'intervallo di tempo sia all'interno che all'esterno di un giorno. Questo sarà mostrato in dettaglio negli esempi di utilizzo. La funzione isTradeTimeString() accetta i seguenti parametri opzionali:

  • TimeBegin - Stringa nel formato "HH:MM", imposta l'ora di inizio della negoziazione. Il valore predefinito è "00:00".
  • TimeEnd - Stringa nel formato "HH:MM", specifica l'ora di fine della negoziazione. Il valore predefinito è "00:00".
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 29.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    TimeBegin - время начала торговли         (ЧЧ:ММ)                       |
//|    TimeEnd   - время окончания торговли      (ЧЧ:ММ)                       |
//+----------------------------------------------------------------------------+
bool isTradeTimeString(string TimeBegin="00:00", string TimeEnd="00:00") {
  datetime dtBegin, dtEnd;        // Время начала и окончания работы
  int      hc, he;                // Часы текущего времени и окончания работы

  dtBegin=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeBegin);
  dtEnd  =StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ TimeEnd);
  hc     =TimeHour(TimeCurrent());
  he     =TimeHour( dtEnd);
  if ( dtBegin>= dtEnd) {
    if ( hc>= he) dtEnd+=24*60*60; else dtBegin-=24*60*60;
  }

  if (TimeCurrent()>= dtBegin && TimeCurrent()<= dtEnd) return( True);
  else return( False);
}
 

Esempi di utilizzo di isTradeTimeString().

  1. Periodo di tempo in un giorno. Ora corrente del server commerciale in un periodo e lascia che sia "07:50".
    if (isTradeTimeString("06:00", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. Tempo all'interno del giorno. Ora corrente del server commerciale fuori dal segmento e che sia uguale a "07:50".
    if (isTradeTimeString("12:00", "16:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. La fascia oraria include il confine del giorno. Ora corrente del server commerciale all'interno del segmento e che sia uguale a "07:50".
    if (isTradeTimeString("21:15", "09:30")) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. La fascia oraria include un limite giornaliero. L'ora corrente del server di trading fuori dal segmento e che sia "07:50".
    if (isTradeTimeString("22:00", "05:30")) Message("Торгуем...");
    else Message("Отдыхаем...");

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

 
KimIV >> :

Igor, l'indicatore i-Sessions a volte ha dei glitch: aree di sessioni non ancora aperte appaiono e scompaiono...

 
DR12CED >> :

Igor, l'indicatore i-Sessions a volte ha dei glitch: aree di sessioni non ancora aperte appaiono e scompaiono...

Ops... Mi rimangio quello che ho detto... Saranno utili anche per l'attesa degli eventi... Mi scusi... per favore...

 
KimIV >> :

La funzione isTradeTimeString().

Questa funzione restituisce la bandiera che permette di commerciare in base al tempo. In realtà, controlla se l'ora corrente del server commerciale si trova all'interno di un certo periodo di tempo. Se è dentro, la funzione isTradeTimeString() restituisce true, altrimenti restituisce false. La particolarità di questa funzione è la possibilità di specificare l'intervallo di tempo sia all'interno che all'esterno di un giorno. Questo sarà mostrato in dettaglio negli esempi di utilizzo. La funzione isTradeTimeString() accetta i seguenti parametri opzionali:

  • TimeBegin - Stringa nel formato "HH:MM", imposta l'ora di inizio della negoziazione. Il valore predefinito è "00:00".
  • TimeEnd - Stringa nel formato "HH:MM", specifica l'ora di fine della negoziazione. Valore predefinito - "00:00".

È anche possibile impostare le variabili per essere non "string", ma "int". Per cercare nel tester?

>> Grazie in anticipo.

 
vasilyt писал(а) >>
Potete fare in modo che le variabili non siano "string" ma "int". Per poter cercare nel tester?

A pagina 76...