[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 295

 

Grazie. In linea di principio, basta sostituire "||" con "&&" (probabilmente volevo controllare la disuguaglianza seguita da continue) e tutto funzionerà, mentre nel tester funziona comunque. Anche se, ovviamente, la vostra versione sarà più corretta.

 

Beh, queste sono sfumature. Cerco ancora di riscriverlo in base alle mie esigenze. Io, per esempio, non ho affatto bisogno della selezione medjic (in questa funzione). Ho anche notato che la selezione nella funzione Figar0 era dalla lista della storia. La cosa principale qui è capire l'idea. A proposito, ho bisogno di ordini dalla piscina, quindi è stato tutto molto più facile.

Grazie per le idee e l'aiuto, gente.

PS: E per favore spiegate

OrderType()>1
Ho visto diverse volte che OrderType è confrontato come int. Qual è il trucco qui? Pensavo fosse una variabile stringa.
 
Pyro:

Beh, queste sono sfumature. Cerco ancora di riscriverlo in base alle mie esigenze. Io, per esempio, non ho affatto bisogno della selezione medjic (in questa funzione). Ho anche notato che la selezione nella funzione Figar0 era dalla lista della storia. La cosa principale qui è capire l'idea. A proposito, ho bisogno di ordini dalla piscina, quindi è stato tutto molto più facile.

Grazie per le idee e l'aiuto, gente.

PS: Potrebbe spiegare quanto segue?

Ho visto OrderType confrontato come int alcune volte. Qual è il trucco qui? Pensavo fosse una variabile stringa.

Si tratta di una corrispondenza tra le costanti e i loro valori.

OP_BUY corrisponde a 0

OP_SELL corrisponde a 1

__________________________________________________________________________________________________________-

Tipo di operazione per la funzione OrderSend(). Può essere uno qualsiasi dei seguenti valori:

Costante Valore Descrizione
OP_BUY 0 Compra
OP_VENDITA 1 Vendere
OP_BUYLIMIT 2 Ordine pendente BUY LIMIT
OP_SELLLIMIT 3 Ordine SELL LIMIT in sospeso
OP_BUYSTOP 4 Ordine BUY STOP in sospeso
OP_SELLSTOP 5 Ordine SELL STOP in sospeso
 
Pyro:

A proposito, ho bisogno di ordini dalla piscina, quindi si è rivelato molto più semplice.

Quando si seleziona un ordine per indice, si usano due liste: aperta e chiusa. Questo viene impostato specificando in quale lista vuoi vederli (parametro pool).

Pertanto, se abbiamo bisogno di selezionare da una lista di ordini aperti, possiamo omettere di specificare questo parametro (è impostato di default). Se vogliamo scegliere da una lista di ordini chiusi, dobbiamo specificare MODE_HISTORY come parametro.

Di conseguenza, se si vuole trovare l'ultimo ordine aperto, il ciclo si fa sugli ordini aperti del terminale e si deve controllare anche il tempo di apertura OrderOpenTime(), se si ha bisogno dell'ultimo ordine chiuso (come negli esempi precedenti), il ciclo va fatto sugli ordini chiusi del terminale e si deve controllare OrderCloseTime() per scoprire quando l'ordine selezionato è stato chiuso.

E per tua informazione, se selezioni per ticket, il pool di parametri sarà ignorato del tutto e l'ordine si troverà in entrambe le liste. Una volta trovato l'ordine, dobbiamo controllare il suo tempo di chiusura per scoprire da quale lista l'ordine è stato selezionato. Se il tempo di chiusura è superiore a zero, l'ordine è chiuso ed è stato selezionato dalla lista degli ordini chiusi. Se il tempo di chiusura di un ordine aperto è sempre uguale a zero. Quindi, se è uguale a zero, l'ordine è stato selezionato dalla lista degli ordini aperti.

Inoltre, se cerchi un ordine in sospeso per il suo ticket, può apparire in entrambe le liste. Questo accadrà se viene convertito in un ordine a mercato. Perciò dovrete anche controllare il tipo di ordine che avete scelto. E se l'ordine pendente viene chiuso, e l'ordine a mercato con lo stesso ticket non viene chiuso, significa che l'ordine pendente è stato trasformato in un ordine a mercato.

 
Figar0:

Grazie. In linea di principio, basta sostituire "||" con "&&" (probabilmente volevo controllare la disuguaglianza seguita da continue) e tutto funzionerà, mentre nel tester funziona comunque. Anche se, ovviamente, la vostra versione sarà più corretta.

Io stesso a volte faccio errori stupidi quando pubblico del codice qui... Poi correggo il codice come scottato prima che venga letto in forma impropria... :)))
 
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link      "http://www.metaquotes.net"

#property indicator_chart_window
#property indicator_buffers 2

extern int period=24;
double Buf_0[],Buf_1[];

//+------------------------------------------------------------------+
int init()
  {
//---- 
   SetIndexBuffer(0,Buf_0);
   SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1);
   SetIndexBuffer(1,Buf_1);
   SetIndexStyle(1,DRAW_LINE,STYLE_SOLID,1);
//----
   return;
  }
//+------------------------------------------------------------------+
int start()
  {
   int  i,counted_bars,maxValueIdx,minValueIdx; 
//----

   counted_bars=IndicatorCounted();
   i=Bars-counted_bars-1;
   
   while(i>=0)
   {
   maxValueIdx=ArrayMaximum(Close,(period-1),0); 
   minValueIdx=ArrayMinimum(Close,(period-1),0);
   Buf_0[i]=Close[maxValueIdx];
   Buf_1[i]=Close[minValueIdx];
   i--;
   }
   
   
//----
   return;
  }
//+------------------------------------------------------------------+
Salve, volevo scrivere un indicatore che leggesse il MAX e il MIN del prezzo di chiusura di un certo periodo. Sto seguendo il tutorial, ma i vecchi dati non sono mostrati per niente, mostra due linee orizzontali con il MAX e il MIN attuali. Puoi dirmi cosa sto sbagliando?
 
borisis:
Ciao, volevo scrivere un indicatore che conta il MAX e il MIN del prezzo di chiusura per un certo periodo. Come tutto quello che faccio nel tutorial, ma i vecchi dati non sono disegnati affatto, mostra due linee orizzontali con il MAX e il MIN attuali. Puoi dirmi cosa sto sbagliando?


maxValueIdx=ArrayMaximum(Close,(period-1), i);

minValueIdx= ArrayMinimum(Close,(period-1), i);

Altrimenti si continuano a trovare gli stessi indici ad ogni passo

 

Ciao a tutti! Come scoprire a quale tipo di variabile appartiene: int o double?

e in secondo luogo, cosa significa l'errore "numero doppio non valido come parametro 1 per la funzione DoubleToStr"?

 
todem:

Ciao a tutti! Come faccio a sapere il tipo di una variabile: int o double?

Curioso di sapere perché? Può descrivere una situazione in cui questo sarebbe necessario?
 
Spostato.

Valdemar 01.04.2011 16:31
Saluti a tutti i maestri della programmazione! Un accenno all'idea giusta, se non vi dispiace: qui io, diciamo che ho deciso alla fine di una certa ora di trading, mettere un ordine di stop, allontanandomi dal massimo e dal minimo dell'ora su alcuni punti, cosa dovrei usare, scrivere una funzione di programmazione!