[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 35
![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
double get_extrem(int n) {
for(int i=1;;i++) {
double ind=iCustom(Symbol(),0,"indicator_name",0,i);
if(n>1)
if(ind!=0) n--;
else
if(ind!=0) return(ind);
}
}
Se avete bisogno del numero di barra del picco, cambiate il tipo di funzione in int e invece di return(ind); scrivete return(i);
Questo è quello a cui sto pensando in questo momento. Tutte le funzioni di tipo double e int restituiscono sempre valori fissi concreti. Per esempio, 1, 0, -1 e in questo caso la condizione deve essere gestita con questa funzione in modo diverso da come ho fatto prima, per esempio
In questo caso, dobbiamo confrontare, per esempio, per 3 tribù:
È questo il modo logico di scriverlo? Forse è più ragionevole impostare il tipo bool a questa funzione? Tipo: se abbiamo trovato il terzo ginocchio, allora al prezzo (sotto o sopra l'ind) compriamo o vendiamo.
E in questo caso confrontiamo la funzione con il suo parametro n-knee con il prezzo di questo ginocchio, e poi?
Ci sto pensando in questo momento. Tutte le mie funzioni di tipo double e int restituiscono sempre valori fissi specifici. Per esempio, 1, 0, -1, ma in questo caso la condizione dovrebbe essere eseguita con questa funzione in un modo diverso da quello che ho fatto prima, come:
In questo caso, dobbiamo confrontare, per esempio, per 3 tribù:
È questo il modo logico di scriverlo? Forse è più ragionevole impostare il tipo bool a questa funzione? Tipo: se abbiamo trovato il terzo ginocchio, allora al prezzo (sotto o sopra l'ind) compriamo o vendiamo.
In questo caso, stiamo confrontando la funzione con il suo parametro n ginocchio con il prezzo in questo ginocchio, e poi?
Double ind può restituire -2, -3 e così via e anche Pi 3.14159......
E in questo caso, stiamo confrontando la funzione con i suoi n parametri al prezzo di questo ginocchio, e poi? Non è del tutto chiaro....
Ci sto pensando in questo momento. Tutte le mie funzioni di tipo double e int restituiscono sempre valori fissi specifici. Per esempio, 1, 0, -1, ma in questo caso la condizione dovrebbe essere eseguita con questa funzione in un modo diverso da quello che ho fatto prima, come:
In questo caso, dobbiamo confrontare, per esempio, per 3 tribù:
È questo il modo logico di scriverlo? Forse è più ragionevole impostare il tipo bool a questa funzione? Tipo: se abbiamo trovato il terzo ginocchio, compriamo o vendiamo a un prezzo (più basso o più alto di ind).
E in questo caso confrontiamo la funzione con il suo parametro n-knee con il prezzo di questo ginocchio, e poi?
Beh no, prova a sperimentare...... sono tutte stronzate......
Double ind può restituire -2, -3 e così via e anche Pi 3.14159......
E in questo caso, confrontiamo la funzione con i suoi n parametri con il prezzo di questo ginocchio, e poi?
Perché dovremmo farlo all'improvviso? Double ind restituirà un numero frazionario... e -2, -3 ... sono numeri interi. E da quanto ho capito,Double ind è il prezzo del ginocchio nel parametroget_extrem(int n)
Questo sito non è per il commercio... È principalmente dedicato alla programmazione MQL. Se hai prestato attenzione in molti codici avvertono anche "Non per il trading reale".
E dov'è il prof. che commercia come un prof. E se gli amministratori lo scoprissero in questo modo, penso che non si preoccuperebbero di mantenere il sito...))
Come i piselli in un muro).
Ciò di cui abbiamo bisogno è un esempio di acquisto corretto, in un qualsiasi periodo di tempo scelto a caso.
Sì, scrivono non per il vero commercio... Quindi cosa, e perché?
Perché non mostrare un esempio per un commercio reale, senza annunciare la strategia.
Oppure non c'è un esempio adeguato in linea di principio.
Buon pomeriggio. Potete dirmi come ottenere il parametro Heiken Ashi(HA) Hi-Lo (ampiezza) dall'indicatore corrispondente. Ho provato a gestire le variabili globali, ma ho difficoltà. Nel codice HA ho incorporato il seguente modo di ottenere
int start()
{
doppio haOpen, haHigh, haLow, haClose
...
GlobalVariableGet(pip);
...(questo è un codice standard con calcolo HA)
allora otteniamo i parametri delle candele Hi-Lo HA
result2=MathMin(ExtMapBuffer3[pos+1],ExtMapBuffer4[pos+1])
result22=MathMax(ExtMapBuffer3[pos+1],ExtMapBuffer4[pos+1]);
risultato3=MathMin(Low[pos+1],risultato2);
result33=MathMax(High[pos+1],result22);
result0=result33-result3; / calcolo dell'ampiezza HA
GlobalVariableSet(pip,result0);/assegnare il valore dell'ampiezza a globalVariableSet (pip,result0)
pos--;
}
//----
ritorno(0);
}
Poi inseriscoGlobalVariableGet(pip) nella formula in EA,ma qualcosa è totalmente sbagliato, cioè il valore di pip non è quello che dovrebbe essere. Per favore, ditemi cosa c'è che non va. O forse è più facile ottenere l'ampiezza HA per l'operazione EA.
È necessario che più EAs sullo stesso conto, aprano un numero limitato di ordini.
Per esempio: 10 EAs ma possono aprire solo 5 ordini, ma non più di uno per coppia di valute.
Questo è implementato come segue, ma non funziona così.
extern int МаксКолОрдеров = 5;
//+------------------------------------------------------------------+
int ПодсчетОткрОрдеров() {
int k=OrdersTotal();
if (Символ=="0") Символ=Symbol();
for (int i=МаксКолОрдеров; i<k; i++) {
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Символ || Символ=="") {
if (МагикНомер<0 || OrderMagicNumber()==МагикНомер) {
if (OrderMagicNumber()<1) return(True);
}
}
}
}
return;
}
//+------------------------------------------------------------------+
int start()
{
if(ПодсчетОткрОрдеров()==0)ПровТоргУсловий();
}
1. Mi è stato chiesto sopra sulle variabili globali, grazie. Sto leggendo la documentazione. Nella vostra versione, come si fa?
2. Voglio che l'Expert Advisor non entri più nel mercato dopo aver raggiunto un profitto, fino alla conferma manuale dell'autorizzazione al trading.
1. il livello di profitto su ogni barra è monitorato. Se supera la percentuale specificata del deposito, tutti gli affari vengono chiusi.
2. Vedi e modifica questo Expert Advisor, aggiungi filtro su magik e tutto quello che ti serve...
Aiutami a completare il codice. Ho provato a scrivere un codice che dice
-se MA50 incrocia MA200 dal basso verso l'alto e poi
-se il prezzo scende a МА50
-Due linee sono disegnate sul grafico, supporto e resistenza (disegnate per le ultime 15 barre);
È come se tutto funzionasse, ma non posso garantire che queste linee sono apparse la prima volta, poi è rimasto al suo posto, ha bisogno per l'algoritmo di trading(e continuano ad essere disegnati).
Posso legarli al tempo o alla barra?
Ecco il codice. Cosa devo aggiungere?
#property copyright "Copyright © 2012, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
bool Fact_1 = false; // Глобальная перемен для бай.
bool Fact_2 = false; // Глобальная перемен для бай
bool Fact_3 = false; // Глобальная перемен для бай
double support;
double resist;
int timeFrame = 5;
int numBars = 15;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
ObjectsDeleteAll();
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
//----
//---------------------------------------------------------------------------
if (Fact_3==true) //Если событие уже..
//..было, то выходим
return(0);
//----
//---- БЛОК ОТКРЫТИЯ BUY--------------------------------------------------------------
if (iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,2)<iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0)&&
iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,1)>=iMA(NULL,PERIOD_M5,200,0,MODE_EMA,PRICE_CLOSE,0))//если МА50 пересекает МА200 снизу вверх по M5
Fact_1 = true; // Произошло событие 1
//-
if (Fact_1 == true && Low[0]<= iMA(NULL,PERIOD_M5,50,0,MODE_EMA,PRICE_CLOSE,0))//если цена опустилась до МА50
Fact_2 = true; // Произошло событие 2
if (Fact_2 == true)
{
// Определяем линии поддержки\сопротивления
support = 10000;
resist = 0;
for(int u = 1;u<=numBars;u++)
{
if(support>iLow(Symbol(),timeFrame,u))
support = iLow(Symbol(),timeFrame,u);
if(resist<iHigh(Symbol(),timeFrame,u))
resist = iHigh(Symbol(),timeFrame,u);
}
ObjectSet("lineSupport",OBJPROP_PRICE1,support);
ObjectSet("lineResist",OBJPROP_PRICE1,resist);
}
//----
{
ObjectCreate("lineSupport",OBJ_HLINE,0,0,0);
ObjectSet("lineSupport",OBJPROP_COLOR,Blue);
ObjectCreate("lineResist",OBJ_HLINE,0,0,0);
ObjectSet("lineResist",OBJPROP_COLOR,Red);
}
//----
//что сюда добавить что бы линии появившись, оставались на месте?
//----
return(0);
}
Cosa succederà, cosa può succedere se
comprare, vendere senza specificare un margine per lo slippage. Di solito si mettono +- 2 punti.
La risposta è un requote.
E se non viene impostato alcun valore di slittamento, è garantito l'acquisto?