Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 938
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
Eu quero criar uma matriz unidimensional onde 0 a 4 elementos irão armazenar o dobro, 5 a 9 irão armazenar o datetame, 10 a 14 irão armazenar o int. É possível organizá-lo em mql4? Se sim, você poderia me mostrar como, já vi um exemplo com estruturas em C++, mas perdi o link para o site?
Se você tiver células de matriz específicas alocadas para cada tipo, faça uma estrutura ao invés de uma matriz.
Se você tiver células de matriz específicas alocadas para cada tipo, então faça uma estrutura ao invés de uma matriz.
Infelizmente, ele não pode sequer formalizar a tarefa
por um lado parece que ele quer fugir da digitação rigorosa em C++ / MQL , aqui está um bom tópico de discussão, embora duvide que isso o ajudehttps://www.mql5.com/ru/forum/294094
No decorrer desta discussão (acho que já está ocorrendo há 3 meses?) acontece que@Seric29 precisa se afastar da descrição de assinaturas de funções e obter umafunção "fantasma" que pode ter um número arbitrário de parâmetros passados a ele
Em seguida, durante a discussão, conclui-se que as matrizes dinâmicas multidimensionais devem ser envolvidas em tudo isso, e essas matrizes devem ser passadas para a função como parâmetros
Isto é, esta é uma tarefa não-formalizada, cuja solução acaba constantemente em "gritos de campo", os desenvolvedores reduziram a funcionalidade de algo e me dão o código fonte dos operadores de loop, eu vou refazê-los, depois este último:
Como escrever uma carta aos desenvolvedores do mql4 como ver o código do compilador, há alguma forma de acrescentar mais recursos para que não seja tão estático?
... é só isso... a frase "golpe de mente" é o mínimo que você pode dizer ))))
É por isso que eu não dou nenhum detalhe.
Não há como fugir do aprendizado do básico.
Não há como fugir da aprendizagem do básico.
É interessante que um homem não aprende o básico, mas tenta mostrar que já sabe tudo, e todos vocês são metaquotas que o impedem de fazer seu trabalho)
é interessante que o homem não está aprendendo o básico, mas está tentando mostrar que ele já sabe tudo, e todos vocês são metaquotas que o impedem de fazer seu trabalho)
Saudações. Assisti ao vídeo do Expert Advisor "From MQL4 to MQL5 - How to Rewrite an EA for Metatrader 5".
Muito obrigado ao autor. Eu mesmo decidi experimentar. Eu mesmo decidi experimentar. A idéia é a seguinte:
1. Coloco dtriger = 1 nas entradas - A compra abre.
2. Eu configuro dtriger = -1 - Vender abre. 3.
3. eu configuro dtriger = 0 nos multiplugs - todos os abertos são fechados.
Li no FAQ que no MT5 não é possível ocupar posições opostas,
e eu os tenho.
Pergunta: Como posso prescrever corretamente o fechamento de uma posição aberta
A questão é: Como prescrever corretamente o fechamento de uma posição ativa na abertura de uma seta (reverso)?
Muito obrigado.
#Incluir <ComércioInfo.mqh>.
#Incluir <Comércio.mqh>
#Incluir <Comércio\SymbolInfo.mqh>
#Incluir <Comércio\OrderInfo.mqh>
CPositionInfo o_position;
CTrade o_trade;
CSymbolInfo o_symbol;
COrderInfo o_order;
input int triger = 0;
entrada dupla StartLot = 0,01;
volume lpos_duplo de entrada = 1,0;
input int Etapa = 10;
entrada no MagicNumber = 12345; // nuaber mágico
input int Slippage = 30; // slippage
int dtriger;
int dStep;
//+------------------------------------------------------------------+
//| Função de iniciação de especialista|
//+------------------------------------------------------------------+
int OnInit()
{
dStep = Passo ;
dtriger = triger ;
se (!o_símbolo.Nome(Símbolo()))
return(INIT_FAILED);
RefreshRates();
o_trade.SetExpertMagicNumber(MagicNumber) ;
if (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_FOK))
{
o_trade.SetTypeFilling(ORDER_FILLING_FOK);
}
senão se (IsFillingTypeAllowed(o_symbol.Name(), SYMBOL_FILLING_IOC))
{
o_trade.SetTypeFilling(ORDER_FILLING_IOC);
}
senão
{
o_trade.SetTypeFilling(ORDER_FILLING_RETURN);
}
o_trade.SetDeviationInPoints(Slippage);
if (o_símbolo.dígitos() == 3 || o_símbolo.dígitos() == 5 )
{
dStep = 10 ;
}
return(INIT_SUCCEED);
}
//+------------------------------------------------------------------+
//| Função de desinicialização especializada|
//+------------------------------------------------------------------+
nulo OnDeinit(const int razão)
{
}
//+------------------------------------------------------------------+
//| função de carrapato de especialista|
//+------------------------------------------------------------------+
nulo OnTick()
{
data/horalpos_time = 0;
duplo lpos_price_open = 0,0;
ENUM_POSITION_TYPE lpos_type = -1;
intpos_count = 0;
soma_lucro duplo = 0;
para (int i = PosiçõesTotal() - 1; i>=0; i--)
{
if (o_position.SelectByIndex(i))
{
if (o_posição.Símbolo() == o_símbolo.Nome() && o_posição.Magic() == MagicNumber)
{
if (o_position.Time() > lpos_time)
{
lpos_time = o_position.Tempo(); //OrderOpenTime();
lpos_price_open = o_position.PriceOpen(); //OrderOpenPrice();
lpos_type = o_position.PositionType() ; //OrderTipe();
}
pos_count+++;
sum_profit = sum_profit + o_position.Commission() + o_position.Swap() + o_position.Profit() ;
}
}
}
// Conte o número de ordens pendentes
int stop_count=0;
para (int i=OrdensTotal()-1; i >=0; i--)
{
if (o_order.SelectByIndex(i))
{
if (o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber)
stop_count+++;
}
}
se (!RefreshRates())
retornar ;
if(dtriger == 0 )
{
CloseAll();
retornar;
}
// + ----- Abrir primeiro pedido ++++++++++
se (pos_count == 0 && stop_count == 0 )
{
se ( dtriger == -1 && lpos_type != POSITION_TYPE_SELL)
{
o_trade.Sell(StartLot * lpos_volume , o_símbolo.Nome()); // S E L L 11111
}
se ( dtriger == 1 && lpos_type != POSITION_TYPE_BUY )
{
o_trade.Buy(StartLot * lpos_volume , o_symbol.Name()); // B U Y 11111
}
}
// + ----- Reverse ++++++++++++++++++++++++++++
se (pos_count>0)
{
if(lpos_type == POSITION_TYPE_BUY )
{
se ( dtriger == -1 )
{
o_trade.Sell(StartLot * lpos_volume , o_símbolo.Nome()); // S E L L L +++++
}
}
se (lpos_type==POSITION_TYPE_SELL )
{
se ( dtriger == 1 )
{
o_trade.Buy(StartLot * lpos_volume , o_symbol.Name()); // B U Y +++++
}
}
}
if(pos_count>0 && stop_count>0)
DeleteStopOrders() ;
}
//-----------------------------------------------------------
RefreshRates()
{
se (!o_símbolo.RefreshRates()))
retorno(falso) ;
se (o_símbolo.Ask() == 0 || o_símbolo.Bid() == 0)
retorno(falso);
retorno(true);
}
//--- ---------------------------------------------------------
bool IsFillingTypeAllowed (símbolo de corda, tipo int fill_type)
{
int filling = (int)SymbolInfoInteger(símbolo, SYMBOL_FILLING_MODE);
return((fill && fill_type) == fill_type) ;
}
// --------------------------------------------------
Válido CloseAll()
{
para (índice int = PosiçõesTotal()-1; índice >=0; índice--)
{
if (o_position.SelectByIndex(index))
{
if (o_posição.Símbolo() == o_símbolo.Nome() && o_posição.Magic() == MagicNumber)
{
o_trade.PositionClose(o_position.Ticket())
}
}
}
}
//-----------------------------------------------------------
// Eliminar todas as ordens pendentes
//-------------------------------------
void DeleteStopOrders()
{
para (int i = OrderTotal() - 1; i >= 0; i-- )
{
if (o_order.SelectByIndex(i))
if(o_order.Symbol() == o_symbol.Name() && o_order.Magic() == MagicNumber)
o_trade.OrderDelete(o_order.Ticket())
}
}
//+------------------------------------------------------------------+
Saudações....
Por favor, insira o código corretamente:
Por favor, insira o código corretamente:
comece a ler pelo menos um livro sobre C++, suas perguntas são uma explosão, você escreve termos técnicos, à primeira vista parece que você está fazendo uma pergunta específica, mas na verdade você apenas opera em termos sem entender a essência .... o que a macro retornará? onde retornará? no corpo da macro uma função recarregável.... Não consigo nem mesmo começar a explicar como é sua pergunta.
Para entender o que é uma macro, escreva o termo corretamente, macroSETTING , talvez seja mais fácil para você entender o que é
Em mql4 as características e C++ são reduzidas, em outras palavras, é uma linguagem muito estática. Posso dizer que minha idéia falhou, escrevi uma simples sobrecarga sem aulas, acrescentei argumentos e dei 0, tentei chamá-la de macro, tive um erro de que existem 3 funções, então acontece que preciso descrever ainda qual chamar e como, e não estou dizendo que tipo de tropeços terei que lidar mais tarde. Provavelmente é melhor não fazer nada, então você não cometerá um erro.
mql4 tem características de corte e c++, em outras palavras, é uma linguagem muito estática.
O que foi cortado, exatamente?
Em outras palavras, você não precisa, especialmente nem mesmo o google conhece" linguagemmuito estática", C++ é uma linguagem estaticamente digitada e pensar sobre ela não tem sentido - apenas é.
Provavelmente é melhor não fazer nada, então você não cometerá um erro.
Vou ser breve RTFM ( lurkmore )
A questão é puramente de estética.
Como faço para que haja uma imagem própria aqui mesmo? MT4