Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 1230
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
ci sono molti errori nel tuo esempio
dovrebbe esserci:
qui i prezzi non sono normalizzati OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,"My order",MagicNumber,0,clrGreen);
Qui non capisco la logica per cui OnTick() dovrebbe uscire se la condizione è falsa.
probabilmente dovremmo continuare il cicloe contare solo il numero di ordini
Il tuo esempio è molto semplice nella logica e sarebbe difficile modificarlo per altri compiti... forse vorrà fare un po' di trailing.
È ancora presto)))) Ci saranno molte cose in una volta sola. Non c'è molto senso lì))))) E così sì, naturalmente dopo i calcoli per tutto ciò che la normalizzazione dell'ordine di invio è necessario))))
Lì la condizione per ordine, se non ci sono ordini sullo strumento corrente con la nostra magia, mettiamo l'ordine. E poi la condizione non raggiungerà l'ordine fino alla chiusura.
PS non piace la condizione Se no.
Saluti, potreste dirmi come leggere l'espressione
Saluti, potreste dirmi come leggere correttamente questa espressione?
Sesymbol è vuoto, restituisce il valore del simbolo corrente alla variabile sym, e se non è vuoto, restituisce il valore alla variabile sym
Se la variabile symbol è vuota, allora restituisce il valore del simbolo grafico corrente alla variabile sym, e se non è vuota, allora passa il suo valore alla variabile sym
Grazie!
Saluti, potreste dirmi come leggere correttamente questa espressione?
Legge Symbol() se symbol è NULL, altrimenti assegna symbol alla variabile.
L'equivalente di questa voce
L'unica differenza è il numero di linee.Si legge così: Assegnare una variabile a Symbol() se symbol è NULL altrimenti assegnare un valore a symbol.
Equivalente a questa voce
L'unica differenza è il numero di linee.Grazie!
Che cosa poi, per esempio, si ha una finestra aperta non Eurobucks, ma Eurofunt, si confronta il simbolo dell'ordine selezionato con Eurobucks, se vero, allora c'è un ordine su Eurobucks, e se il nostro magik, poi tornare dalla funzione Onstart, e se non, quindi impostare un ordine su Eurobucks, ma Kloz, High, Asc, Bid si avrà per Eurofunt. sarà un errore quando si aprono gli ordini perché bid e ask per questi instuents diversi. E Symbol() restituirà il simbolo della finestra corrente e non ci saranno errori.
Usa il modello dal meta editor, c'è un pulsante Nuovo in alto a sinistra. La funzione OnStart è ancora usata, ma non è giusto, e OnStart è per gli script. Il modello giusto.
Il codice corretto. Manca il tuo commento all'ordine e il mago non è considerato nel tuo codice. Nelle avvertenze alla linea di apertura nota Conversione implicita del tipo di un numero in una stringa!!!
Sì, funziona come dovrebbe. Grazie!!!
Non sapevo che fosse così importante creare per modello. OnStart infatti. Avevo sbagliato la struttura di base. Bene, ora lo saprò.
Sì, funziona come dovrebbe. Grazie!
Non sapevo che fosse così importante creare da un modello. OnStart, appunto. Avevo sbagliato la struttura di base. Bene, ora lo saprò.
Bene, e tutto ciò che si mette nelle funzioni di lavoro con gli ordini dovrebbe essere normalizzato. Se il punto decimale è seguito da 6 cifre, l'ordine non sarà effettuato e genererà un errore.
Cerca l'argomento con "Solo funzioni utili da KimIV" o cercalo in KodoBase.
Igor Makanu ha scritto sopra altri errori. E le funzioni di Kim sono davvero utili per iniziare. I commenti sono chiari.
Per favore, aiutatemi. Perché il test dà un errore - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13)"" ????
#property link "2020, Grey".
#proprietà link "uirnP0215@mail.ru"
#proprietà versione "1.00"
#proprietà rigorosa
ingresso doppio lotti = 0,01;
input int Magic = 1546;
doppio ibufUP[];
doppio ibufDN[];
//+------------------------------------------------------------------+
//| Funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Funzione di deinizializzazione dell'esperto |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| funzione tick esperto |
//+------------------------------------------------------------------+
void OnTick()
{
CountFractals();
se(ibufUP[3]>0)
{
if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, 0, "", Magic, 0, clrRed))
Stampa("Impossibile aprire un ordine di vendita");
}
se(ibufDN[3]>0)
{
if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, 0, "", Magic, 0, clrGreen))
Print("Impossibile aprire un ordine di acquisto");
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void CountFractals()
{
for(int i=150; i>=0; i--)
{
ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i);
ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i);
}
}
//+------------------------------------------------------------------+
Per favore, aiutatemi. Perché il test dà un errore - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13)"" ????
#property link "2020, Grey".
#proprietà link "uirnP0215@mail.ru"
#proprietà versione "1.00"
#proprietà rigorosa
ingresso doppio lotti = 0,01;
input int Magic = 1546;
doppio ibufUP[];
doppio ibufDN[];
//+------------------------------------------------------------------+
//| Funzione di inizializzazione dell'esperto |
//+------------------------------------------------------------------+
int OnInit()
{
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Funzione di deinizializzazione dell'esperto |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
}
//+------------------------------------------------------------------+
//| funzione tick esperto |
//+------------------------------------------------------------------+
void OnTick()
{
CountFractals();
se(ibufUP[3]>0)
{
if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, 0, "", Magic, 0, clrRed))
Stampa("Impossibile aprire un ordine di vendita");
}
se(ibufDN[3]>0)
{
if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, 0, "", Magic, 0, clrGreen))
Print("Impossibile aprire un ordine di acquisto");
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
void CountFractals()
{
for(int i=150; i>=0; i--)
{
ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i);
ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i);
}
}
//+------------------------------------------------------------------+
Aggiungete un contatore di decremento nella funzioneCountFractals per cominciare.