Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 1098
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
Ragazzi, mi sono già scervellato. Come faccio a fare in modo che l'EA piazzi ordini pendenti sui massimi e minimi, per esempio 8 candele, con un take profit di 1/4.
Faccio qualcosa del genere:
double Vhod1=iHighest(Symbol(),0,MODE_HIGH,8,0);
double Vhod2=iLowest(Symbol(),0,MODE_LOW,8,0);
doppio TP=((Vhod1-Vhod2)/4)+Vhod1;
Ho provato a cambiare i parametri, ma continua ad ottenere stop sbagliati o imposta il prezzo a 7.00000; non è chiaro da dove viene
iHighest, iLowest darà l'indirizzo della candela, non il prezzo.
Proprio così. Abbiamo bisogno di
double Vhod1=iHigh(Symbol(), 0, iHighest(Symbol(),0,MODE_HIGH,8,0));
double Vhod2=iLow(Symbol(), 0, iLowest(Symbol(),0,MODE_LOW,8,0));
L'ho messo male, ma non avrebbe comunque funzionato bene perché... Perché). Comunque, dovrebbe andare così:
1) creare una variabile AllowNewOrders nell'inite (se non esiste)
2) Creare un nuovo ordine, fino a quando si chiude, OnTick di questo simbolo è inattivo, ma verrà eseguito OnTick di un altro simbolo
3) Eseguire il passo 2 per gli altri simboli fino al raggiungimento del limite MaxOpenOrders
4) quando l'ordine finisce, se è in perdita o ha valore zero, proibire l'apertura di nuovi ordini per tutte le copie attraverso AllowNewOrders
[ecco il problema immediato - quando la serie perdente finisce, AllowNewOrders=1, ma cosa succede se MaxOpenOrders>1 e ci sono diverse di queste sessioni?]
5) Se il punto 4 non è soddisfatto, allora puoi aprire nuovi ordini.
Il programma DEVE funzionare quando MaxOpenOrders=1. Forse, ci sarà un problema se vietiamo nuovi ordini dopo un ordine non redditizio AllowNewOrders=0 e il prossimo OrderSend, per qualche motivo, non apre l'ordine. Scriverò qui sotto come mi copro per questo caso...
Scriverò di seguito come mi copro per questa eventualità...
Se la soluzione dell'errore è prevista correttamente, il tasso di successo dell'apertura di un ordine aumenta.
Come può cambiare il codice qui sotto in queste condizioni?
for(cnt=OrdersTotal()-1;cnt>=0;cnt--){
if (!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) continua;
if(OrderSymbol()!=Symbol()) continua; if(OrderMagicNumber() < startMagicNumber || OrderMagicNumber() >= startMagicNumber + MaxTrades) continua;
Ho messo il codice per generare un magik quando si aprono i primi ordini di una serie, ma ecco il problema quando si aprono nuovi ordini nella stessa serie.
Il codice stesso per generare la magia dal post://+------------------------------------------------------------------+
// ottenere la prossima magia nella serie
int getNextMagicNumber(){
int magic = EMPTY;
if (OrdersTotal() == 0) {
return(startMagicNumber);
}
for (int i = startMagicNumber; i < startMagicNumber + MaxTrades; i++){
magic = checkMarketByMagic(i);
if (magic != EMPTY) break;
}
if (magic == EMPTY){
magic = startMagicNumber; // primo della serie
} else {
magic++; // prossimo della serie
}
return(magic);
}
//+------------------------------------------------------------------+
// keekkenen: controlla se c'è un ordine nel mercato con una data magia
int checkMarketByMagic(int magic){
for(int i = 0; i < OrdersTotal(); i++){
if(!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) continua;
if(OrderSymbol() != Symbol()) continua;
if(OrderMagicNumber() == magic) return(magic);
}
return(EMPTY);
}
//+------------------------------------------------------------------+
scusate se ho confuso i thread, ma non ho trovato il posto giusto per postare il TEMA, quindi non cacciatemi.
A volte, navigando in Internet alla ricerca di nuovi Expert Advisors, mi sono imbattuto in uno a cui non ho prestato attenzione, perché la sua descrizione era standard, di cui ce ne sono molti.
Se non l'avessi visto o letto, per favore datemi il nome, e google farà il suo lavoro o se ne ho uno, lo prenderò come regalo. Forse c'è un consigliere simile che esegue azioni simili.
Descriverò il significato dell'Expert Advisor (non c'è niente di molto sofisticato, quello di cui ho bisogno ora).
Approssimativamente, il lavoro sarebbe così:
1. Aprire una posizione manualmente, per esempio comprare.
2. L'Expert Advisor imposta Stop Loss e Take Profit in base alle impostazioni.
3. L'ordine viene chiuso al takeprofit - l'EA apre immediatamente un altro acquisto e imposta gli stessi stoploss e takeprofit fino a quando non raggiunge il primo stoploss o se c'è un takeprofit finale.
4. Se la posizione è chiusa da Stop Loss, il robot non fa più nulla. L'Expert Advisor attende che il prossimo ordine venga aperto manualmente.
Questo è tutto.
Te ne sarei molto grato.
L'ho inserito in modo errato, ma ancora non funzionerebbe come dovrebbe perché... Perché). Comunque, va così:
1) creare una variabile AllowNewOrders nell'initem (se non esiste)
2) Creare un nuovo ordine finché non si chiude OnTick di questo simbolo è inattivo, ma OnTick dell'altro simbolo funziona
3) Eseguire il passo 2 per gli altri simboli fino al raggiungimento del limite MaxOpenOrders
4) quando l'ordine finisce, se è in perdita o ha valore zero, proibire l'apertura di nuovi ordini per tutte le copie attraverso AllowNewOrders
[ecco il problema immediato - quando la serie perdente finisce, AllowNewOrders=1, ma cosa succede se MaxOpenOrders>1 e ci sono diverse di queste sessioni?]
5) Se il punto 4 non è soddisfatto, allora puoi aprire nuovi ordini.
Il programma DEVE funzionare quando MaxOpenOrders=1. Forse, ci sarà un problema se vietiamo nuovi ordini dopo un ordine non redditizio AllowNewOrders=0 e il prossimo OrderSend, per qualche motivo, non apre l'ordine. Scriverò di seguito come sto coprendo per questo caso.
Grazie Alexander, lo controllerò domani. [da qui il problema immediato - quando la serie perdente finisce, AllowNewOrders=1, ma se MaxOpenOrders>1 e c'è più di una sessione?] Se MaxOpenOrders>1 di un certo valore, allora in idea AllowNewOrders=1 dovrebbe anche essere maggiore dello stesso valore. Ma non ho bisogno di preoccuparmene per ora e MaxOpenOrders dovrebbe essere omesso del tutto, perché in questa versione del programma non è comunque prevista più di una serie.
Ciao a tutti!
Ecco un oggetto grafico su un grafico.
I suoi parametri sono tempo, valore, codice. Il valore corrisponde al prezzo al quale si trova l'oggetto.
C'è un modo per ottenere il suo tempo e il suo valore (attraverso una funzione o qualcos'altro)?
\\\\\
Oppure, in un contesto più ampio, ci sono degli oggetti (a parte le linee di tendenza, le linee di Fibonacci, le Gannet) che ci permettono di ottenere istantaneamente il loro tempo e il loro prezzo?
Ho bisogno di mettere alcuni segni sul grafico e ottenere informazioni da essi. Disegnare linee di tendenza, fibo, ecc... - È terribilmente ingombrante e lento...
Grazie per le risposte!
PS Ho appena iniziato a studiare...
Ciao a tutti!
Ecco un oggetto grafico su un grafico.
I suoi parametri sono tempo, valore, codice. Il valore corrisponde al prezzo al quale si trova l'oggetto.
C'è un modo per ottenere il suo tempo e il suo valore (attraverso una funzione o qualcos'altro)?
\\\\\
Oppure, in un contesto più ampio, ci sono degli oggetti (a parte le linee di tendenza, le linee di Fibonacci, le Gannet) che possono essere derivati immediatamente al tempo e al prezzo?
Ho bisogno di mettere alcuni segni sul grafico e ottenere informazioni da essi. Disegnare linee di tendenza, fibo, ecc... - È terribilmente ingombrante e lento...
Grazie per le risposte!
PS Ho appena iniziato a studiare...
https://docs.mql4.com/ru/objects/objectgetinteger