Tutte le domande dei nuovi arrivati su MQL4 e MQL5, aiuto e discussione su algoritmi e codici - pagina 72
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
Se lo si confronta con l'equilibrio, è così:
Grazie.
OK, allora, come ho capito, otteniamo tre diverse funzioni personalizzate con il ritorno di quella giusta (se cerchiamo tre parametri diversi)
ArraySort
poi
ArrayBsearch per il numero giusto
e poi come affrontarlo?
Esattamente la transizione da un array a un elemento della strutturaTu non capisci.
Dovete fare una singola funzione che popolerà e ordinerà l'array dichiarato globalmente. L'array dovrà essere passato alla funzione per riferimento.
E avete bisogno di funzioni aggiuntive che prendano i dati di cui avete bisogno da questo array.
Tu non capisci.
Dovete fare una singola funzione che riempie e ordina l'array dichiarato globalmente. L'array dovrà essere passato alla funzione per riferimento.
E avete bisogno di funzioni aggiuntive che prendano i dati di cui avete bisogno da questo array.
Ok, potete dimostrare come prendere qualcosa da un array di strutture? diciamo riempito e ordinato
come trasferire per riferimento e scrivere.
Si prega di consigliare come dovrebbe essere la condizione. Se viene attivato uno stop loss, allora il lotto viene moltiplicato per 2, e se l'ordine successivo attiva un take profit, il lotto tornerebbe al lotto originale, che era prima dello stop loss.
Lo capisco così, ma non so come andare avanti...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
un'altra domanda, cosa ho scritto di sbagliato nel blocco di cancellazione degli ordini? non sempre cancella gli ordini, nel log dice
market order #1 cannot be deleted
{
for(int n=OrdersTotal()-1;n>=0;n--)
{
if(OrderSelect(n,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
bool del=OrderDelete(OrderTicket());
if (del==true)
{
otl_b=0; otl_s=0; //обнуляем переменные отложек
}
}
}
}
}
Un'altra domanda, cosa ho scritto di sbagliato nel blocco per cancellare gli ordini? Non sempre cancella gli ordini, nel log dice
market order #1 cannot be deleted
{
for(int n=OrdersTotal()-1;n>=0;n--)
{
if(OrderSelect(n,SELECT_BY_POS))
{
if(OrderMagicNumber()==magic)
{
bool del=OrderDelete(OrderTicket());
if (del==true)
{
otl_b=0; otl_s=0; //обнуляем переменные отложек
}
}
}
}
}
Stai cercando di cancellare un ordine a mercato, non vengono cancellati, vengono chiusi usando la funzione OrderClose(). Affinché il ciclo si cancelli o si chiuda correttamente, dobbiamo distinguere l'ordine in base al suo tipo.
if(OrderType()<=OP_SELL) - per ordini a mercato, if(OrderType()>OP_SELL) - per ordini pendenti.
C'è una cosa chiamataCHARTEVENT_MOUSE_MOVE
Domanda: questo funziona sui dispositivi mobili dove non c'è il mouse?
Si prega di consigliare come dovrebbe essere la condizione. Se viene attivato uno stop loss, allora il lotto viene moltiplicato per 2, e se l'ordine successivo attiva un take profit, il lotto tornerebbe al lotto originale, che era prima dello stop loss.
Lo capisco così, ma non so come andare avanti...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
Si prega di consigliare come dovrebbe essere la condizione. Se viene attivato uno stop loss, allora il lotto viene moltiplicato per 2, e se l'ordine successivo attiva un take profit, il lotto tornerebbe al lotto originale, che era prima dello stop loss.
Lo capisco così, ma non so come andare avanti...
for (int i=OrdersHistoryTotal()-1; i>=0; i--)
{
if (OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)
{
if (OrderMagicNumber()==magic)
{
if (OrderStopLoss()==OrderClosePrice())
{
lot=lot*4;
}
}
}
}
La soluzione a questo problema dipende dalla logica completa dell'Expert Advisor, puoi rintracciare l'attivazione dello stoploss o del takeprofit dal suo commento.
if(StringFind(OrderComment(),"tp")>=0)// сработал тейкпрофит
...
Tu non capisci.
Dovete fare una singola funzione che riempia e ordini l'array dichiarato a livello globale. L'array dovrà essere passato alla funzione per riferimento.
E avete bisogno di funzioni aggiuntive che prendano i dati di cui avete bisogno da questo array.