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

 
Veterros:

Nell'ultima riga ci sono molte parentesi. Magari prova a rimuovere quelli vuoti.
Le parentesi non sono mai troppe, finché ci sono tante parentesi di apertura e di chiusura quante sono le parentesi di chiusura.
 
alexeymosc:

Ciao, non capisco perché viene fuori un errore quando si dichiara un array al di fuori delle funzioni.

Errore: '[' - valore di indice non valido

Come si dichiara un array bidimensionale non dinamico con variabili come indici?

Ho provato a impostare const invece di static. Ho provato anche [][]. Ancora un errore (

Punteggiate un tutorial dove cercare questa domanda una volta per tutte, per favore.

Perché nonostante la sequenza di assegnazione dei valori alle variabili, queste rimangono non inizializzate fino all'esecuzione del programma. Quindi, finché non si esegue int Oninit(), la variabile utilizzata non è inizializzata. Spostate questa linea a Oninit() e tutto dovrebbe funzionare...
 

Ho un semplice codice che non apre gli ordini.

Nel mio registro c'è scritto: '1419717': ordine buy 0,01 EURUSD apertura a mercato sl: 1,13720 tp: 1,13842 fallito [S/L o T/P non valido].

Qui (sul forum) ho ricevuto un consiglio: "Fermate e Takei dovrebbero essere normalizzati!

Non capisco cosa significa questa frase?

Il compilatore non genera alcun errore o avvertimento. Durante i test tutto funziona. Non so più dove e cosa leggere.

Se questo è troppo lungo da spiegare, per favore mandami il link dove posso leggere su come normalizzare stoploss e takeprofit.

Grazie in anticipo.

double Lots=0.01;
double TakeProfit=100;
double StopLoss=10;
int tk=0;

void start()
{
   if (OrdersTotal()==0)
      {
         tk=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-StopLoss*Point,Ask+TakeProfit*Point,0,0,0,Green);
         if(tk<0) 
         {
            Print("OrderSend завершилась с ошибкой #",GetLastError());
         }
         else         
         {
            Print("Функция OrderSend успешно выполнена");
         }
      }
}
 
AlexeyVik:
Perché nonostante la sequenza di assegnazione dei valori alle variabili, queste rimangono non inizializzate fino all'avvio del programma. Cioè, finché non eseguite int Oninit(), la variabile che usate come dimensione dell'array non è inizializzata. Spostate questa linea a Oninit() e tutto dovrebbe funzionare...

AlexeyVik, grazie!

Questo è quello che farò. Non avevo pensato a Oninit, ma credo che sia vero.

 

Per favore, datemi un suggerimento ))))

C'è una certa quantità di oggetti grafici sul grafico.

Una nuova barra ha finito di formarsi. Il modo più semplice per determinare se ha toccato qualche oggetto?

(Non voglio cercare i prezzi di tutti gli oggetti e confrontare se la fascia di prezzo dell'ultima barra ha toccato qualcuno di loro).

In altre parole, il prezzo e l'intervallo di date come determinare se c'è qualche oggetto grafico in queste coordinate.

 
favidu:

Ho un semplice codice che non apre gli ordini.

Nel mio registro c'è scritto: '1419717': ordine buy 0,01 EURUSD apertura a mercato sl: 1,13720 tp: 1,13842 fallito [S/L o T/P non valido].

Qui (sul forum) ho ricevuto un consiglio: "Fermate e Takei dovrebbero essere normalizzati!

Non capisco cosa significa questa frase?

Il compilatore non genera alcun errore o avvertimento. Durante i test tutto funziona. Non so più dove e cosa leggere.

Se questo è troppo lungo da spiegare, per favore mandami il link dove posso leggere su come normalizzare stoploss e takeprofit.

Grazie in anticipo.

NormalizeDouble() scavare nel libro di riferimento. Ma se il vostro broker non vi permette di esporre gli stop durante l'apertura di un ordine a mercato, dovreste inserirli a zero ed esporli separatamente, al secondo passo. Ci sono esempi nel kodobase.


tk=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,NormalizeDouble(Bid-StopLoss*Point,_Digits),NormalizeDouble(Ask+TakeProfit*Point,_Digits),0,0,0,Green);
 
evillive:

NormalizeDouble() scava nel riferimento. Ma se il broker non ti permette di piazzare gli stop al momento dell'apertura di un ordine a mercato, dovresti inserirli in zeri e piazzarli separatamente, al secondo passo. Ci sono esempi nel kodobase.


Grazie mille.
 

Ragazzi, spingetemi nella giusta direzione...

Per esempio:

#property strict
#property indicator_chart_window
#property indicator_buffers             0

int init() {

        return(0);
}

int start() {
        if (!GlobalVariableCheck(StringConcatenate("ID_", Symbol()))) {
                long id = ChartID();
                Print (id);
                GlobalVariableSet(StringConcatenate("ID_", Symbol()), id);
        }
        return(0);
}

Non salva mai quello che stampa...

Qualcosa del genere:

Risultato

CHANDNT?

 
Beh, appena l'ho postato, il server è andato a 404 =)
 

Ha scritto temporaneamente i bit alti separatamente i bit bassi separatamente.

Sembra che una variabile globale di tipo double non si adatti a lungo.

Anche se qui dice che non ci dovrebbero essere problemi tranne che per situazioni in cui"se un intero è maggiore di 9223372036836854774784 o minore di -9223372036854774784".

Ma sono d'accordo, l'ID del grafico = 130659893770676840 è inferiore a 9223372036854774784 di una cifra intera almeno.


P.S. Se qualcuno può spiegare il mio errore o si tratta di un glitch, grazie in anticipo. Continuerò a controllare qui.

Motivazione: