[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 456
![MQL5 - Linguagem para estratégias de negociação inseridas no terminal do cliente MetaTrader 5](https://c.mql5.com/i/registerlandings/logo-2.png)
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
fazer dele um Expert em vez de um script e controlar o tempo de execução do código de função do script no Expert. Chegou o momento - executar o código do roteiro.
Entendi por esta frase que seus terminais estão fechados. Estou lhe respondendo - o roteiro não pode executar o terminal em si.
Ao escrevê-lo, é assim que é entendido. Se não é isto que você quer dizer, então explique-se mais claramente.
Qual é o valor da idéia? Se você precisasse tanto assim, não teria tido um proger montado há muito tempo... é para você pessoalmente.
1. Copie o conteúdo do roteiro.
2. Criar um novo EA usando MetaEditor
3. Insira o código do roteiro
4. Como adicionar a função de trabalhar por tempo e onde inseri-lo (não sou programador)
Eu preciso do tempo de trabalho da função de 9-00 a 9-01
O código do roteiro a ser editado: (Obrigado antecipadamente a todos que ajudarão)
#direitos de propriedade intelectual "Kim Igor V. aka KimIV"
#link da propriedade "https://www.mql5.com/go?link=http://www.kimiv.ru/"
#property show_inputs
#importar "kernel32.dll
int GetUserDefaultLCID();
int GetLocaleInfoA(
int Locale, // identificador locale
tipo LCT, // tipo de informação
string lpLCData, // endereço do buffer para informação
int cchData // tamanho do buffer
);
#importar
//+------ Parâmetros externos do roteiro -------------------------------------------+
bool externo bComissão = Falso; //Discharge commissions
bool externo bSwap = True; // Descarregar swaps
bComentario externo = Verdadeiro; // Descarregar comentários
bool bMagic = True; // Descarregar MagicNumber
// Constantes LCTYPE
#define LOCALE_SDECIMAL 0x000E // Caracteres utilizados para o separador decimal.
//+----------------------------------------------------------------------------+
//| função de início do programa de script |
//+----------------------------------------------------------------------------+
início nulo() {
int dg, i, k=OrdersHistoryTotal();
string FileName=DoubleToStr(AccountNumber(), 0)+".csv"; st;
FileDelete(FileName);
st="Ticket;Open Time;Type;Lots;Item;Price;SL;TP;Close Time;Price";
if (bComissão) st=st+";Comissão";
if (bSwap) st=st+";Swap";
st=st+";Lucro"; se (bSwap) st=st+";Lucro;
if (bMagic) st=st+";Magic";
if (bComment) st=st+";Comment";
WritingLineInFile(FileName, st);
para (i=0; i<k; i++) {
se (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
se (OrderType()<2) {
dg= MarketInfo(OrderSymbol(), MODE_DIGITS);
st= DoubleToStr(OrderTicket(), 0)+";";
st=st+TimeToStr(OrderOpenTime(), TIME_DATE|TIME_MINUTES)+";";";
st=st+GetNameOP(OrderType())+";";
st=st+DoubleToStrLocale(OrderLots(), 2)+";";
st=st+OrderSymbol()+";";
st=st+DoubleToStrLocale(OrderOpenPrice(), dg)+";";
st=st+DoubleToStrLocale(OrderStopLoss(), dg)+";";
st=st+DoubleToStrLocale(OrderTakeProfit(), dg)+";";
st=st+TimeToStr(OrderCloseTime(), TIME_DATE|TIME_MINUTES)+";";";
st=st+DoubleToStrLocale(OrderClosePrice(), dg)+";";
if (bCommission) st=st+DoubleToStrLocale(OrderComission(), 2)+";";
if (bSwap) st=st+DoubleToStrLocale(OrderSwap(), 2)+";";
st=st+DoubleToStrLocale(OrderProfit(), 2)+";";
if (bMagic) st=st+DoubleToStr(OrderMagicNumber(), 0)+";";
if (bComment) st=st+OrderComment()+";";
WritingLineInFile(FileName, st);
}
Comentário ("Leia: ",i+1," de ",k);
}
}
Comentário("Arquivo escrito: ",FileName);
}
//+----------------------------------------------------------------------------+
//| Converte um valor numérico em um fio com o sistema |
//| separador entre parte inteira e parte fracionária |
//| Parâmetros: |
//|| v - número do tipo duplo |
//| d - número de dígitos após a vírgula decimal |
//+----------------------------------------------------------------------------+
string DoubleToStrLocale(double v, int d) {
se (d<0) d=0;
se (d>8) d=8;
string se=GetUserLocale(LOCALE_SDECIMAL), st=DoubleToStr(v, d);
if (se!=".") st=StrTran(st, ".", se);
retorno(st);
}
//+----------------------------------------------------------------------------+
//| Nome de retorno da operação comercial |
//| Parâmetros: |
//| op - identificador de 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("Buy Limit");
caso OP_SELLLIMIT : devolução("Sell Limit");
caso OP_BUYSTOP : devolução("Buy Stop");
caso OP_SELLSTOP : devolução("Sell Stop");
default : devolução ("Operação Desconhecida");
}
}
//+----------------------------------------------------------------------------+
//| Retorno das configurações regionais do usuário |
//| Parâmetros: |
//| LCType - tipo de cenário regional (LCTYPE Constant) |
//+----------------------------------------------------------------------------+
string GetUserLocale(int LCType) {
int loc=GetUserDefaultLCID();
string str=" ";
GetLocaleInfoA(loc, LCType, str, 64);
retorno(str);
}
//+----------------------------------------------------------------------------+
//| Substrato substituto |
//| Parâmetros: |
//| str - string de texto, em que a substituição é feita |
//| strfrom - substrato a ser substituído |
//| strto - substituindo o substrato |
//+----------------------------------------------------------------------------+
string StrTran(string string, string strfrom, string strto) {
int, s.f;
string outstr="", tempstr;
para (n=0; n<StringLen(str); n+++) {
tempstr=StringSubstr(str, n, StringLen(strfrom));
se (tempstr==strfrom) {
outstr=outtr+strto;
n=n+StringLen(strfrom)-1;
} else outstr=outstr+StringSubstring(str, n, 1);
}
retorno(outstr);
}
//+----------------------------------------------------------------------------+
//| Escrever cadeia para arquivo |
//| Parâmetros: |
//| FileName - nome do arquivo |||
//| texto - string |||
//+----------------------------------------------------------------------------+
void WritingLineInFile(string FileName, string text) {
int file_handle=FileOpen(FileName, FILE_READ|FILE_WRITE, " ");
se (file_handle>0) {
FileSeek(file_handle, 0, SEEK_END);
FileWrite(file_handle, texto);
FileClose(file_handle);
}
}
//+----------------------------------------------------------------------------+
para baltik
Este tópico é para pessoas que estão aprendendo a programar, não para pessoas que estão pedindo que você escreva para elas.
%windir% \ fonts
Você consegue manter as coisas simples, não entendo... que tipo de pasta é? ou o que é afinal?
можно как-то попроще, я ничего не понял... это что за папка? или что это вообще такое?
Na verdade, a questão "qual pasta colocar fontes no MT4" também não está muito clara. Por favor, explique em russo. :)
As fontes não são armazenadas no terminal. As fontes são manipuladas pelo sistema operacional.
вообще-то вопрос "в какую папку вставить шрифты в МТ4" тоже не очень понятен.
в терминале никакие шрифты не хранятся. шрифтами занимается операционная система.
Vou tentar colocá-lo no sistema operacional...
para baltik
Este tópico é para pessoas que estão aprendendo a programar, não para pessoas que estão pedindo que você escreva para elas.
Obrigado
Vou aprender :)
olá. escrevi uma simples EA, usando exemplos do tutorial. a EA deve sinalizar quando o preço sair da faixa, que consiste em dois MAs. ou seja, se uma barra abriu na faixa e começou a subir e seu preço atual saiu dela, então ela apita. o mesmo vale para baixo. mas o problema é que eu não consigo descobrir se eu fizer isso
if (Licitação > MA1 || Licitação < MA2) // Verificando o passe de faixa
{
Alerta("Preço está fora da faixa");// Mensagem
}
Se o preço estiver acima da faixa, então o Expert Advisor sinaliza:
if (Bid > MA1 && Fact_Up==verdadeiro) // Verifique se há um passe para cima
{
Fact_Dn=verdadeiro; // Informe o preço acima de MA1
Fact_Up=falso; // Não informe o preço abaixo de MA1
Alert("O preço está acima do intervalo.");// Mensagem
}
//
if (Bid < MA2 && Fact_Dn===verdadeiro) // Verifique o passe para baixo
{
Fact_Up=verdadeiro; // Informe o preço abaixo de MA2
Fact_Dn=falso; // Não informe o preço acima de MA2
Alerta ("Preço está abaixo do intervalo");// Mensagem
}
Se esta mensagem for mostrada, então não é nada clara, quando dá um sinal - às vezes dá um sinal, às vezes não.
Não consigo entender o que é o "Fact_Up==verdadeiro" e por que é necessário.