OnTradeTransaction - pagina 5 123456789 Nuovo commento Andrey Dik 2016.12.04 22:02 #41 prostotrader: Cosa c'è di sbagliato in questo metodo?case TRADE_TRANSACTION_DEAL_ADD: if (trans.order != my_order_ticket) { //Сработал SL или TP }break;Perché le ultime posizioni SL e TP conosciute potrebbero non coincidere con il prezzo dell'affare e non ci sarà nulla con cui confrontarlo. E non ti piace condividere i tuoi codici, ma guardi quelli degli altri con grande piacere... Questo non funzionerà sempre:int G_LastTicket = 0; //Последний известный тикетdouble G_LastSLlevel = 0.0; //Последний известный уровень SLdouble G_LastTPlevel = 0.0; //Последний известный уровень TP//——————————————————————————————————————————————————————————————————————————————void OnTradeTransaction (const MqlTradeTransaction &trans, // структура торговой транзакции const MqlTradeRequest &request, // структура запроса const MqlTradeResult &result) // структура ответа{ if(trans.type == TRADE_TRANSACTION_DEAL_ADD) { if(PositionsAny (G_Symbol)) { G_LastSLlevel = GetSLlevel (G_Symbol); G_LastTPlevel = GetTPlevel (G_Symbol); Print ("SLlevel: " + G_LastSLlevel); Print ("TPlevel: " + G_LastTPlevel); } if(trans.deal != G_LastTicket) { if(trans.price == G_LastSLlevel) Print ("Сработал SL"); if(trans.price == G_LastTPlevel) Print ("Сработал TP"); } }} OnTradeTransaction MetaEditor build 1490 Come lavorare correttamente in Anatoli Kazharski 2016.12.04 22:02 #42 prostotrader: Prova... Lo proverò di sicuro qualche volta. Lo proverò qualche volta, grazie. Al momento sono occupato con altri compiti. fxsaber 2016.12.04 22:04 #43 prostotrader: Cosa c'è di sbagliato in questo metodo? Dovrebbe memorizzaremy_order_ticket prostotrader 2016.12.04 22:05 #44 fxsaber: Devi tenereil mio biglietto_ordineSai almeno di cosa stai parlando?my_order_ticket - questo ordine ha un posto dove vivere se avete e siete obbligati a mantenerli. Andrey Dik 2016.12.04 22:06 #45 fxsaber: Devi memorizzaremy_order_ticketNon solo. prostotrader 2016.12.04 22:08 #46 Anatoli Kazharski: Lo proverò qualche volta. Grazie. Al momento sono occupato con altri compiti. Buona fortuna con il codice! fxsaber 2016.12.04 22:18 #47 Andrey Dik: Non solo.Sì, in realtà si propone di mantenere e memorizzare l'ambiente reale stesso, confrontandolo con quello che produce OnTradeTransaction.Questa non è una soluzione. prostotrader 2016.12.04 22:25 #48 fxsaber: Sì, in realtà si propone di mantenere e memorizzare l'ambiente reale stesso, confrontandolo con quello che produce OnTradeTransaction.Questa non è una soluzione.Semplicemente non stai seguendo l'argomento da vicino. :)L'iniziatore dell'argomento originale ha scritto:"Come faccio a sapere inOnTradeTransaction() che SL/TP è scattato? " Quale dovrebbe essere la soluzione?Non si può ricordare o controllare assolutamente nulla, tranne la posizione stessa, a condizione cheNon hai operato altri ordinicase TRADE_TRANSACTION_DEAL_ADD: if (!PositionSelect(Symbol()) { //Сработал SL или TP }break; [Qualsiasi domanda da principiante, MetaEditor build 1490 Come si apre correttamente Andrey Dik 2016.12.04 22:30 #49 prostotrader: Semplicemente non stai seguendo l'argomento da vicino. :)L'iniziatore dell'argomento originale ha scritto:Sei tu quello che è piuttosto disattento, io non sonol'iniziatore dell'argomento.Dovreste anche mostrare un codice come questo://——————————————————————————————————————————————————————————————————————————————void OnTradeTransaction (const MqlTradeTransaction &trans, // структура торговой транзакции const MqlTradeRequest &request, // структура запроса const MqlTradeResult &result) // структура ответа{ } Beh, cosa c'è che non va - chi ne ha bisogno, lo finisce da solo, non gli piace - c'è una joba! È così? Errori tipici e come Come lavorare correttamente in Caratteristiche del linguaggio mql5, fxsaber 2016.12.04 22:38 #50 prostotrader: Potresti non ricordare proprio nulla Sono d'accordo che questo funzionerebbe (nel caso di un versamento completo)void OnTradeTransaction ( const MqlTradeTransaction &Trans, const MqlTradeRequest &Request, const MqlTradeResult &Result ){ if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position)) Print("Position #" + (string)Trans.position + " - triggered SL/TP.");} Ma la conversazione sembra allargarsi un po'. MetaEditor build 1490 Caratteristiche del linguaggio mql5, Errori, bug, domande 123456789 Nuovo commento
Cosa c'è di sbagliato in questo metodo?
if (trans.order != my_order_ticket)
{
//Сработал SL или TP
}
break;
Perché le ultime posizioni SL e TP conosciute potrebbero non coincidere con il prezzo dell'affare e non ci sarà nulla con cui confrontarlo.
E non ti piace condividere i tuoi codici, ma guardi quelli degli altri con grande piacere...
Questo non funzionerà sempre:
double G_LastSLlevel = 0.0; //Последний известный уровень SL
double G_LastTPlevel = 0.0; //Последний известный уровень TP
//——————————————————————————————————————————————————————————————————————————————
void OnTradeTransaction (const MqlTradeTransaction &trans, // структура торговой транзакции
const MqlTradeRequest &request, // структура запроса
const MqlTradeResult &result) // структура ответа
{
if(trans.type == TRADE_TRANSACTION_DEAL_ADD)
{
if(PositionsAny (G_Symbol))
{
G_LastSLlevel = GetSLlevel (G_Symbol);
G_LastTPlevel = GetTPlevel (G_Symbol);
Print ("SLlevel: " + G_LastSLlevel);
Print ("TPlevel: " + G_LastTPlevel);
}
if(trans.deal != G_LastTicket)
{
if(trans.price == G_LastSLlevel)
Print ("Сработал SL");
if(trans.price == G_LastTPlevel)
Print ("Сработал TP");
}
}
}
Prova...
Cosa c'è di sbagliato in questo metodo?
Devi tenereil mio biglietto_ordine
Sai almeno di cosa stai parlando?
my_order_ticket - questo ordine ha un posto dove vivere se avete
e siete obbligati a mantenerli.
Devi memorizzaremy_order_ticket
Lo proverò qualche volta. Grazie. Al momento sono occupato con altri compiti.
Non solo.
Sì, in realtà si propone di mantenere e memorizzare l'ambiente reale stesso, confrontandolo con quello che produce OnTradeTransaction.
Questa non è una soluzione.
Sì, in realtà si propone di mantenere e memorizzare l'ambiente reale stesso, confrontandolo con quello che produce OnTradeTransaction.
Questa non è una soluzione.
Semplicemente non stai seguendo l'argomento da vicino. :)
L'iniziatore dell'argomento originale ha scritto:
"Come faccio a sapere inOnTradeTransaction() che SL/TP è scattato? "
Quale dovrebbe essere la soluzione?
Non si può ricordare o controllare assolutamente nulla, tranne la posizione stessa, a condizione che
Non hai operato altri ordini
if (!PositionSelect(Symbol())
{
//Сработал SL или TP
}
break;
Semplicemente non stai seguendo l'argomento da vicino. :)
L'iniziatore dell'argomento originale ha scritto:
Sei tu quello che è piuttosto disattento, io non sonol'iniziatore dell'argomento.
Dovreste anche mostrare un codice come questo:
void OnTradeTransaction (const MqlTradeTransaction &trans, // структура торговой транзакции
const MqlTradeRequest &request, // структура запроса
const MqlTradeResult &result) // структура ответа
{
}
Beh, cosa c'è che non va - chi ne ha bisogno, lo finisce da solo, non gli piace - c'è una joba! È così?
Potresti non ricordare proprio nulla
{
if ((Trans.type == TRADE_TRANSACTION_DEAL_ADD) && (Trans.position > 0) && !PositionSelectByTicket(Trans.position))
Print("Position #" + (string)Trans.position + " - triggered SL/TP.");
}
Ma la conversazione sembra allargarsi un po'.