Aiuto per la codifica - pagina 95

 

Cari tutti, questo è il mio primo passo in un post sul forex, quindi per favore cercate di essere gentili se dico qualcosa di troppo sbagliato...

Questo sito è uno dei posti migliori per imparare il forex e sto leggendo da un paio d'anni. Vorrei porre l'attenzione su questo link:codebase.mql4.com/5900

L'ea è RUBBERBANDS_2 EA dell'autore: StJojo (2009.08.17 11:30). E' abbastanza interessante il modo in cui funziona, (dopo un minimo lavoro di ottimizzazione) su qualsiasi coppia di valute. Fondamentalmente potrebbe essere usato come una (permettetemi l'espressione...) startegia automatica semiautomatica. Infatti, poiché funziona molto bene sul mercato laterale, ho scoperto che potrebbe essere attivato in intervalli di notizie quando le probabilità di mercato laterale sono più alte. Siccome penso che il codice sia reso opensource dall'autore, mi piacerebbe, se a qualcuno piace l'idea, aggiungere la variabile per farlo funzionare da una certa ora/minuti a "quiesce" ad una certa ora/minuti (cioè: quiesce questo EA quando finisce la sessione corrente). Questo faciliterebbe molto di più la "preprogrammazione" del tempo di lavoro dell'ea per il giorno dopo, relativamente alle prossime News. Ho allegato il file come da link sopra.

Ho allegato anche gli indicatori "forex_ news_market_clock" che è quello che uso per leggere le novità sul grafico.

Grazie a tutti per il lavoro fatto in questo sito (e in tutta la rete... ovviamente). Spero che qualcuno mi aiuti, molte grazie.

 
vitoingletto:
Cari tutti, questo è il mio primo passo in un post sul forex, quindi per favore cercate di essere gentili se dico qualcosa di troppo sbagliato...

Questo sito è uno dei posti migliori per imparare il forex e lo sto leggendo da un paio d'anni. Vorrei porre l'attenzione su questo link:codebase.mql4.com/5900

L'ea è RUBBERBANDS_2 EA dell'autore: StJojo (2009.08.17 11:30). E' abbastanza interessante il modo in cui funziona, (dopo un minimo lavoro di ottimizzazione) su qualsiasi coppia di valute. Fondamentalmente potrebbe essere usato come una (permettetemi l'espressione...) startegia automatica semiautomatica. Infatti, poiché funziona molto bene sul mercato laterale, ho scoperto che potrebbe essere attivato in intervalli di notizie quando le probabilità di mercato laterale sono più alte. Siccome penso che il codice sia reso opensource dall'autore, mi piacerebbe, se a qualcuno piace l'idea, aggiungere la variabile per farlo funzionare da una certa ora/minuti a "quiesce" ad una certa ora/minuti (cioè: quiesce questo EA quando finisce la sessione corrente). Questo faciliterebbe molto di più la "preprogrammazione" del tempo di lavoro dell'ea per il giorno dopo, relativamente alle prossime News. Ho allegato il file come da link sopra.

Ho allegato anche gli indicatori "forex_news_market_clock" che è quello che uso per leggere le novità sul grafico.

Grazie a tutti per il lavoro fatto in questo sito (e in tutta la rete... ovviamente). Spero che qualcuno mi aiuti, molte grazie.

Ciao Vitoingletto,

Grazie per l'EA, ho aggiunto un filtro temporale e una funzione di chiusura il venerdì e anche un numero magico per aiutare l'EA a differenziare un po' gli ordini.

 

ciao ...

modi chiedo se si può mettere nel codice la funzione che esporta i dati direttamente tutti in una volta (m1, m5, m30, m15, h1, h4, d1 ...) ovviamente in file separati. Attualmente la e devi avviarla tante volte ... (per ogni tmeframe).

Avrei un notevole risparmio di tempo per esportare i dati.

È possibile inserire questa funzione nel vostro codice? un'idea può essere simile a questo script allegato(Period_converter_auto - MQL4 Code Base), che trasforma i dati tutti in una volta.Si può giocare in esperto?

grazie

 
dr.feelgood1989:
ciao ...

modi chiedo se si può mettere nel codice la funzione che esporta i dati direttamente tutti in una volta (m1, m5, m30, m15, h1, h4, d1 ...) ovviamente in file separati. Attualmente la e devi avviarla tante volte ... (per ogni tmeframe).

Avrei un notevole risparmio di tempo per esportare i dati.

Puoi inserire questa funzione nel tuo codice? un'idea può essere simile a questo script allegato(Period_converter_auto - MQL4 Code Base), che trasforma i dati tutti in una sola volta.Si può giocare nell'esperto?

grazie

dr.feelgood1989

Usa questo e allegalo semplicemente a tutti i time frame che vuoi far esportare. Farà un file chiamato symbol+"_"+time frame per ogni time frame che guardate. Puoi usarlo come modello per le tue esportazioni di indicatori personalizzati

 

grazie per la risposta .. Mladen

in realtà ero già così. Lo script (esempio di riferimento) che ho postato ottiene il lavoro una volta per tutti i timeframe (conversione).

l'esperto da lei modificato "riscrive" un singolo timeframe (per distinguere il file) quando viene utilizzato per singolo tempo

Mi chiedevo se avviando un singolo esperto vengono riscritti tutti gli altri timeframe (esempio:ea1m avviato sul tester e anche i file vengono scritti in altri timeframe m5, m15 ...)

grazie : )

 
mladen:
pgtips,

Che aspetto ha il tuo ciclo principale (o posta un codice in cui stai cercando di farlo)

PS: Devi cambiare l'ultimo parametro di iOpen() e iClose() per puntare al giorno corretto per una barra scelta

Ciao Mladen,

Sono rimasto abbastanza bloccato con questo, quindi ho cercato di provare un altro modo di fare lo stesso.

Ho trovato questo indicatore allegato dopo diversi giorni di ricerca che è vicino a quello di cui ho bisogno, ma è stato reso diverso.

Visualizza la candela corrente (dal quotidiano) ma non c'è una variabile iopen/close da selezionare per visualizzare un giorno indietro, cioè lo shift -1

Potreste dirmi come potrei fare in modo che questo abbia uno spostamento di x giorni indietro. ? Quindi, se la barra del giorno precedente era rossa, allora rendo la casella corrente rossa, se precedente verde, allora la casella corrente verde.

Posso sovrapporre l'indicatore di breakout box a questo, ma sarebbe davvero bello se questo potesse essere limitato dal tempo.

Capisco che siete occupati e date il vostro tempo gratuitamente ma se poteste aiutarmi lo apprezzerei molto.

Molte grazie

PG

File:
 

Ciao, sono un po' in ritardo,

Sto ancora lavorando a questo.

Nell'allegato sono riuscito ad usare l'indicatore pivot per farmi cambiare colore al giorno in base alla chiusura del giorno precedente, cioè giorno precedente verde o rosso.

Ora ho bisogno di fare rettangolo e riempirlo in base al periodo che voglio vederlo visualizzato tempo di 11.00 am a dire 17.00pm, l'alto e basso essendo qualunque cosa risulta essere durante quel tempo.

Ho impostato //

ObjectCreate("Rectangle", OBJ_RECTANGLE, 0, Time[periodBegin], Low[1], Time[periodEnd], High[1]);

ma ho ottenuto un errore, non viene visualizzato nulla.

extern int periodBegin = 11; //11:00 am

extern int periodEnd = 17; // 17:00 pm

Ho impostato extern bool Plot_rectangles=true; quindi 'dovrebbe' tracciare qualcosa per ogni giorno.

Cosa mi manca qui?

Grazie a voi

PG

 

Penso di conoscere la risposta alla mia domanda, ma... voglio ancora confermare

a. l'indicatore è un time frame superiore

b. è il time frame corrente.

come vorrei usare a. come tendenza basata b. come entrata può questo essere fatto?

 
mtuppers:
Penso di conoscere la risposta alla mia domanda, ma... voglio ancora conferma

a. l'indicatore è il time frame superiore

b. è il time frame corrente.

come vorrei usare a come trend basato b. come entrata può essere fatto?

Sì, è possibile.

Basta chiamare a con time frame più alto nel parametro timeFrame e questo è tutto. Per evitare le trappole del backtesting degli EA multi time frame, usa la barra chiusa sull'indicatore multi time frame (indice 1 invece di 0) altrimenti otterrai un risultato irrealisticamente buono a causa di come metatrader chiama altri time frame diversi da quello corrente nel backtesting

 

ciao,

spero che possiate aiutarmi con questo. Voglio che i punti (frecce; aqua&giallo) dell'indi nella finestra due si mostrino come punti (frecce) sulla chiusura (o alto per segnale di acquisto/basso per segnale di vendita) nella finestra uno (la finestra principale del grafico). Ho provato per ore, ma non sarò mai un codificatore ;-)

#proprietà indicator_separate_window

#proprietà indicatore_minimo -100.0

#proprietà indicator_maximum 100.0

#proprietà indicator_levelcolor SlateGray

#proprietà indicator_levelstyle 1

#proprietà indicator_buffers 8

#proprietà indicator_color1 Lime

#proprietà indicator_color2 Red

#proprietà indicator_color3 Nero

#proprietà indicator_color4 Nero

#proprietà indicatore_colore5 Nero

#proprietà indicatore_colore6 Nero

#proprietà indicator_color7 Aqua

#proprietà indicatore_colore8 Giallo

#proprietà indicator_width1 1

#property indicator_level1 60.0

#proprietà indicator_width2 1

#proprietà indicator_level2 50.0

#proprietà indicator_level3 -50.0

#proprietà indicator_level4 -60.0

extern int WavePeriod = 10;

extern int AvgPeriod = 21;;

extern bool SoundAlert = FALSE;

extern bool EmailAlert = FALSE;

double g_ibuf_92[];

double g_ibuf_96[]

double g_ibuf_100[]

double g_ibuf_104[]

double g_ibuf_108[];

double g_ibuf_112[];

double g_ibuf_116[];

doppio g_ibuf_120[];

int gi_124 = -50;

int gi_128 = 50;

int gi_132;

int init() {

IndicatoreNomeCorto("TrendWave");

SetIndexBuffer(0, g_ibuf_100);

SetIndexLabel(0, "ESA");

SetIndexStyle(0, DRAW_NONE);

SetIndexDrawBegin(0, 0);

SetIndexBuffer(1, g_ibuf_112);

SetIndexLabel(1, "Valori DD");

SetIndexStyle(1, DRAW_NONE);

SetIndexDrawBegin(1, 0);

SetIndexBuffer(2, g_ibuf_104);

SetIndexLabel(2, "DD");

SetIndexStyle(2, DRAW_NONE);

SetIndexDrawBegin(2, 0);

SetIndexBuffer(3, g_ibuf_108);

SetIndexLabel(3, "CI");

SetIndexStyle(3, DRAW_NONE);

SetIndexDrawBegin(3, 0);

SetIndexBuffer(4, g_ibuf_92);

SetIndexLabel(4, "Bull");

SetIndexStyle(4, DRAW_LINE, STYLE_SOLID, 1, Lime);

SetIndexDrawBegin(4, 0);

SetIndexBuffer(5, g_ibuf_96);

SetIndexLabel(5, "Bear");

SetIndexStyle(5, DRAW_LINE, STYLE_SOLID, 1, Red);

SetIndexDrawBegin(5, 0);

SetIndexBuffer(6, g_ibuf_116);

SetIndexLabel(6, "Buy Dot");

SetIndexStyle(6, DRAW_ARROW, STYLE_SOLID, 2, Aqua);

SetIndexArrow(6, 108);

SetIndexDrawBegin(6, 0);

SetIndexBuffer(7, g_ibuf_120);

SetIndexLabel(7, "Sell Dot");

SetIndexStyle(7, DRAW_ARROW, STYLE_SOLID, 2, Yellow);

SetIndexArrow(7, 108);

SetIndexDrawBegin(7, 0);

ArrayResize(g_ibuf_100, Bars);

ArrayResize(g_ibuf_112, Bars);

ArrayResize(g_ibuf_104, Bars);

ArrayResize(g_ibuf_108, Bars);

ArrayResize(g_ibuf_92, Bars);

ArrayResize(g_ibuf_96, Bars);

ArrayResize(g_ibuf_116, Bars);

ArrayResize(g_ibuf_120, Bars);

ritorno (0);

}

int start() {

double l_ima_on_arr_0;

int li_12 = IndicatorCounted();

se (li_12 < 0) ritorna (-1);

se (li_12 > 0) li_12--;

int li_8 = Barre - li_12;

for (int li_16 = li_8; li_16 > 0; li_16--) {

g_ibuf_100[li_16] = iMA(NULL, 0, WavePeriod, 0, MODE_EMA, PRICE_TYPICAL, li_16);

ArraySetAsSeries(g_ibuf_100, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

g_ibuf_112[li_16] = MathAbs((iHigh(NULL, 0, li_16) + iClose(NULL, 0, li_16) + iLow(NULL, 0, li_16)) / 3.0 - g_ibuf_100[li_16]);

ArraySetAsSeries(g_ibuf_112, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_112, 0, WavePeriod, 0, MODE_EMA, li_16);

g_ibuf_104[li_16] = l_ima_on_arr_0;

ArraySetAsSeries(g_ibuf_104, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

if (g_ibuf_104[li_16] > 0.0) g_ibuf_108[li_16] = ((iHigh(NULL, 0, li_16) + iClose(NULL, 0, li_16) + iLow(NULL, 0, li_16)) / 3.0 - g_ibuf_100[li_16]) / (0,015 * g_ibuf_104[li_16]);

else g_ibuf_108[li_16] = 0;

ArraySetAsSeries(g_ibuf_108, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_108, 0, AvgPeriod, 0, MODE_EMA, li_16);

g_ibuf_92[li_16] = l_ima_on_arr_0;

ArraySetAsSeries(g_ibuf_92, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

l_ima_on_arr_0 = iMAOnArray(g_ibuf_92, 0, 4, 0, MODE_SMA, li_16);

g_ibuf_96[li_16] = l_ima_on_arr_0;

ArraySetAsSeries(g_ibuf_96, TRUE);

}

for (li_16 = li_8; li_16 > 0; li_16--) {

if (g_ibuf_92[li_16] >= g_ibuf_96[li_16] && g_ibuf_92[li_16 + 1] <= g_ibuf_96[li_16 + 1] && g_ibuf_92[li_16] < gi_124) {

g_ibuf_116[li_16] = g_ibuf_92[li_16];

SendAlert("compra");

} else g_ibuf_116[li_16] = -1000;

if (g_ibuf_92[li_16] = g_ibuf_96[li_16 + 1] && g_ibuf_92[li_16] > gi_128) {

g_ibuf_120[li_16] = g_ibuf_96[li_16];

SendAlert("sell");

} else g_ibuf_120[li_16] = -1000;

}

return (0);

}

void SendAlert(string as_0) {

if (Time[0] != gi_132) {

if (SoundAlert) {

se (as_0 == "buy") Alert(Symbol() + " => " + TimeToStr(TimeCurrent()) + " comprare");

if (as_0 == "sell") Alert(Symbol() + " => " + TimeToStr(TimeCurrent()) + " vendere");

}

se (EmailAlert) {

if (as_0 == "buy") SendMail("TrendWave Alert", Symbol() + " => " + TimeToStr(TimeCurrent()) + " comprare");

if (as_0 == "sell") SendMail("TrendWave Alert", Symbol() + " => " + TimeToStr(TimeCurrent()) + " vendere");

}

gi_132 = Time[0];

}

}