[ARCHIVIO] Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 3. - pagina 167

 
Crea una variabile booleana globale o statica come la bandiera. Quando la condizione si è verificata e flag=true aprire l'ordine e rendere flag=false. Ora se l'ordine si chiude, non si aprirà un nuovo ordine. Quando la condizione è passata, imposta di nuovo flag=True.
 
Roger:
Crea una variabile booleana globale o statica di tipo flag. Quando la condizione è raggiunta e flag=true, aprire un ordine e rendere flag=false. Ora, se l'ordine viene chiuso, non verrà aperto un nuovo ordine. Quando la condizione è passata, imposta di nuovo flag=True.

Come faccio a sapere se un ordine è stato aperto ma chiuso a causa della condizione N? Perché ci sono molte condizioni, e la presenza della condizione N non garantisce che l'ordine si sia chiuso.

Cioè, ho bisogno di sapere che l'ordine è stato eseguito, ma ha chiuso n candele fa perché la condizione N è scattata. E se la condizione N è scomparsa, e non sono passate più di n candele dalla chiusura dell'ordine, dovremmo aprire nuovamente l'ordine.

 
Xaoss1990:

Come faccio a sapere se un ordine è stato aperto ma chiuso a causa della condizione N? Perché ci sono molte condizioni, e la presenza della condizione N non garantisce che l'ordine sia stato concluso.

Cioè, ho bisogno di sapere che l'ordine è stato concluso ma ha chiuso n candele fa a causa dell'innesco della condizione N. E se la condizione N è scomparsa e non sono passate più di n candele dalla chiusura dell'ordine, dovremmo aprire nuovamente l'ordine.


Siate più attivi usando Alert(), Print() con Logic!
 
Xaoss1990:

Per favore, consigliateci, signori!

Immaginate la situazione: viene attivato uno stop, a causa dell'innesco della N-esima condizione. Ma dopo un paio di candele, la condizione N-esima è caduta. Con l'aiuto di quale funzione si può riaprire l'affare dopo che la N-esima condizione cade. Cioè, dovete determinare che è scattato uno stop un certo numero di barre fa, e poiché la condizione N-esima è caduta, riaprite il trade!


se programmaticamente - quando si apre un ordine - c'è un magik e un commento - si può criptare l'informazione su quale condizione l'ordine è aperto, nel magik o nel commento

in generale, lo stop non viene attivato da una condizione, ma quando il prezzo raggiunge un livello di prezzo - questo ordine può essere chiuso da una condizione

 
Xaoss1990:

Come faccio a sapere se un ordine è stato aperto ma chiuso a causa della condizione N? Perché ci sono molte condizioni, e la presenza della condizione N non garantisce che l'ordine sia chiuso.

Cioè, ho bisogno di sapere che l'ordine è stato eseguito, ma ha chiuso n candele fa a causa dell'innesco della condizione N. E se la condizione N è scomparsa e non sono passate più di n candele dalla chiusura dell'ordine, devo riaprire l'ordine.

Non volete complicare troppo le cose? Dopo tutto, l'ordine avrebbe potuto essere chiuso se la condizione X fosse stata presente, anche se la condizione N potrebbe anche essere presente.

La soluzione dipende molto dalla vostra logica di gestione delle posizioni, per esempio trovare gli ordini che sono stati chiusi non più tardi di n candele e controllare l'evento N al momento della chiusura dell'ordine e al momento attuale.

 
 int CountH,NewCountH,CountL,NewCountL;
 double ResistH,ResistL;
 
 //========================
 
 int start(){

 //--------------------------
   double bid = Bid;
   double UPPprice = bid+3000.0*Point;
   double LOWprice = bid-3000.0*Point;
   NewCountH=0;
   ResistH=0;
   NewCountL=0;
   ResistL=0;
  
   while(LOWprice<UPPprice)
    {
      CountH=0;
      CountL=0;
      for(int i=1; i<=6000; i++){  
          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i))CountL++;
       } 
      if(CountH>NewCountH){NewCountH=CountH;ResistH=LOWprice;} 
      if(CountL>NewCountL){NewCountL=CountL;ResistL=LOWprice;}   
      LOWprice=LOWprice+5*Point;
    }
 //----------------------------
 
 return(0);
 }
Come posso rendere questo ciclo più "facile"? Ci vuole molto tempo per contare.
 
DhP:

Come posso rendere questo ciclo più "facile"? Ci vuole molto tempo per contare.


forse qualcosa che non capisco, ma qui:

          if(LOWprice> bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) CountH++;  
          if(LOWprice<=bid)if(iHigh(NULL,60,i)>LOWprice && LOWprice>iLow(NULL,60,i)) CountL++;
la stessa condizione
 
abolk:


Forse non ho capito bene, ma qui:

la stessa condizione - in ogni momento CountH è uguale a CountL

No, se il prezzo è superiore a Bid, allora conta CountH, se è inferiore, allora conta CountL
 
DhP:
No, se il prezzo è superiore a Bid, allora CountH? Se è inferiore, allora CountL


è possibile accelerare il calcolo:

reduce i<=6000

 
abolk:


È possibile accelerare il calcolo:

a) Ridurre i<=6000
b) Calcolare solo all'inizio della barra

a) Ridurre il numero di i può essere fatto, ma non è auspicabile. Questo è il modo in cui prende le barre per l'anno.

b) All'inizio di una barra... Questa è probabilmente un'opzione. Funziona su M15.

Tuttavia, in ogni caso, conta quasi 2 secondi.

Motivazione: