Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 463

 
HUNTERGOOD:

O pedido, corretamente criado de volta na página 457 , em paost #4567 , e todos os necessários: "indicador, o que é necessário, e como exatamente" - aí, não é difícil descrever tudo, expor todo o curto e ao ponto, clara e distintamente, e o que estava errado em meu primeiro post, que meu pedido tão pequeno, para o homem que entende no código, ignorou seis páginas, e finalmente "brincar" comigo em "luzes" - eu escrevo aqui wispy.SOLICITAÇÃO EM DUPLICATA:

(((^^^^ Boa tarde a todos. Caros programadores, por favor me ajudem a inserir uma corda com a capacidade de especificar o arquivo de som para cada Alerta3.Lv1;2;3, para acionar um som diferente que você especificar. Eu mesmo não sou bom em codificação e programação. ^^))

Você já experimentou na tabela, funciona?

 

Você pode me dizer o que fazer: quero fazer uma parada e uma tomada imediatamente após qualquer pedido. Se uma EA abriu uma ordem, quero estabelecer uma parada e uma tomada. Se um operador abriu uma ordem, eu quero estabelecer umaparada e uma tomada. Como devo descrevê-lo mais precisamente? Portanto, o consultor especializado e o operador entendem onde estão essas ordens!

Este código parece funcionar, mas será correto?

Ou é necessário organizar uma ação para cada tipo de ordem (Expert Advisor ou operador) usando FOR?

Arquivos anexados:
STOP_TAKE.txt  4 kb
 

Como acertar:1

2

 
Rewerpool:

Como acertar:

Os códigos são normalmente inseridos aqui. A maioria das pessoas aqui são preguiçosas demais para analisar as fotos.

 
Konstantin Nikitin:

Não há problema em colar os códigos aqui. A maioria das pessoas aqui é preguiçosa demais para tirar fotos à parte.

Pensei ter anexado o código inteiro primeiro! Apenas o arquivo! Mensagem. Em seguida, descreva mais brevemente a situação em fotos!

 

tipo de pedido(Expert Advisor ou operador) usando FOR?



//+------------------------------------------------------------------+

//| FUNÇÃO de estabelecer ordens abertas de Paradas e Aquisições
//+------------------------------------------------------------------+
vazio STOP_TAKE()
{
int tip,Ticket;
duplo OOP,OSL,OTP;
int SPREAD = (int)MarketInfo(Symbol(),MODE_SPREAD);
se (stoploss<STOPLEVEL) stoploss=0;
se (takeprofit<STOPLEVEL) takeprofit=0;
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS)==verdadeiro)
{
tip=OrderType();
//----------IfOrderTotal()
if(tip<2 && OrderSymbol()==Symbol() && OrderMagicNumber()==Magic)
{
OSL = OrderStopLoss();
OTP = OrderTakeProfit();
if ((OSL==0&stoploss!=0)|||(OTP==0&&takeprofit!=0))
{
OOP = OrderOpenPrice();
Ticket = OrderTicket();
if (tip===OP_BUY || tip===OP_BUYSTOP ||| tip==OP_BUYLIMIT)
{
se (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Dígitos); caso contrário TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); caso contrário SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Imprimir("SetStop ",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
if (tip===OP_SELL || tip===OP_SELLSTOP ||| tip==OP_SELLLIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); caso contrário TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); caso contrário SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Imprimir("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
}
}
//----------If(tip<2 &&Order)
senão se(tip<2 && OrderSymbol()==Symbol()&& OrderMagicNumber()!=Magic)
{
OSL = OrderStopLoss();
OTP = OrderTakeProfit();
if ((OSL==0&stoploss!=0)|||(OTP==0&&takeprofit!=0))
{
OOP = OrderOpenPrice();
Ticket = OrderTicket();
if (tip===OP_BUY || tip===OP_BUYSTOP ||| tip==OP_BUYLIMIT)
{
se (takeprofit!=0) TP = NormalizeDouble(OOP + takeprofit*Point,Dígitos); caso contrário TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP - (stoploss+SPREAD)* Point,Digits); caso contrário SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Imprimir("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
if (tip===OP_SELL || tip===OP_SELLSTOP ||| tip==OP_SELLLIMIT)
{
if (takeprofit!=0) TP = NormalizeDouble(OOP - takeprofit*Point,Digits); caso contrário TP=OTP;
if (stoploss!=0) SL = NormalizeDouble(OOP + (stoploss+SPREAD)* Point,Digits); caso contrário SL=OSL;
if (OrderModify(Ticket,OOP,SL,TP,0,White)) Imprimir("STOP_TAKE",Ticket," SL ",OSL," -> ",SL," TP ",OTP," -> ",TP);
else Print(Symbol()," Error STOP_TAKE",GetLastError()," Ticket ",Ticket);
}
}
}
}
}
}
 
Rewerpool:

Pensei ter anexado o código inteiro primeiro! Apenas o arquivo! Mensagem. Em seguida, descreva mais brevemente a situação em fotos!

Bem, por que colar uma foto aqui? Estou lhes falando sobre isso.

 
Rewerpool: As encomendas feitas manualmente têm um número mágico de 0, a EA coloca com seu próprio número mágico. Isto é o que você deve usar como um guia.
 

@Konstantin Nikitin OK! A construção do código para abertura de ordem de tomada de lucro é correta por parte do Expert Advisor ou do operador? É por isso que anexei uma imagem para tornar a pergunta mais clara!

 
Rewerpool:

@Konstantin Nikitin OK! A construção do código para abertura de ordem de tomada de lucro é correta por parte do Expert Advisor ou do operador? É por isso que anexei uma imagem para tornar a pergunta mais clara!

Eu o teria feito da seguinte maneira

for(int i=0; i<OrdersTotal(); i++)
{
     if(!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
     if(OrderSymbol()!=Symbol()) continue;
     
     int tip = OrderType();
     if(tip!=OP_BUY && tip!=OP_BUYSTOP && tip!=OP_BUYLIMIT) continue;
     
     // переменные которые будут использоваться в любых ордерах
     int Ticket = OrderTicket();
     double OOP = OrderOpenPrice();
     
     //---
     switch( OrderMagicNumber() )
     {
          case Magic:    // Ордера советника
               {
                    // что-то делаем
               }
               break;

          default:       // Все остальные
               {
                    // что-то делаем
               }
     }
}
Razão: