OnTradeTransaction - página 5 123456789 Novo comentário prostotrader 2016.12.04 22:00 #41 Anatoli Kazharski: Sim, é mais ou menos isso mesmo. Só que ainda não foi testado dessa forma.Experimente...Adicionado porcase TRADE_TRANSACTION_DEAL_ADD: if (trans.order != my_order_ticket) { if(trans.symbol==Symbol()) { if(проверяем магик) { //Сработал SL или TP } } }break; Andrey Dik 2016.12.04 22:02 #42 prostotrader: O que há de errado com este método?case TRADE_TRANSACTION_DEAL_ADD: if (trans.order != my_order_ticket) { //Сработал SL или TP }break;Porque as últimas posições SL e TP conhecidas podem não coincidir com o preço do negócio e não haverá nada para comparar com ele. E você não gosta de compartilhar seus códigos, mas olha os dos outros com muito prazer... Isto nem sempre funcionará: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 Erros, bugs, perguntas MetaEditor construído em 1490 Anatoli Kazharski 2016.12.04 22:02 #43 prostotrader: Experimente... Vou tentar um dia destes, com certeza. Vou tentar um dia destes. Obrigado. Estou ocupado com outras tarefas no momento. fxsaber 2016.12.04 22:04 #44 prostotrader: O que há de errado com este método? Devo guardarmeu_ticket_de_ordem prostotrader 2016.12.04 22:05 #45 fxsaber: Você tem que mantermeu_ticket_de_ordemVocê ao menos sabe do que está falando?my_order_ticket - este pedido tem um lugar para viver se você tiver e você é obrigado a mantê-los. Andrey Dik 2016.12.04 22:06 #46 fxsaber: Você tem que armazenarmeu_ticket_de_ordemNão apenas isso. prostotrader 2016.12.04 22:08 #47 Anatoli Kazharski: Vou tentar um dia destes. Obrigado (risos) Estou ocupado com outras tarefas no momento. Boa sorte com o código! fxsaber 2016.12.04 22:18 #48 Andrey Dik: Não apenas isso.Sim, na verdade é proposto manter e armazenar o próprio ambiente real, comparando-o com o que a OnTradeTransaction produz.Isto não é uma solução. prostotrader 2016.12.04 22:25 #49 fxsaber: Sim, na verdade é proposto manter e armazenar o próprio ambiente real, comparando-o com o que a OnTradeTransaction produz.Isto não é uma solução.Você simplesmente não está acompanhando o tópico de perto. :)O tópico inicial original escreveu:"Como sei naOnTradeTransaction() que SL/TP desencadeou? " Qual deve ser a solução?Você não pode se lembrar ou verificar nada, exceto a posição em si, desde queVocê não operou nenhuma outra ordemcase TRADE_TRANSACTION_DEAL_ADD: if (!PositionSelect(Symbol()) { //Сработал SL или TP }break; Uma pergunta para a AJUDE QUEM PUDER!!! [ARQUIVO!] Qualquer pergunta de Andrey Dik 2016.12.04 22:30 #50 prostotrader: Você simplesmente não está acompanhando o tópico de perto. :)O tópico inicial original escreveu:Você é o único que está bastante desatento, eu não souo iniciante do tema.Você também deve mostrar um código como este://——————————————————————————————————————————————————————————————————————————————void OnTradeTransaction (const MqlTradeTransaction &trans, // структура торговой транзакции const MqlTradeRequest &request, // структура запроса const MqlTradeResult &result) // структура ответа{ } Bem, o que está errado - quem precisa, termina ele mesmo, não gosta - há um empregoa! É assim? Como trabalhar corretamente em Perguntas de Iniciantes MQL5 Erros típicos e como 123456789 Novo comentário
Sim, é mais ou menos isso mesmo. Só que ainda não foi testado dessa forma.
Experimente...
Adicionado por
if (trans.order != my_order_ticket)
{
if(trans.symbol==Symbol())
{
if(проверяем магик)
{
//Сработал SL или TP
}
}
}
break;
O que há de errado com este método?
if (trans.order != my_order_ticket)
{
//Сработал SL или TP
}
break;
Porque as últimas posições SL e TP conhecidas podem não coincidir com o preço do negócio e não haverá nada para comparar com ele.
E você não gosta de compartilhar seus códigos, mas olha os dos outros com muito prazer...
Isto nem sempre funcionará:
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");
}
}
}
Experimente...
O que há de errado com este método?
Você tem que mantermeu_ticket_de_ordem
Você ao menos sabe do que está falando?
my_order_ticket - este pedido tem um lugar para viver se você tiver
e você é obrigado a mantê-los.
Você tem que armazenarmeu_ticket_de_ordem
Vou tentar um dia destes. Obrigado (risos) Estou ocupado com outras tarefas no momento.
Não apenas isso.
Sim, na verdade é proposto manter e armazenar o próprio ambiente real, comparando-o com o que a OnTradeTransaction produz.
Isto não é uma solução.
Sim, na verdade é proposto manter e armazenar o próprio ambiente real, comparando-o com o que a OnTradeTransaction produz.
Isto não é uma solução.
Você simplesmente não está acompanhando o tópico de perto. :)
O tópico inicial original escreveu:
"Como sei naOnTradeTransaction() que SL/TP desencadeou? "
Qual deve ser a solução?
Você não pode se lembrar ou verificar nada, exceto a posição em si, desde que
Você não operou nenhuma outra ordem
if (!PositionSelect(Symbol())
{
//Сработал SL или TP
}
break;
Você simplesmente não está acompanhando o tópico de perto. :)
O tópico inicial original escreveu:
Você é o único que está bastante desatento, eu não souo iniciante do tema.
Você também deve mostrar um código como este:
void OnTradeTransaction (const MqlTradeTransaction &trans, // структура торговой транзакции
const MqlTradeRequest &request, // структура запроса
const MqlTradeResult &result) // структура ответа
{
}
Bem, o que está errado - quem precisa, termina ele mesmo, não gosta - há um empregoa! É assim?