[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 4. - pagina 628
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
Non hai un ordine selezionato nella funzione Trade ().
A proposito. Che senso ha selezionare un ordine nella funzione Trade()? Sto chiamando la funzione OrdersModifying() dove l'ordine è selezionato e viene modificato lì. Cioè, la variante iniziale era corretta!
Esiste una cosa del genere. Ecco la soluzione.
E la funzione di modifica è qui:
Strano Ma non ci sono fermate e prese sull'uscita di nuovo.
OrderSelect(g_ticket,SELECT_BY_TICKET) prima della linea if(OrderStopLoss() == 0 || OrderTakeProfit() == 0)
History, History_Draw - funzionano come Expert Advisors durante i test.
Avete bisogno di qualcosa come questo per guardare le correzioni nella storia in base a determinati parametri
Nella storia o nel grafico? Vuoi vedere i risultati in una finestra del grafico, in una finestra separata, stampati in una tabella, e se sì, che tipo di dati, sotto forma di candele di colore diverso, come linee che collegano l'inizio e la fine del movimento?
OrderSelect(g_ticket,SELECT_BY_TICKET) prima della linea if(OrderStopLoss() == 0 || OrderTakeProfit() == 0)
Questo è quello che ho fatto:
Non ci sono fermate e acquisizioni. Il log dice errore 130, dicendo che gli arresti sono sbagliati. Non ne vedo la ragione.
Questo è quello che ho fatto:
Non ci sono fermate e acquisizioni. Il log dice errore 130, dicendo che gli arresti sono sbagliati. Non ne vedo la ragione.
Senza if, soloOrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES);, e potete lasciarlo in OrdersModifying()
//+------------------------------------------------------------------+
void OrdiniModifica()
{
OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES);
se(g_type == OP_BUY)
{
if(i_sl != 0)sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt,Digits); // Se il parametro di ingresso stop loss non è 0
// Ottieni il valore di Stop Loss per l'ordine selezionato
if(i_tp != 0)tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,Digits); // Se il parametro di input TakeProfit non è uguale a 0, allora...
// ottenere il valore di TakeProfit per l'ordine selezionato
}
se(g_type == OP_SELL)
{
if(i_sl != 0)sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,Digits); // Se il parametro di ingresso dello stop loss non è 0
// Ottieni il valore di Stop Loss per l'ordine selezionato
if(i_tp != 0)tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,Digits); // Se il parametro di input TakeProfit non è uguale a 0, allora...
// ottenere il valore di TakeProfit per l'ordine selezionato
}
if(sl != 0 || tp != 0) // Se i valori ottenuti di sl e tp non sono uguali a 0, allora..
{
OrderModify(OrderTicket(),OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime); // Modifica ordine
}
}
Problema con Symbol() MT4:
2 funzioni da illustrare:
L'esecuzione del primo produce una stringa vuota:
Ma la seconda funzione produce una stringa ID "EURUSD" (beh, dipende dal grafico, ma produce, anche se secondo la logica della funzione dovrebbe essere una stringa vuota):
Aiutatemi a capire cosa c'è che non va? Grazie
Non potete usare nomi riservati (valore) quando dichiarate le vostre variabili, chiamate _value
Questo è quello che ho fatto:
Non ci sono fermate e acquisizioni. Il log dice errore 130, dicendo che gli arresti sono sbagliati. Non ne vedo la ragione.
E non lo faranno!
Vitaly, ho fatto come hai detto tu, ma non è cambiato nulla. A quanto pare il bug è sepolto da qualche altra parte.
Prima avevo tutto (ordini di apertura - modifica e trasferimento a b.w. quando il livello di prezzo impostato viene raggiunto) e tutto funzionava. Era così:
Ora, dato che ho suddiviso tutto in funzioni specializzate specifiche, tutto ha smesso di funzionare così tanto. Ho provato in entrambi i modi, ma non funziona niente, non ci sono fermate.
E non lo faranno!
Dov'è la logica in questo? Vorrei capire... Ecco la funzione:
Se le variabili di input i_sl e i_tp non sono uguali a zero, otteniamo i prezzi di stop e take che saranno già nell'ordine - sl etp. Dopo di che controllerò se abbiamo calcolatosl etp qui (se per gli short):
Se i valori sono ottenuti, allora non possono essere zero... perché saranno cambiati! Queste sono variabili che otteniamo in modo sequenziale in base al contesto del codice.
E qui, ho controllato se abbiamo trovato i valori di stop e take. Come possono essere zero dopo tutte le condizioni?
Prima costruisci la tua logica all'inizio, poi fai funzioni, file, ecc.
Perché grattarsi la mano sinistra dietro l'orecchio destro!