Con il codice di cui sopra, si crea una nuova variabile per memorizzare il numero del biglietto, poi si può selezionare l'ordine per il suo numero di biglietto
Con il codice di cui sopra, si crea una nuova variabile per memorizzare il numero del biglietto, poi si può selezionare l'ordine per il suo numero di biglietto
Awesome!!!!!! Grazie mille per questo, dopo molte settimane ora funziona tutto, ho imparato molto, grazie a tutti!!!
Trader3000: Awesome!!!!!! Grazie mille per questo, dopo molte settimane ora funziona tutto, ho imparato molto, grazie a tutti!!!
Mi dispiace ma ho parlato troppo presto. Il Trailingstop si attiva solo a volte, quindi penso che il codice sia ancora rotto da qualche parte. Ecco l'intero EA. Qualcuno può controllare e farmi sapere se trova un errore. Grazie
#define magicNumber 12345// Kicks in when position reaches at least TrailingStop pips of profit.externstring Label_Trailingstart = "Pip threshold to activate Trailing stop";
externdouble TrailingStart = 10;
externstring Label_Trailingstop = "Pips trailing behind";
externdouble TrailingStop = 5;
//Set it to some value above 0 to activate Hedgeexterndouble Hedge = 10;
externdouble Multiplier = 3;
externstring Label_StopLoss = "Set StopLoss of original trade";
externdouble StopLoss = 11;
externstring Label_Stoploss1 = "Set Stoploss of Hedge trade";
externstring Label_Stoploss2 = "Value should be less than 'Hedge'";
externstring Label_Stoploss3 = "otherwise a second Hedge trade will open";
externdouble Stoploss = 9;
externstring Label_Percentage = "Lotsize percentage of Equity";
externdouble Percentage = 1;
externdouble Lotsize = 0.01;
int i, result, total;
double stoplevel;
int init()
{
stoplevel=(MarketInfo(Symbol(),MODE_STOPLEVEL))/10; // get broker's stoplevelif(StopLoss<=stoplevel) StopLoss=stoplevel; // we compare our StopLoss withif(Stoploss<=stoplevel) Stoploss=stoplevel; // stoplevel and adjust it when error occuredif(TrailingStop<=stoplevel) TrailingStart=stoplevel+TrailingStop; // we compared our TakeProfit// as we compared our StopLossif ((StopLoss || Stoploss || TrailingStop) < stoplevel)
{
MessageBox("Please note: If your inputs for StopLoss, Stoploss"+
"\nand/or TrailingStop are below the minimum levels"+
"\nrequired by your broker, they will automatically"+
"\nbe increased to "+StringConcatenate(stoplevel));
}
return(0);
}
int deinit()
{
return(0);
}
int start()
{
//double Lots = NormalizeDouble(AccountEquity()*Percentage*Lotsize/100, 2);int buy_ticket=0;
int sell_ticket=0;
total=0;
for(i = OrdersTotal()-1; i >= 0 ; i--)
if ( OrderSelect(i, SELECT_BY_POS)
&& OrderMagicNumber() == magicNumber
&& OrderSymbol() == Symbol())
{
total++;
if(OrderType()==OP_BUY)
buy_ticket=OrderTicket();
if(OrderType()==OP_SELL)
sell_ticket=OrderTicket();
}
if(total==0 && Close[1]>Close[2])
{
result=OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, Ask - StopLoss*Point*10, 0, "Original", magicNumber, 0, Blue);
Print("Error setting Original order: ",GetLastError());
}
if (buy_ticket>0 && OrderSelect(buy_ticket,SELECT_BY_TICKET) && OrderType() == OP_BUY)
{
if (Bid - OrderOpenPrice() > NormalizeDouble(TrailingStart *Point*10,Digits))
{
if (OrderStopLoss() < Bid - NormalizeDouble(TrailingStop *Point*10,Digits))
{
if (OrderModify(OrderTicket(), OrderOpenPrice(), Bid - NormalizeDouble(TrailingStop *Point*10,Digits),
OrderTakeProfit(), Blue))
Print("Error setting Buy trailing stop: ",GetLastError());
}
}
elseif (OrderOpenPrice() > Bid + NormalizeDouble(Hedge*Point*10,Digits))
if(total == 1)
{
result=OrderSend(Symbol(), OP_SELL, NormalizeDouble(OrderLots() * Multiplier, 2), Bid, 3,
Bid + Stoploss*Point*10, 0, "Hedge", magicNumber, 0, Blue);
Print("Error setting Sell Hedge: ", GetLastError());
}
}
elseif (sell_ticket>0 && OrderSelect(buy_ticket,SELECT_BY_TICKET) && OrderType() == OP_SELL)
{
if (OrderOpenPrice() - Ask > NormalizeDouble(TrailingStart *Point*10,Digits))
{
if (OrderStopLoss() > Ask + NormalizeDouble(TrailingStop *Point*10,Digits))
{
if (OrderModify(OrderTicket(), OrderOpenPrice(), Ask + NormalizeDouble(TrailingStop *Point*10,Digits),
OrderTakeProfit(), Red))
Print("Error setting Sell trailing stop: ",GetLastError());
}
}
elseif (OrderOpenPrice() < Ask - NormalizeDouble(Hedge*Point*10,Digits))
if(total == 1)
{
result=OrderSend(Symbol(), OP_BUY, NormalizeDouble(OrderLots() * Multiplier, 2), Ask, 3,
Ask - Stoploss*Point*10, 0, "Hedge", magicNumber, 0, Red);
Print("Error setting Buy Hedge: ", GetLastError());
}
}
return(0);
}
if (buy_ticket>0 && OrderSelect(buy_ticket,SELECT_BY_TICKET) && OrderType() == OP_BUY)
{
//Code
}
elseif (sell_ticket>0 && OrderSelect(buy_ticket,SELECT_BY_TICKET) && OrderType() == OP_SELL)
{
//If there is an open buy order code here will not be executed//The else is not necessary
}
Grazie mille per avermelo fatto notare, ho corretto l'errore e ora funziona. Ho un'altra domanda: sto cercando di far apparire la casella di messaggio quando il mio stoploss è inferiore allo STOP_LEVEL del broker, ma appare anche quando è superiore. Ho provato a metterlo nella sezione 'start' piuttosto che nella sezione 'init', ma non funziona nemmeno lì. Qualcuno può dare un'occhiata e farmi sapere cosa c'è di sbagliato. Grazie
int init()
{
stoplevel=(MarketInfo(Symbol(),MODE_STOPLEVEL))/10; // get broker's stoplevelif(StopLoss<=stoplevel) StopLoss=stoplevel; // we compare our StopLoss withif(Stoploss<=stoplevel) Stoploss=stoplevel; // stoplevel and adjust it when error occuredif(TrailingStop<=stoplevel) TrailingStart=stoplevel+TrailingStop; // we compared our TakeProfit// as we compared our StopLossif ((StopLoss || Stoploss || TrailingStop) < stoplevel)
{
MessageBox("Please note: If your inputs for StopLoss, Stoploss"+
"\nand/or TrailingStop are below the minimum levels"+
"\nrequired by your broker, they will automatically"+
"\nbe increased to "+StringConcatenate(stoplevel));
}
return(0);
}
Ciao a tutti, mi sono imbattuto di nuovo in un intoppo. È molto strano e non riesco a capire perché questo accade. Come ho detto sopra, l'EA ha funzionato bene, ma ora voglio semplicemente passare da questo
Non sto toccando nient'altro, ma dopo questo semplice cambiamento né il Trailing stop né l'hedge vengono attivati. E' strano. Il codice completo è sopra
Grazie per la tua risposta, ma non capisco. Il codice per il Trailing stop è qui
{
if (Bid - OrderOpenPrice() > NormalizeDouble(TrailingStart *Point*10,Digits))
{
if (OrderStopLoss() < Bid - NormalizeDouble(TrailingStop *Point*10,Digits))
{
if (OrderModify(OrderTicket(), OrderOpenPrice(), Bid - NormalizeDouble(TrailingStop *Point*10,Digits),
OrderTakeProfit(), Blue))
Se ho uno Stoploss, l'EA funziona e il Trailingstop e l'hedge si attivano, ma se cambio lo Stoploss a 0, non funziona nulla. Non vedo come e perché lo Stoploss dovrebbe avere qualche influenza sul Trailingstop e sull'hedge?
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.
Sì, dovete riselezionare l'ordine
Con il codice di cui sopra, si crea una nuova variabile per memorizzare il numero del biglietto, poi si può selezionare l'ordine per il suo numero di biglietto
Sì, dovete riselezionare l'ordine
Con il codice di cui sopra, si crea una nuova variabile per memorizzare il numero del biglietto, poi si può selezionare l'ordine per il suo numero di biglietto
Awesome!!!!!! Grazie mille per questo, dopo molte settimane ora funziona tutto, ho imparato molto, grazie a tutti!!!
Mi dispiace ma ho parlato troppo presto. Il Trailingstop si attiva solo a volte, quindi penso che il codice sia ancora rotto da qualche parte. Ecco l'intero EA. Qualcuno può controllare e farmi sapere se trova un errore. Grazie
,
,
Grazie mille per avermelo fatto notare, ho corretto l'errore e ora funziona. Ho un'altra domanda: sto cercando di far apparire la casella di messaggio quando il mio stoploss è inferiore allo STOP_LEVEL del broker, ma appare anche quando è superiore. Ho provato a metterlo nella sezione 'start' piuttosto che nella sezione 'init', ma non funziona nemmeno lì. Qualcuno può dare un'occhiata e farmi sapere cosa c'è di sbagliato. Grazie
if ((StopLoss || Stoploss || TrailingStop) < stoplevel)non ha senso
vuoi dire?
if ((StopLoss < stoplevel || TrailingStop) < stoplevel)non ha senso
vuoi dire?
Ciao a tutti, mi sono imbattuto di nuovo in un intoppo. È molto strano e non riesco a capire perché questo accade. Come ho detto sopra, l'EA ha funzionato bene, ma ora voglio semplicemente passare da questo
a
Non sto toccando nient'altro, ma dopo questo semplice cambiamento né il Trailing stop né l'hedge vengono attivati. E' strano. Il codice completo è sopra
Grazie per la tua risposta, ma non capisco. Il codice per il Trailing stop è qui
{ if (Bid - OrderOpenPrice() > NormalizeDouble(TrailingStart *Point*10,Digits)) { if (OrderStopLoss() < Bid - NormalizeDouble(TrailingStop *Point*10,Digits)) { if (OrderModify(OrderTicket(), OrderOpenPrice(), Bid - NormalizeDouble(TrailingStop *Point*10,Digits), OrderTakeProfit(), Blue))Se ho uno Stoploss, l'EA funziona e il Trailingstop e l'hedge si attivano, ma se cambio lo Stoploss a 0, non funziona nulla. Non vedo come e perché lo Stoploss dovrebbe avere qualche influenza sul Trailingstop e sull'hedge?