Aiuto per la codifica - pagina 159

 
mladen:
Non cambiare quella parte di codice. Quella parte di codice sta controllando se il tuo broker è a 4 o 5 cifre. Inoltre, qui c'è un test usando 500$ come deposito iniziale (rischio 5% stop loss 20 pips, EURUSD usato per il test) e funziona anche con quel deposito iniziale

Ciao, Mladen.

Ieri ti ho chiesto la codifica dell'ordine.

Ma è troppo complesso.

Mi dispiace, perché voglio una codifica semplice.

Proprio come questa:

Saldo del conto$500

con un rischio del 5%, lotti aperti= $0.25

lotti=$500*(rischio/100)

lotti=$500*(0.05/100)

lotti=$500(0.0005)

lotti=0,25$

Mi è piaciuto questo EA che apre automaticamente un lotto di 0,25$.

E il conteggio dei lotti non si mescola con Stoploss o TProfit.

Spero che tu possa aiutarmi a risolvere questo problema.

Grazie mille.

extern double lots = 0.1;extern double stopsize = 20;

extern double profsize = 10;

extern double Risk =5;

int err;

int ticket;

double stop;

double prof;

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

double sl = stopsize*Point*MathPow(10,Digits%2);

double tp = profsize*Point*MathPow(10,Digits%2);

stop = (Ask-sl);

prof = (Ask+tp);

ticket = OrderSend(Symbol(), OP_BUY, getLots(sl,Risk), Ask, 3, 0, 0, NULL,LimeGreen);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

Comment(" ");

}

//

//

//

//

//

double getLots(double stopLoss, double risk)

{

RefreshRates();

double pPoint = MarketInfo(Symbol(),MODE_POINT);

double step = MarketInfo(Symbol(),MODE_LOTSTEP);

double minLot = MarketInfo(Symbol(),MODE_MINLOT);

double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);

double lots = minLot;

if (risk>0 && stopLoss>0)

{

lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(Symbol(),MODE_TICKVALUE)/pPoint);

}

return(MathMax(MathMin(lots,maxLot),minLot));

}
 
hock87:
Ciao, Mladen.

Ieri vi ho chiesto la codifica dell'ordine.

Ma è troppo complesso.

Mi dispiace, perché voglio una codifica semplice.

Proprio come questa:

Saldo del conto $500

con un rischio del 5%, lotti aperti= $0.25

lotti=$500*(rischio/100)

lotti=$500*(0.05/100)

lotti=$500(0.0005)

lotti=0,25$

Mi è piaciuto questo EA che apre automaticamente un lotto di 0,25$.

E il conteggio dei lotti non si mescola con Stoploss o TProfit.

Spero che tu possa aiutarmi a risolvere questo problema.

Grazie mille.

extern double lots = 0.1;extern double stopsize = 20;

extern double profsize = 10;

extern double Risk =5;

int err;

int ticket;

double stop;

double prof;

int init() { return(0); }

int deinit() { return(0); }

int start()

{

int TotalOrders = 0;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

double sl = stopsize*Point*MathPow(10,Digits%2);

double tp = profsize*Point*MathPow(10,Digits%2);

stop = (Ask-sl);

prof = (Ask+tp);

ticket = OrderSend(Symbol(), OP_BUY, getLots(sl,Risk), Ask, 3, 0, 0, NULL,LimeGreen);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

Comment(" ");

}

//

//

//

//

//

double getLots(double stopLoss, double risk)

{

RefreshRates();

double pPoint = MarketInfo(Symbol(),MODE_POINT);

double step = MarketInfo(Symbol(),MODE_LOTSTEP);

double minLot = MarketInfo(Symbol(),MODE_MINLOT);

double maxLot = MarketInfo(Symbol(),MODE_MAXLOT);

double lots = minLot;

if (risk>0 && stopLoss>0)

{

lots = AccountFreeMargin()*(risk/100.0)/(stopLoss*MarketInfo(Symbol(),MODE_TICKVALUE)/pPoint);

}

return(MathMax(MathMin(lots,maxLot),minLot));

}

garretto87

Non c'è un modo semplice (r) per calcolare la dimensione del lotto quando l'equity, lo stop loss e il rischio richiesto sono presi in considerazione. Inoltre, non puoi calcolare il rischio senza conoscere lo stop loss (pensaci: se apri un ordine, diciamo, di 1 lotto e lo chiudi dopo 1 pip o lo chiudi dopo 100 pip le perdite (e quindi il rischio che è stato preso) non saranno le stesse e non possono essere le stesse).

Se lo calcoli così (senza uno stop loss noto) allora non è il calcolo del rischio ma un semplice calcolo della dimensione del lotto (che non implica nessun tipo di calcolo del rischio)

 
mladen:
garretto87

Non c'è un modo semplice per calcolare la dimensione del lotto quando si tiene conto del capitale, dello stop loss e del rischio richiesto. Inoltre, non si può calcolare il rischio senza conoscere lo stop loss (pensateci: se aprite un ordine, diciamo, di 1 lotto e lo chiudete dopo 1 pip o lo chiudete dopo 100 pip le perdite (e quindi il rischio assunto) non saranno le stesse e non possono essere le stesse).

Se lo calcoli così (senza uno stop loss noto) allora non è il calcolo del rischio ma un semplice calcolo della dimensione del lotto (che non implica alcun tipo di calcolo del rischio)

Mladen, hai ragione.

So che non implica alcun tipo di calcolo del rischio.

e voglio solo un semplice calcolo della dimensione del lotto,

lasciate che calcoli automaticamente la dimensione del lotto con il saldo del conto in %.

lots=$500*(risk%/100)

lotti=$500*(0.05/100)

lotti=$500(0.0005)

lotti=0.25$

Mi è piaciuto questo EA che apre automaticamente un lotto di 0,25$.

E il conteggio dei lotti non si mescola con Stoploss o TProfit.

Come codificarlo?

Grazie.

 
hock87:
Mladen, hai ragione.

So che non implica alcun tipo di calcolo del rischio.

e voglio solo un semplice calcolo della dimensione del lotto,

lasciate che calcoli automaticamente la dimensione del lotto con il saldo del conto in %.

lots=$500*(risk%/100)

lotti=$500*(0.05/100)

lotti=$500(0.0005)

lotti=0.25$

Mi è piaciuto questo EA che apre automaticamente un lotto di 0,25$.

E il conteggio dei lotti non si mescola con Stoploss o TProfit.

Come codificarlo?

Grazie.

Prova il modo in cui è descritto da KimIV qui: b-Lots

 

Grazie mille a mladen, penso sia simile a quello che nella mia mente#1579, a proposito, è possibile convertire DPO in modo simile a RSI o MFI equazioni normalizzare la scala verticale?Detrended Price Oscillator - MQL4 Code Base, grazie ancora.

 
kenwa:
Grazie mille a mladen, penso sia simile a quello che nella mia mente#1579, a proposito, è possibile convertire DPO in modo simile a RSI o MFI equazioni normalizzare la scala verticale?Detrended Price Oscillator - MQL4 Code Base, grazie ancora.

kenwa

Una volta quando si dispone di un modello non difficile

Ecco un rsi di un dpo. Superiore è DPO e inferiore è l'RSI di un DPO

File:
 

Ciao mladen, ho avuto il tuo rsi di macd prima, è fatto con modi/logica simili a questi recenti force index FI e DPO?

Ho allegato le tue nuove versioni rsi fatte di recente (FI e DPO) sul mio computer, ho un problema se uso la funzione icustom per richiamare i loro valori di uscita, non è da 0 a 100 come mostrato sul grafico ma da -100 a 0 a 100, qualche commento sul perché, è che faccio riferimento al richiamo sbagliato del valore del buffer interno? grazie per i consigli.

File:
 

Ciao, Mladen.

Ho un problema,

quando il prezzo di apertura dell 'ordine di acquisto si sposta in direzione inversa e il prezzo di mercato a distanza supera i 25 punti,

si apre automaticamente un ordine di acquisto di nuovo.

Come codificare questo strategico?

Grazie.

extern double lots = 0.1;

extern double stopsize = 50;

extern double profsize = 20;

int err;

int ticket;

double stop;

double prof;

int start()

{

int TotalOrders = 0;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_Buy, 0.1, Ask, 3, 0, 0, NULL,LimeGreen);

stop=(Ask+stopsize*Point);

prof=(Ask-profsize*Point);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

// Comment("This is a test ", err, " ", stop, " ", prof);

Comment(" ");

return(0);

}
 
hock87:
Ciao, Mladen.

Ho un problema,

quando il prezzo di apertura dell'ordine di acquisto si sposta in direzione inversa e il prezzo di mercato a distanza supera i 25 punti,

si apre automaticamente un ordine di acquisto di nuovo.

Come codificare questo strategico?

Grazie.

extern double lots = 0.1;

extern double stopsize = 50;

extern double profsize = 20;

int err;

int ticket;

double stop;

double prof;

int start()

{

int TotalOrders = 0;

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

{

if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

if (OrderSymbol() == Symbol())

TotalOrders++;

}

if (TotalOrders<1)

{

ticket=OrderSend(Symbol(), OP_Buy, 0.1, Ask, 3, 0, 0, NULL,LimeGreen);

stop=(Ask+stopsize*Point);

prof=(Ask-profsize*Point);

OrderModify( ticket, OrderOpenPrice(), stop, prof, 0, Blue);

}

err=GetLastError();

// Comment("This is a test ", err, " ", stop, " ", prof);

Comment(" ");

return(0);

}

garretto87

Quel codice non si compila (sostituire OP_Buy con OP_BUY) e non vedo alcuna condizione per l'apertura di un altro ordine. Al momento stai permettendo un solo ordine (la linea "if (TotalOrders<1)") Questo dovrebbe essere il tuo punto di partenza

 

CCI fdoe hpp

Ho scaricato questo indicatore da uno dei thread ed è molto meglio degli indicatori CCI-zones o Ma-zones.

È possibile adattarlo per mostrarlo sullo schermo come un indicatore di zona?

E' impostato su CCI setting 13 ma se può essere trasformato facilmente in un indicatore di setting variabile allora sarebbe un bonus - ma una richiesta molto secondaria.

Si tratta di un indicatore Forex-TSD ma nessuna cartella mq4 era con esso.

Grazie

TEAMTRADER

File:
cci_fdoehpp.ex4  19 kb