[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 248

 
È in onda. Giusto.
 
Mio fratello è qui.
 
void IndicatorBuffers( int count)

Alloca la memoria per i buffer utilizzati per i calcoli dell'indicatore personalizzato. Il numero di buffer non può superare 8 e non può essere inferiore al valore specificato nella proprietà indicator_buffers. Se l'indicatore personalizzato richiede buffer aggiuntivi per il conteggio, si dovrebbe utilizzare questa funzione per specificare il numero totale di buffer.

Cioè è corretto?

#property indicator_buffers 9 double ind_buffer1[]; // Array per calcoli aggiuntivi double ind_buffer2[]; double ind_buffer3[]; double ind_buffer4[]; double ind_buffer5[]; double ind_buffer6[]; double ind_buffer7[]; double ind_buffer8[];
doppio ind_buffer9[]; SetIndexBuffer(0,ind_buffer2); SetIndexBuffer(1,ind_buffer3); SetIndexBuffer(2,ind_buffer4); SetIndexBuffer(3,ind_buffer5);
SetIndexBuffer(4,ind_buffer6); SetIndexBuffer(5,ind_buffer7); SetIndexBuffer(6,ind_buffer8); SetIndexBuffer(7,ind_buffer9);
 

Qualcuno può consigliarmi in privato come scrivere un EA? In particolare: come faccio a collegare un doppio lotto a un trailing stop?

 
Leo59:
void IndicatorBuffers( int count)

Alloca la memoria per i buffer utilizzati per i calcoli dell'indicatore personalizzato. Il numero di buffer non può superare 8 e non può essere inferiore al valore specificato nella proprietà indicator_buffers. Se un indicatore personalizzato richiede buffer aggiuntivi per il conteggio, si dovrebbe usare questa funzione per specificare il numero totale di buffer.

Cioè è permesso.

No.
#proprietà indicator_buffers 9
"Il numero di buffer non può superare 8" sono le parole chiave per entrambe le #proprietà indicator_buffers e IndicatorBuffers.
La #proprietà indicator_buffers specifica il numero di buffer di disegno, quindi IndicatorBuffers = #proprietà indicator_buffers+numero di buffer non di disegno da calcolare. Se tutti i buffer stanno disegnando, allora IndicatorBuffers = #proprietà indicator_buffers. In questo caso l'uso di IndicatorBuffers è opzionale.
 

Chiedo aiuto agli esperti. Ho già fatto questa domanda un paio di volte qui, ho dato un lavoro su mql5.com/it/job, finora sono stati spesi un sacco di tempo, soldi e sforzi, ma nessun risultato... :(

L'obiettivo del problema è scrivere una funzione che controlli se esiste un ordine in un intervallo di prezzi.

Ancora più semplice - quando si chiede se c'è un ordine di baia nella gamma da 0,9995 a 1,0005, per esempio.

Chiunque abbia postato qui ha una soluzione funzionante... beh, per esempio 15 dollari...

MT4...

 
granit77:
No.
#proprietà indicator_buffers 9
"Il numero di buffer non può superare 8" sono parole chiave per entrambe le #proprietà indicator_buffers e IndicatorBuffers.
La #proprietà indicator_buffers specifica il numero di buffer di disegno, quindi IndicatorBuffers = #proprietà indicator_buffers+numero di buffer non di disegno da calcolare. Se tutti i buffer stanno disegnando, allora IndicatorBuffers = #proprietà indicator_buffers. In questo caso l'uso di IndicatorBuffers è opzionale.

Caro granit77! Se non vi dispiace, per favore fate le correzioni direttamente nel codice, se qualcosa è sbagliato. Sarà chiaro e comprensibile.

#property indicator_buffers 8 double ind_buffer1[]; // array per calcoli aggiuntivi double ind_buffer2[]; double ind_buffer3[]; double ind_buffer4[]; double ind_buffer5[]; double ind_buffer6[]; double ind_buffer7[]; double ind_buffer8[]; double ind_buffer9[];   

int init() { IndicatorBuffers(9); SetIndexBuffer(0,ind_buffer2); SetIndexBuffer(1,ind_buffer3); SetIndexBuffer(2,ind_buffer4); SetIndexBuffer(3,ind_buffer5);
SetIndexBuffer(4,ind_buffer6); SetIndexBuffer(5,ind_buffer7); SetIndexBuffer(6,ind_buffer8); SetIndexBuffer(7,ind_buffer9); return(0); }
 
w_ersoc:

Chiedo l'aiuto di un esperto. Ho già fatto questa domanda un paio di volte qui, ho dato un lavoro su mql5.com/it/job, finora sono stati spesi un sacco di tempo, soldi e sforzi, ma nessun risultato... :(

Lo scopo del compito è quello di scrivere una funzione che controlli se esiste un ordine nella fascia di prezzo.

Per renderlo ancora più semplice, quando si chiede se c'è un ordine di baia nell'intervallo da 0,9995 a 1,0005, per esempio.

Chiunque abbia postato una soluzione funzionante qui... per esempio 15 dollari...

MT4...

Nel ciclo, passa attraverso tutte le posizioni aperte, se il tipo di ordine selezionato è uguale a quello che è stato passato alla funzione, se il simbolo dell'ordine è uguale a quello che è stato passato alla funzione, se il prezzo di apertura dell'ordine rientra nell'intervallo specificato (maggiore o uguale a 0,9995 e minore o uguale a 1,0005), allora la funzione ritorna vero, altrimenti ritorna falso.

È una semplice enumerazione di ordini con un controllo di coincidenza.

ZS. Per 15 sterline una donna prende un gelato, e i bambini dei fiori... O viceversa... :)

 
artmedia70:

Nel ciclo, passa attraverso tutte le posizioni aperte se il tipo di ordine selezionato è uguale a quello passato alla funzione, se il numero magico dell'ordine è uguale a quello passato alla funzione, se il prezzo aperto dell'ordine rientra nell'intervallo specificato (maggiore o uguale a 0,9995 e minore o uguale a 1,0005), allora la funzione ritorna vero, altrimenti ritorna falso.

È una semplice enumerazione di ordini con un controllo di coincidenza.

ZS. Per 15 sterline una donna prende un gelato, e i bambini dei fiori... O viceversa... :)

È elementare, ma non funziona.

Si può discutere, ma tante persone hanno detto che è una stronzata, ma alla fine niente ((

 
w_ersoc:

È elementare, ma non funziona.

Si può discutere, ma tante persone hanno detto che è una stronzata e alla fine niente ((


Ecco a voi:

//+------------------------------------------------------------------+
//|          Function  : GetOrdersInThePrice(min,max,&tickets[])bool |
//|          Copyright © 2012, XrustSolution.  mail:xrustx@gmail.com |
//|          https://www.youtube.com/user/opmlv http://forexrust.info |
//+------------------------------------------------------------------+
//|   Description: Пишет в массив тикеты ордеров с ценою открытия    |
//| между максимальной и минимальной ценой, если ордеров нет = false |
//+------------------------------------------------------------------+
bool GetOrdersInThePrice(double pr1,double pr2,int &tickets[]){int i,ii;double min,max;
   min = MathMin(pr1,pr2);
   max = MathMax(pr1,pr2);
   ArrayResize(tickets,100);
   for(i=OrdersTotal()-1;i>=0;i--){
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)){
         if(OrderSymbol()!=Symbol()){continue;}
         if(OrderOpenPrice()>max){continue;}
         if(OrderOpenPrice()<min){continue;}
         tickets[ii] = OrderTicket();
         ii++;
      }
   }
   if(ii<1){return(false);}
   ArrayResize(tickets,ii);
   return(true);
}
Motivazione: