Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1126
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
Ho salvato in formato csv, ma non ha funzionato
Есть условие для открытия ордера BUY. Открывается ордер, как сделать переход к SELL условию после закрытия BUY ордера?
if(High[1]-Close[1]>=NormalizeDouble(xbs1*_Point,_Digits))
{
int b_tik=OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,Low[2]-sl,High[1]+ tp,"",Magic,0,clrBlue)==true; //открытие ордера
GlobalVariableSet("B_order",0); // Больше не ищем вход Buy
//-----?????
GlobalVariableSet("S_order",1); // Переходим к поиску Sell
return;
}
if(High[1]-Close[1]>=NormalizeDouble(xbs1*_Point,_Digits))
{
int b_tik=OrderSend(_Symbol,OP_BUY,Lots,Ask,Slip,Low[2]-sl,High[1]+ tp,"",Magic,0,clrBlue)==true; //открытие ордера
GlobalVariableSet("B_order",0); // Больше не ищем вход Buy
//-----?????
GlobalVariableSet("S_order",1); // Переходим к поиску Sell
return;
}
else if(GlobalVariableGet("S_order",1))// ищем вход Sell
{Условие для SELL}
Sono totalmente confuso con questi bug, ho iniziato a scriverli e poi hanno iniziato ad andare di qua e di là. In breve:
Domanda: L'ho provato su demo con Alert e ho verificato come funziona. Ho fatto intenzionalmente nel mio EA l'ordine sbagliato cercando di aprirlo, ha ottenuto il codice di errore 4051, cioè ho impostato questa funzione GetLastError() prima di aprire un ordine e dopo che è stato aperto. Ce l'ho: 1 tick dall'inizio dell'EA, Error call--> 0 --> tentato di aprire un ordine con condizioni sbagliate --> Error call--> 4051, e quando il 2° tick è scattato la prima chiamata mostra già 4051 e il mio EA non invia altre richieste fino a quando non ho trattato con l'EA. La funzione GetLastError() chiama l'ultimo errore dal terminale o dal server e come azzerarlo? Voglio dire, se per esempio "errore generale" codice 2, e 5 minuti dopo il server funziona normalmente, il server mi informa che non c'è nessun errore. In breve, confuso in questa logica, aiuta chi può. Credevo di essere arrivato qui di recente a corrispondere qui, si scopre che ho capito male.
Sono totalmente confuso con questi bug, ho iniziato a scriverli e poi hanno iniziato ad andare di qua e di là. In breve:
Domanda: L'ho testato su demo con Alert e ho verificato come funziona. Ho fatto intenzionalmente nel mio EA l'ordine sbagliato cercando di aprire, ha ottenuto il codice di errore 4051, cioè ho impostato questa funzione GetLastError() prima di aprire un ordine e dopo che è stato aperto. Ce l'ho: 1 tick dall'inizio dell'EA, Error call--> 0 --> tentato di aprire un ordine con condizioni sbagliate --> Error call--> 4051, e quando il 2° tick è scattato la prima chiamata mostra già 4051 e il mio EA non invia altre richieste fino a quando non ho trattato con l'EA. La funzione GetLastError() chiama l'ultimo errore dal terminale o dal server e come azzerarlo? Voglio dire, se per esempio "errore generale" codice 2, e 5 minuti dopo il server funziona normalmente, il server mi informa che non c'è nessun errore. In breve, confuso in questa logica, aiuta chi può. Credevo di essere arrivato qui di recente a corrispondere qui, si scopre che ho capito male.
Prova a resettare l'errore con ResetLastError();
ECCEZIONE!!!!!!!!! Caro popolo! Non stupitevi di essere molestati dai neofiti!!! Cosa c'è nel motore di ricerca ???? Sono una specie di esperto qui da 2 settimane, avresti dovuto vedere la mia faccia quando ho deciso di controllare e scoprire di più su OrderSend() nel motore di ricerca!!!! Poveri neofiti. Bene, ok, nella barra degli indirizzi lo cambio in 4 invece di 5. Non sono autorizzato lì, ok, premo invio e sono tornato a mql5. Se non sono connesso a Mql4, il motore di ricerca non funziona.
E anche sul forum un sacco di gente intelligente scrive "a cosa serve il motore di ricerca?" o "guarda nel motore di ricerca", "siamo un po' pigri", ecc. senza offesa
Nella documentazione:
GetLastError
Restituisce il contenuto della variabile di sistema_LastError.
intGetLastError();
Valore restituito
Restituisce il valore dell'ultimoerrore che si è verificato durante l'esecuzione di un programma mql4.
Nota.
Dopo la chiamata della funzione, il contenuto della variabile _LastError viene cancellato.
È chiaramente scritto nella nota che _LastError è azzerato.
Leggiamo di più su_LastError.
int _LastError
La variabile _LastError memorizza il valore dell'ultimoerrore che si è verificato durante l'esecuzione del programma mql4. LafunzioneResetLastError()può azzerare il valore.
Potete anche usare la funzioneGetLastError() per ottenere il codice di errore.
Dice: poteteazzerare il valore con la funzioneResetLastError(). Perché dovrebbe resettare se dice che_LastError si azzera?
Ok, continuate a leggereResetLastError().
ResetLastError
Imposta il valore della variabile predefined_LastError a zero.
voidResetLastError();
Valore restituito
Nessun valore di ritorno.
Nota
GetLastError() cancella la variabile_LastError.
LafunzioneGetLastError()cancella la variabile_LastError.
Allora perché ho bisogno diResetLastError(); ?????
E come posso sapere in seguito quale errore si è verificato se c'è 0 dopo la seconda chiamata diGetLastError()? Perché cancella_LastError.
A proposito, nella demo oraGetLastError() mostra lo stesso errore ad ogni tick e non lo azzera.
Cioè, abbiamo avuto lo stesso errore nel 1° tick e nel 2° tick, il mio EA non invia la richiesta di apertura perché ha già visto l'ultimo errore
Ieri sera ho dormito un po', non ho bevuto da Capodanno.
Nella documentazione:
GetLastError
Restituisce il contenuto della variabile di sistema_LastError.
Ora leggete la normale documentazione di MT5, ora alcune vecchie funzioni funzionano esattamente come è scritto, perché la documentazione di mt4 è obsoleta e ci sono un sacco di cose non ancora fissate.
GetLastError
Restituisce il contenuto della variabile di sistema_LastError.
intGetLastError();
Valore restituito
Restituisce il valore dell'ultimo errore che si è verificato durante l'esecuzione del programma mql5.
Nota
Dopo la chiamata della funzione, il contenuto della variabile _LastError non viene cancellato. La funzioneResetLastError() deve essere chiamata per azzerare questa variabile.
Vedi anche
Codici di ritorno del server commerciale
Ho più o meno dormito tutta la notte, non ho bevuto da Capodanno.
Beh, lo sono dal 1997)
Vedete, c'è un tick e con esso un segnale, e se si ottiene un errore, deve essere elaborato. Elaborate e interrogate di nuovo, ma prima dell'interrogazione potete azzerare la variabile con l'errore, poi la prossima interrogazione se c'è un errore, tornerà nella variabile, ma se non c'è un errore, sarà "0".
Non è necessario azzerare la variabile, ma se c'è un errore, restituirà un nuovo valore. In ogni caso, non dovresti essere interessato all'errore che hai avuto l'ultima volta nell'ultimo tick, dovresti elaborare solo quello che hai "ora".