voidOnStart()
{
int TrailingStop=50;
//--- модифицирует цену Stop Loss ордера на покупку №12345if(TrailingStop>0)
{
OrderSelect(12345,SELECT_BY_TICKET);
if(Bid-OrderOpenPrice()>Point*TrailingStop)
{
if(OrderStopLoss()<Bid-Point*TrailingStop)
{
bool res=OrderModify(OrderTicket(),OrderOpenPrice(),NormalizeDouble(Bid-Point*TrailingStop,Digits),OrderTakeProfit(),0,Blue);
if(!res)
Print("Ошибка модификации ордера. Код ошибки=",GetLastError());
elsePrint("Цена Stop Loss ордера успешно модифицирована.");
}
}
}
}
Sono sicuro che è il risultato della mia mancanza di conoscenza e come conseguenza il passaggio più lento da 4 a 5. Accetterò qualsiasi suggerimento su come migliorare le mie abilità))))
L'idea è di cercare l'ordine per ticket, scegliere il tipo di ordine (Acquisto o Vendita) e poi usare questo tipo per controllare se lo stato attuale dell'ordine soddisfa la condizione (prezzo attuale meno il prezzo aperto) che è superiore al prezzo di un pip per la quantità data (nel mio codice questo è il prezzo di take profit diviso per 10). Se questa condizione è soddisfatta dovresti assicurarti che il prezzo di stop loss sia inferiore al prezzo corrente del valore di un pip moltiplicato per il valore specificato. Se anche questo è vero, il prezzo dello stop loss cambia.
Quindi le stronzate sono il risultato di poca conoscenza e come conseguenza di una transizione più lenta dal 4 al 5
Questo è il risultato della pigrizia di leggere il manuale.Quello che ti è stato indicato-identificatori delle proprietà degli ordini.E il valore si ottiene usando identificatori e funzioni OrderGetDouble , OrderGetInteger, ecc.
StrangerNet: Potresti farmi un piccolo esempio, non capisco bene la costruzione, forse sarebbe più corretto: if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY)?
Non sono un indizio - non lo scrivo in Cinque. Ma lasciate che vi faccia una domanda: cosa vi impedisce di registrare il risultato di questo controllo?
e vola attraverso tutta la funzione senza entrarci. Allo stesso tempo, la variabile tik è dichiarata globalmente: ulong tik=0; - e le viene assegnato un nuovo valore quando si riceve una risposta sull'impostazione dell'ordine: tik=mresult.order; - questo valore cambia nel debug. Perché non entra nella condizione?
StrangerNet: Posso avere un piccolo esempio, non capisco bene la costruzione, forse questo è più corretto: if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY)?
OrderSelect(tiket);//-- выбрать ордер по тикетуif(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY)
{
}
La funzione if(OrderSelect(tik)==true) scrive l'errore 4754 - Ordine non trovato, con il valore tik nel debug 42276230 uguale al numero d'ordine creato 42276230, quale potrebbe essere il bug?
Consenti l'uso dei cookie per accedere al sito MQL5.com.
Abilita le impostazioni necessarie nel browser, altrimenti non sarà possibile accedere.
Hai effettuato l'accesso. L'autenticazione a due fattori è stata disattivata. Configurala di nuovo e scansiona un nuovo codice QR, oppure continua con l'autenticazione a due fattori disattivata.
Allega l'intero codice o inizializza le variabili prima dello snippet di codice. Non sai mai cosa hai lì nelle variabili, ad esempio in
Codice intero:
L'intero codice:
Che diavolo è quello?
Che cazzo è questo?
)))))))
Sto usando MQL4 come base per il mio codice:
Sono sicuro che è il risultato della mia mancanza di conoscenza e come conseguenza il passaggio più lento da 4 a 5. Accetterò qualsiasi suggerimento su come migliorare le mie abilità))))
L'idea è di cercare l'ordine per ticket, scegliere il tipo di ordine (Acquisto o Vendita) e poi usare questo tipo per controllare se lo stato attuale dell'ordine soddisfa la condizione (prezzo attuale meno il prezzo aperto) che è superiore al prezzo di un pip per la quantità data (nel mio codice questo è il prezzo di take profit diviso per 10). Se questa condizione è soddisfatta dovresti assicurarti che il prezzo di stop loss sia inferiore al prezzo corrente del valore di un pip moltiplicato per il valore specificato. Se anche questo è vero, il prezzo dello stop loss cambia.
Quindi le stronzate sono il risultato di poca conoscenza e come conseguenza di una transizione più lenta dal 4 al 5
Il valore si ottiene utilizzando gli identificatori e le funzioni OrderGetDouble , OrderGetInteger, ecc.
Potresti farmi un piccolo esempio, non capisco bene la costruzione, forse sarebbe più corretto: if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY)?
Non posso dirtelo - non scrivo in A. Ma vi faccio una domanda: cosa vi impedisce di registrare il risultato di questo controllo?
Lavoro)))))))))
Corretti i bug, tutto sembra essere secondo il manuale:
Nel debug, raggiunge la condizione
e vola attraverso tutta la funzione senza entrarci. Allo stesso tempo, la variabile tik è dichiarata globalmente: ulong tik=0; - e le viene assegnato un nuovo valore quando si riceve una risposta sull'impostazione dell'ordine: tik=mresult.order; - questo valore cambia nel debug. Perché non entra nella condizione?
Posso avere un piccolo esempio, non capisco bene la costruzione, forse questo è più corretto: if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_BUY)?