Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Gli ordini vengono piazzati troppo vicini all'attuale bid/ask. Gli ordini devono essere a una certa distanza dal prezzo corrente. Usa la funzione Marketinfo con il parametro stop_level per estrarre quell'informazione e assicurati che i tuoi ordini siano così lontani dall'ask/bid.
Spero che questo aiuti.
Gli ordini vengono piazzati troppo vicini all'attuale bid/ask. Gli ordini devono essere ad una certa distanza dal prezzo corrente. Usa la funzione Marketinfo con il parametro stop_level per estrarre quell'informazione e assicurati che i tuoi ordini siano così lontani dalla domanda/offerta.
ummm....
scusa ma mi hai perso...
Non posso semplicemente piazzare un ordine al livello "attuale"? La maggior parte di quello che ho fatto fino ad ora è stato eseguire gli ordini alla chiusura del periodo. Si può fare?
Devo prima imparare cosa sono il parametro stop_level e le funzioni marketinfo.
grazie per la direzione
per quello che può valere ecco l'aggiornamento che ho fatto all'indicatore delle bande di tendenza, è stato piuttosto divertente
Ok, eccolo qui...
Identificatori diinformazioni di mercato, usati con la funzione MarketInfo().
Può essere uno qualsiasi dei seguenti valori:
MODE_STOPLEVEL 14 Livello di stop in punti.
quindi presumo che sia...
MarketInfo(14)
dove lo metto?
o è...
MarketInfo(NULL,MODE_STOPLEVEL);
oppure...
double bid =MarketInfo(NULL,MODE_BID);
double ask =MarketInfo(NULL,MODE_ASK);
double point =MarketInfo(NULL,MODE_POINT);
Credo di non capire bene come usare questo... potete mostrarmi un esempio?
Ecco con cosa sto lavorando in questo caso...mi chiedo perché questo EA non aveva problemi a piazzare ordini prima e ora sì? Funzionava prima che aggiungessi il filtro?
double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);
double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);
// ENTRY
if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)
{
double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position
if(isCrossed == 1 && Ask < upLevel)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
else
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
//###################################################################### the added code starts here
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,HedgeLots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
//###################################################################### ends here
return(0);
}
if(isCrossed == 2 && Ask > LowLevel)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+StopLoss*Point,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
else
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,0,Bid-TakeProfit*Point,comment,MAGICMA,0,Red);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
//###################################################################### the added code starts here
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
else
ticket=OrderSend(Symbol(),OP_BUY,HedgeLots,Ask,3,0,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("BUY order opened : ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
//###################################################################### ends here
return(0);
}
return(0);
}
return(0);
}
return(0);
}
}
//+------------------------------------------------------------------+Dovresti usare MarketInfo(NULL,MODE_STOPLEVEL) per determinare quanto lontano devono essere situati i tuoi ordini stop dal prezzo corrente. Ricorda, restituirà il suo valore in pip.
Tuttavia, puoi convertire in punti usando qualcosa come questo:
double MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*Point, Digits);
Ora assicuratevi che i vostri ordini stop siano almeno così lontani dal prezzo corrente di mercato. A proposito, usando NormalizeDouble e Digits, state convertendo il valore del pip nei posti appropriati dopo il decimale (4 o 2). Questa è una cosa molto bella in MT4.
Spero che questo aiuti.
Maji
Dovresti usare MarketInfo(NULL,MODE_STOPLEVEL) per determinare quanto lontano i tuoi ordini stop dovrebbero essere posizionati dal prezzo corrente. Ricorda, restituirà il suo valore in pip.
Tuttavia, puoi convertire in punti usando qualcosa come questo:
double MinDist = NormalizeDouble(MarketInfo(NULL,MODE_STOPLEVEL)*Point, Digits);
Ora assicuratevi che i vostri ordini stop siano almeno così lontani dal prezzo corrente di mercato. A proposito, usando NormalizeDouble e Digits, state convertendo il valore del pip nei posti appropriati dopo il decimale (4 o 2). Questa è una cosa molto bella in MT4.
Spero che questo aiuti.
MajiQuello che non capisco è perché l'aggiunta dell'indicatore come filtro ha incasinato il modo in cui piazza gli ordini o gli stop. Non ha cambiato nulla di tutto ciò, per quanto posso dire, quindi perché non permettere le transazioni sopra la linea cambia il modo in cui piazza gli ordini di stop?
Se non ti dispiace, mandami via e-mail il codice attuale. Proverò a dargli un'occhiata durante il fine settimana. Non posso promettere che lo sistemerò, ma darò un'occhiata onesta e ci proverò.
Ecco il tuo problema che dovresti guardare prima
Ask and upLevel are in "price" (like 115.56 or 1.2678) while longrange is in pips (like 4,5,6) and u cannot mixed them. U have to normalize the pips to "price" and this is done by muliplying the pips with Points
the corrected code is like that
[PHP]if(isCrossed == 1 && Ask < upLevel-longrange*Point)beh, per una volta questa è una soluzione facile...
solo che...
...il fatto è che l'ho cambiato da quando ho fatto quel post. ... ho modificato l'indicatore con un parametro per rendere le bande più larghe o più strette e ho tolto la parte dell'EA che faceva un limite di prossimità alla linea. Ho pensato che se potessi semplicemente rendere le bande di scambio stesse strette o larghe, questo darebbe la stessa funzione senza essere così complesso, e per me è più facile tenere traccia mentale di ....so...
attualmente è così...
double upLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 0, 0);
double LowLevel = iCustom(NULL,TF, "Trend Bands v3", back, bandwidth, 2, 0);
// ENTRY
if(total < 2 || isNewSumbol(Symbol())) //I have modified the if condition too: it was total<1 (orBanAway aka cucurucu)
{
double HedgeLots = (HedgePercent/100)*Lots; //calculates the Lots for the hedged position
if(isCrossed == 1 && Ask < upLevel)
{
if(UseStopLoss)
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,comment,MAGICMA,0,Green);
elsesia ask che uplevel sono entrambi in prezzo, vero? questo è il codice che sta ancora generando l'errore. deve esserci dell'altro...
Finora non vedo alcun problema (orientato al codice)
Ma logicamente, guardate questo
if(isCrossed == 1 && Ask < upLevel)
Non stai controllando che siano vicini, solo che il prezzo sia inferiore alla linea
Sapevo di averlo!!!
Ho testato esattamente quello che volevi ottenere, e nel mio post precedente ho solo messo l'EA sbagliato.
Questo EA può controllare fino a 4 TF per verificare se tutti ottengono il bordo allo stesso tempo. Puoi selezionarne solo uno se vuoi.
Puoi usarlo come esempio di come ottenere la logica da un indicatore, e come combinare più TF insieme
saluti
Eli
Sapevo di averlo!!!
Ho testato esattamente quello che volevi ottenere, e nel mio post precedente ho solo messo l'EA sbagliato.
Questo EA può controllare fino a 4 TF per verificare se tutti ottengono il bordo allo stesso tempo. Puoi selezionarne solo uno se vuoi.
Puoi usarlo come esempio di come ottenere la logica da un indicatore, e come combinare più TF insieme
saluti
Eliquesto è intrigante Devo ancora esplorare gli indicatori multi TF, ma credo che ci sia il merito di loro.