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

 

Olá. Quero escrever um EA para MT4, uma de suas tarefas é desenhar linhas de Fibo, na M1, em uma hora. Ou seja, quando às 11h00 deve traçar linhas no intervalo das 10h00 às 10h59, concentrando-se nos altos e baixos. Tentei métodos diferentes, afixei o que era o último. Oproblema é que ele não desenha as linhas na área em questão.

int timemin=TimeMinute(Time[59]==0);
int timehour=TimeHour(Time[1] && TimeMinute(Time[0]));
int timemin1=TimeMinute(Time[0]==0);
int timehour1=TimeHour(Time[1] && TimeMinute(Time[59]))

int max=iHighest(Symbol(),1,MODE_HIGH,60,timehour);
int min=iLowest(Symbol(),1,MODE_LOW,60,timehour);

double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));
double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1)));
ObjectDelete("FiboLevels"); // Novo nível

se (barup)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);

}
if (bardn)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRRed);

}
duplo f1=ObjectGet("FiboLevels",OBJPROP_PRICE1); //Seleciona o primeiro preço
duplo f2=ObjectGet("FiboLevels",OBJPROP_PRICE2); //Seleciona o segundo preço e parcelas
duplo Diff=f2-f1;
string a11=DoubleToStr(f2-Diff*0.0,Dígitos);
string a12=DoubleToStr(f2-Diff*0,236,Dígitos);
string a13=DoubleToStr(f2-Diff*0,382,Dígitos);
string a14=DoubleToStr(f2-Diff*0.50,Dígitos);
string a15=DoubleToStr(f2-Diff*0,618,Dígitos);
string a16=DoubleToStr(f2-Diff*1,0,Dígitos);

bool a1=ObjectSet("FiboLevels",OBJPROP_FIBOLEVELS,6);
bool a2=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+0,0.0);
bool a3=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+1,0.236);
bool a4=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+2,0.382);
bool a5=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+3,0.50);
bool a6=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+4,0.618);
bool a7=ObjectSet("FiboLevels",OBJPROP_FIRSTLEVEL+5,1.0);

bool a111=ObjectSetFiboDescription("FiboLevels",0, "0.0%");
bool a122=ObjectSetFiboDescription("FiboLevels",1, "23.6%");
bool a133=ObjectSetFiboDescription("FiboLevels",2, "38.2%");
bool a144=ObjectSetFiboDescription("FiboLevels",3, "50,0%");
bool a155=ObjectSetFiboDescription("FiboLevels",4, "61.8%");
bool a166=ObjectSetFiboDescription("FiboLevels",5, "100,0%");

 
Georgy Sled:

Olá. Quero escrever um EA para MT4, uma de suas tarefas é desenhar linhas de Fibo, na M1, em uma hora. Ou seja, quando às 11h00 deve traçar linhas no intervalo das 10h00 às 10h59, concentrando-se nos altos e baixos. Tentei métodos diferentes, afixei o que era o último. Oproblema é que ele não desenha linhas em uma determinada área.

double barup=(iOpen(Symbol(),60,1)>iClose(Symbol(),60,1));

double bardn=(iOpen(Symbol(),60,1)<iClose(Symbol(),60,1)));
ObjectDelete("FiboLevels"); //------Novo nível

se (barup)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max];
ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);

}
se (bardn)
{
WindowRedraw();
ObjectCreate(0, "FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
ObjectSet("FiboLevels",OBJPROP_COLOR,clrRRed);

}

isto é mais curto? bool barup=... WindowRedraw(); ainda será executado - retirado de se

   ObjectDelete("FiboLevels"); //------Новый уровень
   WindowRedraw();

   if (iOpen(Symbol(),60,1)>iClose(Symbol(),60,1))
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[min],Low[min],Time[timehour1],High[max]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrGreen);
   }
   else
   {
      ObjectCreate(0,"FiboLevels",OBJ_FIBO,0,Time[max],Low[max],Time[timehour1],High[min]);
      ObjectSet("FiboLevels",OBJPROP_COLOR,clrRed);
   }

também pode ser mais curto ... ver meu arquivo

Arquivos anexados:
Proba.mq4  3 kb
 
Artyom Trishkin:

Por favor, insira o código corretamente.


É ainda mais claro:


Obrigado por explicar como colar o código corretamente)))) ajudou) Por favor, verifique e me ajude a escrever o código corretamente, eu ficarei muito agradecido! (Hoje tenho uma TV Samsung fervida que aprendi a desinstalar, mas não consigo lidar com este código (((((
 
void fOrderOpen() {...
    if( iTime(Symbol(),PERIOD_M1,0)) {
     if((fMarketOrders(OP_BUY))) { ....{
int irvbuy=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,0,NULL,12345,0,0); 

Rapazes, por que meus pedidos abrem a cada tique? Você pode me dizer como me concentrar no bar?

 
Rustam Bikbulatov:

Rapazes, por que meus pedidos abrem a cada tique? Você pode me dizer como me concentrar no bar?

De acordo com as condições descritas no ATS, permite a abertura para que ela se abra.
Há muitas soluções neste caso. Tudo depende do que for mais adequado para você.
Podemos determinar que a próxima ordem deve ser aberta somente se o preço se afastou da última por N pontos. Você pode solicitar a abertura de não mais de um pedido em 1 bar. Tal e tal, e assim por diante.
Anote as condições que você precisa e aplique-as em seus testes.

 
Konstantin Nikitin:

De acordo com as condições descritas no ATS, ele abre o pedido.
Há muitas soluções neste caso. Tudo depende do que for mais adequado para você.
Podemos determinar que a próxima ordem deve ser aberta somente se o preço se afastou da última por N pontos. Você pode solicitar a abertura de não mais de um pedido em 1 bar. Tal e tal, e assim por diante.
Anote as condições que você precisa e aplique-as em seus testes.

Em vez dissose( iTime(Símbolo(),PERÍODO_M1,0)){O que devo escrever para abrir um pedido em um bar?

 
Rustam Bikbulatov: Rapazes, por que meus pedidos abrem a cada tique? Algum conselho sobre como se concentrar no bar?

A pergunta foi feita muitas vezes e correspondentemente muitas vezes respondida.Usando uma busca, por exemplo, aqui

 
STARIJ:

A pergunta foi feita muitas vezes e correspondentemente muitas vezes respondida.Usando uma busca, por exemplo, aqui

Obrigado!

 

Boa tarde!


Eu tenho um EA que faz certos cálculos. Utiliza diferentes operações matemáticas, arrays, loops. Ele salva o resultado em um arquivo. Tem que começar tudo desde o início, depois de ter realizado todas as ações. Fez todos os cálculos uma vez e depois fica pendurado pela segunda vez sem tomar nenhuma medida. Você pode aconselhar se é necessário zerar variáveis, limpar arrays ou algo mais antes de iniciar um novo cálculo?

 
Kot:

Boa tarde!


Eu tenho um EA que faz certos cálculos. Utiliza diferentes operações matemáticas, arrays, loops. Ele salva o resultado em um arquivo. Tem que começar tudo desde o início, depois de ter realizado todas as ações. Fez todos os cálculos uma vez e depois fica pendurado pela segunda vez sem tomar nenhuma medida. Você pode aconselhar se é necessário zerar variáveis, limpar arrays ou algo mais antes de iniciar um novo cálculo?

Com certeza,eles ajudarão. E não há tais especialistas nesta linha.
Razão: