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

 
borilunad:
Allora vedi sopra, corretto!
Si scopre che quando sono stato accusato di mancanza di logica booleana - intendevano parentesi extra negli operatori.... ma queste sono regole di formattazione delle espressioni e degli operatori.... è logica booleana?
 
T-G:

Ciao a tutti. Ho bisogno di aiuto.

Nella mia scheda si apre una serie di ordini, nella quantità impostata dal parametro MaxOrders, di seguito ho indicato come si presenta per esempio, non giudicare strettamente dai lotti

Ordine di 1 lotto = 128

2-Lotto ordine=256

3-lotto-ordine-lotto=512

4-lot-order-lot=1024

5-ordine-lotto=2048

Questo è tutto per il tester.

MaxOrders=5, e 5 ordini sono aperti. Il problema è che nello Strategy Tester il mio broker ha un limite di 1000 lotti e quindi gli ordini 4 e 5 non si aprono come dovrei.

Ho cercato su Internet un modo per cambiare questo parametro nello Strategy Tester, ma non ho trovato come farlo.

Così, ho deciso di risolvere questo problema usando la programmazione. Ho deciso di aprire diversi ordini per 4 ordini e ottenere due

4-ordine-lotto=1000

4-ordine-lotto=24

per 5 ordini 3:

5-ordine-lotto=1000

5-ordine-lotto=1000

5-ordine-lotto=48

ma qui ci sono due problemi,

- come rompere correttamente il MM in modo che sia suddiviso in lotti secondo il lotto massimo

- E come aprire ordini aggiuntivi senza rompere l'ordine, cioè ci saranno più ordini che nel MaxOrders, ma non contare gli ordini aggiuntivi che vengono aperti per soddisfare il volume.

Forse dovremmo dividere i lotti, cioè aprire diverse posizioni che sono collegate tra loro con commenti in cui sono collocati i ticker degli ordini padre e figlio. L'ordine padre con il volume di 1000 avrà un biglietto dell'ordine con il volume di 24, e l'ordine figlio con il volume di 1000 avrà un biglietto in questo ordine. E dovremo chiudere, modificarli allo stesso modo... O più semplicemente - un micro conto e lotti molto piccoli. Nei calcoli per l'inseguimento visivo moltiplicate i lotti per il coefficiente, in modo che prendano il valore che vi serve...

Non mi viene in mente nient'altro, se non una società di intermediazione che permette volumi maggiori.

Oppure... dividi per 100 i tuoi lotti

 
artmedia70:

Non c'è bisogno di essere un esperto in algebra booleana per dichiarare chiaramente le condizioni...

Lascia che ti renda la vita un po' più facile... Sostituite if con il solito if, else con otherwise, && con and, || con or , ecc. Poi sarete in grado di leggere con le vostre parole normali ciò che è scritto o decidere cosa volete scrivere.

Quello che hai scritto (saltiamo per ora la descrizione della condizione sbagliata):

1. if (ot==0) Se non ci sono ordini a mercato (né ordini a mercato, né pendenti, né aperti da questo EA, o da un altro EA, o manualmente)... Se sì, viene eseguita la linea 2, se no, si passa alla linea 3.

2. if (Bid==Price) Se il prezzo è uguale al prezzo di apertura della candela corrente... Se lo è, allora viene eseguita la linea 3, altrimenti si passa alla linea 4.

3. if(((Open[1]-Close[1])>100*Point)&&((Open[1]-Close[1])<120*Point)) Se il prezzo di apertura della prima candela è superiore al prezzo di chiusura della prima candela di più di 100 punti e meno di 120 punti... Se lo è, vai alla linea 4, altrimenti vai alla linea 5.

4. if(((High[1]-Open[1])>40*Point)&&((High[1]-Open[1])<60*Point)) Se il massimo della prima candela è superiore al prezzo aperto della prima candela di più di 40 punti e meno di 60 punti... Se lo è, allora eseguiamo la linea 5, altrimenti andiamo alla linea 6.

5. if(((Close[1]-Low[1])>40*Point)&&((Close[1]-Low[1])<60*Point)) Se la chiusura della prima candela è superiore al minimo della prima candela di più di 40 punti e meno di 60 punti. Se lo è, viene eseguita la linea 6, altrimenti si passa alla linea 7.

6.

7.

Come si può vedere da questa decomposizione, o si fanno eseguire tutte le linee di codice una dopo l'altra (nel caso in cui ogni linea restituisca true), o si salta la linea che viene dopo la linea che restituisce false.

Per evitare confusione sulle vostre condizioni e per avere la logica giusta, racchiudete tutte le dichiarazioni tra parentesi graffe, indipendentemente dal fatto che una singola linea debba essere eseguita dopo il valore di verità, o un intero blocco.

Per esempio:

Quindi, prova a scomporre il tuo codice in componenti, rimuovendo le parentesi extra, che sono inutili in questo caso...

Grazie mille per la sua risposta esauriente.

 
solnce600:
Si scopre che quando sono stato accusato di mancanza di logica booleana - intendevano parentesi extra negli operatori.... ma queste sono regole di formattazione per espressioni e operatori.... è questa logica booleana?

No - assenza di parentesi graffe dove sono necessarie. Applicare al blocco logico di ricerca delle dimensioni delle candele nel tuo EA
 
solnce600:

Grazie mille per la sua risposta esauriente.

Ho corretto il tuo codice, in modo che monitorasse ancora la chiusura per stop - ho assegnato un valore al mago per te. Non ho controllato personalmente.
 

Buon pomeriggio. Caro, per favore consiglia come implementare questa condizione nell'Expert Advisor.

Le operazioni sono aperte sul timeframe orario sotto certe condizioni, ma dobbiamo fare in modo che le operazioni siano aperte solo sotto le condizioni sul grafico a 4 ore.

Per esempio: se sul grafico orario le medie di crossover aprono un'operazione, a condizione che il grafico a 4 ore con le medie con altri parametri incrociati nella stessa direzione. Sarei grato per le risposte e l'aiuto.

 
teplovoz:

Buon pomeriggio. Caro, per favore consiglia come implementare questa condizione nell'Expert Advisor.

Le operazioni sono aperte sul timeframe orario sotto certe condizioni, ma dobbiamo fare in modo che le operazioni siano aperte solo sotto le condizioni sul grafico a 4 ore.

Per esempio: se sul grafico orario le medie di crossover aprono un'operazione, a condizione che il grafico a 4 ore con le medie con altri parametri incrociati nella stessa direzione. Sarei grato per le risposte e l'aiuto.

Si applica alle MA per ottenere dati da H4 per la prima e la seconda barra:

double MA1_H4=iMA(Symbol(),PERIOD_H4,ma_period,ma_shift,ma_method,appled_price,1);
double MA2_H4=iMA(Symbol(),PERIOD_H4,ma_period,ma_shift,ma_method,appled_price,2);

Ottenere dati da H1 per la prima e la seconda barra:

double MA1_H1=iMA(Symbol(),PERIOD_H1,ma_period,ma_shift,ma_method,appled_price,1);
double MA2_H1=iMA(Symbol(),PERIOD_H1,ma_period,ma_shift,ma_method,appled_price,2);

Fate lo stesso per altri periodi e indicatori.

 
artmedia70:

Applicare alle MA dei dati H4 per la prima e la seconda barra:

Fate lo stesso per altri periodi e indicatori.



Wow, sono così stupido, immagino che devo solo specificare l'intervallo di tempo richiesto nei parametri della procedura guidata e questo è tutto? Grazie, il mio cervello si rifiuta di lavorare in questi giorni :)
 
artmedia70:
Ho corretto il tuo codice in modo che tracciasse ancora la chiusura dello stop - ho assegnato un valore al mago per te. Non ho controllato personalmente.


Lo farò di nuovo. Grazie mille.
 
Va tutto bene, tutti ne abbiamo una volta ogni tanto...