Come codificare? - pagina 170

 
Roger09:
Guardate

double NormalizeDouble( double value, int digits)

Se metti digits=2, puoi vedere quello che vuoi.

Ciao,

Penso di non essere stato molto chiaro. Per esempio:

- Se il prezzo corrente è 1,3756, il codice dovrebbe restituire 56

- Se il prezzo corrente è 99.22, il codice dovrebbe restituire 22

- Se il prezzo corrente è 1,4499, il codice dovrebbe restituire 99

Fondamentalmente, sto cercando di restituire il valore delle ultime due cifre, indipendentemente dal fatto che la quotazione sia 4 decimali o 2 decimali.

NomalizeDouble arrotonda solo il prezzo al posizionamento delle cifre specificato.

Qualcuno ha qualche idea?

 
musical:
Ciao,

Credo di non essere stato molto chiaro. Per esempio:

- Se il prezzo corrente è 1,3756, il codice dovrebbe restituire 56

- Se il prezzo corrente è 99,22, il codice dovrebbe restituire 22

- Se il prezzo corrente è 1,4499, il codice dovrebbe restituire 99

Fondamentalmente, sto cercando di restituire il valore delle ultime due cifre, indipendentemente dal fatto che la quotazione sia 4 decimali o 2 decimali.

NomalizeDouble arrotonda solo il prezzo al posizionamento delle cifre specificato.

Qualcuno ha qualche idea?

ОК

double lasttwonumbers=(Bid-MathFloor(Bid/(Point*100))*Point*100)/Point;

 
1Dave7:
Come posso creare un EA che chiuderà qualsiasi ordine di ticket aperto da più EA se lo SL è di 10 pip o superiore?

Dave

<<<

Myfxidea è un servizio di charting con pattern a candela e fornisce un expert advisor per mt4

 
Roger09:
ОК double lasttwonumbers=(Bid-MathFloor(Bid/(Point*100))*Point*100)/Point;

Funziona come un incanto. Grazie per tutto il vostro aiuto

 

Aiuto con Trailling Stop / 1 Rischio o Posizione M

Ciao a tutti,

Ho provato a cercare nel forum una soluzione per il mio problema:

All'inizio del mio EA:

//---- buy conditions

if(Ask > mybuyconditions)

{

ticket=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-lowestof10bars),((BBupper-BBlower)/(Ask-lowestof10bars))*1000,"Einstieg 1",magic+1,0,Green);

}

//---- sell conditions

if(Bid < mysellconditions)

{

ticket=OrderSend(Symbol(),OP_SELL,LotsShort(),Bid,Spread,Ask+(highestof10bars-Bid),((BBupper-BBlower)/(highestof10bars-Bid))/100,"Einstieg -1",magic-1,0,Red);

}

//----[/CODE]

Stopploss: its easy 10 bars hi/lo

Takeprofit: here i write my formula for my Trailingstop, and that is:

Take the differenz of BBupper - BBlower at the order open time. Then divide by StopLoss in Pips and you have an Factor. Then take the actual BB differenz and divide it by this Faktor. NOW WE HAVE OUR VOLA BB TRAILINGSTOPP!!!!!

SO, my big problem is now to save this FAKTOR!!!! I saved it in th Takeprofit of Ordersend, it works but it is not right!!!!!

And know the 2te Question:

Position Management:

so my order is open and i have my trailing stopp that trails : So and now if the trailingstop is > orderopenprice send next ORDER!!! It's logical because so i can always sicure to risk just my 1 R Risk.

.... if Trailingstopp is > orderopenprice of secondOrder send 3te order.

HERE MY EXAMPLES:

for(int i = (OrdersTotal()-1); i >= 0; i--)

{

if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 2",magic+2,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2 && CalculateCurrentAfterOrders(Symbol()) <= 1)

{

if(OrderStopLoss()<Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() > OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,Bid-(Ask-Low),((oben-unten)/(Ask-Low))*1000,"Einstieg 3",magic+3,0,Green);

return;

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3 && CalculateCurrentAfterOrders(Symbol()) <= 2)

{

if(OrderStopLoss()< Bid-(oben-unten)/(OrderTakeProfit()/1000))

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

}

}

}

[CODE] if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+1)

{

{

OrderModify(OrderTicket(),OrderOpenPrice(),High-(oben-unten)/(OrderTakeProfit()/1000),OrderTakeProfit(),0,Indigo);

return;

}

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 1)

{

ticket1=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 2",magic+2,0,Green);

return;

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(OrderStopLoss() >= OrderOpenPrice() && CalculateCurrentOrders(Symbol()) == 2)

{

ticket2=OrderSend(Symbol(),OP_BUY,LotsLong(),Ask,Spread,0,0,"Einstieg 3",magic+3,0,Green);

return;

}

}

}

{

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+2)

{

if(CalculateCurrentOrders(Symbol()) == 0)

{

OrderClose(ticket1,OrderLots(),Ask,Spread,Red); return;

}

}

}

if(OrderType()==OP_BUY && OrderMagicNumber() == magic+3)

{

OrderClose(i,OrderLots(),Ask,Spread,Red); return;

}

Spero che qualcuno possa aiutarmi con questo problema!!!!! Grazie a tutti.

 

Aggiunta di codice Quando la posizione va contro di voi "x" pips aggiungete un lotto aggiuntivo con fixedtpsl

ciao

ho fatto molti studi e ho scoperto che potrebbe essere utile aggiungere questa funzione al mio EA

Quando la posizione va contro di voi "20" pips aggiungete un lotto addizionale "0.1" con il proprio input TP e SL

è possibile realizzarlo?

Anche questo EA è molto buono ma apre solo BUYS

forse aggiungere una logica di "vendita".

per favore aiutatemi

File:
_v1.2.mq4  6 kb
 

Ho bisogno di aiuto per un problema di programmazione

Come si può programmare Metatrader 4 per uscire dalla posizione precedente e aprire la nuova posizione sulla stessa barra se si imposta EachTickMode su false? Quando si imposta EachTickMode su True lo fa automaticamente, ma quando lo si imposta su false chiuderà la posizione precedente su una barra e poi aspetterà la barra successiva per aprire la nuova posizione. Io uso il

H4 e aspettare altre 4 ore per aprire una nuova posizione dopo che il segnale è stato dato è inaccettabile. Il mio sistema è troppo sensibile per usare EachTickMode=True. Qualsiasi aiuto che qualcuno possa darmi con questo sarebbe molto apprezzato.

 

Aiuto necessario per superare l'errore Ordersend 130

Di seguito è riportata la mia funzione di acquisto. Se imposto la variabile order_type a 1 (per ordine a mercato), funziona, quindi so che le mie funzioni stoploss e takeprofit funzionano. Il problema deve essere nella determinazione del prezzo per l'ordine op_buylimit. Sto cercando di calcolare il prezzo del mio ordine diminuendo Ask di una percentuale della lunghezza (pct_of_length) del corpo della candela (alla barra 1). Ho provato una serie di varianti di codifica (alcune includono NormalizeDouble), ma non riesco ad andare oltre l'errore 130. Qualcuno può aiutarmi? A proposito, sto usando IBFX.

Grazie in anticipo!

bool place_buy_order() {

int ticket, lunghezza_in_pips, offset_in_pips;

doppio buy_limit_price;

// pct_of_length è un intero esterno, attualmente impostato a 10

if ( order_type == 2 && pct_of_length > 0 )

{

length_in_pips = MathAbs(High[1]-Low[1]) * MathPow(10,Digits);

offset_in_pips = MathRound(lunghezza_in_pips * (pct_of_length/100));

buy_limit_price = Ask - offset_in_pips * Point;

ticket = OrderSend(Symbol(),OP_BUYLIMIT,LotSize(),buy_limit_price,0,stoploss("b",buy_limit_price),takeprofit("b",buy_limit_price),"",MAGICMA,0,Blue);

}

else

// ordine a mercato

ticket = OrderSend(Symbol(),OP_BUY,LotSize(),Ask,Slippage,stoploss("b",Ask),takeprofit("b",Ask),"",MAGICMA,0,Blu);

if ( ticket == -1 ) return(false); else return(true);

}

 

Hai provato a stampare le varie variabili, TP, SL ecc, e vedere se sono impostate correttamente? Questo potrebbe darti un indizio su dove si trova il problema.

Lux

 
stocktrader24202:
Come puoi programmare Metatrader 4 per uscire dalla posizione precedente e aprire la nuova posizione sulla stessa barra se imposti EachTickMode a false? Quando imposti EachTickMode a True lo fa automaticamente, ma quando lo imposti a false chiuderà la posizione precedente su una barra e poi aspetterà la barra successiva per aprire la nuova posizione. Io uso il timeframe H4 e aspettare altre 4 ore per aprire una nuova posizione dopo che il segnale è stato dato è inaccettabile. Il mio sistema è troppo sensibile per usare EachTickMode=True. Qualsiasi aiuto che qualcuno possa darmi con questo sarebbe molto apprezzato.

EachTickMode è una variabile che il codificatore originale dell'EA ha incluso SPECIFICAMENTE in modo da poter scegliere se aprire sulla stessa candela o aprire sulla successiva.

Sembra che l'EA stia facendo ESATTAMENTE ciò per cui è stato progettato, quindi non sono sicuro di quale sia il tuo problema.

Dici che funziona come vuoi quando imposti la variabile a true, quindi qual è il problema? Basta impostare la variabile su true.

Lux