[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 567
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
Outra pergunta de um iniciante.
Utilizo várias funções definidas pelo usuário em meu Expert Advisor. Como posso fazer com que estas funções sejam combinadas em uma biblioteca, e no corpo do Consultor Especialista basta chamá-las de lá.
Não estou familiarizado com a sintaxe da linguagem a este respeito.
Favor consultar a seção de documentação ou tutorial. Ainda não o encontrei lá.
https://book.mql4.com/ru/build/structure
https://www.mql5.com/ru/articles/1462
+ para completar... https://book.mql4.com/ru/appendix/examples
Como escrever uma função que verifica se há ou houve posições em aberto na barra zero (de preferência uma escolha de prazo). OpenPosLastBar(string sym="", int tf=0, int op=-1, int mn=-1), ou esta função faz isso. Como entendi, só abrirá posições no momento, mas se já estava aberto e fechado, voltará -1.
//+----------------------------------------------------------------------------+
//| Retorna o número de barra da última posição aberta ou -1. |
//| Parâmetros: |
//| sym - nome do instrumento ("" - símbolo atual) |
//| tf - prazo ( 0 - prazo atual) |
//| op - operação (-1 - qualquer posição) |
//| mn - MagicNumber (-1 - qualquer magik) |
//+ +
int NumberOfBarLastPos(string sym="", int tf=0, int op=-1, int mn=-1)
{
datetime oot;
int i, k=OrdersTotal();
if(sym==="")
sym=Symbol();
for(i=0; ik; i++)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol()==sym)
{
if(OrderType()==OP_BUY || OrderType()==OP_SELL)
{
if(op0 ||| OrderType()==op)
{
if(mn0 ||| OrderMagicNumber()==mn)
{
if(ootOrderOpenTime()) oot=OrderOpenTime();
}
}
}
}
}
}
} return(iBarShift(sym, tf, tf, oot, True));
}
//+----------------------------------------------------------------------------+
Нужно два цикла. В первом проходим по истории ордеров, во втором - по текущим ордерам. В обоих случаях если время открытия ордера больше или равно Time[0], то ордер был открыт на текущей свече. Это справедливо для всех таймфреймов.
Obrigado por clicar. Você poderia pedir isso no código
Спадибо, что аткликнулся. А можно попросить это в коде
Aqui está um exemplo de uma passagem histórica
Tente criar seu próprio código, especialmente porque você tem o algoritmo e um exemplo pronto à sua frente.
ObjectDelete(a_name_0);
ObjectCreate(a_name_0, OBJ_ARROW, a_window_8, a_datetime_12, a_price_20);
ObjectSet(a_name_0, OBJPROP_ARROWCODE, ai_28);
ObjectSet(a_name_0, OBJPROP_COLOR, a_color_32);
ObjectSet(a_name_0, OBJPROP_WIDTH, a_width_36);
}
void _setabuy(string as_0) {
g_str_concat_356 = StringConcatenate(as_0, gi_120);
seta(g_str_concat_356, 0, TimeCurrent(), Bid + 15.0 * Ponto, SYMBOL_ARROWUP, Azul, 2);
gi_120++;
}
void _setasell(string as_0) {
g_str_concat_356 = StringConcatenate(as_0, gi_120);
seta(g_str_concat_356, 0, TimeCurrent(), Bid - 15.0 * Ponto, SYMBOL_ARROWDOWN, Vermelho, 2);
gi_120++;
}
Вот пример прохода по истории
Попробуйте самостоятельно придумать код, тем более, что алгоритм и готовый пример у Вас перед глазами.
Obrigado. Vou tentar.
Вот пример прохода по истории
Попробуйте самостоятельно придумать код, тем более, что алгоритм и готовый пример у Вас перед глазами.
Ou aqui está uma função que verifica se uma posição foi aberta na barra atual (com uma verificação em OrdersTotal() e OrdersHistoryTotal() ). Retorna verdadeiro se uma ordem de tipo foi aberta.
Por favor, diga-me como implementar a condição.
Se (há ordens pendentes) então faça isto e aquilo ;