Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
contatore?
Ho programmato indicatori per così tanti mesi che sono un po' carente di esperti, ma ho intenzione di risolverlo. Lungo la strada ho bisogno di un piccolo aiuto. Nel mio esperto che ho messo insieme faccio controllare alla chiusura della barra se c'è una condizione che giustifichi la chiusura del trade.
Inizio con una variabile globale,
datetime PreviousBar; // record candle/bar time[/CODE]
and set one bool in init()
{
do_this = true;
}
[/CODE]
blah blah boring stuff.... etc, etc
then in the main loop I have:
[CODE]
if(do_this == true)
{
PreviousBar = Time[0];
do_this= false; // so it does this only once only
}
if(NewBar() == true)
{
if(TotalOpenOrders() == blah blah close my order you crazy monkey)
}
and outside the main loop I have:
[CODE]//--- returns true if current bar just formed
bool NewBar()
{
if(PreviousBar<Time[0])
{
PreviousBar = Time[0];
return(true);
}
else
{
return(false);
}
return(false);
}OK, quindi è impostato per fare una volta per barra. Quello che voglio fare è avere una funzione che incrementa 90 secondi o 60 secondi o qualsiasi altra cosa, poi imposta un bool a true dopo aver incrementato quel tempo. Fondamentalmente voglio controllare gli indicatori ogni 60, 90, 120 secondi o altro invece che alla chiusura della barra. Come posso farlo?
Grazie per qualsiasi aiuto,
- nittany1
Ho programmato indicatori per così tanti mesi che sono un po' carente di esperti, ma ho intenzione di risolverlo. Lungo la strada ho bisogno di un piccolo aiuto. Nel mio esperto che ho messo insieme ho fatto controllare alla chiusura della barra se c'è una condizione che giustifica la chiusura del trade.
Inizio con una variabile globale,
datetime PreviousBar; // record candle/bar time[/CODE]
and set one bool in init()
{
do_this = true;
}
[/CODE]
blah blah boring stuff.... etc, etc
then in the main loop I have:
[CODE]
if(do_this == true)
{
PreviousBar = Time[0];
do_this= false; // so it does this only once only
}
if(NewBar() == true)
{
if(TotalOpenOrders() == blah blah close my order you crazy monkey)
}
and outside the main loop I have:
[CODE]//--- returns true if current bar just formed
bool NewBar()
{
if(PreviousBar<Time[0])
{
PreviousBar = Time[0];
return(true);
}
else
{
return(false);
}
return(false);
}OK quindi è impostato per fare una volta per barra. Quello che voglio fare è avere una funzione che incrementa 90 secondi o 60 secondi o qualsiasi altra cosa, poi imposta un bool a true dopo aver incrementato quel tempo. Fondamentalmente voglio controllare gli indicatori ogni 60, 90, 120 secondi o altro invece che alla chiusura della barra. Come posso farlo?
Grazie per qualsiasi aiuto,
- nittany1Questo dovrebbe farlo. Ricorda che MT usa l'esecuzione basata sui tick, quindi la precisione al secondo non è possibile (a meno che tu non metta tutto in loop nella sub Init()).
if (CallIndicatorsCheck())
{
// il vostro codice qui
}
bool CallIndicatorsCheck()
{
static datetime Oldtime;
int Secs = 90;
bool Flag;
se (CurrTime() >= Oldtime) {
Oldtime = CurrTime() + Secs;
Flag = true; }
return(Flag);
}
Posizionamento dei commenti
Qualcuno potrebbe mostrarmi il codice per posizionare un commento nell'angolo SUPERIOREDESTRO dello schermo, piuttosto che in quello superiore sinistro di default?
Grazie!
Qualcuno potrebbe mostrarmi il codice per mettere un commento nell'angolo in alto adestra dello schermo, invece che in quello predefinito in alto a sinistra? Grazie!
Non si può. Dal manuale MQL4:
Se avete bisogno per morte potreste creare degli oggetti.
Qualcuno potrebbe mostrarmi il codice per mettere un commento nell'angolo in alto adestra dello schermo, invece che in quello predefinito in alto a sinistra? Grazie!
LinusGuy ha ragione; non c'è un modo diretto. La soluzione più semplice è quella di riempire il tuo Commento con degli spazi --
Comment(" hello world!");
sposterà il testo a destra.
Puoi anche mettere dei feed di linea per far scendere la pagina.
Comment("\n \n \n \n \n \testo tuo");
o combinare i linefeed e lo spazio per stampare nell'angolo in basso a destra dello schermo.
mog
LinusGuy ha ragione; non c'è un modo diretto. La soluzione più semplice è quella di riempire il tuo commento con degli spazi --
Comment(" ciao mondo!");
sposterà il testo a destra.
Puoi anche inserire dei feed di linea per far scendere la pagina.
Comment("\n \n \n \n \n \testo");
o combinare i linefeed e lo spazio per stampare nell'angolo in basso a destra dello schermo.
mogGrazie per l'aiuto. Ci proverò!
nessun nuovo trade per X barre dopo un trade perdente
ciao team - sperando che qualcuno possa aiutare per favore...
come faccio a impedire l'inizio di un nuovo trade per 10 barre se l'ultimo trade era in perdita?
grazie
La funzione qui sotto restituirà true se la cronologia del conto ha un'operazione in perdita che si è chiusa all'apertura della decima barra passata o dopo (la barra corrente è 0),
e restituisce falso altrimenti.
{
datetime since = Time[ bar+10 ];
for ( int i = OrdersHistoryTotal() - 1; i >= 0; i-- ) {
if ( ! OrderSelect( i, SELECT_BY_POS, MODE_HISTORY )
continue;
if ( OrderProfit() = since )
return( true );
}
return( false );
}
[/PHP]
If you add that function to your EA, then include a statement like the following in the start() function, then Bob's your uncle.
[PHP]if ( postMortem() ) return( 0 );grazie mille per questo - lo proverò
saluti
Ragazzi, avete lo stesso problema?
Ho codificato un esperto. Voglio aprire una posizione quando il prezzo è lo stesso di un indicatore. Per fare questo uso la seguente frase:
//per comprare
doppio indicatorpast = icustom(....................,1);
doppio indicatornow = icustom(....................,0);
se (close[1]indicatornow) OpenBUY();
se (close[1]>indicatorpast && close[0]<indicatornow) OpenSELL();
ma con questo satatement, l'esperto apre posizioni non solo quando il prezzo incrocia l'indicatore, ma apre anche posizioni sopra l'indicatore. Voglio che l'esperto apra la posizione SOLO quando incrocia l'indicatore, quindi ho provato questo:
//per comprare
double indicatorpast = icustom(....................,1);
doppio indicatornow = icustom(....................,0);
se (close[1]<indicatorpast && close[0]==indicatornow) OpenBUY();
se (close[1]>indicatorpast && close[0]==indicatornow) OpenSELL();
Ma questa dichiarazione non funziona.
Sapete cosa succede? Perché penso che non ci siano errori nella dichiarazione.
Saluti.