Chiedete! - pagina 151

 

MetaTrader e libro degli ordini

Ok, devo dire che le variabili predefinite "Ask" e "Bid" memorizzano gli ordini effettivamente migliori... Ma che dire degli altri livelli e lotti dell'order book? Posso comunque utilizzare questi dati nel mio codice?

Per favore aiutatemi, ho cercato molto ovunque sul web ma non ho trovato la risposta.

prota

 

Una domanda veloce...

Amico, se faccio il grassetto non ho bisogno di fare il sottolineato giusto?

if(Ask>=Line1)

{

posisi=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slipage,0,0, "OneLineEA ver 1.0",Megic,0,Green);

if(OrderSelect(posisi,SELECT_BY_TICKET)==true)

{

posisi=OrderTicket();

}

}

 

Per favore aiutatemi

Ciao codersguru

Grazie mille per voi

PER FAVORE PUOI SPIEGARE QUESTO STATUTO E IL SIGNIFICATO

for(int shift = Bars-10; shift >= 0; shift--)

{

ExtMapBuffer1[shift] = ma[shift];

ExtMapBuffer2[shift] = ma[shift];

//Stampa (ma[shift]);

se (ma[shift] > ma[shift+1])

{

ExtMapBuffer1[shift] = EMPTY_VALUE;

ExtMapBuffer2[shift+1] = ma[shift+1];

}

altrimenti se (ma[shift] < ma[shift+1])

{

ExtMapBuffer2[shift] = EMPTY_VALUE;

ExtMapBuffer1[shift+1] = ma[shift+1];

}

IN QUESTO EA

//---- impostazioni dell'indicatore

#proprietà indicator_chart_window

#proprietà indicatore_buffer 2

#proprietà indicator_color1 Lime

#proprietà indicator_color2 Red

//---- buffer

doppio ExtMapBuffer1[]

double ExtMapBuffer2[],ma[];

extern int MAType = 1;

extern int MAPeriod = 34;

extern int MAShift = 0;

extern int PriceType=0;

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

//| funzione di inizializzazione dell'indicatore personalizzato |

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

int init()

{

//---- 2 buffer aggiuntivi sono utilizzati per il conteggio.

IndicatorBuffers(5);

//---- impostazioni di disegno

SetIndexBuffer(0,ExtMapBuffer1);

SetIndexBuffer(1,ExtMapBuffer2);

SetIndexBuffer(2,ma);

SetIndexStyle(0,DRAW_LINE,0,2);

SetIndexStyle(1,DRAW_LINE,0,2);

//---- inizializzazione fatta

return(0);

}

int start()

{

for(int i = Bars-10; i >= 0; i--)

{

ma=iMA(NULL,0,MAPeriod,MAShift,MAType,PriceType,i);

}

for(int shift = Bars-10; shift >= 0; shift--)

{

ExtMapBuffer1[shift] = ma[shift];

ExtMapBuffer2[shift] = ma[shift];

//Stampa (ma[shift]);

se (ma[shift] > ma[shift+1])

{

ExtMapBuffer1[shift] = EMPTY_VALUE;

ExtMapBuffer2[shift+1] = ma[shift+1];

}

altrimenti se (ma[shift] < ma[shift+1])

{

ExtMapBuffer2[shift] = EMPTY_VALUE;

ExtMapBuffer1[shift+1] = ma[shift+1];

}

}

return(0);

}

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

grazie

 

Non è l'EA, è l'indicatore, che ti mostra i momenti in cui l'indicatore"Moving Average" sale o scende.

Il codice che ti serve calcola solo le ultime dieci barre.

Mettilo nella directory /indicators e riavvia il tuo terminale.

 

il diffrente

ciao a tutti

può aiutarmi

quali sono le differenze tra EMA5c e EMA5p

cosa significa (EMA5c>EMA10c && EMA5pEMA10c))

double EMA5c = iMA(NULL,TimeFrame,5,0,MODE_EMA,PRICE_CLOSE, 0 );

double EMA10c = iMA(NULL,TimeFrame,10,0,MODE_EMA,PRICE_CLOSE, 0);

double EMA5p = iMA(NULL,TimeFrame,5,0,MODE_EMA,PRICE_CLOSE, 1 );

double EMA10p = iMA(NULL,TimeFrame,10,0,MODE_EMA,PRICE_CLOSE,1);

 

I nomi sono solo nomi di variabili e non hanno alcun significato in quanto tali. I programmatori di solito scelgono i nomi delle variabili in modo che sia auto esplicativo del tipo di valore che si suppone debbano contenere. Guardando quei due sembra che il programmatore abbia scelto di aggiungere il suffisso c alla variabile delle barre correnti e p alla variabile delle barre precedenti.

Lux

 

Ehi amico ho una domanda, ho un indicatore che un amico mi ha dato che ho dimostrato per un paio di settimane e lo amo. Breve spiegazione, una freccia appare sui miei grafici dicendomi da che parte giocare il movimento. Lo sto usando su grafici a 30 metri, quindi non viene fuori troppo spesso. C'è un modo per fare in modo che quando la freccia appare per la posizione lunga chiuda la mia posizione corta e vada lunga, o se non c'è una posizione corta vada lunga. Anche viceversa con il segnale short?

 

Non ho visto un pulsante di modifica, quindi ecco il codice. Non sembra che sarebbe troppo difficile aggiungere solo il codice di acquisto o vendita. Questo è dal codice zigzag. Libero ind.

#property indicator_chart_window

#property indicator_buffers 1

#property indicator_color1 Red

//---- indicator parameters

extern int ExtDepth=12;

extern int ExtDeviation=5;

extern int ExtBackstep=3;

//---- indicator buffers

double ZigzagBuffer[];

double HighMapBuffer[];

double LowMapBuffer[];

int level=3; // recounting's depth

bool downloadhistory=false;

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

//| Custom indicator initialization function |

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

int init()

{

IndicatorBuffers(3);

//---- drawing settings

SetIndexStyle(0,DRAW_SECTION);

//---- indicator buffers mapping

SetIndexBuffer(0,ZigzagBuffer);

SetIndexBuffer(1,HighMapBuffer);

SetIndexBuffer(2,LowMapBuffer);

SetIndexEmptyValue(0,0.0);

//---- indicator short name

IndicatorShortName("ZigZag("+ExtDepth+","+ExtDeviation+","+ExtBackstep+")");

//---- initialization done

return(0);

}

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

//| |

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

int start()

{

int i, counted_bars = IndicatorCounted();

int limit,counterZ,whatlookfor;

int shift,back,lasthighpos,lastlowpos;

double val,res;

double curlow,curhigh,lasthigh,lastlow;

if (counted_bars==0 && downloadhistory) // history was downloaded

{

ArrayInitialize(ZigzagBuffer,0.0);

ArrayInitialize(HighMapBuffer,0.0);

ArrayInitialize(LowMapBuffer,0.0);

}

if (counted_bars==0)

{

limit=Bars-ExtDepth;

downloadhistory=true;

}

if (counted_bars>0)

{

while (counterZ<level && i<100)

{

res=ZigzagBuffer;

if (res!=0) counterZ++;

i++;

}

i--;

limit=i;

if (LowMapBuffer!=0)

{

curlow=LowMapBuffer;

whatlookfor=1;

}

else

{

curhigh=HighMapBuffer;

whatlookfor=-1;

}

for (i=limit-1;i>=0;i--)

{

ZigzagBuffer=0.0;

LowMapBuffer=0.0;

HighMapBuffer=0.0;

}

}

for(shift=limit; shift>=0; shift--)

{

val=Low;

if(val==lastlow) val=0.0;

else

{

lastlow=val;

if((Low[shift]-val)>(ExtDeviation*Point)) val=0.0;

else

{

for(back=1; back<=ExtBackstep; back++)

{

res=LowMapBuffer[shift+back];

if((res!=0)&&(res>val)) LowMapBuffer[shift+back]=0.0;

}

}

}

if (Low[shift]==val) LowMapBuffer[shift]=val; else LowMapBuffer[shift]=0.0;

//--- high

val=High;

if(val==lasthigh) val=0.0;

else

{

lasthigh=val;

if((val-High[shift])>(ExtDeviation*Point)) val=0.0;

else

{

for(back=1; back<=ExtBackstep; back++)

{

res=HighMapBuffer[shift+back];

if((res!=0)&&(res<val)) HighMapBuffer[shift+back]=0.0;

}

}

}

if (High[shift]==val) HighMapBuffer[shift]=val; else HighMapBuffer[shift]=0.0;

}

// final cutting

if (whatlookfor==0)

{

lastlow=0;

lasthigh=0;

}

else

{

lastlow=curlow;

lasthigh=curhigh;

}

for (shift=limit;shift>=0;shift--)

{

res=0.0;

switch(whatlookfor)

{

case 0: // look for peak or lawn

if (lastlow==0 && lasthigh==0)

{

if (HighMapBuffer[shift]!=0)

{

lasthigh=High[shift];

lasthighpos=shift;

whatlookfor=-1;

ZigzagBuffer[shift]=lasthigh;

res=1;

}

if (LowMapBuffer[shift]!=0)

{

lastlow=Low[shift];

lastlowpos=shift;

whatlookfor=1;

ZigzagBuffer[shift]=lastlow;

res=1;

}

}

break;

case 1: // look for peak

if (LowMapBuffer[shift]!=0.0 && LowMapBuffer[shift]<lastlow && HighMapBuffer[shift]==0.0)

{

ZigzagBuffer[lastlowpos]=0.0;

lastlowpos=shift;

lastlow=LowMapBuffer[shift];

ZigzagBuffer[shift]=lastlow;

res=1;

}

if (HighMapBuffer[shift]!=0.0 && LowMapBuffer[shift]==0.0)

{

lasthigh=HighMapBuffer[shift];

lasthighpos=shift;

ZigzagBuffer[shift]=lasthigh;

whatlookfor=-1;

res=1;

}

break;

case -1: // look for lawn

if (HighMapBuffer[shift]!=0.0 && HighMapBuffer[shift]>lasthigh && LowMapBuffer[shift]==0.0)

{

ZigzagBuffer[lasthighpos]=0.0;

lasthighpos=shift;

lasthigh=HighMapBuffer[shift];

ZigzagBuffer[shift]=lasthigh;

}

if (LowMapBuffer[shift]!=0.0 && HighMapBuffer[shift]==0.0)

{

lastlow=LowMapBuffer[shift];

lastlowpos=shift;

ZigzagBuffer[shift]=lastlow;

whatlookfor=1;

}

break;

default: return;

}

}

return(0);

}

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

domanda da principiante

ciao a tutti

è possibile cercare un indicatore personalizzato sulla candela precedente? se sì, cosa devo fare?

fondamentalmente voglio cercare il colore dell'indicatore

Grazie in anticipo

 
basalo:
ciao a tutti

è possibile cercare un indicatore personalizzato sulla candela precedente? se sì, cosa devo fare?

fondamentalmente voglio cercare il colore dell'indicatore

Grazie in anticipo

Guarda nel file di aiuto del metaeditor alla funzione iCustom.

Lux