{
if(OrdersTotal()==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMin (up,down) < Bid )
OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
}
}
È una soluzione, ma non è la soluzione migliore, come imparerete se procedete.
Ma può aiutarvi in questo momento.
È una soluzione, ma non è la migliore, come imparerai se procederai.
Ma può aiutarti in questo momento.
sì, ha risolto il problema nel topic, ma quando si chiude crea anche un nuovo ordine, se è ancora sopra la nuvola. Potreste aiutarmi a risolvere questo nuovo problema?
Come bloccare tutti i nuovi ordini dopo aver chiuso con successo il primo?
Beh, potete creare una bandiera.
Poi puoi impostare il valore su uno quando l'ordine viene effettuato.
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMin (up,down) < Bid )
OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
order=1;
}
}
Ma ti darà l'avviso che devi controllare il valore di ritorno della funzione ordersend quindi
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMin (up,down) < Bid )
int ticket=OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if(ticket!=-1)
{
order=1;
}
}
}
}
Perché non impostare il flag a seconda che l'ordine sia stato piazzato con successo o meno?
In questo caso se l'ordine fallisce continuerà a provare.
sì, ha risolto il problema nel topic, ma quando si chiude crea anche un nuovo ordine, se è ancora sopra la nuvola. Potreste aiutarmi a risolvere questo nuovo problema?
Come bloccare tutti i nuovi ordini dopo aver chiuso con successo il primo?
Come ha già accennato Marco, probabilmente incontrerai altri problemi.
Cosa succede se c'è un ordine aperto su un altro simbolo?
E se ci sono ordini controllati da un altro EA?
E se ci sono ordini pendenti?
E se il trigger è ancora attivo quando si chiude il primo?
In risposta a quest'ultimo, potresti usare un flag come suggerito da Marco. Ricorda solo che devi decidere quando resettare la bandiera o l'EA non farà mai più un altro trade.
In alternativa, potresti controllare un cross/cambio di stato da sotto/in nuvola a sopra la nuvola.
ho messo il tuo codice e dice che il biglietto non è dichiarato, così l'ho dichiarato, ma ora il codice apre più ordini, proprio come prima, come procedere ora?
{
bool order= 0;
int ticket;
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
int ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket!=1)
{
order=1;
}
}
}
}
ho messo il tuo codice e dice che il biglietto non è dichiarato, così l'ho dichiarato, ma ora il codice apre più ordini, proprio come prima, come procedere ora?
{
bool order= 0;
int ticket;
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
int ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket!=1)
{
order=1;
}
}
}
}
Probabilmente ti aiuterebbe leggere l'ambito delle variabili.
Cosa succede al valore dell'ordine ogni tick?
Ok, quindi dichiarate il biglietto con il flag booleano.
int ticket;
E poi
{
if(order==0)
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMax (up,down) < Bid )
ticket= OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
{
if( ticket>0)
{
order=1;
}
}
}
}
Non potete dichiararli in OnTick() perché il loro valore sarà resettato ad ogni tick ovviamente.
Nota anche che OrderSend restituisce o il numero del ticket, o -1 meno uno se fallisce.
Ho messo
bool order e
int ticket
su variabili globali, e il resto del codice su OnTick, ma ancora non fa alcuna voce ora
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Sono nuovo in mql4 e questo codice apre ordini multipli, come posso evitarlo? Dovrebbe aprire solo 1 ordine fino alla chiusura,
come posso farlo?
Grazie
{
double up= iIchimoku (NULL, 5,9,26,52,3,0);
double down= iIchimoku (NULL,5,9,26,52,4,0);
if (MathMin (up,down) < Bid )
OrderSend (NULL,0,0.01,Ask,3, Bid-150*Point, Bid+100*Point);
}