[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 117

 
TarasBY:

Come questo:

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


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++;
        }
    }
//---- 
}

Puoi dirmi come contare tutti gli zigzag, quanti sono?

 

Salve,

scusate in anticipo per la grammatica :/. La mia domanda è: come riscrivere la storia delle citazioni (via codice)? Vorrei usare MT4 per analizzare i dati di un altro broker.
 
berezhnuy:

Puoi dirmi come contare tutti gli zigzag, quanti sono?




Scritto nella variabile li_IND, o come questo
count=ArraySize(lda_Extremum);
 
berezhnuy:

Puoi dirmi come contare tutti gli zigzag, quanti sono?

Se facciamo quanto segue:

int 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++;
        }
    }
//----
    return (li_IND);
}
- la funzione restituisce il numero di estremi trovati da fdt_TimeControl.
 

Grazie

 

Salve,

È possibile inserire un programma con un peso fisso 1:1 nelle impostazioni?

Se è possibile, per favore ditemi come.

Vorrei ringraziarvi in anticipo.

 
Potete dirmi, per favore, che le mie candele cambiano colore ogni pochi secondi sul grafico in colorato e poi di nuovo in bianco e nero. Questo non è mai successo prima. C'è un modo per spegnerlo?
 

Pomeriggio.

Ho scritto del codice per aprire due ordini pendenti (BuyStop e SellStop) sulle condizioni a=true e b=true e dopo un certo tempo l'EA chiude entrambi gli ordini, finché non appare un nuovo segnale, ma a volte l'EA apre 2 ordini pendenti nella stessa direzione. Perché questo accade e come evitare questo "bug"?



if (a=true && b=true)
{
int OrderCount = OrdersTotal();
if (OrderCount>1) return(0);
ticket1=OrderSend(Symbol(), OP_BUYSTOP, getLot(), PriceOpen_Buy, slippage, PriceOpen_Sell,0,0,Green);
Sleep(1000);

ticket2=OrderSend(Symbol(), OP_SELLSTOP, getLot(), PriceOpen_Sell, slippage, PriceOpen_Buy,0,0,Green);

Sleep(1000*59*TimeFrame);

for (int i=OrdersTotal()-1; i>=0; i--)
{
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) break;
if (OrderType()==OP_BUYSTOP ) OrderDelete(OrderTicket());
if (OrderType()==OP_SELLSTOP ) OrderDelete(OrderTicket());
if (OrderType()==OP_SELL ) OrderClose(OrderTicket(),OrderLots(),Ask,slippage);
if (OrderType()==OP_BUY ) OrderClose(OrderTicket(),OrderLots(),Bid,slippage);
}

ritorno(0);

}


Per favore, datemi un suggerimento.

Grazie in anticipo.

 
r772ra:



I valori di queste variabili sono memorizzati in array-tracebox.

Voglio dire, l'hai preso così.

Termini e condizioni,

Grazie, proverò così)
 
Shixan:

Pomeriggio.

Ho scritto del codice per aprire due ordini pendenti (BuyStop e SellStop) sulle condizioni a=true e b=true e dopo un certo tempo l'EA chiude entrambi gli ordini, finché non appare un nuovo segnale, ma a volte l'EA apre 2 ordini pendenti nella stessa direzione. Perché questo accade e come evitare questo "bug"?

Si prega di avvisare.

Grazie in anticipo.

Forse qui:

if (OrderCount>0) return(0);

In realtà tanto non è "dormire" - Sleep(1000*59*TimeFrame); - un nuovo tick è entrato, il tuo codice è partito, due ordini aperti, poi pausa per "2 ore" (condizionalmente), e poi si cerca di chiudere se improvvisamente uno degli ordini è diventato vendibile ai prezzi che hai ottenuto 2 ore fa - ORIGINALE!!! CHI TE L'HA INSEGNATO?

Potete fissare in una variabile globale il tempo di apertura degli ordini e controllare la differenza tra m³ TimeCurrent() e il tempo fissato.

Motivazione: