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
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
apprezzareDevi 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
E' questo che stai cercando?
-----------
int bars_count=WindowBarsPerChart();
int bar=WindowFirstVisibleBar();
-----------
GoenGrazie, 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
Vaigrazie 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);
}
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
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?
Grazie10 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_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!