Firebird v63G - pagina 30

 

Come potete vedere nel grafico del USDCHF dell'ultima settimana, Firebird sta facendo molto bene in un mercato con range limitato. Quando il mercato diventa trending Firebird prende spesso le decisioni sbagliate. Quindi la soluzione per questo può essere molto semplice: dobbiamo uscire non appena il marker diventa di tendenza e tornare quando il mercato in range bound viene ripristinato.

In Phoenix c'è un pezzo di codice che si occupa di questi cambiamenti. In breve, prende i massimi delle ultime 24, 12, 6 e 2 ore e può decidere quando il mercato diventa trending e quando il mercato range bound viene ripristinato.

 

Ottimo lavoro Hendrick, il tuo brainstorming sta dando i suoi frutti, non vedo l'ora di testare Phoenix quando lo rilascerai. saluti, Goldensight

Hendrick:
Qui potete vedere la differenza di comportamento tra Phoenix e Firebird per l'USDCHF quando le cose si fanno difficili:

Firebird stava piazzando 3 ACQUISTI, tutti fermi.

Phoenix sta aspettando il momento giusto, ha fatto 3 VENDITE che hanno tutte colpito il TP.

Bello?
 
MarvinSk:
Mi sto avvicinando molto ora

Ho aggiunto questo:

if ((Safe1!=1)&&(DealTime==2)) {

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

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

se (OrderSymbol()==Symbol()) {

se (OrderType()==OP_BUY) {

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);

}

if (OrderType()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);

}

}

}

}

}

In un Back Test vedo che chiude gli OpenTrades, ma ho bisogno di aggiungere la funzione STOPLOSS Lookup, perché sta chiudendo i trade che hanno GAIN POSITIVI, quando le variabili Safe1 e DealTime sono abbinate....

Quindi lo Stoploss deve essere la terza trappola... Lo inoltrerò la prossima settimana una volta che l'avrò fatto funzionare...

Ancora una volta tutti hanno l'idea di avere un certo controllo sulle transazioni aperte esistenti quando il mercato diventa volatile... Se un commercio sta per fermarsi, preferisco che si fermi a metà strada piuttosto che al 100%. Almeno quando il mercato si riprende non hai molto da recuperare...

Grazie

Ciao Marvin,

Una soluzione molto più semplice sarebbe quella di chiudere un trade aperto non appena il segnale cambia. Cosa ne pensi?

 
Hendrick:
Ciao Marvin, una soluzione molto più semplice sarebbe quella di chiudere un trade aperto non appena il segnale cambia. Cosa ne pensi?

Ehi Hendrick... Quando dici segnale intendi quando i valori Safe1 e Dealtime diventano veri?

Se è così, quello che ho visto dal backtesting, perché il mercato è chiuso in questo momento, è che anche alcuni trade positivi sono stati chiusi... Quindi il controllo STOPLOSS è la terza variabile per controllare questo

Ho del codice presentato da ELIHAYUN

Controlla questo Hendrick...

void CloseOrder(int ticket,double numLots,double close_price)

{

int CloseCnt, err;

// prova a chiudere 3 volte

CloseCnt = 0;

mentre (CloseCnt < 3)

{

se (OrderClose(ticket,numLots,close_price,Slippage,Violet))

{

CloseCnt = 3;

}

else

{

err=GetLastError();

Print(CloseCnt," Errore nella chiusura dell'ordine: (", err , ") " + ErrorDescription(err));

if (err > 0) CloseCnt++;

}

}

}

void CloseHalfSL()

{

double LosePercent = 50.0; // 50% dal S/L

for(int i=OrdiniTotali()-1;i>=0;i--) // scansiona tutti gli ordini e le posizioni...

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

se (OrderMagicNumber() != MagicNumber) continua;

se ( OrderSymbol()==Symbol() )

if (OrderProfit() < 0) // abbiamo un trade in perdita

{

double prc = Bid;

if (OrderType() == OP_SELL) prc = Ask;

double ord_prc = OrderOpenPrice();

double ord_SL = OrderStopLoss();

int SL_points = MathAbs(ord_prc - ord_SL) / Point;

int Actual_Lose = MathAbs(prc - ord_prc) / Point;

if ( (Actual_Lose * 100 / SL_points) >= LosePercent) // Troppe perdite

{

CloseOrder(OrderTicket(), OrderLots(), prc);

}

}

}

}

/// ---- Controlla se non è sicuro negoziare e poi chiama CloseHalfSL

if (NotSafeToTrade) CloseHalfSL();

 
MarvinSk:
Ci stiamo avvicinando molto ora

Ho aggiunto questo:

if ((Safe1!=1)&&(DealTime==2)) {

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

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

se (OrderSymbol()==Symbol()) {

se (OrderType()==OP_BUY) {

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);

}

if (OrderType()==OP_SELL) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);

}

}

}

}

}

In un Back Test vedo che chiude gli OpenTrades, ma ho bisogno di aggiungere la funzione STOPLOSS Lookup, perché sta chiudendo i trade che hanno GAIN POSITIVI, quando le variabili Safe1 e DealTime sono abbinate....

Quindi lo Stoploss deve essere la terza trappola... Lo inoltrerò la prossima settimana una volta che l'avrò fatto funzionare...

Ancora una volta tutti hanno l'idea di avere un certo controllo sulle transazioni aperte esistenti quando il mercato diventa volatile... Se un commercio sta per fermarsi, preferisco che si fermi a metà strada piuttosto che al 100%. Almeno quando il mercato si riprende non hai molto da recuperare...

Grazie

Questo potrebbe essere un modo per lasciare aperti gli ordini di POSITIVE GAINS. Aggiungere "&& OrderProfit()<0" nella linea if(OrderType()".

if ((Safe1!=1)&&(DealTime==2)) {

for (int i=OrdiniTotali()-1; i>=0; i--) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

se (OrderSymbol()==Symbol()) {

if (OrderType()==OP_BUY && OrderProfit()<0) {

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);

}

if (OrderType()==OP_SELL && OrderProfit()<0) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);

}

}

}

}

}

Wackena

 
Wackena:
Questo potrebbe essere un modo per lasciare aperti gli ordini con GAIN POSITIVO. Aggiungere "&& OrderProfit()<0" nella linea if(OrderType()".

se ((Safe1!=1)&&(DealTime==2)) {

for (int i=OrdiniTotali()-1; i>=0; i--) {

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

se (OrderSymbol()==Symbol()) {

if (OrderType()==OP_BUY && OrderProfit()<0) {

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);

}

if (OrderType()==OP_SELL && OrderProfit()<0) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);

}

}

}

}

}

Wackena

Wackena grazie... ma ho fatto una correzione alla nostra sintassi

doppio pBid, pAsk;

if ((Safe1!=1)&&(DealTime==2)) {

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

if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {

se (OrderSymbol()==Symbol()) {

if ((OrderType()==OP_BUY)&&(OrderProfit()<0)){

pBid=MarketInfo(OrderSymbol(), MODE_BID);

OrderClose(OrderTicket(), OrderLots(), pBid, slip, clCloseBuy);

}

if ((OrderType()==OP_SELL)&&(OrderProfit()<0)) {

pAsk=MarketInfo(OrderSymbol(), MODE_ASK);

OrderClose(OrderTicket(), OrderLots(), pAsk, slip, clCloseSell);

}

}

}

}

}

 

Ok, sono in fase di test con le aggiunte che ho fatto riguardo alla gestione dei trade aperti esistenti quando il mercato è volatile...

L'unica eccezione che ho è... Invece di TradingHour da 0 a 24

Sto negoziando questo modello:

0 - 7 EST

11 - 24 EST

Lo sto facendo perché voglio assicurarmi che l'EA non faccia esplicitamente trading durante l'apertura di NY... Ho visto troppa volatilità alle 8 -10 EST

Pubblicherò i miei risultati nel corso della settimana... Abbiamo un po' di notizie che fanno rumore questa settimana, vediamo cosa succede

 

Ho appena finito di leggere il libro "Bird Watching in Lion Country". Non è male. L'ultimo capitolo è utile. È anche abbastanza rilevante per l'idea dietro Firebird e Phoenix. L'idea non è esattamente la stessa, ma molto simile e si possono facilmente rubare alcune buone idee da essa e implementarle per rendere Firebird un EA fantastico. Se Hendrick, Wackena e i pochi altri sviluppatori di Firebird sono interessati a leggerlo, fatemi sapere.

 

vuole testare Firebird

Ciao hendrik, ... Voglio testare la nuova versione di Fire Bird (perché molte versioni di firebird). puoi mostrarmi per favore, ....

duro lavoro ragazzi per lo sviluppo di fire bird a phoenix, rispetto a tutti voi,...

Grazie

 

Nessun problema con l'account live

MarvinSk:
Qualcuno ha un conto LIVE con InterbankFX

Sto ricevendo questi errori

2006.06.26 20:10:59 : ordine buy 1.00 USDCHFm apertura a 1.2407 sl: 1.2307 tp: 1.2417 fallito [errore comune]

Questo significa che non permettono EA su conti LIVE?

Ho un conto live con IBFX, nessun problema finora...