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
Qualcuno può aiutare a codificare questo EA?
Salve,
Attualmente faccio trading con un EA martingala che apre al massimo 4 livelli di ordini. Ho appena pensato a una strategia di copertura che può ridurre il rischio di utilizzare questo EA. Di seguito una descrizione della mia strategia:
1. L'EA di copertura monitorerà il drawdown degli ordini di apertura. Se il totale delle perdite fluttuanti è maggiore di un importo predeterminato, farà scattare l'EA per aprire un ordine coperto in opposizione agli ordini di apertura.
2. La dimensione del lotto dell'ordine coperto è calcolata sulla base di un multiplo (l'utente può impostare il multiplo) della dimensione del lotto dell'ultimo ordine di apertura (ad esempio, se la dimensione del lotto dell'ultimo ordine di livello è 1,6 e il multiplo è impostato a 2, allora l'ordine coperto sarà aperto con dimensione del lotto a 3,2.
3. Quando l'ordine coperto è tornato al suo livello di apertura, l'ordine coperto sarà chiuso automaticamente.
4. Quando il paniere complessivo (gli ordini di apertura + l'ordine coperto) raggiunge un importo di profitto netto predeterminato, tutti gli ordini saranno chiusi.
Mi chiedo se qualche buon programmatore può codificare questo EA di copertura per me. Penso che sarà molto utile anche per altri EA martingala. Grazie mille!
Cordiali saluti,
Wallace
whoa...
Grazie ragazzi ...
che ne dite di buy stop e sell stop?
basta cambiare "BUY" laggiù?
Voglio solo 2 posizioni solo per 1 coppie, non più di quello ...
Mi dispiace, ancora newbie ...
Come codificare questo indis in EA?
Ciao, sono un nuovo studente e sono interessato ad imparare mql, qualcuno può dirmi come codificare questo in EA?
extern int Fast.MA.Period = 5;
extern int Slow.MA.Period = 34;
extern int Signal.period = 5;
//---- buffer
double Buffer1[],
Buffer2[],
b2[],
b3[];
//+------------------------------------------------------------------+
//|Funzione di inizializzazione personalizzata dell'indicatore |
//+------------------------------------------------------------------+
int init()
{
//---- indicatori
// due buffer aggiuntivi utilizzati per il conteggio
IndicatoreBuffer(4);
IndicatoreNomeCorto("MA_5_34");
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,242); // giù 226 234 242
SetIndexBuffer(0,b2);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,241); //UP 225 233 241
SetIndexBuffer(1,b3);
// Questi buffer non sono tracciati, sono solo usati per determinare le frecce
SetIndexBuffer (2,Buffer1);
SetIndexBuffer (3,Buffer2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Funzione di deinizializzazione dell'indicatore Custor
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//|Funzione di iterazione dell'indicatore personalizzata |
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars=IndicatorCounted();
doppio MA5,MA34;
int limit=Bars_contate;
Stampa(" limite di stampa = ", limite);
if(counted_bars>0) limit++; <---- qualcuno può spiegarmi cosa significa?
// Linea principale
for(i=0; i<limite; i++) <----qualcuno può spiegarmi cosa significa?
{
MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);
MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);
Buffer1=MA5-MA34;
}
// Linea del segnale
for(i=0; i<limit; i++) <----qualcuno può spiegarmi cosa significa?
{
Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);
}---- qualcuno può spiegarmi cosa significa?
// Frecce
for(i=0; i<limit; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = Alto+10*Punto;
se(Buffer1 Buffer2)
b3 = Low-10*Point; <---- qualcuno può spiegarmi cosa significa?
}
//----
return(0);
}
Grazie ragazzi =^_^=
if(counted_bars>0) limit++; <----qualcuno può spiegarmi cosa significa?
// Linea principale
for(i=0; i<limit; i++) <---- qualcuno può spiegarmi cosa significa?
// Linea del segnale
for(i=0; i<limit; i++) <----qualcuno può spiegarmi cosa significa?
{
Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);
}---- qualcuno può spiegarmi cosa significa?
// Frecce
for(i=0; i<limit; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = Alto+10*Punto;
se(Buffer1 Buffer2)
b3 = Low-10*Point; <---- qualcuno può spiegarmi cosa significa?
Grazie ragazzi =^_^=È facile.
Quando avviate il vostro indi, Bars=1000 (per esempio) e counted_bars=0. Quindi limit=1000 e il vostro indi calcola tutte le 1000 barre. Dopo questo counted_bars=1000, e ogni nuovo tick indi calcola solo l'ultima barra (zero). Quando arriva la prossima barra, limit=1 e l'indi ricalcola le ultime due barre.
b3 = Low-10*Point; - è solo una linea di 10 punti più bassa del minimo della barra.
Ciao, sono un nuovo studente e sono interessato ad imparare mql, qualcuno può dirmi come codificare questo in EA?
extern int Fast.MA.Period = 5;
extern int Slow.MA.Period = 34;
extern int Signal.period = 5;
//---- buffer
double Buffer1[],
Buffer2[],
b2[],
b3[];
//+------------------------------------------------------------------+
//|Funzione di inizializzazione personalizzata dell'indicatore |
//+------------------------------------------------------------------+
int init()
{
//---- indicatori
// due buffer aggiuntivi utilizzati per il conteggio
IndicatoreBuffer(4);
IndicatoreNomeCorto("MA_5_34");
SetIndexStyle(0,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(0,242); // giù 226 234 242
SetIndexBuffer(0,b2);
SetIndexStyle(1,DRAW_ARROW,STYLE_SOLID,3);
SetIndexArrow(1,241); //UP 225 233 241
SetIndexBuffer(1,b3);
// Questi buffer non sono tracciati, sono solo usati per determinare le frecce
SetIndexBuffer (2,Buffer1);
SetIndexBuffer (3,Buffer2);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Funzione di deinizializzazione dell'indicatore Custor
//+------------------------------------------------------------------+
int deinit()
{
//----
return(0);
}
//+------------------------------------------------------------------+
//|Funzione di iterazione dell'indicatore personalizzata |
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars=IndicatorCounted();
doppio MA5,MA34;
int limit=Bars_contate;
Stampa(" limite di stampa = ", limite);
if(counted_bars>0) limit++; <---- qualcuno può spiegarmi cosa significa?
// Linea principale
for(i=0; i<limite; i++) <---- qualcuno può spiegarmi cosa significa?
{
MA5=iMA(NULL,0,Fast.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);
MA34=iMA(NULL,0,Slow.MA.Period,0,MODE_SMA,PRICE_MEDIAN,i);
Buffer1=MA5-MA34;
}
// Linea del segnale
for(i=0; i<limit; i++) <----qualcuno può spiegarmi cosa significa?
{
Buffer2=iMAOnArray(Buffer1,Bars,Signal.period,0,MODE_LWMA,i);
}---- qualcuno può spiegarmi cosa significa?
// Frecce
for(i=0; i<limit; i++)
{
if(Buffer1 > Buffer2 && Buffer1 < Buffer2)
b2 = Alto+10*Punto;
se(Buffer1 Buffer2)
b3 = Low-10*Point; <---- qualcuno può spiegarmi cosa significa?
}
//----
return(0);
}
Grazie ragazzi =^_^=Se vuoi usare questo indicatore in un ea puoi usare la funzione icustom() per accedervi. Non hai bisogno di capire nessun codice dell'indicatore, solo i dati che sputa fuori. Almeno questo è il modo più semplice per farlo.
Se vuoi usare questo indicatore in un EA puoi usare la funzione icustom() per accedervi. Non hai davvero bisogno di capire il codice dell'indicatore, solo i dati che sputa fuori. Almeno questo è il modo più semplice per farlo.
Cioè, usare la funzione icustom() nell'EA per richiamare gli indis? Come dovrebbe essere scritta la codifica nell'EA? Può darmi qualche guida?
Molte grazie
whoa ...
grazie ragazzi...
che ne dite di buy stop e sell stop?
basta cambiare "BUY" lì?
Voglio solo 2 posizioni solo per 1 coppie, non più di quello ...
Scusate, sono ancora un principiante ...
Leggere questo
MQL4 Tutorial
Questa codifica è corretta?
extern double TakeProfit=100;
extern double Lots=1;
extern double TrailingStop=35;
extern int ShortEma = 5;
extern int LongEma = 34;
//+------------------------------------------------------------------+
//| funzione di inizializzazione esperto |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| funzione di deinizializzazione esperto |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
int Crossed (doppia linea1 , doppia linea2)
{
static int last_direction = 0;
static int current_direction = 0;
se(linea1>linea2)direzione_attuale = 1; //su
se(linea1<linea2)direzione_attuale = 2; //giù
if(current_direction != last_direction) //cambiamento
{
ultima_direzione = current_direction
return (last_direction);
}
else
{
return (0);
}
}
//+------------------------------------------------------------------+
//| funzione di avvio esperto |
//+------------------------------------------------------------------+
int start()
{
//----
int totale;
doppio shortEma, longEma;
shortEma = iCustom(NULL,0, "Test_Demo",13,0,0);
longEma = iCustom(NULL,0, "Test_Demo",54,0,0);
Print("shortEma = " + shortEma + " : longEma = " + longEma);
int isCrossed = 0;
isCrossed = Crossed (LongEma,ShortEma);
totale = OrdiniTotali();
if(totale < 1)
{
se(isCrossed == 1)
{
1=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point, "My EA",12345,0,Green);
se(1>0)
{
if(OrderSelect(1,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine BUY aperto : ",OrderOpenPrice());
}
else Print("Errore nell'apertura dell'ordine BUY: ",GetLastError());
return(0);
}
if(isCrossed == 2)
{
2=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point, "My EA",12345,0,Red);
if(2>0)
{
if(OrderSelect(2,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine SELL aperto : ",OrderOpenPrice());
}
else Print("Errore nell'apertura dell'ordine SELL: ",GetLastError());
return(0);
}
return(0);
}
}
Ho un errore che dice 1 & 2 token inaspettato, cosa significa? Può guidarmi?
Grazie
Immagino che tu abbia cancellato qualcosa e l'abbia dimenticato:
è una sciocchezza.
extern double TakeProfit=100;
extern double Lots=1;
extern double TrailingStop=35;
Ho un errore che dice 1 & 2 unexpected token, cosa significa? Può guidarmi?
GrazieCancellare 1=, e 2= prima di OrderSend(....