Come codificare? - pagina 180

 

problema con la posizione di chiusura

......

doppia cena=0;

static int isCrossed = 0;

isCrossed = Crossed (k,d);

if(OrderSelect(ticket, SELECT_BY_POS))

{

c=OrderOpenPrice();

return(0);

}

se (isCrossed>0)

{

cena=((c-Ask)*10000);

return(0);

}

totale = OrdiniTotali();

if(totale < 1)

{

if(isCrossed == 1)

{

ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, 1000, cena,

cena , "EMA_CROSS", 12345, 0, Verde);

}

....

if(isCrossed == 2)

{

ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, 1000, cena,

cena, "EMA_CROSS", 12345, 0, Rosso);

......

in generale l'EA chiude la posizione quando l'EMA attraversa e allo stesso tempo apre un'altra posizione

le posizioni si sono aperte ma non vogliono chiudersi ;/

per favore aiutatemi

 

E' possibile chiudere una posizione e aprirne una nuova nello stesso tick?

(...)

if(OrdersTotal()!=0) {

(...)

OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Green ); }

if(OrdersTotal()==0) {

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

(...)

In questo esempio di codice, la posizione corta sarà chiusa al primo tick, ma la posizione lunga non sarà aperta istantaneamente. Ci vuole un altro tick per aprire la posizione lunga.

Grazie in anticipo :-)

 

Sì, è possibile. Basta mettere la funzione RefreshRates() tra gli operatori.

 
 
pietra`:
...... per favore aiuta

Sembra: Io sono Pietra. Qual è il mio secondo nome?

È impossibile aiutarti senza tutto il codice. Mi dispiace.

 

Bisogno di aiuto per la codifica

Qualcuno può aiutarmi sulla codifica MT4 per conoscere i prezzi massimi e minimi di apertura per gli EA? Ci sono alcune aperture da parte di un EA.

Ho trovato un codice come questo, ma è per conoscere la prima/ultima apertura della transazione.

double GetLastBuyPrice(int Magic)

{

int total=OrdersTotal()-1;

for (int cnt = totale ; cnt >=0 ; cnt--)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))

{

return(OrderOpenPrice());

}

}

return(10000);

}

Come codificare per conoscere l'apertura della transazione più alta/bassa?

 

Codice

lumanauw:
Qualcuno può aiutarmi sulla codifica MT4 per conoscere i prezzi massimi e minimi di apertura per EA? Ci sono alcune aperture da parte di un EA.

Ho trovato un codice come questo, ma è per conoscere la prima/ultima apertura della transazione.

Double opens[1000] = {0};

double maxopen = 0 ;

double minopen = 1000000 ;

// double GetLastBuyPrice(int Magic)

{

int total=OrdersTotal()-1;

for (int cnt = totale ; cnt >=0 ; cnt--)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderMagicNumber() == Magic && OrderSymbol()==Symbol() && (OrderType()==OP_BUY))

{

opens[cnt] = OrderOpenPrice() ;

}

}

for ( cnt = 0 ; cnt <= totale ; cnt ++ )

{

se ( opens[cnt] > maxopen ) maxopen = opens[cnt] ;

se ( opens[cnt] < minopen ) minopen = opens[cnt] ;

}

}

Come codificare per conoscere l'apertura della transazione più alta/più bassa?

ciao,

cambia il codice come sopra,

non è una procedura da chiamare da altri ...,

mettilo dove vuoi nel tuo codice EA.

OTR

 

Ho bisogno di aiuto per fare codice per aprire più di un ordine

Non ho avuto successo nell'aggiungere codice per aprire un secondo ordine.

Sto cercando di aprire 2 ordini basati sullo stesso segnale con diversi livelli di TP.

Di seguito il mio codice per l'apertura del primo ordine:

qualsiasi aiuto è apprezzato.

if(SlowSell<0 && FastSell<0 && PrevFastSell==0)

{

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point, "MA_Angle_Trader",MagicNumber,0,Red);

se(biglietto>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine SellStop aperto : ",OrderOpenPrice());

}

else Print("Errore nell'apertura dell'ordine SellStop: ",GetLastError());

return(0);

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,0, "MA_Angle_Trader",MagicNumber,0,Red);

se(biglietto>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine SellStop aperto : ",OrderOpenPrice());

}

else Print("Errore nell'apertura dell'ordine SellStop: ",GetLastError());

return(0);

}

 

Ciao

Ho bisogno di un semplice aiuto di codifica,

1) Coprire un trade ad un certo numero di pip

2) Poi disabilita/sospende qualsiasi ulteriore trading..........

Assicurandomi che non si copra di nuovo, dato che chiuderò manualmente il trade coperto.

 
williamcope:
Non ho avuto successo nell'aggiungere codice per aprire un secondo ordine.

Sto cercando di aprire 2 ordini basati sullo stesso segnale con diversi livelli di TP.

Di seguito il mio codice per l'apertura del primo ordine:

qualsiasi aiuto è apprezzato.

if(SlowSell<0 && FastSell<0 && PrevFastSell==0)

{

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,Bid-TakeProfit*Point, "MA_Angle_Trader",MagicNumber,0,Red);

se(biglietto>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine SellStop aperto : ",OrderOpenPrice());

}

else Print("Errore nell'apertura dell'ordine SellStop: ",GetLastError());

return(0);

ticket=OrderSend(Symbol(),OP_SELL,LotSize,Bid,Slipage,Bid+StopLoss*Point,0, "MA_Angle_Trader",MagicNumber,0,Red);

se(biglietto>0)

{

if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine SellStop aperto : ",OrderOpenPrice());

}

else Print("Errore nell'apertura dell'ordine SellStop: ",GetLastError());

return(0);

}

Sostituire il primo

return(0);

a

RefreshRates();

Motivazione: