Caratteristiche utili da KimIV - pagina 81

 
KimIV >> :

A pagina 76...

Grazie

 

La funzione isTradeTimeInt().

Questa funzione restituisce una bandiera per consentire il trading a tempo. Il valore restituito è vero o falso. La funzione isTradeTimeInt() è simile alla funzione isTradeTimeString() per il principio del riconoscimento dell'intervallo di tempo, cioè l'ora di inizio della compravendita può essere sia più grande (intervallo di tempo in un giorno) che più piccola (intervallo di tempo in giorni diversi). La funzione isTradeTimeInt() accetta i seguenti parametri opzionali:

  • hb - Numero, specifica le ore di inizio del commercio. Il valore predefinito è 0.
  • mb - Un numero, specifica i minuti dell'ora di inizio della negoziazione. Valore predefinito - 0.
  • he - Un numero per specificare le ore di fine del commercio. Il valore predefinito - 0.
  • me - Un numero per specificare i minuti dell'ora di fine della negoziazione. Valore predefinito - 0.
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 30.04.2009                                                     |
//|  Описание : Возвращает флаг разрешения торговли по времени.                |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    hb - часы времени начала торговли                                       |
//|    mb - минуты времени начала торговли                                     |
//|    he - часы времени окончания торговли                                    |
//|    me - минуты времени окончания торговли                                  |
//+----------------------------------------------------------------------------+
bool isTradeTimeInt(int hb=0, int mb=0, int he=0, int me=0) {
  datetime db, de;           // Время начала и окончания работы
  int      hc;               // Часы текущего времени торгового сервера

  db=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ hb+":"+ mb);
  de=StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+ he+":"+ me);
  hc=TimeHour(TimeCurrent());
  if ( db>= de) {
    if ( hc>= he) de+=24*60*60; else db-=24*60*60;
  }

  if (TimeCurrent()>= db && TimeCurrent()<= de) return( True);
  else return( False);
}
 

Esempi di come usare isTradeTimeInt().

  1. Periodo di tempo in un giorno. Ora corrente del server commerciale in un periodo e lascia che sia "08:30".
    if (isTradeTimeInt(6, 0, 9, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  2. Tempo all'interno del giorno. Ora corrente del server commerciale fuori dal segmento e che sia uguale a "08:30".
    if (isTradeTimeInt(12, 0, 16, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  3. La fascia oraria include il limite del giorno. Ora corrente del server commerciale all'interno del segmento e che sia uguale a "08:30".
    if (isTradeTimeInt(21, 15, 9, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");
  4. La fascia oraria include il limite del giorno. Ora corrente del server commerciale fuori dal segmento e che sia "08:30".
    if (isTradeTimeInt(22, 0, 5, 30)) Message("Торгуем...");
    else Message("Отдыхаем...");

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

 

Elenco aggiornato delle caratteristiche con brevi descrizioni e link...

File:
f_kimiv.rar  12 kb
 
KimIV >> :

La funzione isCloseLastPosByStop().

Questa funzione restituisce una bandiera per chiudere l'ultima posizione per stop. La bandiera è alzata - Vero - StopLoss è scattato. Flag abbassato - Falso - la posizione è stata chiusa per un altro motivo. Una selezione più accurata delle posizioni da prendere in considerazione è impostata da parametri esterni:


Ciao

Cerco di usare la vostra funzione per i miei scopi. Piccolo Expert Advisor funzionante. Vende e chiude solo una posizione. A volte cattura diversi stoploss di fila. Voglio cambiare le condizioni di vendita dopo il primo stop, Expert Advisor apre le posizioni, ma non le chiude. Per favore, ditemi cosa sto facendo di sbagliato ?

..........................................................

if ( isCloseLastPosByStop(NULL,OP_SELL, MagicNamber) == 0)
{
if ( (StochK_0<StochD_1) && (StochD_1 > 80) ) // 1st Sell Slowly
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+SL*Point,0, "My EXP", MagicNamber,0,Green); // vendere

OrderSelect(0, SELECT_BY_POS);

se (OrderSelect(0, SELECT_BY_POS)==true )
Stampa("SELECT_BY_POS");
else
Print("failed to select error : ",GetLastError());
RefreshRates();
if((StochK_0<30)&& (StochD_1 < 30))
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet);
}
else
se ( isCloseLastPosByStop(NULL,OP_SELL, MagicNamber) == 1)
{
se ((StochK_0<StochD_1) && (StochK_0 < 60) && (StochD_1 < 60) )

ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,0, "My EXP", MagicNamber,0,Green); //

...........................

 
KoZaNOStra писал(а) >>
L'esperto apre le posizioni, ma non le chiude.

Stampa le variabili StochK_0 e StochD_1. Forse prendono valori che non rientrano nelle vostre condizioni di chiusura.

 

a KimIV

Ciao, potresti per favore aiutare a convertire questo indicatore di cluster in una funzione con lo stesso disegno e + ritorno dei valori del tasso di cambio di coppia (angolo superiore destro) dal parametro di input - nome della coppia. Vi ringrazio in anticipo.

P.S..... Sto lottando da una settimana

File:
cc_240.mq4  13 kb
 
c'è qualche funzione per visualizzare le notizie sulla finestra aperta di una coppia di valute
 
E come esprimiamo nel codice che all'inizio di ogni ora, al primo secondo apriamo due posizioni diversamente dirette, e all'ultimo secondo dell'ora chiudiamo l'ordine fallito?
 
VAM_ писал(а) >>
E come esprimiamo nel codice che all'inizio di ogni ora, al primo secondo apriamo due posizioni diversamente dirette, e all'ultimo secondo dell'ora chiudiamo l'ordine fallito?

E se non ce ne fosse uno, primo e ultimo secondo?