veti-k: Ciao, puoi dirmi come determinare quanti pips un ordine è in profitto?
Se hai una posizione di acquisto, devi sottrarre il prezzo di apertura dal prezzo Bid corrente. Se si tratta di una posizione di vendita, dovreste sottrarre l'attuale prezzo Ask dal prezzo di apertura.
paladin80: Se viene aperta una posizione di acquisto, sottrarre il prezzo di apertura dal prezzo Bid corrente. Se la posizione è una posizione di vendita, sottrarre l'attuale prezzo Ask dal prezzo di apertura.
Gli scout hanno scoperto che OrderClosePrice() può essere usato al posto di Bid o Ask
Alexandr24: Cari utenti del forum, potreste per favore consigliarmi come mettere una variabile di iCustom in ArrayMaximum?
Per questo dovete leggere cos'è ArrayMaximum.
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
Cerca l'elemento con il valore massimo. La funzione restituisce la posizione dell'elemento massimo nella matrice.
La ricerca è un processo, non una variabile. Cioè, potete assegnare un valore di indicatore a un elemento dell'array, e poi cercare l'array per l'elemento più grande con ArrayMaximum.
granit77: Per questo dovresti leggere cos'è ArrayMaximum.
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
Cerca l'elemento con il valore massimo. La funzione restituisce la posizione dell'elemento massimo nella matrice.
La ricerca è un processo, non una variabile. Cioè, potete assegnare un valore di indicatore a un elemento dell'array e poi cercare l'array per l'elemento massimo con ArrayMaximum.
Come trovare il valore massimo dell'indicatore per ieri? Ho trovato il primo e il valore massimo dell'indicatore del giorno di ieri, ma non riesco a trovare il valore massimo del giorno di ieri, ArrayMaximum inizia a cercare attraverso tutto il grafico, o forse è fatto attraverso un'altra funzione?
Buon pomeriggio a tutti, sono seduto davanti al mio computer a sbattere la testa contro la tastiera - non riesco a risolvere un bug nel codice ... Per favore, aiutate un principiante.
Ecco il mio codice civetta:
extern double TakeProfit = 500;
extern double Lots = 0.1;
extern double Stoploss = 30;
extern double TrailingStop = 30;
extern string Indicator_1 = "SAR (SAR_STEP)";
extern double SAR_Step = 0.02;
extern double SAR_MaxStep =0.2;
extern double GeneralShift = 0; // 0 - barra non chiusa, 1 - chiusa.
// Queste sono le variabili che saranno
// visualizzato durante
// collegamento dell'Expert Advisor con il grafico
// Questa condizione controlla se la storia del grafico contiene più di 100 candele e, in caso contrario, restituisce un errore,
// genererà un errore. È necessario attirare la vostra attenzione sul problema di
// mancanza di informazioni
se(TakeProfit<5)
{
Print("TakeProfit inferiore a 5");
ritorno(0);
}
// Questa condizione controlla il livello di TakeProfit (una delle variabili esterne,
// che controlla il livello di presa di profitto. È necessario controllare se // avete impostato i livelli di Take Profit.
// controlla se hai impostato livelli di presa di profitto a un livello non consentito dalla tua società di intermediazione.
// Non consentito per la vostra società di intermediazione. È così che se il tuo Expert Advisor fallisce, tu // sai esattamente qual è l'errore.
// dove si trova l'errore. Consiglio vivamente di impostarlo.
total=OrdersTotal();
se(totale<1)
// Questo controllo è necessario per evitare di aprire diverse posizioni identiche in una volta sola. Se non è controllato, allora, per esempio, se il tuo EA viene attivato quando lo stocastico è nella zona di ipercomprato, allora farà trading su ogni tick fino a quando non avrà usato tutto il margine.
// Quindi, per limitare il numero di posizioni aperte, questo
// limitatore. Se è impostato, allora l'Advisor non aprirà più di un certo // numero di
// numero di posizioni <x
{
// nessun ordine aperto identificato
se(AccountFreeMargin()<(1000*Lots))
{
Print("Non abbiamo soldi. Free Margin = ", AccountFreeMargin();
ritorno(0);
}
// Un altro pezzo di codice ausiliario. Se non c'è abbastanza denaro nel conto, si
// stampa un errore. Questo pezzo è completamente inutile se l'Expert Advisor funziona
// tempo reale, ma è molto utile nei test sulla storia.
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0]); // Open BUY
// Finalmente arriviamo alla parte più interessante. Al posto di queste x, dobbiamo inserire
E se ha un codice per 70 sterline invece di 60? :) ;)
Ciao, puoi dirmi come determinare quanti pips un ordine è in profitto?
Se viene aperta una posizione di acquisto, sottrarre il prezzo di apertura dal prezzo Bid corrente. Se la posizione è una posizione di vendita, sottrarre l'attuale prezzo Ask dal prezzo di apertura.
Gli scout hanno scoperto che OrderClosePrice() può essere usato al posto di Bid o Ask
Cari utenti del forum, potreste per favore consigliarmi come mettere una variabile di iCustom in ArrayMaximum?
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
Cerca l'elemento con il valore massimo. La funzione restituisce la posizione dell'elemento massimo nella matrice.La ricerca è un processo, non una variabile. Cioè, potete assegnare un valore di indicatore a un elemento dell'array, e poi cercare l'array per l'elemento più grande con ArrayMaximum.
Per questo dovresti leggere cos'è ArrayMaximum.
int ArrayMaximum( double array[], int count=WHOLE_ARRAY, int start=0)
Cerca l'elemento con il valore massimo. La funzione restituisce la posizione dell'elemento massimo nella matrice.La ricerca è un processo, non una variabile. Cioè, potete assegnare un valore di indicatore a un elemento dell'array e poi cercare l'array per l'elemento massimo con ArrayMaximum.
Buon pomeriggio a tutti, sono seduto davanti al mio computer a sbattere la testa contro la tastiera - non riesco a risolvere un bug nel codice ... Per favore, aiutate un principiante.
Ecco il mio codice civetta:
extern double TakeProfit = 500;
extern double Lots = 0.1;
extern double Stoploss = 30;
extern double TrailingStop = 30;
extern string Indicator_1 = "SAR (SAR_STEP)";
extern double SAR_Step = 0.02;
extern double SAR_MaxStep =0.2;
extern double GeneralShift = 0; // 0 - barra non chiusa, 1 - chiusa.
// Queste sono le variabili che saranno
// visualizzato durante
// collegamento dell'Expert Advisor con il grafico
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
doppio a;
int b;
int totale, biglietto, cnt;
//solo variabili da usare nel programma
se(Bars<100)
{
Stampa("barre inferiori a 100");
ritorno(0);
}
// Questa condizione controlla se la storia del grafico contiene più di 100 candele e, in caso contrario, restituisce un errore,
// genererà un errore. È necessario attirare la vostra attenzione sul problema di
// mancanza di informazioni
se(TakeProfit<5)
{
Print("TakeProfit inferiore a 5");
ritorno(0);
}
// Questa condizione controlla il livello di TakeProfit (una delle variabili esterne,
// che controlla il livello di presa di profitto. È necessario controllare se // avete impostato i livelli di Take Profit.
// controlla se hai impostato livelli di presa di profitto a un livello non consentito dalla tua società di intermediazione.
// Non consentito per la vostra società di intermediazione. È così che se il tuo Expert Advisor fallisce, tu // sai esattamente qual è l'errore.
// dove si trova l'errore. Consiglio vivamente di impostarlo.
total=OrdersTotal();
se(totale<1)
// Questo controllo è necessario per evitare di aprire diverse posizioni identiche in una volta sola. Se non è controllato, allora, per esempio, se il tuo EA viene attivato quando lo stocastico è nella zona di ipercomprato, allora farà trading su ogni tick fino a quando non avrà usato tutto il margine.
// Quindi, per limitare il numero di posizioni aperte, questo
// limitatore. Se è impostato, allora l'Advisor non aprirà più di un certo // numero di
// numero di posizioni <x
{
// nessun ordine aperto identificato
se(AccountFreeMargin()<(1000*Lots))
{
Print("Non abbiamo soldi. Free Margin = ", AccountFreeMargin();
ritorno(0);
}
// Un altro pezzo di codice ausiliario. Se non c'è abbastanza denaro nel conto, si
// stampa un errore. Questo pezzo è completamente inutile se l'Expert Advisor funziona
// tempo reale, ma è molto utile nei test sulla storia.
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0]); // Open BUY
// Finalmente arriviamo alla parte più interessante. Al posto di queste x, dobbiamo inserire
// condizione che fa scattare un BUY.
{
ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-Stoploss*Point, Ask+TakeProfit*Point, "comment",16384,0,Green);
// Queste sono le condizioni di acquisto. In linea di principio, non c'è niente da cambiare qui, ma per allargare /i miei orizzonti, allargo il campo.
// Decifrerò quello che c'è scritto qui. Qui dice che dobbiamo comprare
// (OP_BUY) il simbolo corrente (coppia di valute, al cui grafico è stato collegato questo Expert Advisor),
// dimensione del trade Lotti (variabile che viene impostata all'inizio). Prezzo di mercato, con
// slippage 3, e con uno StopLoss e un TakeProfit impostati al
all'// inizio, lo scambio sarà segnato con il commento "comment", con il numero determinante 0, e al
// al punto di acquisto, sul grafico, ci sarà un cursore verde con il codice determinante
// 16384
se(biglietto>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("Ordine BUY aperto: ",OrderOpenPrice());
}
else Print("Error opening BUY order : ",GetLastError());
ritorno(0);
}
// Questo blocco è necessario solo per registrare se tutto è andato bene.
// O, altrimenti, per registrare un errore che ha causato il fallimento di qualcosa.
// Ora la stessa cosa con la scommessa di vendita. Invece di YYYYYYY - condizione
se(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Close[0])
{
ticket=OrderSend(Symbol(),OP_SELL,Lots,Bid,3,Bid+Stoploss*Point,Bid-TakeProfit*Point, "macd sample",16384,0,Red);
se(biglietto>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES)) Print("SELL order opened : ",OrderOpenPrice());
}
else Print("Error opening SELL order : ",GetLastError());
ritorno(0);
}
ritorno(0);
}
// Ora l'uscita. Anche qui non è cambiato nulla, è solo RRRRRRRR - condizione
// chiudere uno scambio con BUY, ZZZZZZZZZZ - con SELL
per(cnt=0;cnt
// tutte le posizioni aperte sono cercate con
{
OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if(OrderType()<=OP_SELL && // controlla le posizioni aperte
OrderSymbol()==Symbol()) // controlla il simbolo
{
if(OrderType()==OP_BUY) // la posizione lunga è aperta
{
// dovrebbe essere chiuso?
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)<Close[0]) //chiude BUY.
{
OrderClose(OrderTicket(),OrderLots(),Bid,3,Violet); // chiudere la posizione
return(0); // uscire
}
// controlla il trailing stop
se(TrailingStop>0)
{
se(Bid-OrderOpenPrice()>Point*TrailingStop)
{
se(OrderStopLoss()<Bid-Point*TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
ritorno(0);
}
}
}
}
else // Lo stesso con la posizione corta
{
// dovrebbe essere chiuso?
if(iSAR(NULL,0,SAR_Step,SAR_MaxStep,GeneralShift)>Close[0])//chiude SELL
{
OrderClose(OrderTicket(),OrderLots(),Ask,3,Violet); // chiudere la posizione
return(0); // uscire
}
// controlla il trailing stop
se(TrailingStop>0)
{
se((OrderOpenPrice()-Ask)>(Point*TrailingStop))
{
if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
ritorno(0);
}
}
}
}
}
}
}
ritorno(0);
//--------
}
//-------- la fine.
Un autotrader principiante non può prendere un insetto!!! PER FAVORE AIUTATEMI!!!!!!!!!!!!!!!!!!
'}' - parentesi sbilanciate C:\Program Files (x86)\Forex4you MetaTrader 4\experts\Saurentios V101.mq4 (167, 1)