Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 550

 
Alexandr24:
Preciso de ajuda para encontrar o valor máximo do indicador N para o dia anterior; recebo dados através do iCustom, mas é um impasse. Acho que isso é feito através do ArrayMaximum, mas como encontrar o valor

Não consigo descobrir como encaixar o iCustom ali, mas não consigo pensar em nenhuma outra opção.



1. Encontre o número da barra no início do dia anterior, encontre o número da barra no final para.

2. Eu faria loop de um número para o outro e calcularia o máximo.

Você pode, naturalmente, usar o ArrayMaximum, mas após o primeiro passo.

 
Com relação aos procuradores, se alguém precisar realmente de IPs de trabalho, eu mesmo posso aconselhar http://buy.fineproxy.org/ por um longo tempo eu compro endereços lá, tudo funciona perfeitamente e há a possibilidade de um período de teste!
 

Desculpe pela inundação, vou perguntar novamente.

Você pode sugerir um indicador de interesse aberto gratuito? Obrigado de antemão!

 
GSB:

Você não pode escrever códigos que de forma desatenta :)

Ir para Comentário("USDCADAsk = ",USDCADAsk); seguido por USDCADAsk = DoubleToString(MarketInfo("USDCAD",MODE_ASK),usdcaddigits); USDCADAsk é declarado como duplo e você coloca uma string nele,

e depois Digits.... novamente ^) e Ponto

Você mesmo tem que procurar por tais erros, ninguém os consertará, assim como o comércio! O compilador gera 28 erros e você coloca a demonstração no comércio. Você pode desejar estar usando dinheiro real, mas o mercado teria corrigido você!

De quem é o Bid Ask ?


Correção


Acontece que você não precisava usar variáveis adicionais e depois não precisa de normalização, deveria ser assim.
OrderSend("USDCAD",OP_BUY,Lot,MarketInfo("USDCAD",MODE_ASK),slip,0,0,"USDCAD",magic[0],0,Red);
 
Example2:

Acontece que você não precisava usar variáveis adicionais e depois não precisa de normalização, deveria ser assim.

OrderSend("USDCAD",OP_BUY,Lot,MarketInfo("USDCAD",MODE_ASK),slip,0,0,"USDCAD",magic[0],0,Red);

Primeiro, você mesmo tentou exibi-los na tela para verificar, o que levou a erros, e segundo, a normalização é desejável e o preço de ajuste do pedido e TP, SL. Se o preço não for normalizado, isso pode causar erros. Esta é a regra e não devemos quebrá-la. Veja exemplos e analise porque este é o caso e não o contrário, por exemplo https://book.mql4.com/ru/samples/shared
 
Olá, você poderia me dizer como acrescentar, digamos, 23% ao OrderOpenPrice? Se você sabe que o OrderOpenPrice já é de 77%. Divido-a por 77, multiplico-a por 23 e obtive 7 pontos em vez de 31. Aqui está uma linha de código if (MarketInfo-OrderOpenPrice()>OrderOpenPrice()/50*Percent*Point). Esta é uma transferência para o Breakeven, mas não em pontos, mas em pontos percentuais. Agradecemos antecipadamente!
 
vidnab:
Olá! Se você não se importa de me dizer como adicionar 23% ao OrderOpenPrice? Se você sabe que o OrderOpenPrice já é de 77%. Estou dividindo por 77, multiplicando por 23 e recebo 7 pontos em vez de 31. Aqui está uma linha de código if (MarketInfo-OrderOpenPrice()>OrderOpenPrice()/50*Percent*Point). Esta é uma transferência para o Breakeven, mas não em pontos, mas em pontos percentuais. Agradecemos antecipadamente!


Comprei cem mil euros a 50 rublos, depois acrescentei 23% ao preço de compra.

Para o seu caso, você precisa estabelecer o código na íntegra. Embora, se você quiser apenas levar a 100%, divida por 0,77.

 

Obrigado por sua resposta. Aqui está todo o código

//+----------------------------------------------------------------------------+
//| e-MovingInWL2.mq4 |
//| |
//| Kim Igor V. aka KimIV |
//| http://www.kimiv.ru |
//| |
//| 27.10.2008 O assessor se move para o breakeven. |
//+----------------------------------------------------------------------------+
#direitos de propriedade intelectual "Kim Igor V. aka KimIV"
#link da propriedade "http://www.kimiv.ru"

//------- Parâmetros externos do consultor especializado -----------------------------------------+
string externa _P_Expert = "---------- Parâmetros EA";
bool externo AllSymbols = Verdadeiro; // Posições de observação de todos os símbolos
magia int externa = -1; // Identificador de posição
nível de lucro interno externo = 25; // nível de lucro em pontos
nível interno externoWLoss = 1; // Nível de equilíbrio em pontos
comentário externo ShowComment = True; // Comentário do show

//------- Parâmetros de execução das ordens de negociação ------------------------------+
string externa _P_Performance = "---------- Parâmetros de execução";
Use o sinal sonoro.
External string SoundSuccess = "expert.wav"; // Som de sucesso
cordão externo SoundError = "timeout.wav"; // Som de erro.
Número externo internoOfTry = 2; // Número de tentativas

//------- Variáveis globais do Expert Advisor -------------------------------------+
bool gbDisabled = False; // Bandeira de EA trancada
bool gbNoInit = Falso; // Bandeira de inicialização falhada
color clModifyBuy = Aqua; // ícone colorido clModifyBuy
color clModifySell = Tomate; // Cor do ícone de modificação de venda

//------- Conexão de módulos externos -----------------------------------------+
#incluir <stdlib.mqh>


//+----------------------------------------------------------------------------+
//| |
//| FUNÇÕES PRÉ-DEFINIDAS |
//| |
//+----------------------------------------------------------------------------+
//| função de inicialização especializada |
//+----------------------------------------------------------------------------+
init() {
gbNoInit=Falso;
se (!IsTradeAllowed()) {
Mensagem ("Para que a EA funcione corretamente, é necessário que o "+
"Permitir que a EA negocie");
gbNoInit=Verdadeiro; retornar;
}
se (!IsLibrariesAllowed()) {
Mensagem ("Para que a EA funcione corretamente, você deve
"Permitir a importação de EAs externos");
gbNoInit=Verdadeiro; retornar;
}
se (!IsTesting()) {
se (IsExpertEnabled()) Mensagem("O Expert Advisor será iniciado com o próximo tick");
outra mensagem ("O botão "Allow EAs to start") é liberado;
}
início();
}

//+----------------------------------------------------------------------------+
//| função de desinicialização especializada |
//+----------------------------------------------------------------------------+
void deinit() {
se (!IsTesting()) Comentário(");
}

//+----------------------------------------------------------------------------+
//| função de início especializado |
//+----------------------------------------------------------------------------+
início nulo() {
se (gbDisabled) {
Mensagem("Erro crítico! EA STOPPED!"); retornar;
}
se (gbNoInit) {
Mensagem("inicialização da EA falhou!"); retornar;
}
se (ShowComment) {
Comentário(IIFs(AllSymbols, "AllSymbols", ", ")
"Magic="+IIFs(Magic<0, "Any", DoubleToStr(Magic, 0))+" "
LevelProfit="+DoubleToStr(LevelProfit, 0)+"n "
LevelWLoss="+DoubleToStr(LevelWLoss, 0)+"n".
);
} else Comment(");

string sy=IIFs(AllSymbols, "", NULL);
MovingInWL(sy, -1, Magic);
}


//+----------------------------------------------------------------------------+
//| |
//| FUNÇÕES DO USUÁRIO |
//| |
//+----------------------------------------------------------------------------+
//| Autor : Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versão : 01.09.2005 |
//| Descrição : Retorna o nome da operação comercial |
//+----------------------------------------------------------------------------+
//| Parâmetros: |||
//| op - identificador da operação comercial |
//+----------------------------------------------------------------------------+
string GetNameOP(int op) {
interruptor (op) {
caso OP_BUY : retornar("Comprar");
caso OP_SELL : devolução("Vender");
caso OP_BUYLIMIT : devolução("BuyLimit");
caso OP_SELLLIMIT : devolução("SellLimit");
caso OP_BUYSTOP : devolução("BuyStop");
caso OP_SELLSTOP : devolução("SellStop");
default : devolução ("Operação Desconhecida");
}
}

//+----------------------------------------------------------------------------+
//| Autor : Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versão : 18.07.2008 |
//| Descrição : Retorna um de dois valores, dependendo da condição. |
//+----------------------------------------------------------------------------+
color IIFc(bool condition, color ifTrue, color ifFalse) {
se (condição) retornar(ifTrue); caso contrário, retornar(ifFalse);
}

//+----------------------------------------------------------------------------+
//| Autor : Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versão : 01.02.2008 |
//| Descrição : Retorna um de dois valores, dependendo da condição. |
//+----------------------------------------------------------------------------+
IIFs de corda(bool condition, string ifTrue, string ifFalse) {
se (condição) retornar(ifTrue); caso contrário, retornar(ifFalse);
}

//+----------------------------------------------------------------------------+
//| Autor : Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versão : 01.09.2005 |
//| Descrição : Exibindo uma mensagem no comentário e no log |
//+----------------------------------------------------------------------------+
//| Parâmetros: |
//| m - texto da mensagem |
//+----------------------------------------------------------------------------+
Mensagem nula(string m) {
Comentário(m);
se (StringLen(m)>0) Imprimir(m);
}

//+----------------------------------------------------------------------------+
//| Autor : Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versão : 28.11.2006 |
//| Descrição : Modificação de um pedido pré-selecionado |.
//+----------------------------------------------------------------------------+
//| Parâmetros : |
//| pp - nível de preço do pedido |
//| sl - nível de preço da parada |
//| tp - nível de preço do take out |
//| ex - data de expiração |
//+----------------------------------------------------------------------------+
void ModifyOrder(double pp=-1, double sl=0, double tp=0, datetime ex=0) {
bool fm;
color cl=IIFc(OrderType()==OP_BUY
|| OrderType()==OP_BUYLIMIT
|| OrderType()==OP_BUYSTOP, clModifyBuy, clModifySell);
op, pa, pb, os, ot;
int dg=MarketInfo(OrderSymbol(), MODE_DIGITS), er, it;

if (pp<=0) pp=OrderOpenPrice();
se (sl<0 ) sl=OrderStopLoss();
se (tp<0 ) tp=OrderTakeProfit();

pp=NormalizeDouble(pp, dg);
sl=NormalizeDouble(sl, dg);
tp=NormalizeDouble(tp, dg);
op=NormalizeDouble(OrderOpenPrice(), dg);
os=NormalizeDouble(OrderStopLoss(), dg);
ot=NormalizeDouble(OrderTakeProfit(), dg);

se (pp!=op || sl!=os ||| tp!=ot) {
para (it=1; it<=NumberOfTry; it++) {
se (!IsTesting() && (!IsExpertEnabled() ||| IsStopped())) quebrar;
enquanto (!IsTradeAllowed()) Sleep(5000);
RefreshRates();
fm=OrderModify(OrderTicket(), pp, sl, tp, ex, cl);
se (fm) {
se (UseSound) PlaySound(SoundSuccess); break;
{} else {
er=GetLastError();
se (UseSound) PlaySound(SoundError);
pa=MarketInfo(OrderSymbol(), MODE_ASK);
pb=MarketInfo(OrderSymbol(), MODE_BID);
Imprimir("Erro(",er,") modificando a ordem:",ErrorDescription(er),", tentar ",it);
Print("Ask=",pa," Bid=",pb," sy=",OrderSymbol(),
"op="+GetNameOP(OrderType())," pp=",pp," sl=",sl," tp=",tp);
Dormir(1000*10);
}
}
}
}

//+----------------------------------------------------------------------------+
//| Autor : Kim Igor V. aka KimIV, http://www.kimiv.ru |
//+----------------------------------------------------------------------------+
//| Versão : 23.04.2009 |
//| Descrição : Move stop level to lossless |
//+----------------------------------------------------------------------------+
//| Parâmetros: |
//| sy - nome do instrumento ( "" - qualquer símbolo, |
//| NULL - símbolo atual) |
//| op - operação ( -1 - qualquer posição) |
//| mn - MagicNumber ( -1 - qualquer magik) |
//+----------------------------------------------------------------------------+
void MovingInWL(string sy="", int op=-1, int mn=-1) {
po duplo, pp;
int i, k=OrdensTotal();

se (sy=="0") sy=Símbolo();
para (i=0; i<k; i++) {
se (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
se ((OrderSymbol()==sy ||| sy==") && (op<0 || OrderType()==op)) {
se (mn<0 || OrderMagicNumber()==mn) {
po=MarketInfo(OrderSymbol(), MODE_POINT);
se (OrderType()==OP_BUY) {
se (OrderStopLoss()-OrderOpenPrice()<LevelWLoss*po) {
pp=MarketInfo(OrderSymbol(), MODE_BID);
if (pp-OrderOpenPrice()>LevelProfit*po) {
ModifyOrder(-1, OrderOpenPrice()+LevelWLoss*po, -1);
}
}
}
se (OrderType()==OP_SELL) {
se (OrderStopLoss()==0 || OrderOpenPrice()-OrderStopLoss()<LevelWLoss*po) {
pp=MarketInfo(OrderSymbol(), MODE_ASK);
se (OrderOpenPrice()-pp>LevelProfit*po) {
ModifyOrder(-1, OrderOpenPrice()-LevelWLoss*po, -1);
}
}
}
}
}
}
}
}
//+----------------------------------------------------------------------------+

 
Este é o código de Igor Kim, mas eu não consigo entrar em contato com ele. Se você puder ajudar!
 
GSB:

Primeiro, você mesmo tentou exibi-los na tela para verificar, o que levou a erros, e segundo, a normalização é desejável e o preço de ajuste do pedido e TP, SL. Se o preço não for normalizado, isso pode levar a erros. Esta é a regra e não devemos quebrá-la. Veja exemplos e analise porque este é o caso e não o contrário, por exemplo https://book.mql4.com/ru/samples/shared

Eu não o escrevi para censurar, apenas para deixar os outros verem. Obrigado por seu tempo.
Razão: