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
ican usare lwma così se voglio che il periodo sia 30 in scafo che mv dovrei mettere nel grafico due ma o solo uno con howmuch periodo iam non bravo a matematica e grazie molto molto uomo sul vostro sforzo
zoroxzyad
Non puoi usare solo la media mobile. È necessario utilizzare la formula dal post prima
C'è già un manuale per il nuovo metatrader 4?
O ne faranno mai uno?
C'è già un manuale per il nuovo metatrader 4? O ne faranno mai uno?
Non che io sappia. Suppongo che ce ne sarà qualcuno (ad un certo punto dello sviluppo)
Mladen, in allegato c'è un indicatore che hai modificato per visualizzare i segnali di crossover sul grafico principale.
Questo codice è della nuova versione.
arrDn[CB] = EMPTY_VALUE;
state[CB] = state[CB+1];
if (TrendBuffer[CB]>LoBuffer[CB]) state[CB] = 1;
if (TrendBuffer[CB]<LoBuffer[CB]) state[CB] = -1;
if (state[CB]!=state[CB+1])
{
if (state[CB]== 1) arrUp[CB] = Low[CB] -iATR(NULL,0,10,CB)/2.0;
if (state[CB]==-1) arrDn[CB] = High[CB]+iATR(NULL,0,10,CB)/2.0;
}C'è un modo semplice per spiegare come questo codice inserisce i segnali?
Grazie.
Mladen, in allegato c'è un indicatore che hai modificato per visualizzare i segnali di crossover sul grafico principale.
Questo codice è della nuova versione.
arrDn[CB] = EMPTY_VALUE;
state[CB] = state[CB+1];
if (TrendBuffer[CB]>LoBuffer[CB]) state[CB] = 1;
if (TrendBuffer[CB]<LoBuffer[CB]) state[CB] = -1;
if (state[CB]!=state[CB+1])
{
if (state[CB]== 1) arrUp[CB] = Low[CB] -iATR(NULL,0,10,CB)/2.0;
if (state[CB]==-1) arrDn[CB] = High[CB]+iATR(NULL,0,10,CB)/2.0;
}C'è un modo semplice per spiegare come questo codice inserisce i segnali?
Grazie.Michael
Cerca un incrocio di valori in due buffer: TrendBuffer e LoBuffer. Segna qual è lo stato attuale dei due: se TrendBuffer > LoBuffer imposta lo stato a 1 e se TrendBuffer < LoBuffer imposta lo stato a -1.
Ora, quando lo stato della barra corrente è diverso dallo stato della barra precedente, significa che c'è un incrocio. E poi disegna una freccia sul grafico
Anche insegnante fastidioso ancora una volta, si prega di mettere questo indicatore convertito in indicatori MT4, grazie!
barre di colore_hlc.mq5
Michael
Cerca un incrocio di valori in due buffer: TrendBuffer e LoBuffer. Segna qual è lo stato attuale dei due: se TrendBuffer > LoBuffer imposta lo stato a 1 e se TrendBuffer < LoBuffer imposta lo stato a -1.
Ora, quando lo stato della barra corrente è diverso da quello della barra precedente, significa che c'è un cross. E poi disegna una freccia sul graficoOk, questo spiega TrendBuffer e LoBuffer.
Ma come funzionano arrUp e arrDn?
Perché i segnali appaiono su certe candele e non su tutte.
Grazie ancora.
OK, questo spiega TrendBuffer e LoBuffer.
Ma come funzionano arrUp e arrDn?
Perché i segnali appaiono su certe candele e non su tutte le candele.
Grazie ancora.michael
immagina una sequenza come questa (1 quando TrendBuffer > LoBuffer, -1 quando TrendBuffer < LoBuffer)
11111111-1-1-1-1-1-1-1-111111111
Le frecce devono essere disegnate solo quando 1 diventa -1 o quando -1 diventa 1 (quando lo "stato" cambia). Ecco perché c'è una linea che controlla questo (questa linea: if (state[CB] !=state[CB+1]) ). Così, quando lo stato cambia, la freccia viene disegnata, altrimenti la freccia non ha bisogno di essere disegnata
Hey mladen,
spero che tu abbia tempo così vicino alla fine dell'anno.
Il codice qui sotto è in relazione con l'ultima domanda che mi è stata fatta. Scia 0.8 pips per un ordine dopo l'obiettivo di 2 pips in più.
Ma come posso cambiarlo in modo che controlli tutti gli ordini e li segua individualmente?
Grazie mille! Ottimo lavoro che fai qui.
int start()
{
//----
if (OrdersTotal() == 0) {
isStopLoss = false;
}
for(int i=0; i<=OrdersTotal(); i++) {
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
continue;
}
if(OrdersTotal() == 0) {
continue;
}
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(isStopLoss == true) {
if(OrderType() == OP_BUY) {
if(iClose(Symbol(), 0, 0) >= (OrderOpenPrice()+inProfitStopLoss*Point)) { // Zieht bei 2.0 Pips nach! - 200 = 2.0 Pips
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) >= (lastStopLoss+trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss+trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+inProfitStopLoss*Point,0,0,0);
if(OrderStopLoss() >= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
} else if(OrderType() == OP_SELL) {
if(iClose(Symbol(), 0, 0) <= (OrderOpenPrice()-inProfitStopLoss*Point)) {
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) <= (lastStopLoss-trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss-trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-inProfitStopLoss*Point,0,0,0); // 200 ursprünglich
if(OrderStopLoss() <= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
}
lastStopLoss = OrderStopLoss();
continue;
}
if(OrderType() == OP_BUY) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-initialStopLoss*Point,0,0,0);
} else if(OrderType() == OP_SELL) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+initialStopLoss*Point,0,0,0);
}
lastStopLoss = OrderStopLoss();
}
//----
return(0);
}Ciao mladen,
spero che tu abbia tempo così vicino alla fine dell'anno.
Il codice qui sotto è in relazione con l'ultima domanda che mi è stata fatta. Segue 0.8 pips per un ordine dopo l'obiettivo di 2 pips in più.
Ma come posso cambiarlo in modo che controlli tutti gli ordini e li segua individualmente?
Grazie mille! Ottimo lavoro che fai qui.
int start()
{
//----
if (OrdersTotal() == 0) {
isStopLoss = false;
}
for(int i=0; i<=OrdersTotal(); i++) {
if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) {
continue;
}
if(OrdersTotal() == 0) {
continue;
}
OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
if(isStopLoss == true) {
if(OrderType() == OP_BUY) {
if(iClose(Symbol(), 0, 0) >= (OrderOpenPrice()+inProfitStopLoss*Point)) { // Zieht bei 2.0 Pips nach! - 200 = 2.0 Pips
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) >= (lastStopLoss+trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss+trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+inProfitStopLoss*Point,0,0,0);
if(OrderStopLoss() >= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
} else if(OrderType() == OP_SELL) {
if(iClose(Symbol(), 0, 0) <= (OrderOpenPrice()-inProfitStopLoss*Point)) {
if(isTrailing == true) {
if(iClose(Symbol(), 0, 0) <= (lastStopLoss-trailingStop)) {
OrderModify(OrderTicket(), OrderOpenPrice(), (lastStopLoss-trailingStop), 0,0,0);
lastStopLoss = OrderStopLoss();
//isTrailing = true;
continue;
}
}
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-inProfitStopLoss*Point,0,0,0); // 200 ursprünglich
if(OrderStopLoss() <= OrderOpenPrice()) {
isTrailing = true;
}
lastStopLoss = OrderStopLoss();
}
}
lastStopLoss = OrderStopLoss();
continue;
}
if(OrderType() == OP_BUY) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-initialStopLoss*Point,0,0,0);
} else if(OrderType() == OP_SELL) {
isStopLoss = true;
OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()+initialStopLoss*Point,0,0,0);
}
lastStopLoss = OrderStopLoss();
}
//----
return(0);
}arroganzmaschine
Controlla il modo in cui vengono gestiti i trailing stop nell'EA da questo post: https: //www.mql5.com/en/forum/181334. Penso che ti possa aiutare dato che ha tutti gli elementi (compreso il controllo degli errori) che sono necessari per gestire le perdite di trailing stop