Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 22
![MQL5 - Linguaggio delle strategie di trading integrato nel client terminal MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
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
О! Grazie. Non me ne sono accorto io stesso al mattino... Però c'è ancora bisogno di fare un controllo per riempire gli array. In Quatermass non ha incontrato, e in cinque molto spesso non compilato i dati la prima volta a causa della mancanza di dati storici.
ZS. Dovresti dormire di più - i tuoi pensieri lavoreranno in quella direzione.
Beh, puoi metterlo in un ciclo
o anche
per copiare esattamente l'importo richiesto.
ps; Mentre andavo a versare il tè, ho avuto un'altra idea, usare CopyRates() e un array di strutture MqlRates rates[] ma sono troppo pigro per riscrivere qualcosa.
Beh, potresti anche metterlo in un ciclo
o anche
per copiare esattamente il numero di copie richieste.
ps; Mentre bevevo il tè, ho avuto un'altra idea - usare CopyRates() e array di strutture MqlRates rates[], ma sono troppo pigro per riscriverlo.
Aiutami a controllare altre Condizioni di vendita.
{
//+--------------------------------------------------------------------+
//| -= stop loss в без убыток =- |
//+--------------------------------------------------------------------+
bool result;
double stop;
int cmd,error;
for(int i=0;i<OrdersTotal();i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderProfit()>pOPCS)
{
cmd=OrderType();
double blevel=OrderStopLoss()<Bid-Point*TS;
double slevel=OrderStopLoss()>Ask+Point*TS;
//---
if(cmd==OP_BUY || cmd==OP_SELL)
{
while(true)
{
if(cmd==OP_BUY && blevel) stop=Bid-Point*TS;
else stop=Ask+Point*TS;
result=OrderModify(OrderTicket(),OrderOpenPrice(),stop,0,0,Orange);
if(result!=TRUE) { error=GetLastError(); Print("LastError = ",error); }
else error=0;
if(error==135) RefreshRates();
else break;
}
}
}
}
Ha una strana logica. Ma anche se non si guarda alla strana logica, allora:
Qui avete due condizioni per comprare, e tutto il resto per vendere.
else stop=Ask+Point*TS;
La tua logica è strana. Ma anche se non si guarda alla strana logica, allora:
Qui avete due condizioni controllate per Buy, e tutto il resto per Sell
else stop=Ask+Point*TS;
Ho provato a collegareslevel=OrderStopLoss()>Ask+Point*TS per vendere;
Ma siccome non sono un'esperta di programmazione, non è venuto fuori niente di utile. Ho curiosato nei forum per una settimana.
Perché questa strana logica?) Il codice non è interamente mio.
Ho provato ad aggiungereslevel=OrderStopLoss()>Ask+Point*TS;
Ho frugato nei forum per una settimana e tutti i miei tentativi sono finiti con il Sell Stop che si muoveva insieme al prezzo.
Il codice non è tutto mio, l'ho rielaborato come meglio potevo.
Perché non scrivi prima le condizioni sotto le quali i Sell e i Buy stop dovrebbero essere spostati?
E poi, dopo averci pensato, scrivete nel vostro codice ciò che è scritto sulla scheda.
E prima di tutto, scrivete su un pezzo di carta con una matita le condizioni in cui è necessario spostare lo stop Buy e lo stop Sell.
E poi, dopo averci pensato, scrivete nel codice ciò che è scritto sul pezzo di carta.
slevel=OrderStopLoss()>Ask+Point*TS; bene, sembra essere quello giusto o è sbagliato? Sono nuovo in questo.
Capite almeno cosa c'è scritto in questa condizione? Questa è un'assegnazione di zero o uno a una variabile di tipo double
Cosa vuoi ottenere?
Capite almeno cosa c'è scritto in questa condizione? È un'assegnazione di zero o uno a una variabile di tipo double
Cosa vuoi ottenere?
Ecco cosa ho corretto.
Controllare la condizione - non muovere SL avanti e indietro, ma solo in una direzione.
Per esempio, per un ordine BUY, la vostra formula
OrderStopLoss()<bid-point*TrailingStop
Usando questo esempio, l'ho fatto per Sel.
Ecco cosa ho letto.
la condizione di controllo - non spostare SL avanti e indietro, ma solo in una direzione
Per esempio, per un ordine BUY, la vostra formula
OrderStopLoss()<bid-point*TrailingStop
Usando questo esempio, l'ho incollato per una posizione Sell.
Quindi vi serve così:
in russo... se l'ordine stop è inferiore al prezzo Bid meno la distanza trailing stop, allora ... la tua azione
E si assegna alla variabile il risultato di questa espressione logica, cioè zero o uno.
Quindi avete bisogno di questo:
in russo... se l'ordine stop è inferiore al prezzo Bid meno la distanza trailing stop, allora ... le vostre azioni
E si assegna alla variabile il risultato di questa espressione booleana - cioè zero o uno.
Sono completamente confuso.
double blevel=OrderStopLoss()<Bid-Point*TS; funziona per me. SL insegue il prezzo solo in profitto.
double slevel=OrderStopLoss()>Ask+Point*TS; Non so come aggiungere questo a else
non sono un bool.