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

 

Ho bisogno di sapere il frattale più piccolo e più grande per le ultime n barre, cosa c'è di sbagliato qui? Per favore, aiutatemi!

   for (ii = 0; ii = n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H) StopLos_H = i;
      }

 
solnce600:

Ho deciso di prendere quello che pensavo fosse un percorso più semplice.

Non per cancellare l'ordine pendente - ma per piazzare un ordine pendente solo se una candela di cinque minuti non è finita

Cioè, l'ordine pendente dovrebbe essere piazzato solo quando sono soddisfatte due condizioni. Se la prima condizione è soddisfatta

- Ho controllato, l'ordine è impostato.

Naturalmente lo è perché questa condizione è SEMPRE vera, semplicemente non può essere falsa. Semplicemente non può essere falso, perché significa che la barra zero esiste.

Come dovremmo definire la seconda condizione, cioè l'ordine pendente è impostato solo se non sono trascorsi 5 minuti. if (---------- && ?????????)

Si prega di indicare chiaramente la condizione a parole. Non è ancora chiaro se vuoi piazzare l'ordine pendente all'inizio di una nuova candela o cosa?
 
belozad:

Ho bisogno di sapere il frattale più piccolo e più grande per le ultime n barre, cosa c'è di sbagliato qui? Per favore, aiutatemi!

   for (ii = 0; ii = n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H) StopLos_H = i;
      }



come è dichiarata la variabile i, possiamo dare un'occhiata?
 
alsu:

la variabile i come dichiarata, posso dare un'occhiata?


int ii;

double i;

 
belozad:


Dovrebbe funzionare così:

   int ii;
   double i;
   double StopLos_L,StopLos_H;

   for (ii = 0; ii <= n; ii++)
      {
         i = iFractals(NULL, 0, MODE_LOWER, ii);
         if (i < StopLos_L || ii==0) StopLos_L = i;
         i = iFractals(NULL, 0, MODE_UPPER, ii);
         if (i > StopLos_H || ii==0) StopLos_H = i;
      } 
 
alsu:

Dovrebbe funzionare così:


Dannazione, è ovvio.
ii <=n


alsu - molte, molte grazie =)

 
artmedia70:
Può

Potete dirmi se è possibile dipingere il corpo di una candela desiderata in un EA?
Dove posso vedere come fare questo, ne ho davvero bisogno.
 
beginner:
Potete dirmi se è possibile dipingere il corpo della candela desiderata nell'EA?
Dove posso vedere come fare questo, ne ho davvero bisogno.

https://www.mql5.com/ru/code/7835 Solo che è un indicatore. Dovete usare gli oggetti nell'EA
 
alsu:

Certo che lo è, perché questa condizione è SEMPRE vera, semplicemente non può essere falsa. In quanto significa che la barra zero non esiste affatto.

Si prega di indicare chiaramente la condizione a parole. Non è ancora chiaro, vuoi piazzare l'ordine pendente all'inizio di una nuova candela o cosa?

Grazie, scusate, sono un po' confuso, in questo caso non dovrei piazzare un ordine pendente ma un ordine a mercato a Open[0]+30 pips.

Ma dovremmo impostare l'ordine di mercato solo dall'inizio della formazione di una candela zero alla successiva.

Cioè, non impostare un ordine a mercato entro 5 minuti, secondo la mia idea, è equivalente alla cancellazione di un ordine pendente se non viene aperto entro 5 minuti.

Come dovrei scrivere la seconda condizione?

E ho impostato correttamente il prezzo di apertura dell'ordine a mercato?

Grazie.

 int start()

  {
 double Price=Open[0]+300*Point;        
 double SL=Price-300*Point;     
 double TP=Price+150*Point;
 if (Time[0]&& ???????)                         
 int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Price,3,SL,TP );
 
solnce600:

Grazie, scusate, sono un po' confuso. In questo caso non dovrei impostare un ordine pendente, ma un ordine a mercato a Open[0]+30 pips.

Ma dovremmo impostare l'ordine di mercato solo dall'inizio di una candela zero alla successiva.

Cioè, non impostare un ordine a mercato entro 5 minuti, secondo la mia idea, è equivalente alla cancellazione di un ordine pendente se non viene aperto entro 5 minuti.

Come dovrei scrivere la seconda condizione?

E ho impostato correttamente il prezzo di apertura dell'ordine a mercato?

Grazie.


Ok, ora ce l'ho. Se il prezzo della barra corrente raggiunge Open[0] + 30, apriamo. Se la barra è finita, Open[0] è cambiato e il livello di apertura è spostato di conseguenza. Ci dovrebbe essere solo un commercio nel mercato, giusto?

Allora è così:

int start()

{

 double Price=Open[0]+300*Point;        
 double SL=NormalizeDouble (Price-300*Point, Digits);         
 double TP=NormalizeDouble (Price+150*Point, Digits);    
 
 if (OrdesTotal()==0 && Close[0]>=Price)                         
    int Ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,SL,TP );

}

Non c'è bisogno di tracciare la nuova barra, perché quando si forma, il sistema aggiungerà automaticamente un nuovo valore a Open[0] e questo significa che il nuovo livello sarà calcolato correttamente. Si prega di notare che l'operazione BUY viene aperta al prezzo Ask corrente, mentre viene chiusa (TP e SL) al prezzo Bid. Inoltre, i valori dei prezzi devono essere normalizzati.

Motivazione: