[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 135

 

Olá, tomei o roteiro do tutorial de S. Kovalev como base. Quero fazer um consultor especializado para abrir um negócio, pôr um fim às perdas, ter lucro e depois esperar pelo fim do negócio (ou seja, o fim das perdas ou lucro), e só então reabrir o negócio. Eu tentei com interrupções de ciclo e de ciclo. Por favor, informe como fazer isso. Pensei que talvez fosse mais fácil não definir de uma só vez o stop-loss e o take-profit, e que o preço fosse fechado quando se aproximasse de um certo nível. Mas não quero fazer isso dessa maneira porque tenho medo de escorregar, e cada ponto é importante para mim. Se eu tentar abrir um negócio ou um casal ao mesmo tempo, não posso abrir um novo negócio.

//+------------------------------------------------------------------+
int start() // function start
{
duplo //
declarar variáveis x,
y;
//+ +
OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Ask-15*Point,Ask+15*Point); //---- ordem de mercado para comprar e colocar um fim e lucrar 15 pontos do preço de abertura
//+ +
while(x!=Ask-15*Point|||y!=Ask+15*Point) //---- da condição que eu quero que o comércio seja fechado até que o comércio anterior seja fechado, ou sejaе. é possível para
{//
manter APENAS um comércio aberto continuar;//
interromper a condição e ir para o próximo passo }
//+------------------------------------------------------------------+
return;//---- function return
}
//+ +

 
YOUNGA:

Sim, apenas preços abertos, por isso é importante considerá-lo ao analisar a EA. Por exemplo, se a cauda de uma vela quebra seu canal, o Expert Advisor pode não ver, mas você pode mudar a lógica do programa e resolver o problema.



Obrigado!
 

P: Aqui está um pedaço de código

int init()

{
///

ShiftSignal=0; SlowPer=FastPer+AddSlow;
Spread=MarketInfo(Symbol(),MODE_SPREAD);
Comment("ExpertMagicNumber=",ExpertMagicNumber);

if ((FastShift<0)&&(SlowShift>=0))
ShiftSignal=FastShift;

if ((FastShift>=0)&&(SlowShift<0))
ShiftSignal=-SlowShift;

if ((FastShift<0)&&(SlowShift<0))
{
if (MathAbs(FastShift)>MathAbs(SlowShift))

ShiftSignal=-FastShift;
else
ShiftSignal=-SlowShift;
}
//
return(0)

Estou interessado neste fragmento

if ((FastShift<0)&&(SlowShift>=0))

ShiftSignal=FastShift;

se FastShift<0, significa que o valor de FastShift é inicialmente igual a um número inteiro negativo, por exemplo: -2

então na próxima linha ShiftSignal=FastShift;

pensar-se-ia que o valor -2 seria atribuído à variável ShiftSignal ao invés de zero

mas ao mesmo tempo você pode se perguntar por que há menos em frente à variável FastShift

Porque em matemática, menos para menos é mais, ou seja, o valor será "+2", ou seja, apenas 2.

Se você precisar, posso enviar-lhe todo o código.

 

Ajude-me a resolver um problema como este.

Há um sinal para comprar ou vender, mas o próximo bar também satisfaz a condição, pois o sinal no bar seguinte não é considerado.

Como faço isso, mas não funciona.

if( условие на покупку или продажу)
{          

      if(OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES)==true)   // если есть уже ордер то проверяем
        {
                 if (OrderOpenTime()!=Time[1]||OrderOpenTime()!=Time[2]||OrderOpenTime()!=Time[3]) // если открытый ордер имеет значение(OrderOpenTime) не равное времени бару назад и тд. до 3 баров.
                    {
                   TimeBar=Time[0];
                   OrderSend(Symbol(),OP_BUY, LOT,NormalizeDouble(Ask,Digits),2,0,0,"ntcn",Magic,0,Blue);  // тогда открываем
                    }
        }


}

Mas não funciona...ou como pode ser feito de maneira diferente???? Eu ficaria grato se você pudesse compartilhar seus conhecimentos.

Se alguém está lendo e já enfrentou o mesmo problema, aqui está a resposta:

if( условие на покупку или продажу)
{          

   OrderSelect(OrdersTotal()-1,SELECT_BY_POS,MODE_TRADES);                                                // проверяем последний ордер
        if(OrderOpenTime()<Time[3])                                                                       // если по времени прошло 3 бара тогда можно открывать новую сделку
           {
                   TimeBar=Time[0];
                   OrderSend(Symbol(),OP_SELL, LOT,NormalizeDouble(Bid,Digits),2,0,0,"ntcn",Magic,0,Red); 
           }

}
 
Oleg, a condição não é muito rigorosa Por exemplo, comece a contar as ordens abertas, se mais de 1, então não abra (assuma funções prontas no site aqui)
 

Já que ninguém respondeu, vou tentar reformular minha pergunta.

Existe alguma maneira de extrair informações do indicador compilado, se a função iCastom() der apenas zeros?

 

Olá, avise como iniciar a contagem de barras, após um sinal indicador positivo

- Recebo um sinal, baía aberta, só depois que as 2 barras seguintes subirem.

 
YOUNGA:
Oleg, a condição não é muito rigorosa, por exemplo, comece a contar as ordens abertas, se mais de 1 não abrir (use as funções prontas para uso neste site)


Infelizmente os sinais também podem ser repetidos (no sentido de comprar mais, podem ser uma hora mais tarde, um dia mais tarde, etc.) Eu já passei pelo OrderComment, bloqueio, mas também há pedidos repetitivos. Eu gostaria de bloquear nas barras para sinais repetidos. Se através de Sleepage, o prazo é diferente e 4 horas....

Se você não souber o que fazer com ele, receberá uma resposta errada.

 
dertop:


Infelizmente os sinais também podem ser repetitivos (no sentido de extra, eles podem ser uma hora mais tarde, um dia mais tarde, etc.) Já passei pelo OrderComment, bloco, mas também há ordens repetitivas. Eu gostaria de bloquear nas barras para sinais repetidos. Se através de Sleepage, o prazo é diferente e 4 horas....

Mas obrigado pela resposta.


Pesquisar no site a filial

Proibição de comércio em um só bar.

 
Boa noite! Favor explicar o princípio do indicador ziguezague. Por exemplo, os fractais são construídos quando a esquerda e a direita 2 barras estão acima ou abaixo da atual. Qual é a base do indicador ziguezague? Por favor.