Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 311

 
ALXIMIKS:

Ciao, riformula quello che stai chiedendo, non è molto chiaro.


Grazie per aver risposto. Nel mio EA :

se( condizione)

{Due ordini buystop e sellstop aperti.}

Ho bisogno di cancellare l'ordine più vicino quando se ne apre uno, perché in questo momento ci possono essere altri ordini, più lontani dal prezzo corrente

posso usare un contatore di posizioni aperte + script per cancellare un ordine (se sto pensando correttamente, non so come farlo, sono appena agli inizi) Grazie in anticipo per le informazioni.

 
PGM5:


ed è necessario cancellare l'ordine più vicino all'apertura di una delle posizioni, perché in questo momento ci possono essere altri ordini - lontani dal prezzo corrente

posso usare un contatore di posizioni aperte + script per cancellare un ordine (se sto pensando correttamente, non so come farlo, sono appena agli inizi) Grazie in anticipo per le informazioni.


Per favore, imparate la terminologia, è un vero problema capire di cosa avete bisogno.

Se metti due ordini pendenti, se uno si apre, cosa devi cancellare?

Questo è un bel concetto, l'ordine più vicino è nella direzione della posizione aperta o contro di essa, o stai dicendo che devi cancellare l'ordine pendente opposto?

Ci sono altri ordini - da dove vengono, dal trading manuale? Dallo stesso Expert Advisor, ma aperti in condizioni diverse?

Hai bisogno di una risposta specifica o è vaga come la domanda? (Dedica un minuto in più alla formulazione della tua domanda - aiuterà tutti)

 
ALXIMIKS:

Leggendo queste righe mi ricordo come io stesso sono stato rimproverato di essere analfabeta nei miei post, o piuttosto pigro, e ora sono ancora più consapevole del mio torto.

1) cos'è una macchina da disegno? (come lo intendete voi)

2) qual è una funzione elementare per cercare la divergenza MACD?

3) è così difficile scrivere "divergenza" in un motore di ricerca e selezionare il terzo link nella categoria "Code Base"?

(Se sperate che qualcuno vi dia uno strumento pronto e vi spieghi tutto - sperate, qui ci sono persone diverse: sia credenti che non tanto)



Spero che tu sappia cos'è la prossemica! Pensi che il forum sia per la metafisica?

Lo strumento di disegno - con l'uscita sul grafico.

Le funzioni elementari sono le funzioni che possono essere applicate usando solo il manuale MQL4, senza usare espressioni complesse.

Come utilizzare i buffer dell'indicatore quando si rileva la divergenza MACD:

come capirlo?

for(i=limit-1; i>=0; i--) 
     {
      BufferMacdMain[i]   = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_MAIN, i);
      BufferMacdSignal[i] = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_SIGNAL, i);
      BufferMacdOsMA[i]   = BufferMacdMain[i] - BufferMacdSignal[i];
      BufferTop[i]        = EMPTY_VALUE;
      BufferBottom[i]     = EMPTY_VALUE;
      BufferCross[i]      = EMPTY_VALUE;
 
      double main2 = BufferMacdMain[i + 2];
      double main1 = BufferMacdMain[i + 1];
      double sig2  = BufferMacdSignal[i + 2];
      double sig1  = BufferMacdSignal[i + 1];
 
      if((main1>=sig1 && main2<sig2) || 
         (main1<sig1 && main2>=sig2))
 
Burger:


Spero che tu sappia cosa significa prossemica! Pensi che questo forum sia solo per la metafisica?

Disegno - con uscita in un grafico.

Le funzioni elementari sono funzioni che possono essere applicate usando solo il tutorial MQL4, senza usare espressioni complesse.

Come usare i buffer degli indicatori quando si rileva la divergenza MACD:

come capirlo?


In primo luogo, scoprite cos'è la divergenza e quanti valori sono necessari per determinarla. Qui con esempi.
 
Burger:


Spero che tu sappia cos'è la prossemica! Pensi che il forum sia per la metafisica?

Disegno - con uscita in un grafico.

Le funzioni elementari sono funzioni che possono essere applicate usando solo il tutorial MQL4, senza usare espressioni complesse.

Come usare i buffer degli indicatori quando si rileva la divergenza MACD:

come capirlo?


Questo non è un club di sensitivi; se volete risposte adeguate, fate domande adeguate. Se non sapete come formularlo, entrate da lontano, ma in modo che sia chiaro e non dobbiate chiedere cento volte cosa intende un individuo particolare con questo o quel termine.

Le funzioni elementari sono funzioni che non usano espressioni complesse. Fantastico.

Il codice senza parentesi di chiusura del ciclo, senza funzioni dopo una condizione - cosa speri?

for(i=limit-1; i>=0; i--)      //цикл  расчета нерассчитанных баров, наверное
     {
      BufferMacdMain[i]   = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_MAIN, i);   // расчет значения основной   линии масд на i баре
      BufferMacdSignal[i] = iMACD(NULL, 0, macd_fast, macd_slow, macd_signal, PRICE_CLOSE, MODE_SIGNAL, i); // расчет значения сигнальной линии масд на i баре
      BufferMacdOsMA[i]   = BufferMacdMain[i] - BufferMacdSignal[i];  // разница основной и сигнальной линии масд на i баре
      BufferTop[i]        = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
      BufferBottom[i]     = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
      BufferCross[i]      = EMPTY_VALUE;                              // буфер заполняется EMPTY_VALUE на i баре (не рисуется на графиках)
 
      double main2 = BufferMacdMain[i + 2];                           // переменная берет значение основной линии масд на i+2 баре с массива BufferMacdMain
      double main1 = BufferMacdMain[i + 1];                           // переменная берет значение основной линии масд на i+1 баре с массива BufferMacdMain
      double sig2  = BufferMacdSignal[i + 2];                         // переменная берет значение сигнальной линии масд на i+2 баре с массива BufferMacdSignal
      double sig1  = BufferMacdSignal[i + 1];                         // переменная берет значение сигнальной линии масд на i+1 баре с массива BufferMacdSignal
 
      if((main1>=sig1 && main2<sig2) ||                      // если main1>=sig1 и main2<sig2 тогда будет выполнятся условие (сигнальная пересекает основную снизу вверх)
         (main1<sig1 && main2>=sig2))                        // если main1<sig и main2>=sig2 тогда будет выполнятся условие  (сигнальная пересекает основную сверху вниз)
 
ALXIMIKS:


Per favore, imparate la terminologia, perché capire esattamente di cosa avete bisogno è una vera sfida.

Se metti due ordini pendenti, se uno si apre devi cancellare quale?

Ordine più vicino - un concetto meraviglioso, l'ordine più vicino è nella direzione della posizione aperta o contro di essa, o stai dicendo che l'ordine pendente opposto dovrebbe essere cancellato?

Ci sono altri ordini - da dove vengono, dal trading manuale? Dallo stesso Expert Advisor, ma aperti in condizioni diverse?

Hai bisogno di una risposta specifica o è vaga come la domanda? (Dedica un minuto in più per formulare la tua domanda - questo gioverà a tutti).

Sì, hai capito bene: quando apri un ordine devi cancellare l'ordine pendente opposto, gli altri ordini sono dello stesso EA, ma aperti in condizioni diverse

Grazie in anticipo.

 
PGM5:

Sì, hai capito bene: quando apri un ordine devi cancellare l'ordine pendente opposto, gli altri ordini sono dello stesso EA, ma aperti in condizioni diverse

Grazie in anticipo.


Se ho capito bene quello che vuoi: questo meccanismo si chiama OCO (One Cansel Other - uno annulla l'altro). Questa è la relazione tra, per esempio, un take e uno stop per un "ordine a mercato" (in termini di MT4) - uno (take o stop) viene attivato, l'altro viene automaticamente rimosso e l'implementazione completa di questo non è un compito così banale. Non nel senso di un algoritmo molto complesso, ma nel senso che non è elementare. Dobbiamo scrivere la contabilità parallela degli ordini: inserire e tracciare il tratto con cui gli ordini sono collegati. Se non mi sbaglio, un tale meccanismo non è stato implementato nemmeno in MT5 anche se è una caratteristica standard per i terminali azionari e funziona sul lato server.

Possiamo implementare il meccanismo dalla parte del cliente e "giocare con" il mago (non sarebbe "molto" difficile in questo caso): tutti gli ordini di cui uno deve rimanere hanno lo stesso mago. Quando si controlla: se c'è un mercato, tutti gli altri vengono cancellati. Allora bisogna generare un magik, accompagnato. Allocate un array separato per il mago: potrebbe essere necessario supportare più di una coppia di ordini. È impossibile perdere un magik, quindi sia le variabili globali che la scrittura sul file. Se lo facciamo in modo più globale (considerando non solo la connettività degli ordini ma anche l'appartenenza/estero), il meccanismo di contabilità diventa più complicato: il mago diventa composto e in realtà abbiamo bisogno di estendere l'algoritmo standard di immissione degli ordini molto più in profondità di quanto possiamo fare usando funzioni "base" (nella tua terminologia) ma ancora tutto è client-side, cioè se il terminale è spento o la comunicazione è persa, il terminale non funzionerà (tenere traccia degli ordini).



 
VladislavVG:

Se ho capito bene quello che vuoi: questo meccanismo si chiama OCO (One Cansel Other - uno annulla l'altro). Questa è la relazione tra, per esempio, un take e uno stop per un "ordine a mercato" (in termini di MT4) - uno (take o stop) viene attivato, l'altro viene automaticamente cancellato e l'implementazione completa non è un compito così banale. Non nel senso di un algoritmo molto complesso, ma nel senso che non è elementare. Dobbiamo scrivere la contabilità parallela degli ordini: inserire e tracciare il tratto con cui gli ordini sono collegati. Se non mi sbaglio, un tale meccanismo non è stato implementato nemmeno in MT5 anche se è una caratteristica standard per i terminali azionari e funziona sul lato server.

Anche se possiamo implementare il meccanismo dalla parte del cliente e "giocare con" il mago (non sarà "molto" difficile in questo caso): tutti gli ordini di cui uno deve rimanere hanno lo stesso mago. Quando si controlla: se c'è un mercato, tutti gli altri vengono cancellati. Allora bisogna generare un magik, accompagnato. Allocate un array separato per il mago: potrebbe essere necessario supportare più di una coppia di ordini. È impossibile perdere un magik, quindi sia le variabili globali che la scrittura sul file. Se lo facciamo in modo più globale (considerando non solo la connettività degli ordini ma anche l'appartenenza/estero), il meccanismo di contabilizzazione diventa più complicato: il mago diventerà composto e in realtà abbiamo bisogno di estendere l'algoritmo standard di immissione degli ordini molto più in profondità di quanto possiamo fare usando funzioni "elementari" (nella tua terminologia) ma comunque tutto è client-side: cioè se il terminale è spento o la connessione è persa, non funzionerà (traccia gli ordini).



Scusa, non sapevo che fosse così complicato. Penserò a come semplificare il sistema.

 
PGM5:

Scusa, non mi ero reso conto che fosse così complicato. Penserò a come semplificare il sistema.



Per aiutare.
 
r772ra:
Per aiutare.


Questa è solo un'implementazione molto "modesta" che non è estensibile: cancella tutti gli ordini dell'EA o tutti gli ordini di un dato wizard per un dato simbolo se c'è un mercato. Cioè, considera tutti gli ordini piazzati sullo strumento (con/senza prendere in considerazione il mago) come legati dal rapporto CCA.

Questo potrebbe non essere affatto il caso. Per esempio, ci possono essere 2 o 3 gruppi di ordini collegati su 20 piazzati, e il resto non è collegato affatto. Questo EA non può essere espanso a tale contabilità - dobbiamo riscrivere tutto o possiamo usare questo EA in modalità manuale: allora la contabilità dei maestri dei gruppi di ordini collegati deve essere fatta manualmente e dobbiamo "appendere" tanti EA quanti sono i gruppi di ordini in un trade.