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

 
rigonich:

Cominciamo:

1.Se(Stoch_1>Stoch_2) flag1=1 ; , allora la condizione che la segue (Stoch_1<Stoch_2 && flag1==1) non può in principio essere vera, perché se Stoch_1<Stoch_2 flag1==0 e se flag1==1allora Stoch_1>Stoch_2. è lo stesso per tutte le condizioni successive in questa funzione, quindi solo il flag1 può cambiare il valore. Cioè, il vostro programma eseguirà le prime due righe, salteràla terza, eseguirà laquarta, salteràla quinta, eseguirà la sesta, eseguirà la settima e salterà tutte le altre.


Ti sbagli, perché non capisci il punto. Lo fa, e tutto funziona perfettamente, proprio come mi serve. Forse il codice potrebbe essere semplificato, ma ora non è più al grasso... Ho solo bisogno di finire l'intero EA e già guardare il REST dell'idea di trading che contiene....

e la programmazione per il gusto di programmare non mi interessa molto...

 
xant:

Sì, ho fatto come hai scritto. E non si compila.

Ovviamente, ho fatto qualcosa di sbagliato, ma cosa esattamente non capisco. Potresti andare avanti passo dopo passo.

Per interesse, mostratemi le mie funzioni che avete convertito nelle vostre variabili. E mostrami il log con gli errori di compilazione.
 
rigonich:

Il primo ordine ha un prezzo aperto di1,2900 e un TP di 1,300. Il secondo ordine ha un prezzo aperto di1,2800 e un TP di 1,290. Si tratta di parametri diversi. Il primo èBAY, il secondo èBAY_STOP. Anche questi sono parametri diversi.
Ma hai capito il punto, vero?
 
lottamer:


Ti sbagli perché non capisci il punto. E lo fa, e tutto funziona perfettamente come mi serve. Forse il codice potrebbe essere semplificato, ma ora non è più una questione di grasso... Ho solo bisogno di finire l'intero EA e già guardare il ritorno sull'idea di trading che contiene....

Non mi interessa programmare per il gusto di programmare...


Penso che questo sia esattamente ciò che avete - programmazione per il gusto di programmare. la vostra funzione non fa altro che sovraccaricare la CPU.

Ho iniziato a programmare dopo cinque anni di studio del mercato, sviluppando e provando varie strategie, quando mi sono reso conto che la strategia di trading (di successo) sviluppata da me e testata manualmente 20 volte sulla storia, in primo luogo, non ha analoghi, che possono essere trovati in kodobase, e in secondo luogo, anche con impostazioni vicine ai limiti delle capacità tecniche, pone requisiti che sono impossibili per gli esseri umani, e possono essere facilmente soddisfatti anche dal computer più debole (per esempio, rimanere con il computer per una settimana o più).

 
yosuf:
Ma immagino che tu abbia capito il punto?


Basta piazzare un ordine pendente con i parametri desiderati.

P.S. Nell'EA -- subito dopo l'apertura dell'ordine.

 
rigonich:


Basta piazzare un ordine pendente con i parametri desiderati.

P.S. Nell'EA -- subito dopo l'apertura dell'ordine.

Qual è il codice?
 
yosuf:
Qual è il codice?


int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0,arrow_color=CLR_NONE)
, Funzione di base utilizzata per aprire una posizione o impostare un ordine in sospeso.
Restituisce il numero di biglietto assegnato all'ordine dal server commerciale o -1 in caso di fallimento. Per ottenere maggiori informazioni sull'errore, chiamare GetLastError().
Note.
Quando si apre un ordine a mercato (OP_SELL o OP_BUY), solo gli ultimi prezzi Bid (per la vendita) o Ask (per l'acquisto) possono essere usati come prezzo di apertura. Se l'operazione viene eseguita per uno strumento finanziario diverso da quello corrente, allora per ottenere le ultime quotazioni di questo strumento, si deve usare la funzione MarketInfo() con il parametro MODE_BID o MODE_ASK. Non puoi usare un prezzo stimato o non normalizzato. Se il prezzo di apertura richiesto non era nel flusso dei prezzi o il prezzo richiesto non è normalizzato secondo il numero di decimali, verrà generato l'errore 129 (ERR_INVALID_PRICE). Se il prezzo di apertura richiesto è gravemente superato, verrà generato un errore 138 (ERR_REQUOTE) indipendentemente dal valore del parametro slippage. Se il prezzo richiesto non è aggiornato ma ancora presente nel flusso dei prezzi, la posizione sarà aperta al prezzo corrente e solo se il prezzo corrente rientra nell'intervallo prezzo+-slippage.

I prezzi di StopLoss e TakeProfit non possono essere troppo vicini al mercato. La distanza minima di stop in pip può essere ottenuta utilizzando la funzione MarketInfo() con il parametro MODE_STOPLEVEL. L'errore 130 (ERR_INVALID_STOPS) viene generato in caso di arresti errati o non normalizzati.

Quando si piazza un ordine pendente, il prezzo di apertura non può essere troppo vicino al mercato. La distanza minima del prezzo in sospeso dal prezzo corrente di mercato in punti può anche essere ottenuta utilizzando la funzione MarketInfo() con il parametro MODE_STOPLEVEL. Se il prezzo di apertura dell'ordine pendente non è corretto, verrà generato l'errore 130 (ERR_INVALID_STOPS).

Su alcuni server commerciali si può impostare un divieto di scadenza degli ordini pendenti. In questo caso un errore 147 (ERR_TRADE_EXPIRATION_DENIED) sarà generato quando si cerca di impostare un valore diverso da zero nel parametro di scadenza.

Su alcuni server di trading si può impostare un limite sul numero totale di ordini aperti e in sospeso. Se questo limite viene superato, non verrà aperta una nuova posizione (nessun ordine pendente verrà impostato) e il server di trading restituirà l'errore 148 (ERR_TRADE_TOO_MANY_ORDERS).
Parametri:
simbolo - Nome dello strumento finanziario con cui viene eseguita l'operazione di trading.
cmd - Operazione commerciale. Può essere qualsiasi valore commerciale.
volume - Numero di lotti.
prezzo - Prezzo di apertura.
slittamento - Slittamento di prezzo massimo consentito per gli ordini di mercato (ordini di acquisto o di vendita).
stoploss - Il prezzo di chiusura di una posizione quando viene raggiunta la perdita (0 se non c'è perdita).
takeprofit - Il prezzo di chiusura di una posizione quando viene raggiunto il livello di redditività (0 se non c'è un livello di redditività).
commento - Testo del commento dell'ordine. L'ultima parte del commento può essere cambiata dal server di trading.
magia - Numero magico dell'ordine. Può essere usato come identificatore definito dall'utente.
scadenza - Tempo di scadenza dell'ordine in sospeso.
colore_freccia - Colore della freccia di apertura sul grafico. Se il parametro manca o il suo valore è CLR_NONE, la freccia di apertura non viene mostrata sul grafico.
Esempio:
 int ticket; if(iRSI(NULL,0,14,PRICE_CLOSE,0)<25) { ticket=OrderSend(Symbol(),OP_BUY,1,Ask,3,Bid-25*Point,Ask+25*Point, "My order #"+counter,16384,0,Green); if(ticket<0) { Print("OrderSend failed with error #",GetLastError()); return(0); } }
 
lottamer:

e anche se il tuo codice ha dato 24 errori nel compilatore!!! comunque grazie anche per l'aiuto disattento.... per l'idea... (ora funziona - anche se in pratica ho provato a farlo ma la punteggiatura non ha funzionato)


Non ho provato a compilarlo, ho solo messo le parentesi! Altrimenti non funzionerebbero affatto. Ho mostrato come devono essere. Il resto della logica non è ancora chiaro. Ricordo che, mettendo ogni bandiera successiva, si chiedeva iff il contrario della condizione precedente, mentre si controllava se la bandiera era vera...

Infatti, il mio primo commento ti ha esortato a riconsiderare ciò che hai scritto, controllando il riferimento.

 
qualche consiglio per il novizio!!!! l'advisor è disattivato nel terminale ma lo stoploss è attivato, è possibile?
 
tolik73:
qualche consiglio per un principiante!!!! l'advisor è disattivato nel terminale ma lo stoploss è attivato, è possibile?

Certo che lo è.