Come potrei programmare un trigger di acquisto per tutto il verde e un trigger di vendita per tutto il rosso per questi indicatori? Per favore aiutatemi...
Non so se questo è stato postato prima (mi manca la pazienza di cercare tra i thread, mi dispiace!) ma so che è stato chiesto spesso.
Questo codice verrà eseguito SOLO una volta per tick. Verrà eseguito non appena verrà introdotto un nuovo tick, e solo allora, e non funzionerà in seguito finché non se ne presenterà un altro.
Tieni presente che questo può essere un problema, a volte. Se i tuoi ordini non vanno a buon fine, per qualsiasi motivo, non si avvierà di nuovo. Se volete modificare il codice per farlo, fate pure. Suggerirei qualcosa come:
if order fails, fileseek to front of f, write Open[2] to f
Questo farà credere al prossimo tick di essere un nuovo tick.
Ciao ragazzi, ho una domanda veloce per voi. Recentemente ho creato un EA. I parametri sono corretti e quando l'ho aggiunto al grafico, ha piazzato un acquisto appropriato e poi più tardi una vendita. Ma, la volta successiva che è arrivato un segnale di acquisto, non ha mai piazzato un trade. Sembra che l'EA prenda solo il primo trade e nessuno in seguito. Qualche idea sul perché questo possa essere? Apprezzerei qualsiasi aiuto. Grazie!!!
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
MTF RWI Trigger?
Come potrei programmare un trigger di acquisto per tutto il verde e un trigger di vendita per tutto il rosso per questi indicatori? Per favore aiutatemi...
Nick,
EA per una sola volta per tick
Ciao ragazzi,
Non so se questo è stato postato prima (mi manca la pazienza di cercare tra i thread, mi dispiace!) ma so che è stato chiesto spesso.
Questo codice verrà eseguito SOLO una volta per tick. Verrà eseguito non appena verrà introdotto un nuovo tick, e solo allora, e non funzionerà in seguito finché non se ne presenterà un altro.
Tieni presente che questo può essere un problema, a volte. Se i tuoi ordini non vanno a buon fine, per qualsiasi motivo, non si avvierà di nuovo. Se volete modificare il codice per farlo, fate pure. Suggerirei qualcosa come:
if order fails, fileseek to front of f, write Open[2] to f
Questo farà credere al prossimo tick di essere un nuovo tick.
Ci sono libri, tutorial online o video sulla scrittura di MQL4?
https://www.mql5.com/en/forum/178427
https://www.mql5.com/en/forum/178677
https://www.mql5.com/en/forum
Ciao a tutti,
Ho bisogno di aiuto per codificare questo:
Basato su un grafico giornaliero:
a) Diciamo che le mie condizioni sono soddisfatte alla chiusura del giorno#1 e supponiamo che il giorno# sia il 9 giugno.
b) Ora voglio piazzare un BUY-Stop e un sell-stop al massimo e al minimo alla chiusura del giorno #2 o 10 giugno
c) Infine, voglio che il trade sia attivato il giorno #3.
Inoltre, se il LONG viene attivato per primo, voglio che il sell-stop venga chiuso e viceversa.
Grazie in anticipo per il vostro aiuto.
saluti,
forexcel
EA per nominare il giorno della settimana e l'ora
Non conoscete l'EA che sceglie il giorno (per esempio, solo mercoledì e giovedì) e nomina l'ora di apertura e chiusura?
In molti casi,
Un tasso aumenta il Mercoledì e Giovedi dal momento che molte persone per ottenere il SWAP.
Lo compro in questo momento e prendo una posizione.
E il tasso scende non appena si è verificato uno SWAP.
Sono venduto in questo momento e prendere una posizione.
Sto cercando EA da utilizzare per come questo commercio.
Ho bisogno di aiuto!
Ciao ragazzi,
ho bisogno di aiuto. Ho questo EA che ho creato
#define SIGNAL_BUY 1
#define SIGNAL_SELL 2
#define SIGNAL_CLOSEBUY 3
#define SIGNAL_CLOSESELL 4
#property copyright "FxAttack"
#property link "http://www.ioinvesto.com"
extern int MagicNumber = 0;
extern bool SignalMail = False;
extern bool EachTickMode = True;
extern double Lots = 0.1;
extern int Slippage = 3;
extern bool UseStopLoss = True;
extern int StopLoss = 25;
extern bool UseTakeProfit = True;
extern int TakeProfit = 25;
extern bool UseTrailingStop = False;
extern int TrailingStop = 30;
extern bool Use.Time.Filter = true;
extern string Server.Time.To.Start = "00:00";
extern string Server.Time.To.Stop = "17:00";
extern bool Not.Trade.Fri.Sun = True;
int BarCount;
int Current;
bool TickCheck = False;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init() {
BarCount = Bars;
if (EachTickMode) Current = 0; else Current = 1;
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit() {
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start() {
int Order = SIGNAL_NONE;
int Total, Ticket;
double StopLossLevel, TakeProfitLevel;
if (EachTickMode && Bars != BarCount) TickCheck = False;
Total = OrdersTotal();
Order = SIGNAL_NONE;
//+------------------------------------------------------------------+
//| Variable Begin |
//+------------------------------------------------------------------+
double OpenPrice = iOpen(NULL, PERIOD_D1, Current + 0);
double Buy_Sign = (OpenPrice + (30*Point));
double Sell_Sign = (OpenPrice - (30*Point));
double start_time = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Server.Time.To.Start);
double end_time = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE) + " " + Server.Time.To.Stop);
Comment("Open Price = ",OpenPrice);
//+------------------------------------------------------------------+
//| Variable End |
//+------------------------------------------------------------------+
if(Use.Time.Filter && (TimeCurrent() = end_time)) return(0);
if(Not.Trade.Fri.Sun && (DayOfWeek()==6 || DayOfWeek()==1 )) return(0);
//Check position
bool IsTrade = False;
for (int i = 0; i < Total; i ++) {
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) {
IsTrade = True;
if(OrderType() == OP_BUY) {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Buy) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Buy) |
//+------------------------------------------------------------------+
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 = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if(Bid - OrderOpenPrice() > Point * TrailingStop) {
if(OrderStopLoss() < Bid - Point * TrailingStop) {
OrderModify(OrderTicket(), OrderOpenPrice(), Bid - Point * TrailingStop, OrderTakeProfit(), 0, MediumSeaGreen);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
} else {
//Close
//+------------------------------------------------------------------+
//| Signal Begin(Exit Sell) |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//| Signal End(Exit Sell) |
//+------------------------------------------------------------------+
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 = False;
continue;
}
//Trailing stop
if(UseTrailingStop && TrailingStop > 0) {
if((OrderOpenPrice() - Ask) > (Point * TrailingStop)) {
if((OrderStopLoss() > (Ask + Point * TrailingStop)) || (OrderStopLoss() == 0)) {
OrderModify(OrderTicket(), OrderOpenPrice(), Ask + Point * TrailingStop, OrderTakeProfit(), 0, DarkOrange);
if (!EachTickMode) BarCount = Bars;
continue;
}
}
}
}
}
}
//+------------------------------------------------------------------+
//| Signal Begin(Entry) |
//+------------------------------------------------------------------+
if (Bid > Buy_Sign) Order = SIGNAL_BUY;
if (Ask < Sell_Sign) Order = SIGNAL_SELL;
//+------------------------------------------------------------------+
//| Signal End |
//+------------------------------------------------------------------+
//Buy
if (Order == SIGNAL_BUY && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Ask - StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Ask + TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, StopLossLevel, TakeProfitLevel, "MaxPower Buy Order", MagicNumber, 0, DodgerBlue);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("BUY order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Ask, Digits) + " Open Buy");
} else {
Print("Error opening BUY order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
//Sell
if (Order == SIGNAL_SELL && ((EachTickMode && !TickCheck) || (!EachTickMode && (Bars != BarCount)))) {
if(!IsTrade) {
//Check free margin
if (AccountFreeMargin() < (1000 * Lots)) {
Print("We have no money. Free Margin = ", AccountFreeMargin());
return(0);
}
if (UseStopLoss) StopLossLevel = Bid + StopLoss * Point; else StopLossLevel = 0.0;
if (UseTakeProfit) TakeProfitLevel = Bid - TakeProfit * Point; else TakeProfitLevel = 0.0;
Ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, StopLossLevel, TakeProfitLevel, "MaxPower Sell Order", MagicNumber, 0, DeepPink);
if(Ticket > 0) {
if (OrderSelect(Ticket, SELECT_BY_TICKET, MODE_TRADES)) {
Print("SELL order opened : ", OrderOpenPrice());
if (SignalMail) SendMail("[Signal Alert]", "[" + Symbol() + "] " + DoubleToStr(Bid, Digits) + " Open Sell");
} else {
Print("Error opening SELL order : ", GetLastError());
}
}
if (EachTickMode) TickCheck = True;
if (!EachTickMode) BarCount = Bars;
return(0);
}
}
if (!EachTickMode) BarCount = Bars;
return(0);
}
//+------------------------------------------------------------------+[/PHP]
......but I don't understand how to put the code below inner it.
[PHP]...
for (int i=0; i<OrdersTotal(); i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol() )
return(0);
....L'ultimo blocco di codice che ho scritto è: "Se un ordine su un SIMBOLO è già stato aperto, non aprire nuovi ordini su quel SIMBOLO".
Qualcuno può aiutarmi a integrarlo?
Grazie,
Mauro
L'EA fa solo un trade...
Ciao ragazzi, ho una domanda veloce per voi. Recentemente ho creato un EA. I parametri sono corretti e quando l'ho aggiunto al grafico, ha piazzato un acquisto appropriato e poi più tardi una vendita. Ma, la volta successiva che è arrivato un segnale di acquisto, non ha mai piazzato un trade. Sembra che l'EA prenda solo il primo trade e nessuno in seguito. Qualche idea sul perché questo possa essere? Apprezzerei qualsiasi aiuto. Grazie!!!
Forse è un'idea mostrare l'ea? Così possiamo guardare il codice?