Come codificare? - pagina 144

 

questo è sbagliato: if(totalOrders==0 && Magic==OrderMagicNumber() &&

OrderSelect(i-1 , SELECT_BY_POS,MODE_HISTORY)==true)

perché state chiamando OrderMagicNumber() prima di OrderSelect(), quindi probabilmente si riferisce alla chiamata precedente.

 
EBK:
Oh, scusa se ho espresso male la mia opinione.

Voglio codificare (ma non sono in grado di farlo) qualcosa che fermi il trading dell'EA (o parte del trading dell'EA) se l'equity è sotto un valore.

Grazie per il tuo aiuto Roger09, ma non ho bisogno di visualizzare l'equity sul grafico

Prova questo EA

CloseAllBuySell - MQL4 Code Base

Usate la sua idea e fate un codice con qualcosa come

if (AccountEquity()<YourValue) closeallorders();

 

Qualcuno potrebbe aggiungere il trailing stop EMA all'esempio di Moving Average EA

EMA trailing impostato su 1

Poi cambiate l'entrata in

Buy=Open[1]>ma && Close[1]>ma;

Sell=Open[1]<ma && Close[1]<ma;

Questo dovrebbe essere un ottimo scalper semplice.

Saluti

Beno

File:
 
 

Aggiungere all'inizio del programma

extern int pips=2;//(o il vostro numero di pips)

poi sostituire

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() ;

if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() ;[/CODE]

to

[CODE]if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice()))

sl = OrderOpenPrice() +pips*Point;

if ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice()))

sl = OrderOpenPrice() -pips*Point;
 

Qualcuno può aiutarmi a mettere un avviso in questo indicatore per quando disegna una nuova freccia?

Grazie!

File:
hilow3.mq4  2 kb
 

No, correggilo

extern int pips=2;

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

//| funzione di avvio del programma script |

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

int start()

{

//----

stringa curr = Symbol();

int ot = OrdiniTotali();

int ords[200], ordType[200], ordTicket[200]; double ordLots[200];

stringa ordComments[200];

int ix=0;

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

{

int o = OrderSelect(i, SELECT_BY_POS);

se (OrderSymbol() == Symbol())

se ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))

{

doppio sl = 0;

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice())

sl = OrderOpenPrice() +pips*Point;

se ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice())

sl = OrderOpenPrice() -pips*Point;

se (sl != 0+10)

OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

}

}

//----

return(0);

 

OK, il codice ora assomiglia a questo:

extern int pips=10;//

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

//| funzione di avvio del programma script |

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

int start()

{

//----

stringa curr = Symbol();

int ot = OrdiniTotali();

int ords[200], ordType[200], ordTicket[200]; double ordLots[200];

stringa ordComments[200];

int ix=0;

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

{

int o = OrderSelect(i, SELECT_BY_POS);

se (OrderSymbol() == Symbol())

se ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))

{

doppio sl = 0;

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice())

sl = OrderOpenPrice() +pips*Point;

se ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice())

sl = OrderOpenPrice() -pips*Point;

se (sl != 0)

OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

}

}

//----

return(0);

}

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

 

Ciao Roger09,

Molte grazie per il tuo aiuto con questo codice. Il mio codice di script ora assomiglia a questo (ho aggiunto le modifiche in rosso solo per questa risposta, il codice in MQ4 assomiglia al resto che era lì):

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

//||funzione di avvio del programma script |

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

int start()

{

//----

extern int pips=2;//

stringa curr = Symbol();

int ot = OrdiniTotali();

int ords[200], ordType[200], ordTicket[200]; double ordLots[200];

stringa ordComments[200];

int ix=0;

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

{

int o = OrderSelect(i, SELECT_BY_POS);

se (OrderSymbol() == Symbol())

se ((OrderType() == OP_BUY) || (OrderType() == OP_SELL))

{

doppio sl = 0;

if ((OrderType() == OP_BUY) && (OrderStopLoss() < OrderOpenPrice())

sl = OrderOpenPrice() +pips*Point;

se ((OrderType() == OP_SELL) && (OrderStopLoss() > OrderOpenPrice())

sl = OrderOpenPrice() -pips*Point;

se (sl != 0)

OrderModify(OrderTicket(), OrderOpenPrice(), sl, OrderTakeProfit(), 0);

}

}

//----

return(0);

Puoi farmi sapere se ho capito bene? Sto volando alla cieca qui, quindi abbi pazienza.

 

In realtà funzionerà, ma questo codice non è buono. Purtroppo non conosco i tuoi obiettivi principali e non posso consigliarti altro.

Motivazione: