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
Non provare, fallo
Sono al lavoro... e la porta di metatrader è bloccata qui
Ciao, sono ancora alle prime armi con la programmazione e sto avendo problemi ad aggiungere le seguenti funzioni a questo semplice EA:
1. Prendere profitto
2. Stop Loss
3. Stop di trascinamento
4. Numero di pip per attivare il trailing stop
//---- input parameters
extern double Lots=0.1;
extern int Slippage=5;
int MagicNum = 98760;
bool longPosOpened, shortPosOpened;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
double crossup = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,0, 1);
double crossdown = iCustom(NULL , 0, "18_28Cross", 1,18,1,28,1,1,1);
if (crossup != EMPTY_VALUE)
{
if (!PosOpened(OP_BUY))
{
CloseAllOpenAndPendingTrades();
OrderSend(Symbol(),OP_BUY,Lots,Ask,Slippage,0,0,Symbol(),MagicNum,0);
}
}
else if(crossdown != EMPTY_VALUE)
{
if (!PosOpened(OP_SELL))
{
CloseAllOpenAndPendingTrades();
OrderSend(Symbol(),OP_SELL,Lots,Bid,Slippage,0,0,Symbol(),MagicNum,0);
}
}
return(0);
}
//+------------------------------------------------------------------+
bool PosOpened(int orderType)
{
int total=OrdersTotal();
for(int cnt=0;cnt<total;cnt++)
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderSymbol() == Symbol() && OrderType() == orderType)
{
return(true);
}
}
return(false);
}
void CloseAllOpenAndPendingTrades()
{
int total = OrdersTotal();
for(int i=total-1;i>=0;i--)
{
OrderSelect(i, SELECT_BY_POS);
if(Symbol() != OrderSymbol()) continue; // important! only close positions of current currency pair
int type = OrderType();
bool result = false;
switch(type)
{
//Close opened long positions
case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), 200);
break;
//Close opened short positions
case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), 200);
break;
//Close pending orders
case OP_BUYLIMIT :
case OP_BUYSTOP :
case OP_SELLLIMIT :
case OP_SELLSTOP : result = OrderDelete( OrderTicket() );
}
}
return(0);
}
Come rilevare un salto da sar parabolico?
Attualmente sto usando questo codice per rilevare un salto:
if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // se c'è un salto in alto
Ma questo non sembra funzionare bene.
Come posso rilevare se lo psar è sopra o sotto le mie barre?
TIA
sono al lavoro... e la porta di metatrader è bloccata qui
Attualmente sto usando questo codice per rilevare un salto:
if(iSAR(NULL,0,0.02,0.2,0)-iSAR(NULL,0,0.02,0.2,1)>1.0){ // se c'è un salto in alto
Ma questo non sembra funzionare bene.
Come posso rilevare se lo psar è sopra o sotto le mie barre?
TIAHey IN10TION, conosci un buon modo per controllare se un trade si è appena chiuso in modo che l'EA non faccia un altro trade (re-entry) fino al prossimo segnale? Il mio EA controlla le condizioni di trading fino a 10 barre, ma se una condizione di Sell trade è già stata soddisfatta nelle prime barre e chiusa, voglio che l'EA smetta di controllare fino all'offset di 10 barre e aspetti il prossimo segnale effettivo?
Grazie
Utilizzare la funzione OrderHistory().
Lux
Usa la funzione OrderHistory(). Lux
Grazie, ma non sono sicuro di come funzioni. Non voglio sapere se un ordine è stato appena chiuso, ma piuttosto se un ordine è stato appena aperto e chiuso entro così tante barre. Quindi posizionare un altro trade solo alla prossima entrata del segnale principale. Sto ancora cercando di eliminare i rientri rapidi quando un ordine è stato appena aperto e chiuso ma le condizioni di trading sono ancora soddisfatte. Voglio che in qualche modo faccia solo una compravendita per ogni segnale principale, quindi anche se le condizioni di compravendita sono ancora valide non si fa un'altra compravendita se è già stata fatta su quel segnale (incluso l'offset).
Vediamo se riesco a spiegare con un esempio. Potrebbe essere qualcosa che non può essere aiutato.
EG: Diciamo che sto usando QQE e VQI come punto di entrata del segnale (QQE incrocia e VQI cambia da comprare a vendere o viceversa)
Ora aggiungo un'opzione SignalOffset di diciamo 6 barre perché il segnale QQE cross e VQI potrebbe non avvenire esattamente sulla stessa barra.
Ora diciamo che c'è un trade valido entro 2 barre l'uno dall'altro quando QQE e VQI sono d'accordo, quindi ora viene piazzato un trade ma ho un TP di 10 pips e la barra si muove di 15 pips il mio TP viene colpito e il trade viene chiuso. Le condizioni di trading sono ancora soddisfatte a causa del mio offset di 6 barre, ora viene piazzato un altro trade (rientro) male se una o due barre si muovono di 100 pip e il mio TP è 10, ho appena avuto 10 trade, male Voglio solo un trade per segnale (offset incluso)
Questo ha senso? Vorrei comunque che si scambiasse entro le 6 barre anche se si verifica un segnale opposto e l'altro scambio è stato ancora chiuso.
Grazie
Grazie ma non sono sicuro di come funziona. Non voglio sapere se un ordine è stato appena chiuso, ma piuttosto se un ordine è stato appena aperto e chiuso entro così tante barre. Quindi posizionare un altro trade solo alla prossima entrata del segnale principale. Sto ancora cercando di eliminare i rientri rapidi quando un ordine è stato appena aperto e chiuso ma le condizioni di trading sono ancora soddisfatte. Voglio che in qualche modo faccia solo una negoziazione per ogni segnale principale, quindi anche se le condizioni di negoziazione sono ancora valide non negoziare di nuovo se è già stato negoziato su quel segnale (incluso l'offset).
Vediamo se riesco a spiegare con un esempio. Potrebbe essere qualcosa che non può essere aiutato.
EG: Diciamo che sto usando QQE e VQI come punto di entrata del segnale (QQE cross e VQI cambia da comprare a vendere o viceversa)
Ora aggiungo un'opzione SignalOffset di diciamo 6 barre perché il segnale QQE cross e VQI potrebbe non avvenire esattamente sulla stessa barra.
Ora diciamo che c'è un trade valido entro 2 barre l'uno dall'altro quando QQE e VQI sono d'accordo, quindi ora viene piazzato un trade ma ho un TP di 10 pips e la barra si muove di 15 pips il mio TP viene colpito e il trade viene chiuso. Le condizioni di trading sono ancora soddisfatte a causa del mio offset di 6 barre, ora viene piazzato un altro trade (rientro) male se una o due barre si muovono di 100 pip e il mio TP è 10, ho appena avuto 10 trade, male Voglio solo un trade per segnale (offset incluso)
Questo ha senso? Vorrei ancora che scambiasse entro le 6 barre anche se se e segnale opposto accade e l'altro commercio è stato chiuso ancora.
GrazieCondividere dati tra 2 applicazioni metatrader
Sto cercando di scrivere i dati in un file da un metatrader per leggerli da un secondo metatrader.
Il problema è che quando sto cercando di scrivere su c:\ ricevo il messaggio di errore "il percorso assoluto del file "C:\EURUSD.txt" non è consentito".
Qualche idea o altro modo per condividere i dati tra due applicazioni metatrader?