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
Aggiungere posizione in questo EA
Salve,
prima devo scusarmi perché l'inglese non è la mia lingua madre.
Come posso modificare questo EA per dirgli di aggiungere una posizione (comprare 0,1 lotti) alla chiusura della barra ogni volta che l'RSI è superiore a 67, e di vendere ogni volta che l'RSI è inferiore a 33?
Per esempio:
ora chiusura RSI
17:31 1.3855 69.3 ---> compra 0.1
17:32 1.3858 70.5 ---> compra 0.1
17:33 1.3849 66.8 ---> nessuna azione
17:34 1.3856 68.4 ---> compra 0.1
Posizione totale +0,03
Lo stesso per vendere allo scoperto.
//+------------------------------------------------------------------+
//| Questo MQL è generato da Expert Advisor Builder
//| Expert Advisor Builder per MetaTrader 4 ||
//| |
//| In nessun caso l'autore sarà responsabile per qualsiasi danno. |
//| Usare a proprio rischio e pericolo. |
//| |
//+------------------- NON RIMUOVERE QUESTA INTESTAZIONE --------------------+
#define SIGNAL_NONE 0
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#proprietà copyright "Expert Advisor Builder"
#proprietà link "http://sufx.core.t3-ism.net/ExpertAdvisorBuilder/"
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = False;;
extern double Lots = 0.1;
extern int Slippage = 3;
extern bool UseStopLoss = False;
extern int StopLoss = 30;
extern bool UseTakeProfit = False;
extern int TakeProfit = 60;
extern bool UseTrailingStop = False; extern int TrailingStop = False;
extern int TrailingStop = 30;
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 = iRSI(NULL, 0, 10, PRICE_CLOSE, Current + 0);
double Buy1_2 = 67;
double Sell1_1 = iRSI(NULL, 0, 10, PRICE_CLOSE, Current + 0);
doppio Vendere1_2 = 33;
//+------------------------------------------------------------------+
//| 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(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) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| 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) |
//+------------------------------------------------------------------+
se (Buy1_1 > Buy1_2) Ordine = SIGNAL_BUY;
se (Sell1_1 < Sell1_2) 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);
}
//+------------------------------------------------------------------+
Grazie mille per il tuo aiuto
Panurgo
Come fermare il trading dopo il profitto ottenuto nel giorno corrente?
Ciao, ho un problema.
Ho un problema. Metto in codice un EA.
Quando un profitto di 20 PIP del giorno è preso così l'EA non dovrebbe aprire alcun ordine fino al giorno successivo.
Per favore aiutatemi.
Grazie
fxbeginner
Ciao.
Ho un problema. Metto in codice un EA.
Quando un profitto di 20 PIP del giorno è preso così l'EA non dovrebbe aprire alcun ordine fino al giorno successivo.
Per favore aiutatemi.Un'idea sarebbe quella di non permettere il trading dopo il primo ordine del giorno. Dopo la funzione ordersend(), metti un "trade = false;"
Poi reimpostare il permesso di commercio ogni nuovo giorno:
if(timeprev!=iTime(Symbol(),PERIOD_D1,0)) { //---- Questo è un nuovo giorno
timeprev = iTime(Symbol(),PERIOD_D1,0);
trade = true; }
Poi quando controlli il tuo segnale
if(trade) { la tua condizione di trading qui }
Solo un esempio ...
FerruFx
Ordini nascosti
Come posso codificare un EA per nascondere tutti gli ordini di acquisto o vendita stop dagli occhi indiscreti dei broker. L'EA attuale ha ordini pendenti di Buy Stops e Sell Stops.
Grazie
LF
Come faccio a codificare un EA per nascondere tutti gli ordini di acquisto o vendita stop dagli occhi indiscreti dei broker. L'EA attuale ha ordini pendenti Buy Stops e Sell Stops.
Grazie
LFRegistra il valore di buystop e sellstop all'interno dell'EA, una volta che il prezzo incrocia il livello di buystop, invia un ordine di acquisto, viceversa per sellstop.
Registra il valore di buystop e sellstop all'interno dell'EA, una volta che il prezzo incrocia il livello di buystop, invia un ordine di acquisto, viceversa per il sellstop.
Grazie. Ti ho mandato un PM
Dire a EA di smettere di lavorare
Ciao a tutti,
Ho quasi finito il mio primo EA dopo quasi 7 giorni di tentativi ed errori e di taglia e incolla e ore di ricerca....
Qualcuno può per favore dirmi come emettere una funzione di uscita o di stop per un EA?
Voglio che l'EA cancelli tutte le operazioni in corso e in sospeso e che esca dopo aver raggiunto 10.000 di capitale. Qui sotto c'è la porzione di codice finora:
int total = OrdersTotal(), cnt = 0, ExitAtEquity=10000;
for (cnt = total ; cnt >=0 ; cnt-- )
{
OrderSelect(0,SELECT_BY_POS,MODE_TRADES);
if (AccountEquity ()== ExitAtEquity)//(TimeCurrent()- OrderOpenTime() >= ActiveMinutes*60 )
{if(OrderType()==OP_BUY)
OrderClose(OrderTicket(),OrderLots(),Bid,3,Red);
if(OrderType()==OP_SELL)
OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
if(OrderType()>OP_SELL)
OrderDelete(OrderTicket());
StopTrade=true;}
}
if (dclose==dopen && OrdersTotal() < ConcurrentTrades && StopTrade != true)Come potete vedere, l'EA guarda l'Equity e poi imposta il valore bool della variabile StopTrade a true. L'EA riconosce il comando e non elabora nulla sotto StopTrade != true per un ciclo, ma poi il valore bool di StopTrade viene resettato e le operazioni continuano.
In primo luogo, c'è un modo per far sì che questo faccia ciò di cui ho bisogno nel modo in cui lo sto facendo?
In secondo luogo, c'è una funzione che posso usare per dire semplicemente all'EA di uscire?
Tutta l'assistenza è molto apprezzata.
Cosa c'è di sbagliato in questo codice?
Qualcuno può dirmi perché sto generando un errore con questo comando nel mio EA?
buyOrder=OrderType();
else
Print("OrderSelect returned the error of ",GetLastError());
bTicket is assigned in this prior line:
if(bTicket<=0) Print("Error = ",GetLastError());
else Print("ticket = ",bTicket);Spostare il mio post non ha aiutato.
Non posso usare il numero magico perché sto eseguendo lo stesso EA su 8 coppie diverse. Dov'è il mio post originale per poterlo seguire?
Cosa c'è di sbagliato in questo codice?
Qualcuno può dirmi perché sto generando un errore con questo comando nel mio EA?
buyOrder=OrderType();
else
Print("OrderSelect returned the error of ",GetLastError());
bTicket is assigned in this prior line:
bTicket=OrderSend(Symbol(),OP_BUYSTOP,Lots,buyPoint,0,sl,buy_tp,"Script entry",0);
if(bTicket<=0) Print("Error = ",GetLastError());
else Print("ticket = ",bTicket);Il mio ordine pendente viene piazzato e restituisce il numero del biglietto come assegnato a bTicket, ma poi bTicket non funziona nel mio OrderSelect(). Ottengo un errore 0 restituito. Ho provato a fare riferimento a SELECT_BY_POS e ad assegnare il numero di ticket restituito a bTicket e ha funzionato bene, ma non c'è modo di sapere quale sarà il numero di posizione di tutti i miei ordini solo per eseguire lo script. Qualsiasi aiuto è molto apprezzato.