[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 113

 
r772ra:

Scorrere le posizioni

Grazie mille, ora proverò tutto, grazie!
 
r772ra:

Scorrere le posizioni

Provato, non ha funzionato. Quindi sì, posso trovarlo. Ma il problema è che ottengo la seguente situazione:

Per esempio, il 01.01 ho aperto una posizione, ma la condizione è scattata solo il 02.01. Cioè, dal prezzo di apertura dell'ordine in negativo, il prezzo è passato 50 pips il secondo giorno. Se la condizione è soddisfatta, l'azione sarà eseguita. E l'azione è quella di ridurre il trade di 1/3. Cioè di ridurre il volume del trade di un fattore tre. Ma l'azione funzionerà fino a quando il lotto sarà chiuso completamente. Se b=0, allora l'azione è in atto. E alla fine dell'azione b=1. Se non annulliamo la bandiera alla fine della giornata, il trade sarà eseguito una volta e basta quando lo testiamo con la storia. Se azzeriamo il flag, allora non appena il flag si azzera, l'azione ricomincerà a ridurre gli ordini fino a chiuderlo completamente. Ho pensato che sarebbe stato possibile confrontare il volume del commercio inizialmente aperto e poi il volume cambiato, ma saranno sempre gli stessi quando si confrontano. Se diminuiamo il volume del lotto, anche il volume dei fondi nel conto diminuirà, quindi il volume iniziale sarà ricalcolato. Cioè non è anche questo, penso per il 3° giorno. Non ne ho idea, hai altre idee?

 
Boneshapper:

Buon pomeriggio!

Cari professionisti, potreste per favore consigliarmi?

Se il prezzo supera di 50 pip il prezzo aperto di questo ordine, l'ordine deve essere modificato.

OrderSelect(0, SELECT_BY_POS,MODE_TRADES);

doppio OPEN = OrderOpenPrice();
doppio maximus = OPEN + 0,00500;
Avviso ("maximus = ",maximus);
doppio minimus = OPEN - 0,00500;
RefreshRates();//aggiornare i dati.
timecur = TimeToStr(TimeCurrent(),TIME_SECONDS); //Calcolare il tempo corrente nel formato HH:MM.
if ((timecur > "00:00:00") && (timecur < "22:58:00") && (Deal_s == 1) && (Deal_bb == 0)&& (Bid > maximus))
{
OrderSelect(0, SELECT_BY_POS,MODE_TRADES);
Lootup = OrderLots () * 0.34;
Lootdown = OrderLots () * 0.34;
OrderClose(OrderTicket(), Lootdown, Ask, 10, CLR_NONE);
Avviso (GetLastError());
Deal_bb = 1;
}

Se succede durante il giorno, sono in grado di farlo. Si prega di consigliare, come controllare se il prezzo di apertura + 50 P è controllato dal prezzo per ogni lotto, fino alla chiusura in pochi giorni?

Si cronometra una stringa e poi si misura per stringhe - originale!!!!
Non c'è bisogno di inventare nulla: prima si controlla la risoluzione temporale e poi solo gli ordini di trascinamento. Soluzioni collaudate per entrambi possono essere trovate qui e qui.

 
Boneshapper:

Provato, non ha funzionato. Funziona, ma il problema è che non riesco a trovarlo. Ma il problema è che ottengo la seguente situazione:

Per esempio, 01.01 ho aperto un'operazione, ma la condizione scatta solo 02.01. Cioè dal prezzo di apertura del warrant in negativo il prezzo è passato 50 pips il secondo giorno. Se la condizione è soddisfatta, l'azione sarà eseguita. E l'azione è quella di ridurre il trade di 1/3. Cioè di ridurre il volume del trade di un fattore tre. Ma l'azione funzionerà fino a quando il lotto sarà chiuso completamente. Se b=0, allora c'è un'azione. E alla fine dell'azione b=1. Se non annulliamo la bandiera alla fine della giornata, il trade sarà eseguito una volta e basta quando lo testiamo con la storia. Se azzeriamo il flag, allora non appena il flag si azzera, l'azione ricomincerà a ridurre gli ordini fino a chiuderlo completamente. Ho pensato che sarebbe stato possibile confrontare il volume del commercio inizialmente aperto e poi il volume cambiato, ma saranno sempre gli stessi quando si confrontano. Se diminuiamo il volume del lotto, anche il volume dei fondi nel conto diminuirà, quindi il volume iniziale sarà ricalcolato. Cioè non è anche questo, penso per il 3° giorno. Non ne ho idea, hai altre idee?

Cosa c'entrano i giorni? Basta scrivere quello che vuoi e ti verrà consigliato l'algoritmo. Mi sembra che non dovresti controllare i giorni, ma controllare il profitto/perdita dell'ordine e fare i conti a partire da questo. 50 (o qualunque) pip sono importanti per te...

 
TarasBY:

Si mette il tempo in una corda, e poi lo si misura con le corde - questo è originale!
Non bisogna inventare nulla: prima si controlla la risoluzione temporale, e poi si seguono semplicemente gli ordini. Soluzioni collaudate per entrambi possono essere trovate qui e qui.

Grazie mille per la tua risposta, mi hai dato un link a esattamente ciò di cui ho bisogno. Lo proverò ora, ma penso che funzionerà.

Mi dispiace per i bug, ma sono nuovo nella programmazione e non sono ancora molto bravo.

 
artmedia70:

Cosa c'entrano i giorni? Devi solo scrivere quello che vuoi e loro ti diranno l'algoritmo. Mi sembra che non dovresti controllare i giorni, ma controllare il profitto/perdita di un ordine e dipendere da questo, perché 50 (o quello che è) punti sono importanti per te...

Sì, hai ragione. Il mio profitto/perdita è quello su cui faccio affidamento. TarasBY ha indicato esattamente ciò di cui avevo bisogno. Ora ci darò un'occhiata.

Grazie per la vostra gentile attenzione!

 

Potete dirmi se esiste una funzione kim per cercare i frattali?

//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 07.10.2006                                                     |
//|  Описание : Возвращает экстремум ЗигЗага по его номеру.                    |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (NULL или "" - текущий символ)          |
//|    tf - таймфрейм                  (      0     - текущий ТФ)              |
//|    ne - номер экстремума           (      0     - последний)               |
//|    dp - ExtDepth                                                           |
//|    dv - ExtDeviation                                                       |
//|    bs - ExtBackstep                                                        |
//+----------------------------------------------------------------------------+
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);
}
Come posso scrivere la stessa funzione che conta il numero di frattali in un dato periodo?
 
berezhnuy:

Puoi dirmi se esiste una funzione kim per trovare i frattali?

Come scrivere la stessa funzione che conta il numero di frattali in un dato periodo?

Va più o meno così:

void fGet_ExtremumsZZPrice (string fs_Symbol,           // инструмент
                            int fi_TF,                  // таймфрейм
                            datetime fdt_TimeControl,   // время, до которого ищем экстремумы
                            int fi_ExtDepth = 12,       // ExtDepth         
                            int fi_ExtDeviation = 5,    // ExtDeviation
                            int fi_ExtBackstep = 3)     // ExtBackstep
{
    double ld_Value, lda_Extremum[];
    int    li_size = iBarShift (fs_Symbol, fi_TF, fdt_TimeControl), li_IND = 0;
//---- 
    for (int li_Bar = 1; li_Bar < li_size; li_Bar++)
    {
        ld_Value = iCustom (fs_Symbol, fi_TF, "ZigZag", fi_ExtDepth, fi_ExtDeviation, fi_ExtBackstep, 0, li_Bar);
        if (ld_Value != 0.)
        {
            ArrayResize (lda_Extremum, li_IND + 1);
            lda_Extremum[li_IND] = ld_Value;
            li_IND++;
        }
    }
//---- 
}

Gli estremi dello ZigZag dal tempo corrente a Time_Control sono raccolti in un array.

 
Potete suggerire una funzione per controllare il nuovo frattale o quello vecchio?
 
berezhnuy:
Potete suggerire una funzione per controllare il nuovo frattale o quello vecchio?

Qui, sono andato all'argomento "Funzioni utili" e vi ho portato "su un piatto d'argento":

//+----------------------------------------------------------------------------+
//| Автор    : Ким Игорь В. 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);
}
Vivi e usalo in buona salute! Ce ne sono di tutti i tipi! Non devi chiedere, non devi aspettare, devi solo prenderlo e usarlo!