Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 815
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
E quando pensa che questo ciclo dovrebbe chiudersi?
?
Corretto:
if(R==0)
{
while(true)
{
Sleep(30000);
Alert("Ошибка!");
DeleteBuy=OrderDelete(OrderTicketBuy);
DeleteSell=OrderDelete(OrderTicketSell);
return(1);
}
}
Anche il calcolo del profitto.
Ho inserito un messaggio e la gestione degli errori nel ciclo while (true). Il ciclo funziona, il messaggio viene scritto, nessun errore. Ma non passa la condizione, i dati non sembrano essere aggiornati.
Ho inserito un messaggio e la gestione degli errori nel ciclo while (true). Il ciclo funziona, il messaggio viene scritto, nessun errore. Ma non passa la condizione, i dati non vengono aggiornati.
Ecco qualche altro suggerimento.
Questo ciclo non considera tutti gli ordini; inoltre, se ci sono più di un ordine di un tipo (per esempio, tre ordini bystop), allora cosa succederà?
In realtà, dovrebbe essere il contrario: prima dovremmo scegliere un ordine, e solo se un ordine è scelto dovremmo controllare il suo tipo e fare ogni sorta di sciocchezze su di esso:
E nello "sweep-switch-which-type-traits-stoploss", perché esattamente? E quando sarà eseguita questa linea, in uno e nel secondo interruttore?
Qui si considera prima il tipo di ordine, e poi si seleziona l'ordine. In realtà dovrebbe essere il contrario, prima si seleziona l'ordine, e poi se l'ordine è selezionato si guarda il suo tipo e se ne fa ogni sorta di scherno:
quindi:
if(R==1)//238
{
Alert("yes");
R=0;
SelectBuy=OrderSelect(OrderTicketBuy,SELECT_BY_TICKET);
}
if(R==2)//245
{
Alert("yes");
R=0;
SelectSell=OrderSelect(OrderTicketSell,SELECT_BY_TICKET);
}
E nello "scroll-type-tralit-stoploss" ( =D. Cosa non ti piace? Penso che sia normale, è molto chiaro. ), perché proprio ovunque? E quando sarà eseguita questa linea, in uno e nel secondo interruttore?
In questo modo si romperà per condizione:
Timen=OrderCloseTime();
if(Timen>0)
{
DeleteSell=OrderDelete(OrderTicketSell);
OldProfit=0;
WarBuy=true;
break;
}
Beh, sì, break avrà un aspetto migliore nella stringa OrderClose. Poi dobbiamo aggiungere OrderDelete.
Ecco qualche altro suggerimento.
Questo ciclo non considera tutti gli ordini. Inoltre, se ci sono più ordini di un tipo che uno (per esempio, tre ordini bystop), allora cosa succederà?
OrdersTotal parte da 1 e OrderSelect da 0.
C'è più di un ordine dello stesso tipo su 1 simbolo? No. Ma darò un'altra occhiata.
Abbiamo bisogno di una condizione vicina a questa: "Se MA==prezzo, allora".
Questo andrà bene:
if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))
P.S.: Buon anno!
Buon anno!
Ho recentemente iniziato a studiare MQL 4 e volevo fare una domanda:
Per esempio ho una condizione per aprire un ordine:
se (Bid>=SS+5*Point)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
La domanda è: quale condizione deve essere specificata per aprire il secondo ordine nel caso in cui il primo ordine abbia un profitto di 10 punti o più?
Buon anno!
Ho recentemente iniziato a studiare MQL 4 e volevo fare una domanda:
Per esempio ho una condizione per aprire un ordine:
se (Bid>=SS+5*Point)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
La domanda è: quale condizione è necessario specificare per aprire il secondo ordine nel caso in cui il primo ordine abbia un profitto di 10 punti o più?
Guarda qui, ci sono molte funzioni per quasi tutti i casi.
https://www.mql5.com/ru/forum/131859
Buon anno!
Ho recentemente iniziato a studiare MQL 4 e volevo fare una domanda:
Per esempio ho una condizione per aprire un ordine:
se (Bid>=SS+5*Point)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
Ora la domanda, quali condizioni devono essere specificate per aprire il secondo ordine nel caso in cui il primo ordine abbia un profitto di 10 punti o più?
Preseleziona l'ordine OrderSelect (Ticket_first_order, SELECT_BY_TICKET);
se(OrderOpenPrice()+10*Point==Ask)
OrderSend(Symbol(),OP_BUY,Lot,Ask,10,Ask-SL*Point,Ask+TP*Point,NULL,Magic,0,Green);
Нужно условие максимально приближенное к этому: "если MA==цене, то".
Такое пойдет:
if((MA>Open[0] && MA<Close[0]) || (MA<Open[0] && MA>Open[0]))
Urrà, sembra funzionare. Ho inserito l'operatore return e "O" in ogni ciclo per evitare operazioni inutili.
Un problema: gli ordini sono scomodi - non so come formulare la condizione.
Ho un trader chiamato forexstart, se fa differenza. il problema è che ho scritto un robot di trading che lavora su grafici a 1 minuto. analizza lo storico su molti grafici, lo storico è dato per circa un mese e mezzo e non più.
Ho un robot di trading che funziona su un grafico di un minuto. analizza la storia. su molti grafici la storia è data per circa un mese e mezzo e non più, anche se il grafico orario - giornaliero - annuale mostra la storia.
Come posso affrontarlo?
Ho un trader chiamato forexstart, se fa differenza. il problema è che ho scritto un robot che lavora su grafici a 1 minuto. analizza la storia su molti grafici e non visualizza altro.
ho un robot di trading che funziona sul grafico di un minuto. visualizza lo storico. su molti grafici lo storico è dato per circa un mese e mezzo e non più, anche se il grafico orario - giornaliero - annuale visualizza lo storico. ci sono anche casi in cui ritorna ad una certa data e poi si interrompe, il gioco continua un paio di mesi fa, anche se i grafici superiori mostrano di nuovo tutto.
Come posso affrontarlo?