[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 465
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
Aiutami a capire il codice. Non so come descrivere correttamente la condizione.
Ecco un pezzo dell'EA.
if(total<1)
{
while (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2) //Пока это условие выполняется открывать только селл при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)<0.7)) -какой оператор использовать и как его оформить?
{
OrderSend(Symbol(), OP_SELL, lots, NormalizeDouble(Bid, Digits), 3, /*Ask+10*Point*/0, /*Bid-10*Point*/0, "ADX sell", magic, 0, CLR_NONE);
}
while (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>=2) // Пока это условие выполняется открывать только Бай при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)<0.3)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)>0.3)) - какой оператор использовать и как его оформить?
{
OrderSend(Symbol(), OP_BUY, lots, NormalizeDouble(Ask, Digits), 3, /*Bid-10*Point*/0, /*Ask+10*Point*/0, "ADX buy", magic, 0, CLR_NONE);
}
}
}
}
Capisco che il fattore psicologico me lo impedisce... l'avidità... la paura di perdere anche 300 p... Cosa devo fare? Dimenticate che il vero conto...
E se cambiassi la mia mentalità? Non "puntare a vincere", ma "puntare a non perdere".
Aiuta a capire!
L'essenza dell'idea: mentre l'iMACD sta aumentando - manteniamo l'ACQUISTO, non appena inizia a diminuire - chiudiamo l'ACQUISTO e apriamo la VENDITA. Il confronto viene fatto utilizzando gli ultimi tre valori, escluso quello attuale.
Il codice ha un problema: apre ordini multipli a valori iMACD +-0, come vedo. Normalizedouble() non aiuta.
Ecco il codice:
Aiutami a capire il codice. Non so come descrivere correttamente la condizione.
Ecco un pezzo dell'Expert Advisor.
total=OrdersTotal();
if(total<1)
{
while (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2) //Пока это условие выполняется открывать только селл при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)>0.7)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)<0.7)) -какой оператор использовать и как его оформить?
{
OrderSend(Symbol(), OP_SELL, lots, NormalizeDouble(Bid, Digits), 3, /*Ask+10*Point*/0, /*Bid-10*Point*/0, "ADX sell", magic, 0, CLR_NONE);
}
while (d_pl_1>d_mn_1 && (d_pl_0-d_mn_0)>=2) // Пока это условие выполняется открывать только Бай при таком условии (iRSI(NULL,0,rsi_period,PRICE_CLOSE,2)<0.3)&&(iRSI(NULL,0,rsi_period,PRICE_CLOSE,0)>0.3)) - какой оператор использовать и как его оформить?
{
OrderSend(Symbol(), OP_BUY, lots, NormalizeDouble(Ask, Digits), 3, /*Bid-10*Point*/0, /*Ask+10*Point*/0, "ADX buy", magic, 0, CLR_NONE);
}
}
}
}
Non funziona così?
no attraverso se non funziona.
Dovrebbe essere, purché la condizione (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2 sia corretta, di aprire solo un ordine di vendita se iRSI(NULL,0,rsi_periodo,PRICE_CLOSE,2)>0.7 && iRSI(NULL,0,rsi_periodo,PRICE_CLOSE,0<0.7)
È lo stesso al contrario.
Può essere fatto attraverso while o bool? Sono in piena crisi di programmazione. Capisco la catena logica, ma le mie mani sono lente a convertirla in codice.
no attraverso se non funziona.
Dovrebbe essere,purché la condizione (d_mn_1>d_pl_1 && (d_mn_0-d_pl_0)>=2 sia corretta, di aprire solo un ordine di vendita a condizione che iRSI(NULL,0,rsi_periodo,PRICE_CLOSE,2)>0.7 && iRSI(NULL,0,rsi_periodo,PRICE_CLOSE,0<0.7)
È lo stesso al contrario.
Può essere fatto attraverso while o bool? Sono in piena crisi di programmazione. Capisco la catena logica, ma le mie mani sono lente a convertirla in codice.
Ciao, non voglio (e a volte lo faccio) essere preso da StopOut. Ho deciso di limitare il lotto con un valore, che non avrebbe preso StopOut nelle peggiori condizioni. Andando per tentativi ed errori per molto tempo. Forse qualcuno ha una soluzione?
Dati di ingresso:
- coppia di valute - non necessariamente EURUSD
- prezzo (prezzo di acquisto/vendita)
- StopLoss specificato in punti (si presume che lo scenario peggiore sia quello di non prendere uno StopOut anche se il livello di StopLoss viene raggiunto)
- impostare il valore del lotto
- Tutti gli altri valori devono essere ottenuti utilizzando le funzioni di MT4: Size 1 lot, leverage, cross rate.
Un codice sarebbe auspicabile.
In teoria capisco cosa mi serve: saldo meno la possibile perdita al livello StopLoss diviso per il margine. E questo valore dovrebbe essere più grande di StopOut (in termini percentuali)
Aiuta a capire!
L'essenza dell'idea: mentre l'iMACD sta aumentando - manteniamo l'ACQUISTO, non appena inizia a diminuire - chiudiamo l'ACQUISTO e apriamo la VENDITA. Il confronto viene fatto utilizzando gli ultimi tre valori, escluso quello attuale.
Il codice ha un problema: apre ordini multipli a valori iMACD +-0, come vedo. Normalizedouble() non aiuta.
Ecco il codice:
Forse era questo il problema
aperto fino all'esaurimento dei soldi? o aperto una volta per barra? o una volta per tick?
La condizione è controllata ogni nuova barra. In questo caso, il lasso di tempo è orario. Questa condizione viene controllata all'inizio di ogni ora.
Forse questo era il problema
No... ho fatto come hai suggerito tu - rimane la stessa cosa.
Inoltre, ho cambiato il codice, dividendo separatamente in blocchi di apertura e chiusura per condizioni. È tutto uguale. Non so cosa fare adesso.
Ecco uno screenshot del tester, Expert Advisor per il tester nel trailer: