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
Tieni presente che potresti aver bisogno di memorizzare continuamente anche lo spread... a seconda del tipo di EA che stai scrivendo. altrimenti inutile
è HIGH [0] -- la barra corrente che è appena iniziata
per basso, non so, forse basso[1]
Ordine giusto per mettere OrderSend(),OrderModify()
Giorni fa ho letto un argomento nel forum sulla funzione OrderSend() e OrderModify()
e questo argomento mi dà un indizio perché alcuni EA lavoro e altri no, e mi chiedo come controllare se la funzione OrderSend () e OrderModify () è scritto correttamente.
ciao a tutti...
Per favore ditemi come codificare per ottenere la lista di tutte le coppie in MT4?
grazie
Charles
Ciao,
Ho capito che non è giusto scrivere Ask[1] ma come posso ottenere il prezzo Ask dall'ultimo tick?
Grazie!Devi salvare i tick in tempo reale e poi accedervi dal tuo EA o indicatore. Potrei provare a codificare un esempio per te se sei ancora interessato.
ciao a tutti...
Per favore ditemi come codificare per ottenere la lista di tutte le coppie in MT4?
grazie
CharlesPrenditi il tuo tempo amico,, credo che sia più facile da fare in Mql5 quindi aspetta solo che le cose si sistemino
ottenere valori di tendenza magici in una variabile...
ciao!
sto lavorando ad un EA e mi sto chiedendo come posso ottenere i valori dell'indicatore magic trend in una variabile. ovviamente non esiste una funzione nativa per il magic trend, come fa iMA per le medie mobili e so....
Finora sembra che io debba codificarlo da zero. ma non ho trovato alcuna informazione sulla matematica!
qualcuno potrebbe aiutarmi?
grazie mille!!!
ciao!
Sto lavorando ad un EA e mi sto chiedendo come posso ottenere i valori dell'indicatore magic trend in una variabile. ovviamente non esiste una funzione nativa per magic trend, come fa iMA per le medie mobili e so....
Finora sembra che io debba codificarlo da zero. ma non ho trovato alcuna informazione sulla matematica!
qualcuno potrebbe aiutarmi?
grazie mille!!!Cerca informazioni su come utilizzare la funzione ICustom in MQL4. Con questa funzione è possibile chiamare indicatori esterni nel tuo EA
-guyver
Robot - EA automatico su 2 medie mobili MA veloci e lente
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 0.2;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 15;
extern bool UseTakeProfit = True;
extern int TakeProfit = 30;
extern bool UseTrailingStop = True;
extern int TrailingStop = 20;
int BarCount;
int Current;
bool TickCheck = Falso;
//+------------------------------------------------------------------+
//| 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 Var1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Var2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Buy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Buy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Sell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double Sell1_2 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseBuy1_1 = iMA("EURUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseBuy1_2 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseSell1_1 = iMA("EURUSD", PERIOD_M5, 7, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
double CloseSell1_2 = iMA("GBPUSD", PERIOD_M5, 14, 0, MODE_SMA, PRICE_MEDIAN, Current + 1);
//+------------------------------------------------------------------+
//| 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) |
//+------------------------------------------------------------------+
if (CloseBuy1_1 > CloseBuy1_2 && False) Ordine = SIGNAL_CLOSEBUY;
//+------------------------------------------------------------------+
//| 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(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Punto * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continua;
}
}
}
} else {
//Chiudi
//+------------------------------------------------------------------+
//| Segnale Inizio(Esci Vendi) |
//+------------------------------------------------------------------+
if (CloseSell1_1 > CloseSell1_2False) Ordine = SIGNAL_CLOSESELL;
//+------------------------------------------------------------------+
//| 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(UseTrailingStop && 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 && False) Ordine = SIGNAL_BUY;
if (Sell1_1 < Sell1_2 && False) Ordine = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| Fine del segnale |
//+------------------------------------------------------------------+
//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 (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; altrimenti StopLossLevel = 0,0;
if (UseTakeProfit) 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 (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; altrimenti StopLossLevel = 0,0;
if (UseTakeProfit) 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);
}
//+------------------------------------------------------------------+
//dove è l'errore, perché non lo so, aiutami. grazie
che errore ottieni?