[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 1129

 

Per favore, spiega perché non viene visualizzato nulla nella finestra dell'indicatore come risultato.

Codice:

#proprietà indicator_separate_window
#proprietà indicator_buffers 1
#property indicator_color1 Red
//---- buffer
doppio Buf_0[];

int init()
{
//---- indicatori

SetIndexBuffer(0,Buf_0);
SetIndexStyle(0,DRAW_LINE, STYLE_SOLID,2);
//----
ritorno(0);
}

int start()
{
int i, counted_bars=IndicatorCounted();
i=Barre contate_bars-1;


mentre(i>=0)
{
Buf_0[i]=Close[i]/Close[i+1];
i--;
}
ritorno(0);
}
//+------------------------------------------------------------------+

 
Abzasc:
Dove si trova esattamente?


Questa condizione dovrebbe filtrare se (up>=1|down>=1), avvisi, almeno uno di essi deve essere maggiore di zero, ma non lo è.

Ecco

 
Dimka-novitsek:


Questa condizione dovrebbe filtrare se (up>=1||down>=1), gli avvisi, almeno uno di essi, dovrebbe essere maggiore di zero, ma non lo sono.

Qui


int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
for (y=1; y>=0;y--) // первое выражение 
{ double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1||down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}}

return(0);
}
 
Galion:


Basta dividere la finestra dell'editor in due parti :) OK, dimentichiamo il doppio clic. Avete impostato l'evidenziazione della sintassi per i file MQL4? Se no, allora dopo aver aperto un file con codice MQL nell'editor devi premere Syntax - e in fondo alla lista selezionare MQL4 - l'evidenziazione sarà esattamente la stessa di MetaEditor

 
Ma non capisco dove sto sbagliando?
 
No, ma ignorarlo o metterci y=1 non cambia nulla, ho controllato!
 
Dimka-novitsek:
Ma non capisco dove sto sbagliando?

Rimosso l'eccesso.

int start()
{int y;
y= WindowFirstVisibleBar();Alert ("y",y);
// for (y=5;y>=0;y--)
//{ 
double up=iFractals(Symbol(),PERIOD_M15,MODE_UPPER,y);
double down=iFractals(Symbol(),PERIOD_M15,MODE_LOWER,y);
if (up>=1||down>=1){
Alert("Previous upper fractal is:", up, " Previous lower fractal is:", down);Alert ("y",y);}
//}
//----

//----
return(0);
}

ed è così.

Tutto qui?

 
dzhini:

Probabilmente non ho posto correttamente la domanda. Il trading viene fatto su un timeframe orario e non si sa quando avverrà uno scambio, ma deve essere uno durante il giorno. Vorrei rendere questa funzione commutabile. Forse qualcuno ha un tale pezzo di codice?


Non hai bisogno di cercare un pezzo di codice - puoi passare tutta la vita a cercarlo e non trovare nulla. Dovresti cercare un modo per costruire un frammento di codice da solo. Il codice che vi ho dato non è per copiarlo stupidamente, ma per farvelo capire dall'inizio alla fine, soprattutto perché è molto semplice. Ecco come funziona questo codice. Passa attraverso la lista degli ordini di mercato e somma il loro importo con gli ordini storici aperti oggi. Se la somma è maggiore di zero, gli ordini sono già stati aperti oggi e il trading non è permesso. Se hai bisogno di un interruttore che ti permetta di tenere conto di quanti ordini possono essere aperti oggi, puoi aggiungerlo al codice con una semplice operazione. Il tuo problema è che non hai l'algoritmo del tuo programma, non capisci come e in quale sequenza il tuo programma dovrebbe funzionare. Inventa un algoritmo, altrimenti la tua testa sarà un casino.

 
Bene, ho parlato con te e ho capito subito tutto )))) sembrava ritoccato - avevi ragione (non potevo saltare fuori dal mio algoritmo di risoluzione dei problemi). Grazie per tutti i consigli. Ora ho già capito tutte le opzioni proposte: quale funziona in quali casi.
 
dzhini:
Bene, ho parlato con te e ho capito subito tutto )))) sembrava ritoccato - avevi ragione (non potevo saltare fuori dal mio algoritmo di risoluzione dei problemi). Grazie per tutti i consigli. Ora ho capito tutte le opzioni proposte: quale funziona in quali casi.

Nota che i cicli di ricerca degli ordini che ti ho mostrato non considerano il master dell'ordine - questa è una caratteristica con cui l'EA può distinguere i propri ordini da altri ordini. Questo è un numero che può essere assegnato a un ordine quando viene aperto da un EA - tutti i suoi ordini hanno lo stesso numero (o, se necessario, diversi numeri generati automaticamente). Gli ordini aperti manualmente dal trader hanno sempre un numero magico di zero! Questo significa che se aggiungiamo magic = 0 all'EA, l'EA interferirà con i trade manuali del trader. Se volete che l'EA lasci gli ordini del trader intatti e manipoli solo i propri ordini, dovete impostare la procedura guidata su un valore diverso da zero. In questo caso l'Expert Advisor considererà tutti gli ordini che non hanno una magia come quelli di qualcun altro e non li toccherà.