Анализ размера свечи и тени свечи. В OnTradeTransaction отлавливаем открытие (DEAL_ENTRY_IN) и закрытие позиций (DEAL_ENTRY_OUT), а также закрытие по Stop loss (DEAL_REASON_SL).
Ho un EA che lavora sul grafico su cui è stato trascinato (il valore Symbol() è preso come nome del simbolo).
Ma questo EA ha anche una variabile ticket_exist che contiene un ticket dell'ordine impostato e l'EA capisce che se il ticket_exist non è uguale a zero, l'ordine è impostato qui.
Domanda: se apro un tale EA su due strumenti diversi e la variabile ticket_exist non è uguale a zero su uno strumento, la variabile con lo stesso nome rimarrà uguale a zero sull'altro strumento?
Ho un EA che lavora sul grafico su cui è stato trascinato (il valore Symbol() è preso come nome del simbolo).
Ma questo EA ha anche una variabile ticket_exist che contiene un ticket dell'ordine impostato e l'EA capisce che se il ticket_exist non è uguale a zero, l'ordine è impostato qui.
Domanda: se apro un tale EA su due strumenti diversi e la variabile ticket_exist non è uguale a zero su uno strumento, la variabile con lo stesso nome rimarrà uguale a zero sull'altro strumento?
SU.
Il valore della variabile in un EA non è disponibile per un altro EA. La cosa principale è che o i simboli, o i maghi, o entrambi sono diversi.
Il valore di una variabile in un EA non è disponibile per un altro EA. La cosa principale è che o i simboli, o le magie, o entrambi dovrebbero essere diversi.
Se ho capito bene, allora per ottenere un conflitto di EAs (due assolutamente identici) che lavorano con simboli diversi, le loro variabili dovrebbero essere impostate come globali (per tutto il terminale) o, per esempio, un ordine dovrebbe essere accessibile dal suo numero di sequenza o semplicemente dal fatto della sua esistenza?
Ho provato in questo modo e compila senza problemi, ma non posso testarlo con la pista chiusa
Tornerò al lavoro domani.
voidOnTradeTransaction(constMqlTradeTransaction &trans,
constMqlTradeRequest &request,
constMqlTradeResult &result)
{
//--- get transaction type as enumeration valueENUM_TRADE_TRANSACTION_TYPE type=trans.type;
//--- if transaction is result of addition of the transaction in historyif(type==TRADE_TRANSACTION_DEAL_ADD)
{
long deal_entry =0;
string deal_symbol ="";
long deal_magic =0;
long deal_reason =-1;
if(HistoryDealSelect(trans.deal))
{
deal_entry=HistoryDealGetInteger(trans.deal,DEAL_ENTRY);
deal_symbol=HistoryDealGetString(trans.deal,DEAL_SYMBOL);
deal_magic=HistoryDealGetInteger(trans.deal,DEAL_MAGIC);
deal_reason=HistoryDealGetInteger(trans.deal,DEAL_REASON);
}
elsereturn;
if(deal_symbol==m_symbol.Name() && deal_magic==m_magic)
if(deal_entry==DEAL_ENTRY_OUT)
{
if(deal_reason==DEAL_REASON_SL)
SendNotification ("Закрыл позицию > StopLoss");
if(deal_reason==DEAL_REASON_TP)
SendNotification ("Закрыл позицию > TakeProfit");
}
}
}
L'ho corretto un po', funziona (l'ho controllato).
Qui, dobbiamo rintracciare il fatto che l'affare è stato chiuso esattamente a SL o TP. E usandoOnTradeTransaction otteniamo i dati pronti subito dopo la chiusura dell'affare.
Se c'è più di un trade chiuso a TimeCurrent, quale risultato dovrebbe essere restituito? E la presenza di un profitto non significa che il trade sia stato chiuso dallo SL o dal TP. Questo deve essere monitorato, come ho detto prima. Quindi, usareOnTradeTransaction è la soluzione più semplice!
Versuchen Sie es (ich habe es nicht getestet)
Grazie, controllerò più tardi.
Per favore, aiutatemi a posizionare correttamente la funzione
...
Ma come e dove inserire
Per inviare un messaggio quando viene raggiunto uno stop loss o untake profit?
Stiamo parlando della stessa cosa?
Ho trovato un esempio che traccia l'uscita SL conOnTradeTransaction:https://www.mql5.com/ru/code/21147.
Lo stesso EA su due strumenti diversi
Ciao, potresti aiutarmi per favore?
Ho un EA che lavora sul grafico su cui è stato trascinato (il valore Symbol() è preso come nome del simbolo).
Ma questo EA ha anche una variabile ticket_exist che contiene un ticket dell'ordine impostato e l'EA capisce che se il ticket_exist non è uguale a zero, l'ordine è impostato qui.
Domanda: se apro un tale EA su due strumenti diversi e la variabile ticket_exist non è uguale a zero su uno strumento, la variabile con lo stesso nome rimarrà uguale a zero sull'altro strumento?
SU.
Lo stesso EA su due strumenti diversi
Ciao, potresti aiutarmi per favore?
Ho un EA che lavora sul grafico su cui è stato trascinato (il valore Symbol() è preso come nome del simbolo).
Ma questo EA ha anche una variabile ticket_exist che contiene un ticket dell'ordine impostato e l'EA capisce che se il ticket_exist non è uguale a zero, l'ordine è impostato qui.
Domanda: se apro un tale EA su due strumenti diversi e la variabile ticket_exist non è uguale a zero su uno strumento, la variabile con lo stesso nome rimarrà uguale a zero sull'altro strumento?
SU.
Il valore della variabile in un EA non è disponibile per un altro EA. La cosa principale è che o i simboli, o i maghi, o entrambi sono diversi.
Puoi dirmi che ora è in tick? Ora del server o UTC?
Ricordo di aver letto da qualche parte, ma non ricordo dove...
Il valore di una variabile in un EA non è disponibile per un altro EA. La cosa principale è che o i simboli, o le magie, o entrambi dovrebbero essere diversi.
Se ho capito bene, allora per ottenere un conflitto di EAs (due assolutamente identici) che lavorano con simboli diversi, le loro variabili dovrebbero essere impostate come globali (per tutto il terminale) o, per esempio, un ordine dovrebbe essere accessibile dal suo numero di sequenza o semplicemente dal fatto della sua esistenza?
Prova questo (non l'ho testato)
Non funziona, dà errori di compilazione.
Ho provato in questo modo e compila senza problemi, ma non posso testarlo con la pista chiusa
Tornerò al lavoro domani.
non funziona, dà errori di compilazione
Ho provato in questo modo, compila senza problemi, ma quando la pista è chiusa non posso testarlo
Lo finirò domani.
non hai inserito il codice correttamente!
L'ho aggiustato un po' e funziona.
Non hai inserito il codice correttamente!
L'ho corretto un po', funziona (l'ho controllato).
Qui, dobbiamo rintracciare il fatto che l'affare è stato chiuso esattamente a SL o TP. E usandoOnTradeTransaction otteniamo i dati pronti subito dopo la chiusura dell'affare.
Se c'è più di un trade chiuso a TimeCurrent, quale risultato dovrebbe essere restituito? E la presenza di un profitto non significa che il trade sia stato chiuso dallo SL o dal TP. Questo deve essere monitorato, come ho detto prima. Quindi, usareOnTradeTransaction è la soluzione più semplice!
Qui, abbiamo anche bisogno di tracciare che il trade sia stato chiuso esattamente sullo SL o TP.
L'avevo capito come una notifica di chiusura dell'affare, forse mi sono sbagliato...
Mihail Matkovskij:
Se più di un trade è chiuso a TimeCurrent, quale risultato dovrei ottenere?
non lo so, devo controllare