[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 403
A implementação específica está muito ligada às suas condições.
Uma bandeira é simplesmente uma variável na qual o estado é armazenado. Grosso modo, ela pode ser levantada ou baixada. Construa a partir disso e implemente sua lógica.
Você pode aconselhar como escrever uma condição correta para que o Expert Advisor acione 1 vez com a abertura de um novo bar em um período de tempo especificado? :(
Você pode criar diferentes variantes, muitas vezes usa este tipo de condição:
int start()
staticdatetime dtBar;
//.................if(Time[0]==dtBar) return(0);//…проверим открытие новой свечи
dtBar=Time[0]; //(тот же Бар-возврат)(новый-продолжение...)//
A implementação específica está muito ligada às suas condições.
Uma bandeira é simplesmente uma variável na qual a condição é armazenada. Grosso modo, ela pode ser levantada ou baixada. Construa a partir disso e implemente sua lógica.
Bem, eu entendi bem o ponto?
Eu entendo corretamente:
1. Se a condição1 for cumprida, então Flag_CCP1 recebe um valor verdadeiro e começamos imediatamente a verificar a condição2
2. se a condição2 for cumprida, então o valor verdadeiro é atribuído à bandeira Flag_CCP2; se não, então é uma bandeira falsa, e no próximo tick
não verificamos mais a condição1, e passamos diretamente à condição2 e assim por diante, até que a condição2 seja cumprida e que ela tenha um valor verdadeiro
3. depois verificamos a condição3 e Flag_USSR2 (e o que exatamente na URSS2 verificamos se é verdadeiro ou falso, ou o quê?)
Isto é correto? Não há uma única transação no testador... Embora deva haver, se estiver certo. O que está errado...?
staticbool Val_max, Cl_dn, Val_min; //static or global//+------------------------------------------------------------------+//| 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) 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);
}
Estabeleci um objetivo de limitar as posições abertas simultaneamente a 1.
Com a variável Abrir/Fechar nível = 3/2 multiplicado por Ponto, colocado nas condições de posição aberta/fechada, tentei resolver esta tarefa, mas não tive sucesso.
Isto é a coisa certa a fazer? Não há uma única transação no testador... Embora deva haver, se estiver certo. O que está errado...?
Agora, escreva novamente as condições na íntegra no idioma normal e você pode corrigir o código... O bom dos sinais é que eles devem ter uma data de expiração e cancelamento.
splxgf: Agora, escreva novamente as condições por extenso no idioma normal e depois poderá corrigir o código... O bom dos sinais é que eles devem ter um período de expiração e cancelamento.
Todas estas condições podem não seguir uma à outra de uma vez (pode ser depois de uma hora ou duas ou três), então precisamos fazer com que assim que o indicador atingir 1,0000, esta condição não seja verificada a cada tic, e esperar até que uma barra feche com a queda, e depois disso estas 2 condições não sejam verificadas a cada tic, e esperar até que o indicador atinja 0,9980 ou menos. 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.
Para login e uso do site MQL5.com, você deve ativar o uso de cookies.
Ative esta opção no seu navegador, caso contrário você não poderá fazer login.
Você entrou na conta. A autenticação de dois fatores foi desativada. Configure-a novamente e escaneie um novo código QR ou continue com a autenticação de dois fatores desativada.
Baixe o histórico e a pergunta vai embora
Como você faz o download?
Eu entendo corretamente:
A implementação específica está muito ligada às suas condições.
Uma bandeira é simplesmente uma variável na qual o estado é armazenado. Grosso modo, ela pode ser levantada ou baixada. Construa a partir disso e implemente sua lógica.
Você pode aconselhar como escrever uma condição correta para que o Expert Advisor acione 1 vez com a abertura de um novo bar em um período de tempo especificado? :(
Você pode criar diferentes variantes, muitas vezes usa este tipo de condição:
A implementação específica está muito ligada às suas condições.
Uma bandeira é simplesmente uma variável na qual a condição é armazenada. Grosso modo, ela pode ser levantada ou baixada. Construa a partir disso e implemente sua lógica.
Bem, eu entendi bem o ponto?
Eu entendo corretamente:
1. Se a condição1 for cumprida, então Flag_CCP1 recebe um valor verdadeiro e começamos imediatamente a verificar a condição2
2. se a condição2 for cumprida, então o valor verdadeiro é atribuído à bandeira Flag_CCP2; se não, então é uma bandeira falsa, e no próximo tick
não verificamos mais a condição1, e passamos diretamente à condição2 e assim por diante, até que a condição2 seja cumprida e que ela tenha um valor verdadeiro
3. depois verificamos a condição3 e Flag_USSR2 (e o que exatamente na URSS2 verificamos se é verdadeiro ou falso, ou o quê?)
Isto é correto? Não há uma única transação no testador... Embora deva haver, se estiver certo. O que está errado...?
Hi!
Estabeleci um objetivo de limitar as posições abertas simultaneamente a 1.
Com a variável Abrir/Fechar nível = 3/2 multiplicado por Ponto, colocado nas condições de posição aberta/fechada, tentei resolver esta tarefa, mas não tive sucesso.
Por favor, ajude-me a descobrir :)
Isto é a coisa certa a fazer? Não há uma única transação no testador... Embora deva haver, se estiver certo. O que está errado...?
Hi!
Estabeleci um objetivo de limitar as posições abertas simultaneamente a 1.
se(OrdensTotal()>0) retornar;
Ou uma variação com o símbolo e a expulsão de ordens pendentes.
ou seja, na minha versão
if(OrdersTotal()>1)return;
?
Agora, escreva novamente as condições por extenso no idioma normal e depois poderá corrigir o código... O bom dos sinais é que eles devem ter um período de expiração e cancelamento.
Todas estas condições podem não seguir uma à outra de uma vez (pode ser depois de uma hora ou duas ou três), então precisamos fazer com que assim que o indicador atingir 1,0000, esta condição não seja verificada a cada tic, e esperar até que uma barra feche com a queda, e depois disso estas 2 condições não sejam verificadas a cada tic, e esperar até que o indicador atinja 0,9980 ou menos. 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.
ou seja, na minha versão
if(OrdersTotal()>1)return;
?