MMA_Breakout_strategy_volume I (senza MM o MF) - codificato da WhooDoo22 - pagina 3

 
Perché non correggi il codice che è l'oggetto di questo thread prima di passare a un'altra versione... impareresti molto se lo facessi.
 
Simon,


Un altro punto . . .

RE: È importante per me sottolineare che il mio metodo di codifica è stato il più veloce che ho potuto mettere insieme per confermare i miei pensieri sulla capacità di trading e il valore del Volume I/II. Non ho abbastanza tempo nella mia vita per codificare tutto "correttamente" la prima volta. Di solito inizio i progetti per fasi. Esempio: Fase 1. Coprire tutte le basi funzionali, Fase 2. Pulire il codice, 3. Aggiungere bellezza al lato visivo esterno dell'EA. Attualmente sto ancora lavorando alla Fase 1. C'è semplicemente molto di più in questo EA di un tipico ordine di invio, ordine di chiusura EA. Molto tempo e pensieri sono stati messi alla prova. Il test sarà superato dopo l'evoluzione del volume I. Sono fiducioso del vostro riconoscimento della sua unicità.

Detto questo, sto considerando un'opzione diversa per "far rotolare la palla" per la prima funzione OrderSend(). Non sono ancora sicuro di quale direzione prenderò. Alla fine sostituirò completamente la condizione "if(OrdersHistoryTotal()==0){" con una condizione affidabile. Hai fatto un punto importante per riflettere su questo. Apprezzo il tuo incoraggiamento.

Grazie.

 
RaptorUK:

Cos'è la variabile , cioè come può essere un numero di ticket quando gli fai questo?

Ho 4 trade live al momento, i loro numeri di ticket non sono sequenziali.

Il segno di uguaglianza dovrebbe far sì che la variabile valga qualcosa, ma cos'è? Penso di sapere cosa intendi, come è possibile, ++ è una buona domanda
 
WhooDoo22:
Simon,


Un altro punto . . .

RE: È importante per me sottolineare che il mio metodo di codifica è stato il più veloce che ho potuto mettere insieme tutto per confermare i miei pensieri sulla capacità di trading e il valore del Volume I/II. Non ho abbastanza tempo nella mia vita per codificare tutto "correttamente" la prima volta.

Devi, almeno, farlo funzionare correttamente . . . questo codice è molto, molto lontano da questo. Ho detto deve . . . . non è corretto, hai una scelta, puoi continuare a scrivere il tuo codice e avere GB di errori quando esegui il ST e avere un codice che non funzionerà su Live o Demo . . . se lo desiderate.
 

Simon,

Devi, almeno,..

RE: Non mi preoccupo di quanto tempo ci vorrà per raggiungere un obiettivo, semplicemente continuo ad andare avanti fino a quando il progetto è completo. La mia scelta sarebbe quella di non avere GB di errori :) Preferirei ascoltare le critiche costruttive dei miei colleghi codificatori e rispondere e ricambiare le soluzioni per i problemi di codifica presentati. Queste soluzioni potrebbero potenzialmente produrre meno errori per il Volume I/II.

Grazie.

 
WhooDoo22:

Simon,

Devi, almeno,..

RE: Non mi preoccupo di quanto tempo ci vorrà per raggiungere un obiettivo, semplicemente continuo ad andare avanti fino a quando il progetto è completo. La mia scelta sarebbe quella di non avere GB di errori :) Preferirei ascoltare le critiche costruttive dei miei colleghi codificatori e rispondere e ricambiare le soluzioni per i problemi di codifica presentati. Queste soluzioni potrebbero potenzialmente produrre meno errori per il Volume I/II.

grazie.



Quello che RaptorUK ha dato lì, era ed è ancora una critica costruttiva e soluzioni reciproche ai tuoi codici
 

Simon, userò una variabile booleana per risolvere questo problema. Questa condizione booleana è una soluzione comune che risolverà questo problema fino a quando non raggiungerò la fase 2. Posso quindi dare al segnale di invio del primo ordine una condizione unica che rifletta il mio stile di codifica. Grazie per il vostro contributo.

 
WhooDoo22:

Simon, userò una variabile booleana per risolvere questo problema. Questa condizione booleana è una soluzione comune che risolverà questo problema fino a quando non raggiungerò la fase 2. Posso quindi dare al segnale di invio del primo ordine una condizione unica che rifletta il mio stile di codifica. Grazie per il vostro contributo.

No, non lo farà . . . la tua codifica mostra che non capisci, se non capisci non puoi risolvere il problema.
 

Simon, io credo di capire, cos'è che tu credi che io non capisca?

Finora abbiamo discusso due cose importanti:

1. fissare i blocchi di codice di emergenza sl.

2. rimuovere la condizione attuale, "if (OrdersHistoryTotal()==0{" e sostituire la condizione con una condizione diversa (la mia soluzione attuale è di sostituire la condizione attuale con una condizione booleana per iniziare gli ordini).

//example

if(x==false){OrderSend()...; x=true;}

/* now, x is true and the code block will not execute again. Of course, I would add code to save variables and if connection 
   is lost from the terminal server, all variables are saved. Simple.
   I understand the code is incorrect, but I wrote this for you to understand its concept, not a completely typed up code. */

Questa idea di salvare le variabili è una soluzione comune per la disconnessione del server ed è stata suggerita da ubzen. Gli do credito per questa idea.

Grazie.

 
WhooDoo22:

Simon, credo di aver capito, cos'è che credi che non abbia capito?

La prima riga della tua funzione start() è questa. . .

   OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES);

. . . quale numero di biglietto sta selezionando? Beh, il biglietto è stato dichiarato senza un'impostazione variabile iniziale, quindi sarà 0, quindi stai cercando di selezionare immediatamente il biglietto 0, questo genererà un errore, se hai controllato il valore di ritorno da questo OrderSend() lo vedresti, sarebbe probabilmente l'errore 4108 ERR_INVALID_TICKET . . . se avete capito come usare OrderSend() correttamente perché fareste questo?


Se tu avessi capito OrderHistoryTotal() non l'avresti usata nel modo in cui l'hai usata e non avresti detto che sta . . . " cercando la storia commerciale della sola variabile ticket unica,"

Se tu avessi capito come funzionano le parentesi { } non avresti aggiunto parentesi non necessarie . . . non aggiungono nulla, non rendono il tuo codice più ordinato o più facile da leggere.

if(OrderType()==OP_BUY)                                                                     
      {
         {
         OrderModify(ticket,0,OrderOpenPrice()-5000*Point,0,0,Blue
         }
      }

può essere sostituito con . . .

if(OrderType()==OP_BUY)  
   OrderModify(ticket,0,OrderOpenPrice()-5000*Point,0,0,Blue);

L'utilizzo della variabile i come numero di ticket dimostra che non hai capito come funzionano i numeri di ticket al di fuori dello Strategy Tester, cioè in un conto Demo o Live . . .


Non controlli se le tue funzioni commerciali hanno funzionato o fallito, nel tuo codice questo è critico perché usi le seguenti . . .

ticket = OrderSend(Symbol(),OP_BUY,0.05,Ask,30,0,0,"",0,0,Blue);

. . . se la funzione OrderSend() fallisceticket will = -1 allora più avanti nel tuo codice quando cercherai di usare questa variabile per selezionare e ordinare per numero di ticket -1 ovviamente fallirà . . .