[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 404
Todas estas condições podem não seguir imediatamente uma após a outra (pode ser em uma hora ou duas ou três), portanto devemos fazer com que, assim que o indicador atingir 1,0000, esta condição não seja verificada a cada tick, e esperar até que uma barra feche com a queda, e depois disso estas 2 condições não sejam verificadas a cada tick, e esperar até que o indicador atinja 0,9980 ou igual. Assim que todas as condições forem cumpridas, abrimos uma ordem de mercado para vender 0,1 lote com um stop loss de 400p e tirar lucro de 400p.
Em geral está tudo bem, mas eu daria muita atenção aos valores retornados pelo indicador.
bool Val_max=false, Cl_dn=false, Val_min=false;
//+------------------------------------------------------------------+//| expert start function |//+------------------------------------------------------------------+int start()
{
int
i, j, total,
cnt,
OrderBuy,
OrderSell,
Magic,
Ticket, // Номер ордера
Total=0, // Количество ордеров в окне
Tip=-1; // Тип выбран. ордера (B=0,S=1) double
Open_0,
ask,
bid,
Price, // Цена выбранного ордера
SL, // SL выбранного ордера
TP, // TP выбранного ордера
Lot; // Колич. лотов в выбран.ордере
Open_0=Open[0]; // Цена откр. формирующегося бара
ask=Ask; // Текущая цена покупки
bid=Bid; // Текущая цена продажиstring
Symb; // Название финанс. инструмента
Symb=Symbol(); // Название фин.инстр.double Value_max=1.0000;
double Value_min=0.9980;
double Open_1= Open[1];
double Close_1= Close[1];
//----//--------------------------------------------------------------- 4 --double Val=iCustom(NULL, 0, "HMR MULTI Indicator",0,0);
if (Val >= Value_max) Val_max=true; // if (Open_1 > Close_1 && Val_max==true) Cl_dn=true;
if (Val <= Value_min && Cl_dn==true) Val_min=true;
if (Val_max==true && Cl_dn==true && Val_min==true)
{
for (j = 0; j < OrdersTotal(); j++)
{
OrderSelect(j, SELECT_BY_POS, MODE_TRADES);
if (OrderSymbol() == Symbol())
{
if (OrderType() == OP_SELL) return(0);
}
}
OrderSend(Symbol(),OP_SELL,0.1,NormalizeDouble(Bid,Digits),2,Bid+400*Point,Bid-400*Point,"",3,Red); // Открытие SELL
Val_max=false; Cl_dn=false; Val_min=false;
}
//----return(0);
}
1. Talvez seja necessário desconectar o MT4 da Internet e depois importar dados históricos.
2. Você precisa verificar o código.
... indicador.
int start(){
double Val=iCustom(NULL, 0, "HMR MULTI Indicator",0,0);
Alert(Val);
}
Experimente o método "gut feeling" com um Expert Advisor vazio,
verificar no indicador que o ObjectCreate encontra sua subjanela (ou por que desenhá-la SE a testarmos OU OPTIMIZARmos)
if(IsTesting()||IsOptimization())флаг_Канады_не_рисовать_obj=true; //проверяем надо ли рисовать (в ините ему место через статик переменную)
if(!флаг_Канады_не_рисовать_obj){ //запрет отрисовки объектов ели оптимизация или тестирование
ObjectCreate(........................);
}
Você pode me dizer como evitar que o Expert Advisor escreva repetições no arquivo usando o parâmetro "Ferramenta" (_OrderSymbol). Vi no fórum como apagar repetições https://forum.mql4.com/ru/5814 em uma matriz, mas ainda não descobri como aplicá-las à minha situação. E com repetições começa a estampar 200 linhas idênticas no arquivo, mesmo em um loop.
Melhor ainda a primeira opção, colocar antes de tentar abrir um pedido (OrderSend)
Todas estas condições podem não seguir imediatamente uma após a outra (pode ser em uma hora ou duas ou três), portanto devemos fazer com que, assim que o indicador atingir 1,0000, esta condição não seja verificada a cada tick, e esperar até que uma barra feche com a queda, e depois disso estas 2 condições não sejam verificadas a cada tick, e esperar até que o indicador atinja 0,9980 ou igual. Assim que todas as condições forem cumpridas, abrimos uma ordem de mercado para vender 0,1 lote com um stop loss de 400p e tirar lucro de 400p.
Em geral está tudo bem, mas eu daria muita atenção aos valores retornados pelo indicador.
De modo geral está tudo bem, mas eu daria muita atenção aos valores retornados pelo indicador.
Quando o valor atingiu 1,0000, a cada tique foi exibida a seguinte mensagem: " Valor do indicador >= 1,0000".Tentado em tempo real através de Alertar o valor do indicador, a mensagem foi exibida normalmente:
Tentei o valor em tempo real do indicador via Alerta, a mensagem foi exibida normalmente:
Então o que o testador não gosta, você precisa adicionar alertas e procurar no diário de bordo.
Bem, o código está correto?
O que isso significa?
2011.12.06 01:07:55 HMR MULTI Indicador EURUSD,M15: removido
2011.12.06 01:07:57 TestGenerator: erro de dados incomparável (limite de volume 603 em 2011.12.01 00:00 excedido)
2011.12.06 01:07:57 2011.12.01 00:00 HMR MULTI Indicador EURUSD,M15: número desconhecido da subjanela -1 para a função ObjectCreate
O que isso significa?
2011.12.06 01:07:55 HMR MULTI Indicador EURUSD,M15: removido
2011.12.06 01:07:57 TestGenerator: erro de dados incomparável (limite de volume 603 em 2011.12.01 00:00 excedido)
2011.12.06 01:07:57 2011.12.01 00:00 HMR MULTI Indicador EURUSD,M15: número de subjanela -1 desconhecido para a função ObjectCreate
... indicador.
Experimente o método "gut feeling" com um Expert Advisor vazio,
verificar no indicador que o ObjectCreate encontra sua subjanela (ou por que desenhá-la SE a testarmos OU OPTIMIZARmos)
Ou seja, se não houver transferência de parâmetros, então:
Obrigado por suas respostas!
Boa tarde!
Você pode me dizer como evitar que o Expert Advisor escreva repetições no arquivo usando o parâmetro "Ferramenta" (_OrderSymbol). Vi no fórum como apagar repetições https://forum.mql4.com/ru/5814 em uma matriz, mas ainda não descobri como aplicá-las à minha situação. E com repetições começa a estampar 200 linhas idênticas no arquivo, mesmo em um loop.