[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate. Non posso andare da nessuna parte senza di te. - pagina 285
Ti stai perdendo delle opportunità di trading:
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Registrazione
Accedi
Accetti la politica del sito e le condizioni d’uso
Se non hai un account, registrati
Forse la funzione https://www.mql5.com/ru/forum/107476/page21 può aiutare.
Funzione isCloseLastPosByTake().
Questa funzione restituisce una bandiera per chiudere l'ultima posizione della presa.
Flag up - True - TakeProfit è stato attivato.
Flag abbassato - Falso - la posizione è stata chiusa per un altro motivo.
La funzione stessa dovrebbe essere messa alla fine del codice. Aggiungo anche alla condizione di vendere:
Buon giorno, sera o mattina a tutti voi.
Ho fatto tutto come ho scritto. Ho messo la funzione alla fine del codice e l'ho aggiunta alle mie condizioni di vendita.
Ci ho appena pensato e l'ho aggiunto per l'acquisto. Gli ordini saranno chiusi non solo da BUY, ma anche da SHELL.
Ho inserito la funzione isCloseLasPosByTake() alla fine.
Ecco una tale torta, o come si diceva pfc Gotsman pittura a olio. help the dummy out.... non sanno niente.......
il codice stesso (cioè solo l'inizio)
Ho scritto specificamente nel mio post. Che questa funzione isCloseLastPosByTake() - deve essere messa alla fine del codice, PRIMA della START FUNCTION!
E dove l'hai messo?
E fate attenzione alle parentesi graffe nelle condizioni di acquisto e di vendita. È chiaro che ti mancano (controlla che il numero di parentesi aperte sia uguale al numero di quelle chiuse). Qui ha corretto la vendita:
Buona giornata!!!
Ho bisogno di aiuto! Mi scuso per non essere modesto.
Ma ecco il mio problema, ho un EA che si basa su un Martin, mette il primo ordine VENDERE o COMPRARE, qualunque cosa io voglia, ma voglio essere in grado di scegliere COMPRARE o VENDERE nelle proprietà EA. Cioè metto ad esempio BUY nelle sue proprietà e apre un ordine BUY only, o il contrario.
Temo di non aver ancora imparato a programmare in MQL4 .
Sto allegando il consulente stesso.
Grazie in anticipo a chi risponderà!
Ho scritto specificamente nel mio post. Che questa funzione isCloseLastPosByTake() - deve essere messa alla fine del codice, PRIMA della START FUNCTION!
E dove l'hai messo?
E fate attenzione alle parentesi graffe nelle condizioni di acquisto e di vendita. È chiaro che ti mancano (controlla che il numero di parentesi aperte sia uguale al numero di quelle chiuse). Ecco la soluzione per la vendita:
L'ho messo dopo l'inizio fi, capisco.....
Ho sbagliato allora, grazie per il punzecchiamento :-))
Se ho capito bene, dovrebbe essere messo dopo } alla fine del blocco di funzioni di deinizializzazione esperto ??????? o dopo return(0); alla fine di start-???????
Grazie in anticipo per la vostra pazienza!!!!!!!!!
L'ho inserito dopo la funzione di avvio, quindi ho capito.....
Mi sono sbagliato, grazie per il poke :-))
Se ho capito bene, dovrebbe essere messo dopo } alla fine del blocco di funzioni di deinizializzazione esperto ??????? o dopo return(0); alla fine di start-???????
Grazie in anticipo per la vostra pazienza!!!!!!!!!
Deve essere collocato all'esterno. Non all'interno di qualsiasi funzione, - ma come una funzione separata e indipendente.
Come questo:
Non sono sicuro che in queste condizioni l'Expert Advisor funzioni. Perché la prima posizione non sarà in grado di aprire...
La funzione isCloseLastPosByTake() dovrebbe essere rimossa da una condizione di acquisto o vendita.
Allora il consulente funzionerà.
Buon giorno!!!
Ma ecco il mio problema, ho un EA che si basa su un Martin, mette il primo ordine VENDERE o COMPRARE, qualunque cosa io voglia, ma voglio essere in grado di scegliere COMPRARE o VENDERE nelle proprietà EA. Cioè metto per esempio BUY nelle sue proprietà e apre un ordine BUY only, o viceversa.
Sto allegando l'EA stesso.
Grazie in anticipo a tutti quelli che rispondono!
È improbabile che qualcuno risponda. L'EA è decompilato (hackerato) e tali file non sono i benvenuti qui...
Cioè il browser predefinito
ShellExecute, il comando "aperto", per così dire.
Ho deciso di studiare MQL 4 poiché tutto quello che ho trovato non soddisfa le mie aspirazioni. Al momento sto studiando per capire come lavorano i professionisti e migliorarlo per la mia idea. C'è una funzione personalizzata (semplice e piccola, una pagina), il codice è allegato. A causa del mio dilettantismo, non posso per due giorni capire - cosa restituisce questa funzione come risultato, e quale condizione annidata è la Else?
Qualcuno vorrebbe piantare una scintilla di conoscenza nella mia ottusità?
Quello che ottengo è questo:
Lo scopo della funzione è determinare se c'è già un ordine piazzato per questa coppia e, se c'è, determinarne il tipo.
La funzione che ha chiamato questa funzione aspetta la presenza di uno degli ordini selezionati nella procedura interruttore, La funzione dovrebbe restituire "1", in presenza di due ordini - "2", e in assenza di ordini "-1".
Il ciclo viene avviato se l_pos_16= 0. Supponiamo di avere quattro ordini pendenti in totale per alcune coppie, inclusi due alla coppia in cui l'EA sta lavorando e non sono i primi.
Tuttavia, alla prima iterazione del ciclo, la funzione if(OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) controlla la posizione con il numero "0" nella lista degli ordini, ma non c'è tale posizione (perché ho capito che la numerazione parte dalla posizione 1) e quindi passerà a quella successiva. else con uscita completa da fCountOrders(int &a_count_0, int &a_count_4, int &a_count_8, int &a_count_12) con ritorno del valore Ritorno(-1).
Il senso della funzione nel suo insieme si perde, poiché il risultato dovrebbe essere lo stesso indipendentemente dalla presenza o assenza di ordini al simbolo dato .
Tuttavia, quando l'EA funziona, questa funzione definisce e dà ciò che la funzione chiamata si aspetta da essa, che poi lavora in funzione del risultato ottenuto .
Inoltre non capisco cosa altrimenti Ritorno(-1) funzionerà in
se (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) {
Oppure stesso in if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_N) {
Il codice della funzione :
int fCountOrders(int &a_count_0, int &a_count_4, int &a_count_8, int &a_count_12)
a_count_0= 0;
a_count_4 = 0;
a_count_8 = 0;
a_count_12 = 0;
gi_252 = 0;
for (int l_pos_16 = 0; l_pos_16 < OrdersTotal(); l_pos_16++) {
se (OrderSelect(l_pos_16, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic_N) {
switch (OrderType()) caso OP_BUY:
a_count_0++;
gi_252 = 1;
g_ticket_268 = OrderTicket();
gs_272 = OrderComment();
g_ord_open_price_256 = OrderOpenPrice();
g_ord_stoploss_288 = OrderStopLoss();
g_ord_takeprofit_296 = OrderTakeProfit();
pausa;
caso OP_SELL:
a_count_4++;
gi_252 = -1;
g_ticket_268 = OrderTicket();
gs_272 = OrderComment();
g_ord_open_price_256 = OrderOpenPrice();
g_ord_stoploss_288 = OrderStopLoss();
g_ord_takeprofit_296 = OrderTakeProfit();
pausa;
caso OP_BUYSTOP:
a_count_8++;
pausa;
caso OP_SELLSTOP:
a_count_12++;
}
}
} else return (-1);
}
ritorno (a_count_0 + a_count_4 + a_count_8 + a_count_12);
/* l'esecuzione normale di f-i restituirà uno nella variabile in uno dei caso e "0" in tutti gli altri, che indica che c'è uno di
dei tipi di ordine, e il numero di questo ordine è disponibile per la funzione chiamante,
commento, prezzo aperto, stop loss e take profit */
}