Chiedete! - pagina 163

 
jizhong68:
Caro Guru,

Sto usando un array a due dimensioni, diciamo, ZigZag[2][100]. e voglio ordinare per la prima dimensione. Uso la seguente funzione:

ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND);

ma non sembra né ordinare per la prima dimensione, né per la seconda. c'è qualcuno che può aiutarmi?

Grazie mille

La documentazione MQL afferma che ArraySort ordina per prima dimensione, se non stai ottenendo i risultati giusti, pubblica il tuo input e output dell'array.

Scrivere una semplice funzione quicksort non richiederebbe troppo tempo. Creare un nuovo array, memorizzare i risultati ordinati, poi fare un ciclo for per cercare ZigZag e copiare la seconda dimensione. Inefficiente, probabilmente, ma fa il lavoro.

 

Ecco il codice

beckham.is.619:
La documentazione MQL afferma che ArraySort ordina per la prima dimensione, se non stai ottenendo i risultati giusti, pubblica il tuo input e output dell'array. Scrivere una semplice funzione quicksort non richiederebbe troppo tempo. Creare un nuovo array, memorizzare i risultati ordinati, poi fare un ciclo for per cercare ZigZag e copiare la seconda dimensione. Inefficiente, probabilmente, ma fa il lavoro.

Grazie per la vostra risposta.

Voglio calcolare e visualizzare le linee di supporto e resistenza in un grafico. l'algoritmo di cui è il trovare 100 ZigZag nella storia e contare il peso di ogni ZigZag. come calcolare il peso di ogni ZigZag? Per ogni ZigZag, cerco di cercare in tutta la matrice per trovare la quantità di altri ZigZag il cui valore è 5 punti vicino a questo certo ZigZag, per esempio, se un certo ZigZag è 1,5000, allora voglio trovare tutti gli altri ZigZag che la distanza di questi due ZigZag è entro 5 punti, se è così, aggiungo 1 conteggio a questo certo ZigZag, e lo faccio per tutti i 100 ZigZag.

Quando finisco questo, cerco di ordinare tutti questi ZigZag per la dimensione del contatore. come potete trovare nell'indicatore. ma ho provato molto stampando il valore prima e dopo la funzione ArraySort(0 è stato excuted. trovare nessuna differenza.

Ho postato l'indicatore per il vostro riferimento.

Grazie in anticipo.

Ecco il codice dell'indicatore:

//+------------------------------------------------------------------+

//| Rischio e supporto.mq4 ||

//| Copyright ?200 |

//+------------------------------------------------------------------+

#property copyright "Copyright ?2006, Nick Bilak"

// hacked in un canale ind. da t_david all'inizio del 2007

#proprietà indicator_chart_window

extern int Gap = 5;

extern int Depth = 24;

extern int Deviation=5;

extern int BackStep=3;

extern int BackStart=288;

int ZigN=100;

double ZigZag[2][100];

int ShowBars = 500;

int dist=24;

int init() {

return(0);

}

int start() {

int k,i,j,limite,hhb,llb;

int counted_bars=IndicatorCounted();

//---- ultima barra contata sarà ricontata

if(counted_bars>0) counted_bars--;

ShowBars=Bars-counted_bars;

TrovaZigZag();

ResistenzaSupporto();

// for(i=0;i<10;i++)

{

// ObjectDelete("P_Line");

// ObjectCreate("P_Line", OBJ_HLINE,0, CurTime(),Close[0]);

ObjectDelete("RS0");

ObjectCreate("RS0",OBJ_HLINE,0,CurTime(),ZigZag[1][0]);

ObjectDelete("RS1");

ObjectCreate("RS1",OBJ_HLINE,0,CurTime(),ZigZag[1][1]);

ObjectDelete("RS2");

ObjectCreate("RS2",OBJ_HLINE,0,CurTime(),ZigZag[1][2]);

ObjectDelete("RS3");

ObjectCreate("RS3",OBJ_HLINE,0,CurTime(),ZigZag[1][3]);

ObjectDelete("RS4");

ObjectCreate("RS4",OBJ_HLINE,0,CurTime(),ZigZag[1][4]);

ObjectDelete("RS5");

ObjectCreate("RS5",OBJ_HLINE,0,CurTime(),ZigZag[1][5]);

ObjectDelete("RS6");

ObjectCreate("RS6",OBJ_HLINE,0,CurTime(),ZigZag[1][6]);

ObjectDelete("RS7");

ObjectCreate("RS7",OBJ_HLINE,0,CurTime(),ZigZag[1][7]);

ObjectDelete("RS8");

ObjectCreate("RS8",OBJ_HLINE,0,CurTime(),ZigZag[1][8]);

ObjectDelete("RS9");

ObjectCreate("RS9",OBJ_HLINE,0,CurTime(),ZigZag[1][9]);

}

// if (ShowBars >= Bars) ShowBars = Bars;

/*

for (i=0;i<ShowBars;i++) {

b1=0;

b2=0;

b3=0;

b4=0;

b5=0;

b6=0;

b8=0;

hhb = iHighest(Symbol(),0,MODE_HIGH,dist,i-dist/2);

llb = iLowest(Symbol(),0,MODE_LOW,dist,i-dist/2);

se (i==hhb)

b3=High+SignalGap*Point;

se (i==llb)

b4=Low[llb]-SignalGap*Point;

b1=High;//+SignalGap*Point;

b2=Basso[llb];//-SignalGap*Point;

}

*/

return(0);

}

// trova il dieci ZigZag,

void FindZigZag()

{

int i=BackStart;

int ii=0;

int m=0;

int n=0;

mentre(ii<ZigN)

{

if(iCustom(NULL,0, "zigzag",Depth,Deviation,BackStep,0,i)>0.1) //1=High

{

ZigZag[0]=0;

ZigZag[1]=iCustom(NULL,0, "zigzag",Depth,Deviation,BackStep,0,i);

// Stampa("ZigZag: ",ZigZag[1]);

ii++;

}

i++;

}

}

// Trova resistenza e supporto

void ResistenzaSupporto()

{

int i,n;

for(i=0;i<ZigN;i++)

{

for(n=0;n<ZigN;n++)

{

if(MathAbs(ZigZag[1]-ZigZag[1][n])<Point*Gap)

{

ZigZag[0]++;

}

// Print(i+":ZigNumber: "+ZigZag[0]+" ZigZag: "+ZigZag[1]);

}

// Stampa("Fine");

}

ArraySort(ZigZag,WHOLE_ARRAY,0,MODE_DESCEND);

for(i=0;i<ZigN;i++)

{

// Print(i+":ZigNumber: "+ZigZag[0]+" ZigZag: "+ZigZag[1]);

}

// Stampa("Fine");

}

 

Posso farle qualche domanda per MQL4?

Ciao da Berlino,

Sono nuovo in questo forum e ho letto il corso MQL4 di Coders` guru. Grazie mille per il tuo insegnamento! Ora voglio provare qualche programma facile e ho già scritto Perché la linea MA non viene visualizzata nel mio grafico principale? Grazie per il tuo aiuto.

#proprietà indicator_chart_window

#proprietà indicator_color1 Rosso

extern int Period_MA = 21;

bool Fact_Up = true;

bool Fact_Dn = true;

int start()

{

doppio MA;

MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

se (Bid > MA && Fact_Up == true)

{

Fact_Dn = true;

Fact_Up = false;

Alert("Il prezzo è sopra la MA(",Period_MA,").");

}

if (Bid < MA && Fact_Dn == true)

{

Fact_Up = true;

Fact_Dn = false;

Alert("Il prezzo è sotto la MA(",Period_MA,").");

}

return(0);

}

 

Salve,

Sto lavorando ad un'idea per un indicatore personalizzato. Ho bisogno di sapere se questo è possibile in uno script:

MT4 può riconoscere quale candela si trova sotto il mio mouse in qualsiasi momento? Quindi voglio disegnare una linea orizzontale all'apertura o alla chiusura di una certa candela (che seleziono cliccando o passando il mouse sopra di essa), è possibile?

Non ho trovato nessuna informazione su questo.

Sarebbe di grande aiuto, grazie!

 

gestore di ordini/transazioni per gli EA

Ciao a tutti!

Qualcuno conosce una libreria MQ4 per la gestione di ordini/transazioni per gli EA? Sono interessato principalmente alle seguenti due funzionalità:

1. Posizionamento di ordini di stop virtuali : invece di usare OrderSend(...) applicato con un ordine di stop, si usa MyOrderSend(...) con gli stessi parametri e il gestore si occuperà di tutto tenendo traccia del prezzo e posizionando l'ordine a mercato quando il prezzo tocca lo stop.

Lo scopo principale è quello di superare l'inutile carico di STOPLEVEL, ma permetterà anche di avere ordini "ombra".

2. Il gestore raccoglierà lo stato e le statistiche sugli ordini in sospeso, in esecuzione e terminati. Usando queste informazioni si possono implementare fantasiose strategie MM e fantasiose strategie di stop (per esempio, il numero di volte che una posizione live è stata in-the-money può essere usato per meccanismi di conservazione del profitto o di stop).

Ho cercato in giro per un bel po', quindi non mi aspetto che esista una libreria del genere nella sua interezza, ma se avete familiarità con soluzioni parziali e frammenti di codice rilevanti, sarebbe fantastico.

Grazie,

Trendick

 

gestore di ordini/transazioni per gli EA

Ho appena scoperto che in mql5 è stato sviluppato un gestore di ordini molto bello per consentire posizioni coperte. Vedere paulsfxrandomwalk blogspot (non ancora autorizzato a postare link).

Non è completo ma è un pezzo di codice molto bello.

Non dovrebbe essere facile ma comunque possibile tradurlo in mql4, dato che bisogna declassare il codice c++ OOP all'estremamente limitato di mql4. Sembra un grande spreco

Quindi il mio appello per i vostri link è ancora attivo...

 

Linee MA sul grafico

ssh95:
Ciao da Berlino,

Sono nuovo in questo forum e ho letto il corso MQL4 di Coders` guru. Grazie mille per il tuo insegnamento! Ora voglio provare qualche programma facile e ho già scritto Perché la linea MA non viene visualizzata nel mio grafico principale? Grazie per il tuo aiuto.

#proprietà indicator_chart_window

#proprietà indicator_color1 Rosso

extern int Period_MA = 21;

bool Fact_Up = true;

bool Fact_Dn = true;

int start()

{

doppio MA;

MA=iMA(NULL,0,Period_MA,0,MODE_SMA,PRICE_CLOSE,0);

se (Bid > MA && Fact_Up == true)

{

Fact_Dn = true;

Fact_Up = false;

Alert("Il prezzo è sopra la MA(",Period_MA,").");

}

if (Bid < MA && Fact_Dn == true)

{

Fact_Up = true;

Fact_Dn = false;

Alert("Il prezzo è sotto la MA(",Period_MA,").");

}

return(0);

}

Ciao Berliner,

Sembra che le routine per disegnare le linee MA sul grafico manchino nel tuo codice sopra.

Fai una rapida ricerca su questo forum TSD per molti buoni esempi di indicatori MA che puoi guardare il codice per imparare come disegnare le linee MA sul grafico.

Buona fortuna... e continua ad imparare!

Robert

 

Problema di aggiornamento dell'indicatore MTF

Salve, ho bisogno di aiuto su questo indicatore,

Ho bisogno di aiuto per questo indicatore. La sua pendenza MTF MACD, ma ha un problema sul refresh, devo cambiare TF per correggerlo.

Ho già provato a cambiare

limit=Bars-counted_bars; a limit=Bars-counted_bars/Period();

e anche aggiungendo Refreshrates();

senza alcun risultato.

Quindi mi dispiace, devo caricare il codice in .mql, ho provato a caricarlo usando il tag php ma è troppo lungo.

Ho anche caricato l'immagine sul thread MTF

Grazie prima ragazzi.

 
codersguru:
Ciao gente,

Ho molti messaggi privati che mi chiedono aiuto per alcuni pezzi di codice.

Qui potete postare le vostre domande relative a MQL4, e farò del mio meglio per rispondere.

Codesguru,

Non ho nessuna conoscenza di programmazione. E ho bisogno che tu o chiunque altro mi aiuti a mettere l'allarme e l'allerta (come indicatore esterno) su questo indi execute_line.

Grazie in anticipo.

Saluti, Terry

File:
 

Waddah Attar scalping

Ciao!

Ho trovato un indicatore interessante che è orientato allo scalping.

Voglio fare il backtest ma non stampa nessuna barra dopo alcuni giorni.

Potete vedere cosa bisogna modificare nel codice per fargli stampare qualche migliaio di barre? Se c'è un'opzione per digitare un numero nel meta editor per favore ditemelo. Non sono riuscito a trovare qualcosa.

Grazie per il vostro tempo

Xander

waddah_attar_scalping.ex4

waddah_attar_scalping.mq4