Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1640 1...163316341635163616371638163916401641164216431644164516461647...1953 Novo comentário Tretyakov Rostyslav 2021.10.02 10:24 #16391 EVGENII SHELIPOV #:Bom dia a todos!!! Estou escrevendo código para um EA para Trailing Stop de ordens de grupo a partir do preço médio de uma grade de ordens. Nenhum erro no registro, mas a rede de arrasto também não funciona. Aqui está o código, por favor, sugira onde está o erro. Obrigado! A rede de arrasto está no lugar errado! Deve ser algo parecido com isto Se o preço é equilibrado + lucro-tral! = TakeProfit, comece a arrasto! De onde vêm estes dados? //+----------------------------------------------------------------------------+ //| Трейлинг стоп групповых ордеров | //+----------------------------------------------------------------------------+ void TrailingGroupOrder() { price += OrderOpenPrice() * OrderLots(); order_lots += OrderLots() ; for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) OrderOpenPrice Devolve o preço aberto do pedido selecionado duploOrderOpenPrice(); Nota: A ordem deve ser pré-selecionada usando a função OrderSelect(). Como eu ajusto o [AVISO FECHADO!] Qualquer pergunta [ARQUIVO!] Qualquer pergunta de Maksim Burov 2021.10.02 14:48 #16392 MakarFX #: Obrigado). EVGENII SHELIPOV 2021.10.02 14:59 #16393 MakarFX #:Não é aí que a rede de arrasto está parada! Deve ser assim: se o preço do breakeven + lucro-tral! = TakeProfit faz a rede de arrasto Boa tarde Makar!!!! Tanto quanto eu entendo, esta é a linha em questão. Neste caso, uma ordem de compra: if(Bid - NormalizeDouble(price / order_lots, Digits) > TrailingStopGroupOrder*Point || OrderStopLoss() == 0) Makar se você pudesse explicar com mais detalhes EVGENII SHELIPOV 2021.10.02 15:06 #16394 MakarFX #:Não é aí que a rede de arrasto está parada! Deve ser assim: se o preço do breakeven + lucro-tral! = TakeProfit faz a rede de arrasto De onde vêm estes dados? Você está falando em enigmas hoje, Makar. Pode haver outra pergunta por que calculamos o preço de breakeven sem verificar???? EVGENII SHELIPOV 2021.10.02 15:07 #16395 MakarFX #:Não é aí que a rede de arrasto está parada! Deve ser assim: se o preço do breakeven + lucro-tral! = TakeProfit faz a rede de arrasto De onde vêm estes dados? OrderOpenPrice Devolve o preço aberto do pedido selecionado duploOrderOpenPrice(); Nota: A ordem deve ser pré-selecionada usando a função OrderSelect(). Sim, eu pensei nisso e você já escreveu Tretyakov Rostyslav 2021.10.02 15:22 #16396 EVGENII SHELIPOV #:Boa tarde Makar!!!! Tanto quanto eu entendo, esta é a linha em questão. Neste caso, uma ordem de compra: Makar se você pudesse explicar com mais detalhes Você tem um grupo de ordens, você define um ponto de equilíbrio e cria uma linha, e isto é melhor feito como uma função separada! avg_price = NormalizeDouble(price / order_lots, Digits); { ObjectDelete(0, "AveragePriceLine"); ObjectCreate(0,"AveragePriceLine" ,OBJ_HLINE, 0, 0, avg_price); ObjectSet("AveragePriceLine",OBJPROP_COLOR, Magenta); } Então você tem o valor de lucro em pips que você quer obter e adicionar / subtrair para / do avg_price if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits); if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits); E depois uma função de arrasto separada para compra: se BID > avg_price = OrderModify() para vendas: se avg < avg_price = OrderModify() Infelizmente em seu código eu não vejo ações lógicas (subjetivamente) [Arquivo!] Qualquer pergunta de precisam de conselhos de Discussão do artigo "Guia Tretyakov Rostyslav 2021.10.02 15:33 #16397 EVGENII SHELIPOV #:Isso era o que eu estava pensando e você já escreveu. Separe as funções para que seja mais fácil para você navegar. Aqui está um exemplo de OnTick() //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if(GetProfitFromStart()>CountProfit || GetProfitFromStart()<CountLoss*-1) { CloseOrder(); } sl = MathMax(Stoploss, MarketInfo(_Symbol, MODE_STOPLEVEL)) * Point(); SL = NormalizeDouble(sl*Point(),Digits); tp = MathMax(Takeprofit, MarketInfo(_Symbol, MODE_STOPLEVEL)) * Point(); TP = NormalizeDouble(tp*Point(),Digits); //--- if(CountOrders()==0&&ObjectGetInteger(0,"lab_Button",OBJPROP_STATE)) { if(TradeSignal()>=0) { SendOrder(TradeSignal()); } } //--- if (!IsTradeAllowed()) {DrawLABEL("lab_Торговля",0,0,0,clrRed,"Торговля запрещена"); return;} else {DrawLABEL("lab_Торговля",0,0,0,clrLime,"Торговля разрешена");} } //+------------------------------------------------------------------+ Como você pode ver, há apenas chamadas de função EVGENII SHELIPOV 2021.10.02 17:20 #16398 MakarFX #:Separe as funções para facilitar a sua navegação. Aqui está um exemplo de OnTick() Como você pode ver, há apenas chamadas para funções. Obrigado, Makar. Vou concentrar meus pensamentos e pensar desta maneira Tretyakov Rostyslav 2021.10.02 17:33 #16399 EVGENII SHELIPOV #:Obrigado, Makar. Vou juntar meus pensamentos e pensar nessa direção. (Fale mais alto) Анатолий Железняк 2021.10.02 17:57 #16400 Pergunta: Como faço para obter uma ordem da custódia da EA? Talvez já existam alguns screenshots ou funções mt4 que eu não conheça. Por favor, esclareçam-me. Não tenho nenhuma ânsia e possibilidades de estudar os mql 3, 4, 5 etc. Perguntas de um "boneco" Da teoria à prática Aprenda a ganhar dinheiro 1...163316341635163616371638163916401641164216431644164516461647...1953 Novo comentário
Bom dia a todos!!!
Estou escrevendo código para um EA para Trailing Stop de ordens de grupo a partir do preço médio de uma grade de ordens.
Nenhum erro no registro, mas a rede de arrasto também não funciona. Aqui está o código, por favor, sugira onde está o erro. Obrigado!
A rede de arrasto está no lugar errado!
Deve ser algo parecido com isto
Se o preço é equilibrado + lucro-tral! = TakeProfit, comece a arrasto!
De onde vêm estes dados?
OrderOpenPrice
Devolve o preço aberto do pedido selecionado
duploOrderOpenPrice();
Nota:
A ordem deve ser pré-selecionada usando a função OrderSelect().
Obrigado).
Não é aí que a rede de arrasto está parada!
Deve ser assim:
se o preço do breakeven + lucro-tral! = TakeProfit faz a rede de arrasto
Boa tarde Makar!!!!
Tanto quanto eu entendo, esta é a linha em questão. Neste caso, uma ordem de compra:
Makar se você pudesse explicar com mais detalhes
Não é aí que a rede de arrasto está parada!
Deve ser assim:
se o preço do breakeven + lucro-tral! = TakeProfit faz a rede de arrasto
De onde vêm estes dados?
Você está falando em enigmas hoje, Makar.
Pode haver outra pergunta por que calculamos o preço de breakeven sem verificar????
Não é aí que a rede de arrasto está parada!
Deve ser assim:
se o preço do breakeven + lucro-tral! = TakeProfit faz a rede de arrasto
De onde vêm estes dados?
OrderOpenPrice
Devolve o preço aberto do pedido selecionado
duploOrderOpenPrice();
Nota:
A ordem deve ser pré-selecionada usando a função OrderSelect().
Sim, eu pensei nisso e você já escreveu
Boa tarde Makar!!!!
Tanto quanto eu entendo, esta é a linha em questão. Neste caso, uma ordem de compra:
Makar se você pudesse explicar com mais detalhes
Você tem um grupo de ordens, você define um ponto de equilíbrio e cria uma linha, e isto é melhor feito como uma função separada!
Então você tem o valor de lucro em pips que você quer obter e adicionar / subtrair para / do avg_price
E depois uma função de arrasto separada
para compra: se BID > avg_price = OrderModify()
para vendas: se avg < avg_price = OrderModify()
Infelizmente em seu código eu não vejo ações lógicas (subjetivamente)
Isso era o que eu estava pensando e você já escreveu.
Separe as funções para que seja mais fácil para você navegar.
Aqui está um exemplo de OnTick()
Como você pode ver, há apenas chamadas de função
Separe as funções para facilitar a sua navegação.
Aqui está um exemplo de OnTick()
Como você pode ver, há apenas chamadas para funções.
Obrigado, Makar. Vou concentrar meus pensamentos e pensar desta maneira
Obrigado, Makar. Vou juntar meus pensamentos e pensar nessa direção.