[ARCHIVIO]Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non posso andare da nessuna parte senza di te - 5. - pagina 128

 
hoz:

Puoi mettere 0(zero), perché di solito non hai bisogno di scadere. Ma probabilmente ce l'hai come precauzione, per non dover tornare a questo punto.
Quindi, è 0 nella funzione standard, mentre nella presentazione è necessario specificare che i parametri successivi (colore) devono funzionare. Non uso affatto la scadenza nel pending, cancello solo per condizione.
 

Signori programmatori,


Per favore, aiutatemi a capire.

Ho inserito questo codice https://www.mql5.com/ru/code/8811 per il trading virtuale come funzione nel mio indicatore.

Funziona in tempo reale ed esegue il trading virtuale di qualsiasi complessità.

Posso usarlo come trigger sulla cronologia camminando sulla barra, o devo scrivere un nuovo codice?


I miei ringraziamenti.

 
abdul1:

Signori programmatori,

Per favore, aiutatemi a capire.

Ho inserito questo codice https://www.mql5.com/ru/code/8811 per il trading virtuale come funzione nel mio indicatore.

Funziona in tempo reale ed esegue il trading virtuale di qualsiasi complessità.

Posso usarlo come trigger sulla cronologia camminando sulla barra, o devo scrivere un nuovo codice?

I miei ringraziamenti.

È meglio chiedere al codebase dell'autore dove l'hai scaricato.
 

borilunad, tu hai, per esempio, se la funzione ha sia B.U. che TPAAL, il ciclo e la selezione degli ordini, se ho capito bene, è all'inizio della funzione e si attiva al ticchettio?

Sto cercando di capire come combinare tutto questo e il mio cervello ha già iniziato a sovraccaricarsi, ho bisogno che il B.T. funzioni solo quando il prezzo di stop è sotto la soglia minima, cioè prezzo aperto+ presa minima. Ho questa variabile priceBU. E poi il traal è andato avanti. Provo subito una funzione separata per fare pratica, è più facile per me da capire. Arriverò al tuo non appena tutto inizierà a funzionare.

All'inizio ho scritto così:

int start()
{
   int g;
   for (g = OrdersTotal() - 1; g >= 0; g--)
   {
       if (!OrderSelect(g,SELECT_BY_POS)) continue;
       if (i_magic != -1) if (OrderMagicNumber() != i_magic) continue;
       if (OrderSymbol() != Symbol()) continue;
       
      if (OrderStopLoss() <= priceBU)
      {
          MovingStopLossToBU();
      }
      {
          ticket = OrderTicket();
          TrailingStop("", -1, -1);
      }
   }

L'ho fatto bene o dovrei farlo diversamente? Tutto sembra funzionare correttamente, ma in qualche modo è scritto semplicemente, senza alcuna condizione...

 
hoz:

borilunad, tu hai, per esempio, se la funzione ha sia B.U. che TPAAL, il ciclo e la selezione degli ordini, come ho capito, è nell'avvio della funzione e viene attivato da un ticchettio?

Sto cercando di capire come combinare tutto questo e il mio cervello ha già iniziato a sovraccaricarsi, ho bisogno che il B.T. funzioni solo quando il prezzo di stop è sotto la soglia minima, cioè prezzo aperto + presa minima. Ho questa variabile priceBU. E poi il traal è andato avanti. Provo subito una funzione separata per fare pratica, è più facile per me da capire. Arriverò al tuo non appena tutto inizierà a funzionare.

All'inizio ho scritto così:

L'ho fatto bene o dovrei farlo diversamente? Tutto sembra funzionare correttamente, ma in qualche modo è scritto semplicemente, senza alcuna condizione...

Esattamente, la funzione deve essere chiamata quando le condizioni sono soddisfatte, e le condizioni devono essere adeguate al mercato, rispettare le distanze dal prezzo e avere sempre la variazione necessaria dallo spread, ecc. E, naturalmente, il ticchettio! Quindi perché chiamare la funzione ogni tick, quindi le condizioni dovrebbero essere prescritte all'inizio. Soprattutto sul Real, il vostro non "sembrerà", ma certamente non funzionerà, otterremo errori uno dopo l'altro. E dubito che funzionerà anche su Demo. E cosa vedo in Demo? - Guarda il mio Trawl, devi anche tradurre in B/S e impostare SL e TP, e fare lo stesso per Sell, e mettere tutto in un ciclo di enumerazione e selezione della posizione, e avrai un blocco ben funzionante di tutte le modifiche, chiamando solo una funzione, e nessuna seccatura. ;)
 
hoz:



Quindi ho un test per questo:

Se stop - nuovo stop (in b.u.) non è zero... poi modifichiamo... In caso contrario, non modifichiamo. Ecco perché non mi è chiaro come questo accada. Dopotutto, capisco che devo controllare l'uguaglianza tra la fermata passata e quella nuova e l'ho fatto.

if (ND(OrderStopLoss()) - ND(priceBU * pt) != 0.0) - ci serve così, if ND(...) - questa è la normalizzazione.

 
borilunad:
Esattamente, la funzione deve essere chiamata quando le condizioni sono soddisfatte, e le condizioni devono essere adeguate al mercato, rispettare la distanza dal prezzo e avere sempre il gap necessario (mine prev), il che impedisce violazioni ed errori dovuti a movimenti spontanei del prezzo. E, naturalmente, il ticchettio! Quindi perché chiamare la funzione ogni tick, quindi le condizioni dovrebbero essere prescritte all'inizio. Soprattutto sul Real, il vostro non "sembrerà", ma certamente non funzionerà, otterremo errori uno dopo l'altro. E dubito che funzionerà anche su Demo. E cosa vedo in Demo? - Guarda il mio Trawl, devi anche tradurre in B/S e impostare SL e TP, e fare lo stesso per Sell, e mettere tutto in un ciclo di enumerazione e selezione della posizione, e avrai un blocco ben funzionante di tutte le modifiche, chiamando solo una funzione, e nessuna seccatura. ;)


Wow. È come se fossi nato di nuovo. Prima era più facile, e ora sto pensando a come renderlo diverso. Ho fatto un loop all'inizio. Ora dovrò riscrivere tutto...

Una cosa strana. Lei dice che non funzionerà. Ma per quanti esperti ho visto, tutto è chiamato da funzioni separate e funziona... Sono d'accordo che consuma più risorse, ma... perché ci saranno fasci di errori è un mistero per me.

È un mistero per me perché ho visto tanti scoop ed è scritto nello stesso modo del mio. Ma non ho mai visto un ciclo e una scelta all'inizio, e poi tutto è incatenato ad esso... Non ho mai visto...

 
hoz:


Wow. È come se fossi nato di nuovo. Una volta era più facile, ma ora mi sto chiedendo come rifare qualsiasi cosa. Ho fatto un loop all'inizio. Ora devo riscrivere tutto.

Una cosa strana. Lei dice che non funzionerà. Ma per quanti esperti ho visto, tutto è chiamato con funzioni separate e funziona... Sono d'accordo sul fatto che consuma più risorse, ma... il motivo per cui ci saranno fasci di errori è un mistero per me.

È un mistero per me perché ho visto tanti scoop ed è scritto nello stesso modo del mio. Non ho mai visto un ciclo e una scelta all'inizio, e poi tutto si aggrappa ad esso...

Codebase ha un sacco di soluzioni diverse e di livello diverso. Ho iniziato con delle modifiche e gradualmente sono arrivato a questa costruzione, che non è affatto nuova, ma per me è conveniente. Ho un sacco di funzioni off-start senza modifiche. Per aprire un ordine e/o una posizione c'è anche una funzione. Invece, faccio un sacco di controlli prima dell'apertura, anche con funzioni fuori dall'inizio. Per chiudere una posizione, uso molte condizioni con ancora più funzioni per vari controlli.

È proprio questa funzione che uso per le modifiche, ma le modifiche sono diverse e comportano diverse condizioni, controlli e misure di protezione. Non posso stipare tutto in una funzione e non ha senso. Vi accedo quando tutte le condizioni sono soddisfatte e tutto è stato calcolato, e gli do solo l'ultimo passo. Se qualcosa è sbagliato, non lo invia, lo restituisce, ricontrolla i dati e riprova, e solo il prezzo esatto e i dati esatti vengono inviati al DC, che viene immediatamente accettato e impostato. La cosa principale è non disturbare inutilmente la società di intermediazione.

Ancora una volta, si consiglia di provare solo due righe di condizioni per impostare un nuovo valore di SL nella pesca a strascico e capirete che qui dobbiamo essere molto accurati. A proposito, questo blocco, sviluppato da me, vaga da un TS all'altro con leggere modifiche. Tutto il resto, specialmente la chiusura deve essere fatto di nuovo, a seconda dell'algoritmo TS selezionato. E infine, non insisto su nulla, condivido solo quello che ho provato e testato, e non escludo che qualcuno possa offrirvi qualcosa di più accettabile per voi. Quindi prova, prova, prova, prova, ma non scommettere mai su Real a caso, qualche prodotto mezzo finito.

Perché vi sto dicendo questo, perché ogni principiante qui vuole sbattere fuori una soluzione rapida e fare "grana". Questo dovrebbe essere un regalo per un lavoro ben fatto. E chi non è ancora uscito dall'infanzia, non ama il lavoro e vuole solo giocare, il mercato non lo perdonerà.

Buona notte! E domani, con la testa libera, di nuovo al lavoro!

 
Valerius:


Non sembra esserci nessun esperto che possa rispondere a questa domanda molto semplice, solo due programmatori che si riuniscono in un incontro e questo è tutto... Qual è lo scopo di questo forum, allora?

 
Valerius:


Non sembra esserci nessun esperto che possa rispondere a questa domanda molto semplice, solo due programmatori che si riuniscono in un incontro e questo è tutto... Qual è lo scopo di questo forum, allora?

Alla tua domanda è già stato risposto un centinaio di volte - se stai confrontando due numeri frazionari, normalizza entrambi prima di confrontarli