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

 
Igor Makanu:

há muitos erros em seu exemplo

deveria haver:

aqui os preços não são normalizados OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Bid-SL*Point,Bid+TP*Point,"My order",MagicNumber,0,clrGreen);

Aqui não entendo a lógica por que a saída do OnTick() é necessária se a condição é falsa.

talvez, devemos continuar com o laçoe simplesmente calcular quantos pedidos existem

Seu exemplo é muito simples na lógica e seria difícil modificá-lo para outras tarefas... talvez ele queira fazer alguma trilha.

Ainda é cedo)))) Haverá muita coisa ao mesmo tempo. Não há muito sentido lá))))) E assim sim, é claro, após cálculos para toda a normalização da ordem de envio))))

Aí a condição por ordem, se não há ordens no instrumento atual com nosso magik, nós colocamos a ordem. E então a condição não chegará à ordem até que ela feche.

O PS não gosta da condição Se não.

 

Saudações, você poderia me dizer como ler a expressão

string sym=(symbol==NULL ? Symbol() : symbol);
 
Galim_V:

Saudações, você poderia me dizer como ler a expressão

Seo símbolo estiver vazio, retornar o valor do símbolo atual para a variável sym, e se não estiver vazio, retornar o valor para a variável sym

 
Vladimir Pastushak:

Se a variável símbolo estiver vazia, então devolva o valor do símbolo do gráfico atual para a variável sym, e se não estiver vazia, então passe seu valor para a variável sym

Obrigado!

 
Galim_V:

Saudações, você poderia me dizer como ler corretamente esta expressão?

Se o símbolo for NULL, leia Symbol(), caso contrário, atribua o símbolo à variável.

Esta entrada é equivalente a

string sym;
if(symbol == NULL)
sym = Symbol();
else
sym = symbol;
A única diferença é o número de linhas.
 
Alexey Viktorov:

Lê como segue: Atribua uma variável a Symbol() se o símbolo for NULL, caso contrário, atribua um valor ao símbolo.

Equivalente a esta entrada

A única diferença é o número de linhas.

Obrigado!

 
Valeriy Yastremskiy:

O que então, por exemplo, você tem uma janela aberta não Eurobucks, mas Eurofunt, você compara o símbolo do pedido selecionado com Eurobucks, se for verdade, então há um pedido no Eurobucks, e se nosso magik, então retorna da função Onstart, e se não, então definimos um pedido no Eurobucks, mas Kloz, High, Asc, Bid você terá para Eurofunt. será um erro ao abrir pedidos porque licitar e pedir por estes instuents são diferentes. E Symbol() devolverá o símbolo da janela atual e nenhum erro ocorrerá.

Você pode usar um modelo do meta editor, há um Novo botão na parte superior esquerda. A função OnStart ainda é usada, mas não está correta, e OnStart é para scripts. O modelo certo.

O código correto. Seu comentário de pedido está faltando e o mágico não está contabilizado em seu código. Nos avisos à nota da linha de abertura Conversão implícita de um número em um fio!!!

Sim, funciona como deveria. Obrigado!!!

Não sabia que era tão importante criar por modelo. OnStart de fato. Eu tinha a estrutura básica errada. Bem, eu saberei disso agora.

 
Alexey Belyakov:

Sim, funciona como deveria. Obrigado! (Risos)

Eu não sabia que era tão importante criar a partir de um modelo. OnStart, de fato. Eu tinha a estrutura básica errada. Bem, eu saberei disso agora.

Bem, e tudo o que você coloca nas funções de trabalhar com encomendas deve ser normalizado. Se o ponto decimal for seguido por 6 dígitos, o pedido não será colocado e gerará um erro.

Procure o tópico com "Somente funções úteis do KimIV" ou procure-o no KodoBase.

Igor Makanu escreveu acima mais erros. E as funções de Kim são realmente úteis para começar. Os comentários são claros.

 

Por favor, ajude. Por que os testes dão um erro - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13)" ????


#link de propriedade "2020, Grey".

#link da propriedade "uirnP0215@mail.ru"

#propriedade versão "1.00"

#propriedade rigorosa


lotes duplos de entrada = 0,01;

input int Magic = 1546;



duplo ibufUP[];

duplo ibufDN[];


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

//| Função de inicialização do especialista |

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

int OnInit()

{


return(INIT_SUCCEED);

}

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

//| Função de desinicialização especializada |

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

nulo OnDeinit(const int razão)

{

//---


}

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

//| função tick expert |

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

nulo OnTick()

{

CountFractals();

if(ibufUP[3]>0)

{

if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, "", Magic, 0, clrRed))

Imprimir ("Failed to open sell order");

}

if(ibufDN[3]>0)

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen))

Imprimir ("Falha na abertura de um pedido de compra");

}



}

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

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

Contagem de Fratais nulos()

{

for(int i=150; i>=0; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i);

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i);

}

}

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



 
Madmas:

Por favor, ajude. Por que os testes dão um erro - "" 2020.08.13 13:09:11.393 2018.08.01 00:00:123456 GBPUSD,M30: array out of range in '123456.mq4' (59,13)"


#link de propriedade "2020, Grey".

#link da propriedade "uirnP0215@mail.ru"

#propriedade versão "1.00"

#propriedade rigorosa


lotes duplos de entrada = 0,01;

input int Magic = 1546;



duplo ibufUP[];

duplo ibufDN[];


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

//| Função de inicialização do especialista |

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

int OnInit()

{


return(INIT_SUCCEED);

}

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

//| Função de desinicialização especializada |

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

nulo OnDeinit(const int razão)

{

//---


}

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

//| função tick expert |

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

nulo OnTick()

{

CountFractals();

if(ibufUP[3]>0)

{

if(!OrderSend(Symbol(), OP_SELL, lots, Bid, 30, 0, 0, "", Magic, 0, clrRed))

Imprimir ("Failed to open sell order");

}

if(ibufDN[3]>0)

{

if(!OrderSend(Symbol(), OP_BUY, lots, Bid, 30, 0, 0, "", Magic, 0, clrGreen))

Imprimir ("Falha na abertura de um pedido de compra");

}



}

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

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

Contagem de Fratais nulos()

{

for(int i=150; i>=0; i--)

{

ibufUP[i] = iFractals(NULL, 0, MODE_UPPER, i);

ibufDN[i] = iFractals(NULL, 0, MODE_LOWER, i);

}

}

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



Adicione um contador decrescente na funçãoCountFractals para um início.

Razão: