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
Isto é o que eu tenho. Por favor, diga-me o que está errado. Agradecemos antecipadamente!
Olá!
Estou escrevendo aqui, pois parece não haver ninguém no mq4.
Você pode me dizer o que estou fazendo de errado? A opção 2 não está funcionando.
Olá, por favor, ajude-me a escrever uma função no MT4. Conheço meu saldo de conta, sei quantas negociações serão abertas (por exemplo, 9), conheço o risco (por exemplo, 3% do AccountBalance), preciso calcular um lote para a primeira negociação, se cada lote seguinte será duplicado e todas as negociações se sobreporão umas às outras.
Isto é o que eu tenho. Por favor, diga-me o que está errado. Agradecemos antecipadamente!
Olá!
Estou escrevendo aqui, porque parece não haver ninguém no mq4.
Você pode me dizer o que estou fazendo de errado? A opção 2 não funciona.
Em destaque: deve haver uma tarefa - "=" e você tem uma comparação - "==".
Olá a todos!
Estou aprendendo a escrever robôs no mt4, decidi começar com as opções binárias . Eu escrevi a EA mais fácil e o compilador gera um monte de avisos que não consigo entender (
Ajuda: "Oh MQL4 Guru" =))))))
Obrigado de antemão!)
Aqui está o código para a EA.
//+------------------------------------------------------------------+
//|Bolinger_Bands_traider.mq4 |
//|Copyright 2017, Penrov Nikolay |
//|vk.com/buzamonolit |
//+------------------------------------------------------------------+
#Direitos autorais de propriedade "Copyright 2017, Petrov Nikolay"
#link de propriedade "vk.com/buzamonolit"
#propriedade versão "1.00"
#propriedade rigorosa
//+------------------------------------------------------------------+
//| função de iniciação de especialista|
//+------------------------------------------------------------------+
Exterior int Bolinger_Bands = 20; // Período Bollinger Band
Delta duplo externo = 0,0003; // A que distância para abrir o pedido
Symb; // Nome do instrumento financeiro.
int Total; // Número de pedidos
//+------------------------------------------------------------------+
//| função de iniciação de especialista|
//+------------------------------------------------------------------+
int init()
{
//----
Initialize_Objects(0);
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de desinicialização especializada|
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
retorno(0);
}
//+------------------------------------------------------------------+
//| função de partida de especialista|
//+------------------------------------------------------------------+
int start()
{
//----
preço duplo = Licitação;
duplo CurrBol_High = iBands(Symb,0, Bolinger_Bands, 0,0, PRICE_CLOSE, MODE_UPPER, 0);
duplo CurrBol_Low = iBands(Symb,0, Bolinger_Bands, 0,0, PRICE_CLOSE, MODE_LOWER, 0);
double PriceBol_High = preço - CurrBol_High;
double PriceBol_Low = preço - CurrBol_Low;
data/hora PróximoFechar = Hora[0] + Período()*60*2;
int MinutesToNextClose = (NextClose - TimeCurrent())/60 + 1;
int err;
// Contagem de pedidos
Symb=Símbolo();// Nome da barbatana.símbolo(); // símbolo(); // símbolo(); // símbolo(); // ícone de ordem(); // símbolo().
Total=0;// Número de pedidos
for(int i=1; i<=OrdensTotal(); i++) // Laço de encomenda
{
se (OrderSelect(i-1,SELECT_BY_POS)==verdadeiro) // Se houver um próximo
{// Análise de pedidos:
se (OrderSymbol()!=Symb)continuar; // Não nosso instrumento financeiro
se (OrderType()>1)// Temos uma ordem pendente
{
Alerta("Ordem pendente detectada. O Expert Advisor não está funcionando;)
retorno(0);// Saída()
}
Total++;// Mercado de balcão. encomenda
se (Total>1)// Não mais de um pedido
{
Alerta("Várias ordens de mercado. O Expert Advisor não está funcionando");
retorno(0);// Saída()
}
}
}
ObjectSetText("Obj_Label", "TF" + Período() + ", " + DoubleToStr(price, 5) + ", tick " + TimeToStr(TimeCurrent(), TIME_SECONDS) + ", O@" + TimeToStr(Time[0], TIME_MINUTES) + ", NC@". + TimeToStr(NextClose, TIME_MINUTES) + " (" + MinutesToNextClose + " min)", 10, "Arial", DarkGreen );
ObjectSetText("Obj_Label2", "Ordens:" + Total + ", delta " + DoubleToStr(Delta,5) + ", distância para MA:" + DoubleToStr(PriceBol_High, 5), 10, "Arial", DarkGreen );
ObjectSetText("Obj_Label3", "Ordens: " + Total + ", Delta " + DoubleToStr(Delta,5) + ", distância para MA:" + DoubleToStr(PriceBol_Low, 5), 10, "Arial", DarkGreen );
// análise de preços e abertura de pedidos
if ((MathAbs(PriceBol_Low) < Delta) && (price > CurrBol_Low) && (Open[0] > CurrBol_Low+Delta) && (Total<1))
{
if (OrderSend(Symbol(), OP_BUY, 1.00,Bid , 3, 0, 0, "BO exp:900", 0,DoubleToStr(MinutesToNextClose,0), Verde) >0) Imprimir ("Opened OK");
senão
{
err=GetLastError();
Imprimir("erro(",err,"));
retorno(0);
}
Imprimir ("CALL @ " + preço + " + TimeToStr(TimeCurrent(), TIME_SECONDS) + " exp em " + MinutesToNextClose);
}
if ((MathAbs(PriceBol_High) < Delta) && (price < CurrBol_High) && (Open[0] < CurrBol_High-Delta) && (Total<1))
{
if (OrderSend(Symbol(), OP_SELL, 1.00,Bid , 3, 0, 0, "BO exp:900", 0,DoubleToStr(MinutesToNextClose,0), Vermelho) > 0) Imprimir ("Opened OK");
senão
{
err=GetLastError();
Imprimir("erro(",err,"));
retorno(0);
}
Imprimir ("PUT @ " + preço + " + TimeToStr(TimeCurrent(), TIME_SECONDS) + " exp em " + MinutesToNextClose);
}
//----
retorno(0);
}
//+------------------------------------------------------------------+
int Initialize_Objects(int Win) // Usuário fie
{// .criação de objetos
ObjectCreate("Obj_Label",OBJ_LABEL, Win, 0,0); // criação de objetos
ObjectSet("Obj_Label", OBJPROP_CORNER, 0); // Ligar a um canto
ObjectSet("Obj_Label", OBJPROP_XDISTANCE, 13); // coordenada X
se (Win==0)
ObjectSet("Obj_Label",OBJPROP_YDISTANCE, 15);// Coordenada Y
senão
ObjectSet("Obj_Label",OBJPROP_YDISTANCE,15);// Coordenada Y
ObjectCreate("Obj_Label2",OBJ_LABEL,Win, 0,0); // Criação de objetos
ObjectSet("Obj_Label2",OBJPROP_CORNER, 0); // Encadernação a um canto
ObjectSet("Obj_Label2", OBJPROP_XDISTANCE, 13); // coordenada X
se (Win==0)
ObjectSet("Obj_Label2",OBJPROP_YDISTANCE, 35);// Coordenada Y
senão
ObjectSet("Obj_Label2",OBJPROP_YDISTANCE, 35);//Y Coordinate
ObjectCreate("Obj_Label3",OBJ_LABEL, Win, 0,0); // Criar objeto
ObjectSet("Obj_Label3",OBJPROP_CORNER, 0); // Encadernação a um canto
ObjectSet("Obj_Label3", OBJPROP_XDISTANCE, 13); // coordenada X
se (Win==0)
ObjectSet("Obj_Label3",OBJPROP_YDISTANCE, 55);// Coordenada Y
senão
ObjectSet("Obj_Label3",OBJPROP_YDISTANCE, 55);//Y Coordinate
retorno(0);// Saída do usuário.função
}
Aqui estão os avisos. Eu não consigo descobrir do que ele não gosta(
possível perda de dados devido à conversão do tipo Bolinger_Bands_traider.mq4 51 24
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 76 35
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 76 227
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 77 43
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 78 43
conversão implícita de 'string' para 'número' Bolinger_Bands_traider.mq4 85 71
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 93 23
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 93 91
conversão implícita de 'string' para 'número' Bolinger_Bands_traider.mq4 99 72
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 107 23
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 107 91
0 erro(s), 11 advertência(ões), tempo de compilação: 204 msec 1 12
Elementar. O erro é a funçãoGetLots(). A função completa.
Talvez você possa me dizer como escrevê-lo corretamente. Eu queria calcular usando loop by brute forcing do lote máximo.
Talvez você possa me dizer como escrevê-lo corretamente. Eu queria calcular usando um laço, tentando a partir do lote máximo.
Onde está a lógica? Você fixa o lote máximo permitido para a primeira encomenda e depois o aumenta para cada encomenda sucessiva. Isso não lhe parece, para dizer de forma branda, pouco sensato?
Além disso, você diminui o lote da primeira ordem no laço usando algum método totalmente incompreensível, enquanto os lotes das outras ordens que foram "calculadas" antes permanecem inalterados, e estes valores não vão além dos limites desta função. Então, o que eles fazem?
Sem mencionar que o laço de incremento não pode ser um número real, ele tem que ser um contador, um inteiro. Mas você define o valor do lote como um contador e subtrai um dele a cada iteração. Este é um grande erro, um erro muito grave.
Esclareça primeiro a lógica em sua mente e depois tente implementá-la em seu código.
Mas aqui estão os avisos. Eu não consigo entender o que ele não gosta(
possível perda de dados devido à conversão do tipo Bolinger_Bands_traider.mq4 51 24
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 76 35
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 76 227
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 77 43
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 78 43
conversão implícita de 'string' para 'número' Bolinger_Bands_traider.mq4 85 71
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 93 23
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 93 91
conversão implícita de 'string' para 'número' Bolinger_Bands_traider.mq4 99 72
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 107 23
conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 107 91
0 erro(s), 11 advertência(ões), tempo de compilação: 204 msec 1 12
Saída de uma linha com o número 51, pois aqui não há contagem para entender o erro"possível perda de dados devido à conversão do tipo Bolinger_Bands_traider.mq4 51 24".
O resto: "conversão implícita de 'número' para 'string' Bolinger_Bands_traider.mq4 107 91
traduzir valores numéricos em uma cadeia de texto onde criamos o objeto - uma cadeia de texto, por exemplo
período()
deveria ser
DoubleToString(Período(),0)
traduzir os valores numéricos para uma cadeia de texto onde criamos um objeto de cadeia de texto, por exemplo
período()
deveria ser
DoubleToString(Período(),0)
Desde quando o período é um tipo duplo?