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

 

Buon pomeriggio. Potete consigliarmi - il compito è quello di disegnare linee verticali ogni minuto. Come collegare il disegno non solo ai minuti, ma al prezzo di apertura del minuto. La difficoltà è che il prezzo di apertura del minuto deve essere identificato su un tempo non standard, cioè non un minuto. Ho scritto un frammento di codice, ma non capisco come inserire il prezzo di apertura del minuto, se la variabile indotta sarà impostata su un tempo non standard

new_Minute=TimeMinute(Time[i]) != TimeMinute(Time[i+1]); // new_Minute

Ind_Buffer_0[i]=0

if(new_Minute && Period()<30 ) Ind_Buffer_0[i]=max;

...e poi il disegno standard usando gli oggetti.

Forse qualcuno può dirmi cosa si può fare, se si può fare qualcosa.

 
Lonely_man:

Buon pomeriggio. Potete consigliarmi - il compito è quello di disegnare linee verticali ogni minuto. Come collegare il disegno non solo ai minuti, ma al prezzo di apertura del minuto. La difficoltà è che il prezzo di apertura del minuto deve essere identificato su un tempo non standard, cioè non un minuto. Ho scritto un frammento di codice, ma non capisco come inserire il prezzo di apertura del minuto, se la variabile indotta sarà impostata su un tempo non standard

new_Minute=TimeMinute(Time[i]) != TimeMinute(Time[i+1]); // new_Minute

Ind_Buffer_0[i]=0

if(new_Minute && Period()<30 ) Ind_Buffer_0[i]=max;

...e poi il disegno standard usando gli oggetti.

Forse qualcuno può dirmi cosa si può fare, se si può fare qualcosa.

La linea verticale non ha coordinate - prezzo.
 
paladin80:
In while, dovremmo impostare una condizione che può accettare almeno due valori, per esempio flag (vero o falso). Se è una costante (vero) e non una condizione, allora while non è necessario. Togliete while (true) e le parentesi e otterrete lo stesso risultato.


Se rimuovete l'istruzione while, come funzionerà l'istruzione continue?

Dopo tutto, in caso di errore, dobbiamo ricontrollare le condizioni e gli ordini aperti.

 if (Fun_Error(GetLastError())==1)      // Обработка ошибок
 continue;                              // Повторная попытка
 return;                                // Выход из start()

L'istruzione continue trasferisce il controllo all'inizio dell'istruzione esterna while o for più vicina, causando l'inizio della prossima iterazione.

Forse non capisco qualcosa?

 

Buon pomeriggio.

Ho una strategia di trading formata per aprire ordini pendenti su una penultima barra già formata [numero 1]. Cioè, apre delle posizioni (ordini pendenti per buystop e sellstop) che si attivano se il prezzo si muove di 20 pip oltre il massimo/minimo della gamma di prezzi della prima barra (prezzo di apertura).

C'è anche una cancellazione automatica degli ordini pendenti che non sono stati attivati, in base a quanto segue: Se si è formata una nuova barra chiamata 1, il prezzo aperto di un ordine pendente non coinciderà con il massimo/massimo della nuova barra corrente 1 +/- 20 pip (molto probabilmente, perché i massimi/minimi di due barre adiacenti raramente coincidono).

Ma per qualche motivo succede che prima aprirà entrambe le posizioni, ma in pochi secondi ne chiuderà una (anche se la nuova barra numero 1 non si è ancora formata).

Signori esperti, sono un principiante e forse non sto tenendo conto di alcune sottigliezze. Potete per favore dirmi dove è possibile l'errore.

 RefreshRates();
for(int n=1;n<=OrdersTotal();n++)            //цикл перебора всех имеющихся ордеров
{
  if(OrderSelect(n-1,SELECT_BY_POS)==true)   //если найден ордер, то...
  {
    if((OrderType()==4)&& (OrderOpenPrice()!= High[1]+20*Point))                      // проверяем его тип (buystop/sellstop), если его тип buystop и цена покупки не совпадает с максимумом текущего 1-го бара, то..
      {
          OrderDelete(OrderTicket());                                                  // удаляем его
         
       }
    if((OrderType()==5) && (OrderOpenPrice()!= Low[1]-20*Point))                       // если его тип sellstop и цена продажи не совпадает с минимумом текущего 1-го бара, то ...
    {      
           
            OrderDelete(OrderTicket());                                                //удаляем его
         
    }
  }
}
File:
 

Quando si confrontano numeri frazionari, essi devono essere normalizzati con una cifra significativa.

Quando cancelli gli ordini, fai il conto alla rovescia dalla fine, non dall'inizio.

 
... Esatto, - e anche - proibire all'esperto di lavorare fino alla formazione di un nuovo bar.
 
Pacman:


Se rimuovete l'istruzione while, come funzionerà l'istruzione continue?

Dopo tutto, in caso di errore, dobbiamo ricontrollare le condizioni e gli ordini aperti.

L'istruzione continue trasferisce il controllo all'inizio dell'istruzione esterna while o for più vicina, causando l'inizio della prossima iterazione.

Forse non capisco qualcosa?

Non preoccupatevi, le dichiarazioni while(true) sono molto spesso usate quando non si conoscono né il numero di iterazioni, né le condizioni per la fine del ciclo.

Ecco perché la sua terminazione, ad esempio, quando molte condizioni annidate nel ciclo dato sono soddisfatte, è terminata dall'operatore break.

Oppure, ci sono gufi (per esempio, mcllts) che lavorano non per un tick e quindi non con la funzione start, ma in modo continuo e in loop continuo usando l'operatorewhile(true).

 
Equilibrium:
Ciao, buona giornata, per favore aiutatemi, non riesco a fare il debug del mio Expert Advisor (gli ordini di apertura e chiusura non funzionano come previsto (attraversando uno stocastico ogni volta), si aprono allo stocastico molto raramente e non riesco a capire perché ((((), inoltre tutti gli ordini vengono chiusi solo allo stoplo o takeprofit (errore del numero di biglietto, inoltre non riesco a capire dove l'errore). grazie per qualsiasi risposta:

L'errore Ticket è molto probabilmente perché la vostra variabile Ticket è inizializzata due volte - all'inizio e nella funzione

Prova un altro nome nella funzione, almenoTicket1 :)

 
Potete dirmi come trovare il prezzo della linea di tendenza su ogni barra?
 
sss2019:
Potete dirmi come trovare il prezzo della linea di tendenza su ciascuna delle barre?

ObjectGetValueByShift().
Motivazione: