Chiedete! - pagina 129

 
forexarchitect:
ciao ragazzi

Ho una domanda... come faccio a cambiare quanto segue

extern double MaxLot = 1.50;

doppio max_lot = GetMaxLot(OP_BUY, OP_SELL);

if (max_lot >= MaxLot) lot = CalcHedgeLot(order_type);

(tipo_ordine)]: ", lotto);

if (lot == -1) return (lot);

lotto = NormalizeDouble(lotto, LotPrec);

se (lotto > MaxLot) lotto = MaxLot;

se (lotto < MinLot) lotto = MinLot;

return (lot);

}

il controllo di cui sopra per OP_BUY E OP_SELL

domanda: come faccio a cambiarlo in qualsiasi OP_BUY O qualsiasi OP_SELL

apprezzare

Devi modificare il codice della funzione GetMaxLot(), o forse puoi usare GetMaxLot(OP_BUY, OP_BUY); e GetMaxLot(OP_SELL, OP_SELL); (dipende dal codice - può fare così o no).

Ma credo che valga la pena provare

Goen

 
Goen:
E' questo che stai cercando?

-----------

int bars_count=WindowBarsPerChart();

int bar=WindowFirstVisibleBar();

-----------

Goen

Grazie, Goen .

 
Goen:
Devi modificare il codice della funzione GetMaxLot(), o forse puoi usare GetMaxLot(OP_BUY, OP_BUY); e GetMaxLot(OP_SELL, OP_SELL); (dipende dal codice - può fare così o no).

Ma credo che valga la pena provare

Vai

grazie per avermi risposto...

Cosa devo cambiare qui? Grazie per l'aiuto

doppio GetMaxLot(int type1, int type2)

{

double max_lot = 0.0;

int cnt = OrdiniTotali();

for (int i=0; i < cnt; i++)

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continua;

se (OrderSymbol() != Symbol()) continua;

se (OrderMagicNumber() != Magic) continua;

se (OrderType() != type1 && OrderType() != type2) continua;

if (max_lot == 0 || OrderLots() >= max_lot)

{

max_lot = OrderLots();

}

}

return (max_lot);

}

 

un po' in perdita qui...

 

come aggiungere l'allarme a questo indicatore?

Ho un indicatore MA crossover che funziona molto bene, ma non ha il supporto per l'allarme sonoro che mi fa perdere un sacco di scambi, puoi per favore insegnarmi come aggiungere l'allarme a questo indicatore, dato che non so nulla della cosa del meta codice....grazie...

Ecco il codice dell'indicatore insieme all'indicatore stesso, grazie...

/*[[

Nome := Croce EMA

Autore := Hapsa

Link := http://www.metaquotes.net/

Finestra separata := No

Finestra separata := No

Primo colore := Rosso

Primo tipo di disegno := Simbolo

Primo simbolo := 108

Usa i secondi dati := Sì

Secondo colore := Verde oliva scuro

Secondo tipo di disegno := Simbolo

Secondo simbolo := 108

]]*/

#proprietà copyright "Hapsa"

#proprietà link ""

extern int SlowPeriod=20;

extern int FastPeriod=5;

#proprietà indicator_buffers 3

#proprietà indicator_chart_window

#proprietà indicator_color1 Rosso

#proprietà indicator_color2 Verde

doppio L20[];

doppio L50[];

doppio shift=0,val1=0,val2=0;

int init()

{

IndicatorBuffers(3);

SetIndexStyle(0,DRAW_ARROW);

SetIndexStyle(1,DRAW_ARROW);

SetIndexArrow(0, 108);

SetIndexArrow(1, 108);

SetIndexBuffer(0,L20);

SetIndexBuffer(1,L50);

//---- indicatori

//----

return(0);

}

int start()

{

int counted_bars=IndicatorCounted();

//----

int i = Bars - counted_bars - 1;

mentre (i>=0)

{

val1=0;

val2=0;

double iMaSlowPrevious = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);

double iMaSlowCurrent = iMA(NULL,0,SlowPeriod,0,MODE_EMA, PRICE_CLOSE, i);

double iMaFastPrevious = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i-1);

double iMaFastCurrent = iMA(NULL,0,FastPeriod,0,MODE_EMA, PRICE_CLOSE, i);

se (iMaFastPreviousiMaSlowCurrent ) val1=High;

if (iMaFastPrevious>iMaSlowPrevious && iMaFastCurrent<iMaSlowCurrent ) val2=Low;

L20=val1+5*Punto;

L50=val2-5*Punto;

i--;

}

//----

return(0);

}

File:
cross.mq4  2 kb
cross.ex4  3 kb
 
forexarchitect:
grazie per aver risposto...

Cosa devo cambiare qui? Grazie per l'aiuto

doppio GetMaxLot(int type1, int type2)

{

double max_lot = 0.0;

int cnt = OrdiniTotali();

for (int i=0; i < cnt; i++)

{

if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continua;

se (OrderSymbol() != Symbol()) continua;

se (OrderMagicNumber() != Magic) continua;

se (OrderType() != type1 && OrderType() != type2) continua;

if (max_lot == 0 || OrderLots() >= max_lot)

{

max_lot = OrderLots();

}

}

return (max_lot);

}

Sì, puoi usare GetMaxLot(OP_BUY,OP_BUY); per ottenere il maxlot solo per gli acquisti aperti, e GetMaxLot(OP_SELL,OP_SELL); per ottenere il maxlot solo per le vendite aperte.

Potete semplificare questo codice "if (max_lot == 0 || OrderLots() >= max_lot)" con "if (OrderLots() > max_lot)"

Perché se max_lot = 0 automaticamente sarà inferiore a qualsiasi lotto delle operazioni aperte. E il segno ">=" cambia con ">" perché se ha lo stesso valore, non c'è bisogno di aggiornare max_lot con lo stesso valore, sforzo inutile. Si aggiornerà solo se il nuovo valore è maggiore di max_lot.

Cambiando quel codice, potrebbe rendere il vostro processo più veloce.

Goen

 

problema di stoploss

Salve,

Sono nuovo di tutto questo forex/metatrading ma sto cercando di capire come funziona il tutto.

Ora sto cercando di scrivere un EA e ho paura che mi manchi qualcosa di fondamentale.

Se nel mio codice sostituisco

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",MAGIC,0,Red);

con

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",MAGIC,0,Red);

E testando questa nuova versione nel tester della strategia, ottengo MENO ordini. Come può l'aggiunta di uno stoploss diminuire il numero di ordini inseriti? Posso immaginare che il numero aumenti nel caso in cui l'aggiunta di un ordine stop faccia uscire gli ordini più presto e quindi i nuovi ordini possano essere aggiunti più rapidamente, ma MENO ordini...?

Qualche idea?

Grazie

 
azertyken2:
Ciao,

Sono nuovo in tutto questo forex/metatrading ma sto cercando di capire come funziona il tutto.

Ora sto cercando di scrivere un EA e ho paura che mi manchi qualcosa di fondamentale.

Se nel mio codice sostituisco

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,0,0,"",ordercount,0,Red);

con

OrderSend(Symbol(),OP_SELL,0.1,Bid,3,Ask+Point*10,0,"",ordercount,0,Red);

E testando questa nuova versione nel tester della strategia, ottengo MENO ordini. Come può l'aggiunta di uno stoploss diminuire il numero di ordini inseriti? Posso immaginare che il numero aumenti nel caso in cui l'aggiunta di un ordine stop faccia uscire gli ordini più presto e quindi nuovi ordini possano essere aggiunti più rapidamente, ma MENO ordini...?

Qualche idea?

Grazie

10 pips potrebbero essere troppo vicini al limite di stop imposto dal broker (varia da broker a broker) - cioè se è un minimo di 10 pips e il prezzo oscilla di 1 pip all'interno di questo mentre l'ordine viene piazzato, l'ordine verrà rifiutato...

 

Omelette, hai ragione, l'aumento dello stoploss ha risolto il problema, grazie! :-)

 
#property indicator_color1 Magenta

#property indicator_color2 Yellow

extern bool TrendDirectionUp=true;

string Color1;

string Color2;

int init() {

if(TrendDirectionUp==true)//Conditionj 1

{

Color1=Yellow;

Color2=CLR_NONE;

}

if(TrendDirectionUp==false)//Condition2

{

Color1=CLR_NONE;

Color2=Magenta;

}

SetIndexStyle(0,DRAW_ARROW,0,star_size,Color1);

SetIndexStyle(1,DRAW_ARROW,0,star_size,Color2);

SetIndexArrow(0,172);//333

SetIndexArrow(1,172);//334

SetIndexBuffer(0,b1);

SetIndexBuffer(1,b2);

return(0);

}

In questo momento, entrambi i colori 1 e 2 mostrano 'nero' sul grafico!

Qualche esperto Guru può aiutarmi a risolvere questo problema?

Grazie in anticipo!