Como codificar? - página 231

 

Excelente, obrigado!

 

homem, arrays e funções, não minha xícara de chá.

 

Ajuda para a EA

Eu quero fazer o seguinte:

Usando quadros M15 e abrindo durante este intervalo no máximo dois pedidos, comparando o preço atual com o fechamento anterior da M15(fechamento[1]). Entretanto, não sei como escrever o código para isso, já que quero que este procedimento seja realizado em todos os quadros M15 seguintes. Como manter as variáveis corretas para contar 2 ordens no máximo a cada M15, já que a função de início sempre se executa por si mesma?

Obrigado.

 

Precisa de ajuda com um roteiro de ordens pendentes pendentes.

Sei que há muitos scripts aqui que abrem e fecham ordens, mas não consigo encontrar um que abra ordens pendentes.

O que eu preciso é de 2 scripts, 1 Sellstop e 1 Buystop.

Eu gostaria que o Buystop abrisse um pedido Buystop 15 pips acima do Pivot diário e o SellStop abrisse 15 pips abaixo do Pivot Diário.

Eu brinquei com ele e consegui o código abaixo para um SellStop, mas não sou um codificador e ele não funciona. Acho que deixei sair algo.

Alguém pode me ajudar com isto, por favor.

PS. nevermind, eu peguei. Eu tive que mudar meu preço de licitação para o PVTGreen . Eu estava recebendo um erro de 130...

Agora funciona...

Ok, mais um problema, Alguém pode me dizer como mudar o prazo de validade de 24hrs mais tarde para 22:00 do mesmo dia?

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

//| script "send pending order with expiration data" |

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

int start()

{

int ticket,expiration;

double point;

double PVTYellow = iCustom(NULL, 0, "pivot_alllevels", 0, 0, 0);

double PVTBlue = iCustom(NULL, 0, "pivot_alllevels", 0, 1, 0);

double PVTGreen = iCustom(NULL, 0, "pivot_alllevels", 0, 2, 0);

double PVTRed = iCustom(NULL, 0, "pivot_alllevels", 0, 3, 0);

double PVTMagenta = iCustom(NULL, 0, "pivot_alllevels", 0, 4, 0);

//----

point=MarketInfo(Symbol(),MODE_POINT);

expiration=TimeCurrent()+PERIOD_D1*60;

//----

while(true)

{

ticket = OrderSend(Symbol(),OP_SELLSTOP, 0.10, PVTGreen-15*Point, 3, PVTGreen+20*Point, PVTGreen-20*Point, 0,0,expiration,Red);

if(ticket<=0) Print("Error = ",GetLastError());

else { Print("ticket = ",ticket); break; }

//---- 10 seconds wait

Sleep(10000);

}

//----

return(0);

}

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

Para fazer a expiração 22:00 você poderia fazer isso...

int iHour = TimeHour(TimeCurrent());

int iMinute = TimeMinute(TimeCurrent());

int iDiff = 22%iHour;

datetime dtExpiryDate = (TimeCurrent()+(iDiff*60*60))-(iMinute*60);

Print(TimeToStr(dtExpiryDate));

Não há verificação de erros, portanto, se você acha que vai precisar disso, não se esqueça de adicioná-lo.

Lux

 

Símbolos de Agarrar o Mercado de Vigilância

Olá a todos,

Eu estava me perguntando se existe uma maneira de pegar todos os símbolos disponíveis no mercado de monitoramento em vez de alimentar manualmente a EA?

em outras palavras, quero que minha EA passe por qualquer símbolo disponível na janela de monitoramento do mercado e os monitore por um determinado critério.

qualquer ajuda é muito apreciada.

 

Ajude-me - Saldo da conta no domingo

Hi,

Estou tentando desde ontem mexer no cache da minha semana inteira desde que o domingo (abertura do mercado) revelou o saldo da conta.

Preciso trazer para executar corretamente um saldo de conta EA de domingo no sucesso de mercado de abertura para o gerente de capital.

duplo usadoacc = 0;

...

se (usedacc == 0 | | DayOfWeek () == 0) usedacc = Saldo da Conta ();

...

Simplesmente não funciona

Talvez alguém possa me ajudar o melhor que eu puder

Desculpe o mau inglês

 

favor apagar este post - thx

 

como posso obter dados do indicador

Olá a todos,

Preciso de um EA para os valores FIBO100 e FIBO0 do indicador. Como posso obtê-lo ?

Obrigado

derumuro

Arquivos anexados:
 

Como você consegue isso?

Colega, eu encontrei um problema similar.

Scott

A comunicação "inter script" (ou comunicação "inter indicador") na MQL passa exclusivamente por buffers. Este código :

trendset = iCustom(NULL,0, "VGA HISTOGRAM~",0,0);

Significa que você quer recuperar o valor da barra atual do primeiro buffer (público) do indicador "VGA HISTOGRAM~". Você não pode recuperar valores de variáveis declaradas em outro indicador (e não importa se elas são declaradas como externas) Você pode tentar com variáveis globais, mas variáveis globais são arrastadas para trabalhar e oferecem mais chance de cometer um erro do que de trabalhar corretamente com elas ou você pode escrever uma DLL (metatrader usa apenas uma instância de uma DLL por gráfico, independentemente dos parâmetros, de modo que você pode fazer uma espécie de "semáforo" que manteria e retornaria valores dependentes de IDs de qualquer tipo - que asseguraria comunicação entre códigos mql e evitaria a leitura errada de variáveis (variáveis globais, por exemplo, podem ser facilmente confundidas e você pode ler variáveis de um gráfico completamente diferente sem mesmo saber)

cumprimentos

Mladen

Na verdade, fiz um trabalho para isso que vou compartilhar com vocês.

Em seu indicador faça uma nova função para que as coisas não fiquem confusas.

PASSINFO nulo() {

//mude isto para seu nome desejado não importa, deixe-o se seu preguiçoso

if (Close[1] > Open[2] && Volume[1] < Volume[2]) trendcondtemp=1; //bullish - isto apenas define um valor para a variável use seu código

se (Fechar[1] < Abrir[2] && Volume[1] < Volume[2]) tendênciacondtemp=2; //baixo - a mesma coisa cheiro diferente

if (Volume[1] > Volume[2])trendcondtemp=3; //fuckall happening - meh

se (Symbol()=="USDCHF") GlobalVariableSet("TRENDSETUSDCHF ",trendcondtemp);

if (Symbol()=="GBPUSD") GlobalVariableSet("TRENDSETGBPUSD",trendcondtemp);

if (Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp);

if (Symbol()=="USDJPY") GlobalVariableSet("TRENDSETUSDJPY",trendcondtemp);

if (Symbol()=="USDCAD") GlobalVariableSet("TRENDSETUSDCAD",trendcondtemp);

if (Symbol()=="NZDUSD") GlobalVariableSet("TRENDSETNZDUSD",trendcondtemp);

if (Symbol()=="AUDUSD") GlobalVariableSet("TRENDSETAUDUSD",trendcondtemp);

if (Symbol()=="AUDNZD") GlobalVariableSet("TRENDSETAUDNZD",trendcondtemp);

if (Symbol()=="AUDCAD") GlobalVariableSet("TRENDSETAUDCAD",trendcondtemp);

if (Symbol()=="EURUSD") GlobalVariableSet("TRENDSETEURUSD",trendcondtemp);

if (Symbol()=="AUDCHF") GlobalVariableSet("TRENDSETAUDCHF",trendcondtemp);

if (Symbol()=="AUDJPY") GlobalVariableSet("TRENDSETAUDJPY",trendcondtemp);

if (Symbol()=="CHFJPY") GlobalVariableSet("TRENDSETCHFJPY",trendcondtemp);

if (Symbol()=="EURGBP") GlobalVariableSet("TRENDSETEURGBP",trendcondtemp);

if (Symbol()=="EURAUD") GlobalVariableSet("TRENDSETEURGBP",trendcondtemp);

if (Symbol()=="EURCHF") GlobalVariableSet("TRENDSETEURCHF",trendcondtemp);

if (Symbol()=="EURJPY") GlobalVariableSet("TRENDSETEURJPY",trendcondtemp);

if (Symbol()=="EURNZD") GlobalVariableSet("TRENDSETEURNZD",trendcondtemp);

if (Symbol()=="GBPCHF") GlobalVariableSet("TRENDSETGBPCHF",trendcondtemp);

if (Symbol()=="GBPAUD") GlobalVariableSet("TRENDSETGBPAUD",trendcondtemp);

if (Symbol()=="GBPCAD") GlobalVariableSet("TRENDSETGBPCAD",trendcondtemp);

if (Symbol()=="GBPJPY") GlobalVariableSet("TRENDSETGBPJPY",trendcondtemp);

if (Symbol()=="NZDJPY") GlobalVariableSet("TRENDSETNZDJPY",trendcondtemp);

//add oil/gold/sheckles/o que quer que você negocie depois disto eu cobri tudo o que meu corretor faz

}

Ok agora porque sua moeda dependente dela não tem nenhuma chance de cruzar com outra moeda e encher os valores. Agora você tem que colocar isto em seu início / qualquer que seja sua função antes de chamar o valor.

int trendset;

if (Symbol()=="USDCHF") trendset= GlobalVariableGet("TRENDSETUSDCHF");

if (Symbol()=="GBPUSD") trendset= GlobalVariableGet("TRENDSETGBPUSD");

if (Symbol()=="EURUSD") trendset= GlobalVariableGet("TRENDSETEURUSD");

if (Symbol()=="USDJPY") trendset= GlobalVariableGet("TRENDSETUSDJPY");

if (Symbol()=="USDCAD") trendset= GlobalVariableGet("TRENDSETUSDCAD");

if (Symbol()=="NZDUSD") trendset= GlobalVariableGet("TRENDSETNZDUSD");

if (Symbol()=="AUDUSD") trendset= GlobalVariableGet("TRENDSETAUDUSD");

if (Symbol()=="AUDNZD") trendset= GlobalVariableGet("TRENDSETAUDNZD");

if (Symbol()=="AUDCAD") trendset= GlobalVariableGet("TRENDSETAUDCAD");

if (Symbol()=="EURUSD") trendset= GlobalVariableGet("TRENDSETEURUSD");

if (Symbol()=="AUDCHF") trendset= GlobalVariableGet("TRENDSETAUDCHF");

if (Symbol()=="AUDJPY") trendset= GlobalVariableGet("TRENDSETAUDJPY");

if (Symbol()=="CHFJPY") trendset= GlobalVariableGet("TRENDSETCHFJPY");

if (Symbol()=="EURGBP") trendset= GlobalVariableGet("TRENDSETEURGBP");

if (Symbol()=="EURAUD") trendset= GlobalVariableGet("TRENDSETEURGBP"); if (Symbol()=="EURAUD") trendset= GlobalVariableGet("TRENDSETEURAUD");

if (Symbol()=="EURCHF") trendset= GlobalVariableGet("TRENDSETEURCHF");

if (Symbol()=="EURJPY") trendset= GlobalVariableGet("TRENDSETEURJPY");

if (Symbol()=="EURNZD") trendset= GlobalVariableGet("TRENDSETEURNZD");

if (Symbol()=="GBPCHF") trendset= GlobalVariableGet("TRENDSETGBPCHF");

if (Symbol()=="GBPAUD") trendset= GlobalVariableGet("TRENDSETGBPAUD");

if (Symbol()=="GBPCAD") trendset= GlobalVariableGet("TRENDSETGBPCAD");

if (Symbol()=="GBPJPY") trendset= GlobalVariableGet("TRENDSETGBPJPY");

if (Symbol()=="NZDJPY") trendset= GlobalVariableGet("TRENDSETNZDJPY");

Por favor, note!!! (você já percebeu isso) mas você precisa ter o indicador rodando em sua moeda em que sua ea está rodando para que os valores mudem, caso contrário, você terá apenas a variável antiga que está armazenada por semanas em mt4.