Come codificare? - pagina 175

 

Il tuo sistema sembra un po' folle......

extern double Lots=0.1;

extern int TP=50;

extern int SL=50;

extern int timeframe=1;

extern bool close=false;

extern int Slippage=2;

extern int Magic=46151;

int init()

{

return(0);

}

int deinit()

{

return(0);

}

datetime LastTradeTime = 0;

int start()

{

int time=60*timeframe;

if(LocalTime()-LastTradeTime > time) {

if(close==true) {

if(OrdersTotal()!=0) {

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

OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

if(OrderType()==OP_SELL && OrderMagicNumber()==Magic) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Green ); }

if(OrderType()==OP_BUY && OrderMagicNumber()==Magic) { OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, Red ); }

} } }

OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, Ask - SL * Point, Ask + TP * Point, NULL, Magic, 0, Green);

OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, Bid + SL * Point, Bid - TP * Point, NULL, Magic, 0, Red);

LastTradeTime = LocalTime(); }

return(0);

}

Se "close" è vero, chiuderà gli ordini aperti alla fine del timeframe (in questo caso 1 minuto). SL/TP=100 significa 10pips in un broker a 5 cifre.

A proposito, non sono sicuro che aprirà entrambi gli ordini immediatamente.

È possibile chiudere e aprire (o aprire 2 posizioni) allo stesso tempo?

Questo funziona bene nei backtest ovviamente, ma non so se funziona su un conto demo/live.

 

Non sono MAI riuscito a farlo funzionare con nessun broker...

ho aggiunto i ritardi e il codice di conferma per controllare se gli ordini sono stati chiusi e aperti, in caso contrario riprova.

anche allora, ancora non funziona correttamente in modo coerente

 

Questo sembra essere un problema per molte strategie. C'è qualcuno che ha trovato una soluzione per questo problema?

 

problema trailing stop

Ho delle coppie di yen che quando cerco di usare il mio trailing stop; spostano il mio prezzo a "zero" dopo essere andati in profitto. Qualcuno può dirmi perché ciò accade e come risolvere il problema? L'ordine trail funziona bene su valute a 5 cifre.

void TrailOrder(int type)

{

if(TrailingStop>0)

{

if(OrderMagicNumber() == MagicNumber)

{

se(tipo==OP_BUY)

{

if(Bid-OrderOpenPrice()>Point*TrailingStop)

{

se(OrderStopLoss()<Bid-Point*TrailingStop)

{

OrderModify(OrderTicket(),OrderOpenPrice(),Bid-(Point*TrailingStop),OrderTakeProfit(),0,Green);

}

}

}

if(type==OP_SELL)

{

if((OrderOpenPrice()-Ask)>(Point*TrailingStop))

{

se((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))

{

OrderModify(OrderTicket(),OrderOpenPrice(),Ask+(Point*TrailingStop),OrderTakeProfit(),0,Red);

}

}

}

}

}

}

 
ajk:
Ho delle coppie di yen che quando cerco di usare il mio trailing stop; spostano il mio prezzo a "zero" dopo essere andati in profitto. Qualcuno può dirmi perché ciò accade e come risolvere il problema? Il trail order funziona bene su valute a 5 cifre.

Penso (è solo la mia opinione) che sia perché hai una funzione e questa funzione non sa nulla di OrderOpenPrice(), OrderStopLoss() ecc. È meglio mettere questo codice all'interno del ciclo.

 
ajk:
Ho delle coppie di yen che quando cerco di usare il mio trailing stop; spostano il mio prezzo a "zero" dopo essere andati in profitto. Qualcuno può dirmi perché questo accade e come risolverlo? L'ordine trail funziona bene su valute a 5 cifre.

Forse un uso diligente di NormalizeDouble(...) potrebbe fare la differenza?

 

come codificare due indicatori incrociati con scale diverse

come codificare due indicatori incrociati con scale diverse?

Voglio aiuto

 

Farò qualsiasi tentativo. È strano perché il guru codificatore ha codificato l'ea e io l'ho modificato. Ho cercato tra tonnellate di ea e non ho trovato nulla.

 

qualche suggerimento su come scrivere il codice dopo il

void TrailOrder(int type)

chiamando la funzione?

Forse togliere completamente la funzione e usare la e esterna trailing ea...argh>!

 
ajk:
qualche suggerimento su come scrivere il codice dopo il

void TrailOrder(int type)

chiamare la funzione?

Forse togliere completamente la funzione e usare la e esterna trailing ea...argh>!

Se vuoi posso sistemare il tuo EA. Mandami in PM.

Motivazione: