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
Ciao
Mi dispiace molto se la mia domanda è molto semplice.
Sto imparando mql4.
Per favore aiutatemi come esprimere queste condizioni matematiche in mql4:
IF( (A>B) AND (|X| <1) AND (Y<Z) ) allora... ... ... ...
|X| è assouluto; significa (X 1)
Ho ricevuto un messaggio da MetaEditor
" SE L'ESPRESSIONE È TROPPO COMPLESSA".
Dopo aver provato molte volte,... Non ho più idee, quindi per favore ditemi come fare...
GrazieProva questo:
if((a>b && MathAbs(x)<1) && y<z)
{
//scrivi qui cosa dovrebbe succedere
}
Domanda per l'oracolo...
C'è un modo per fare in modo che l'EA esegua un'ottimizzazione e regoli automaticamente le impostazioni ogni giorno.
Vorrei eseguire un'ottimizzazione del fattore di profitto di 30 giorni per 16 parametri e fargli applicare le impostazioni prima di ricominciare a fare trading. Si spegne automaticamente ogni giorno per circa 8 ore. questo sarebbe un momento perfetto per eseguirlo...
qualcuno sa come codificarlo... Lo porterebbe dal livello di grande EA al livello di AI insanabilmente redditizia...
Questo potrebbe anche essere un buon codice per tutti da utilizzare in là EA mercati regolare costantemente perché dovrebbe essere il nostro EA ottenere più intelligente.
Ho anche postato questo nel fourm EA, non sapevo di questo fino ad ora ...
Grazie per il vostro aiuto.
consiglio per favore
E' possibile creare indicatori a barre in finestre separate come l'indicatore nella foto che ho postato [non so come si chiamano ufficialmente] per dire una barra rossa se il MACD attraversa in negativo e rimane rossa se in zone negative e verde se attraversa in positivo ecc ecc. Inoltre è possibile creare le stesse finestre di indicatori a barre per dire se il prezzo va sotto una media mobile.
Se questa sembra una domanda stupida, abbiate pazienza con me. Quando guardo gli indicatori su un grafico tendo a cercare di anticipare ciò che il prezzo farà così sto cercando di provare ad avere indicatori separati per le finestre che quando tutti mostrano lo stesso colore farò trading. [Ragioni di psicologia]. È la creazione di questi indicatori separati di tipo bar qualcosa che potrei imparare a creare, im lontano da un programmatore in qualsiasi lingua.
Qualsiasi consiglio sarebbe molto apprezzato.
dh
Ciao
Mi dispiace molto se la mia domanda è molto semplice.
Sto imparando mql4.
Per favore aiutatemi come esprimere queste condizioni matematiche in mql4:
IF( (A>B) AND (|X| <1) AND (Y<Z) ) allora... ... ... ...
|X| è assouluto; significa (X 1)
Ho ricevuto un messaggio da MetaEditor
" SE L'ESPRESSIONE È TROPPO COMPLESSA".
Dopo aver provato molte volte,... Non ho più idee... Quindi per favore ditemi come fare...
Grazieif(a>b && (x 1) && y<z){
;il tuo codice
}
o forse x == 0 invece di (x 1) perché solo in questo modo MathAbs(x) < 1 è vero quando x=0
http://docs.mql4.com/basis/operations/bool
d'altra parte forse hai semplicemente bisogno di questo
if(a>b && x<1 && y<z)
o questo
if(a>b && x<-1 && y<z)
dato che x non è mai 0 o -1 secondo la tua definizione
Sono confuso dalla tua definizione di valore assoluto
E' possibile creare indicatori a barre in finestre separate come l'indicatore nella foto che ho postato [non so come si chiamano ufficialmente] per dire una barra rossa se il MACD attraversa in negativo e rimane rossa se in zone negative e verde se attraversa in positivo etc etc. Inoltre è possibile creare le stesse finestre di indicatori a barre per esempio se il prezzo va sotto una media mobile.
se questa sembra una domanda sciocca, per favore abbiate pazienza con me. Quando guardo gli indicatori su un grafico, tendo a cercare di anticipare ciò che il prezzo farà, quindi sto cercando di provare ad avere indicatori di finestre separate che, quando tutti mostrano lo stesso colore, sono destinati al commercio. [Ragioni di psicologia]. È la creazione di questi indicatori separati di tipo bar qualcosa che potrei imparare a creare, im lontano da un programmatore in qualsiasi lingua.
Qualsiasi consiglio sarebbe molto apprezzato.
dhSì, questo è possibile.
E' possibile creare indicatori a barre in finestre separate come l'indicatore nella foto che ho postato [non so come si chiamano ufficialmente] per esempio una barra rossa se il MACD attraversa in negativo e rimane rossa se in zone negative e verde se attraversa in positivo ecc ecc. Inoltre è possibile creare le stesse finestre di indicatori a barre per esempio se il prezzo va sotto una media mobile.
Se questa sembra una domanda sciocca, per favore abbiate pazienza con me. Quando guardo gli indicatori su un grafico, tendo a cercare di anticipare ciò che il prezzo farà, quindi sto cercando di provare ad avere indicatori di finestre separate che, quando tutti mostrano lo stesso colore, sono destinati al commercio. [Ragioni di psicologia]. È la creazione di questi indicatori separati di tipo bar qualcosa che potrei imparare a creare, im lontano da un programmatore in qualsiasi lingua.
Qualsiasi consiglio sarebbe molto apprezzato.
dhQui sei esattamente quello che vuoi, carica tutti e 4 gli stessi indicatori su un grafico tutti con impostazioni diverse come mostrato di seguito, quando tutti rossi vendono, quando tutti blu comprano.
impostazioni
impostare il primo per 15 minuti
secondo 30 minuti
terzo 60 minuti
quarto 140 minuti
grazie
Ragazzi, grazie che esplorerò gli indicatori postati#
molto apprezzato
Sarebbe possibile scrivere un qualche tipo di indicatore che plotta grafici a tick costanti o barre a range costante in un'altra finestra? Queste sono forme diverse di grafici che non sono basati sul tempo. Per esempio, una barra di 100 tick si forma ogni volta che il prezzo si muove di 100 tick. Quindi con poco volume, non si forma nessuna barra. Una barra di intervallo costante si forma ogni volta che il prezzo si muove di un certo numero di tick in un intervallo. Per esempio, una barra di intervallo impostata a 20 si forma ogni volta che il prezzo riempie un intervallo di 20 pip. Poi la barra successiva viene avviata. Dato che queste non sono basate sul tempo, non sono sicuro che sarebbe possibile in questa piattaforma.
aggiungere un semplice allarme all'EA
Ciao, spero di trovare il piccolo aiuto di cui ho bisogno qui! puoi mostrarmi come aggiungere un allarme per questo EA per esempio? solo quando le condizioni sono soddisfatte per l'acquisto, mi avvisa anche.
Grazie,
Leo
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = False;
extern double Lots = 1.0;
extern int Slippage = 3;
extern bool StopLossMode = True;
extern int StopLoss = 30;
extern bool TakeProfitMode = True;
extern int TakeProfit = 60;
extern bool TrailingStopMode = True;
extern int TrailingStop = 30;
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperto |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
se (EachTickMode) Current = 0; altrimenti Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| funzione di avvio esperto |
//+------------------------------------------------------------------+
int start() {
int Ordine = SIGNAL_NONE;
int Total, Ticket;
doppio StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Totale = OrdiniTotali();
Ordine = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variabile Inizio |
//+------------------------------------------------------------------+
double Buy1_1 = iMA(NULL, 0, 89, 0, MODE_SMA, PRICE_CLOSE, Current + 0);
double Buy1_2 = iClose(NULL, 0, Current + 0);
double Buy2_1 = iMA(NULL, 0, 445, 0, MODE_EMA, PRICE_CLOSE, Current + 0);
double Buy2_2 = iClose(NULL, 0, Current + 0);
//+------------------------------------------------------------------+
//| Fine della variabile |
//+------------------------------------------------------------------+
//Controlla la posizione
bool IsTrade = Falso;
for (int i = 0; i < Totale; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Chiudere
//+------------------------------------------------------------------+
//| Segnale Inizio(Esci Compra) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Segnale Fine(Esci dall'Acquisto) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSEBUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Bid, Slippage, MediumSeaGreen);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Close Buy");
if (!EachTickMode) BarCount = Bars;
IsTrade = Falso;
continuare;
}
//Trailing stop
if(TrailingStopMode && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Punto * TrailingStop) {
if(OrderStopLoss() < Bid - Punto * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continua;
}
}
}
} else {
//Chiudi
//+------------------------------------------------------------------+
//| Segnale Inizio(Esci Vendi) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Segnale Fine(Esci Vendi) |
//+------------------------------------------------------------------+
if (Order == SIGNAL_CLOSESELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
OrderClose(OrderTicket(), OrderLots(), Ask, Slippage, DarkOrange);
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Close Sell");
if (!EachTickMode) BarCount = Bars;
IsTrade = Falso;
continuare;
}
//Trailing stop
if(TrailingStopMode && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Punto * TrailingStop)) {
if((OrderStopLoss() > (Ask + Punto * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continuare;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if (Buy1_1 < Buy1_2 && Buy2_1 < Buy2_2) Order = SIGNAL_BUY;
//+------------------------------------------------------------------+
//| Segnale Fine |
//+------------------------------------------------------------------+
//Compra
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Controlla il margine libero
if (AccountFreeMargin() < (1000 * Lotti)) {
Print("Non abbiamo soldi. Margine libero = ", ContoFreeMargin());
return(0);
}
if (StopLossMode) StopLossLevel = Ask - StopLoss * Point; altrimenti StopLossLevel = 0,0;
if (TakeProfitMode) TakeProfitLevel = Ask + TakeProfit * Point; altrimenti TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "Buy(#" + MagicNumber + ")", MagicNumber, 0, DodgerBlue);
se(Biglietto > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("Ordine BUY aperto : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Errore nell'apertura dell'ordine BUY: ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Vendere
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Controlla il margine libero
if (AccountFreeMargin() < (1000 * Lotti)) {
Print("Non abbiamo soldi. Margine libero = ", ContoFreeMargin());
return(0);
}
if (StopLossMode) StopLossLevel = Bid + StopLoss * Point; altrimenti StopLossLevel = 0,0;
se (TakeProfitMode) TakeProfitLevel = Bid - TakeProfit * Point; altrimenti TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "Sell(#" + MagicNumber + ")", MagicNumber, 0, DeepPink);
se(Biglietto > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("Ordine SELL aperto : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Errore nell'apertura dell'ordine SELL: ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+
Grazie e altre ricerche
Grazie per aver risposto alla mia domanda.
newdigital, Kalenzo, asmdev
E grazie a tutti
È la mia prossima domanda.
1.) Come confrontare un valore di qualcosa che accade e accaduto
per esempio, se "n" è ora, la variabile del tempo, n-a = "a" tempo prima di ora.
come confrontare il valore di RSI quando è successo in (n-a) e RSIn(ora).
o come confrontare MA50 per tre barre prima di ora e l'ultima barra?
2.) Secondo il punto 1.) il caso reale è ... come creare una divergenza rialzista / ribassista?
Quando le condizioni: C'è un prezzo più alto e un RSI più alto del time frame definito. E poi dopo il tempo scorre... incontriamo un nuovo prezzo più alto, ma non seguito da un nuovo massimo di RSI (RSI non riesce a fare un nuovo massimo).
Sappiamo tutti che questa situazione è un segnale di vendita ad alta realizzabilità, e il segnale di acquisto è l'inverso, quindi voglio che il mio EA lo sappia.
Grazie ancora.