Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 1356

 
Lerchik:

Portanto, o que você está dizendo é que abrir uma ordem de mercado na Ask será igual a abrir uma ordem BuyLimit.

Algo não está bem aqui. Suponha que o preço da Licitação seja igual a 1,4500. Assim, quando abrimos uma ordem de compra do mercado, ela ficará no preço de compra e o preço de compra da licitação é, digamos, 10 pontos.

Em seguida, o pedido será feito em 1.4510.

Agora o pedido BuyLimit é igual a 1.4500. E o preço cai 10 pontos abaixo do preço Ask no Ask abrirá um pedido. Não por Licitações, mas por Pedidos.

Não se encaixa nem um pouco. São coisas diferentes e não podem ser comparadas dessa forma.

Talvez, eu esteja errado?

Todas as ordens de compra são abertas pela Ask e fechadas pela Bid, e vice versa para ordens de venda.

Se você for preguiçoso demais para lê-lo, abra uma conta de demonstração e pratique.

 
Сергей Таболин:

Por que você não começa lendo a documentação?

Aqui está o que está na documentação:

Ordem pendente

Uma ordem pendente é uma instrução de uma corretora para comprar ou vender um instrumento financeiro em uma data futura em condições especificadas. Existem os seguintes tipos de ordens pendentes:

  • Limite de compra- pedido comercial para comprar ao preço pedido que é igual ou inferior ao especificado no pedido. O nível de preço atual é maior do que o valor da ordem. Normalmente este tipo de pedidos é feito na expectativa de que o preço dos títulos começará a crescer quando cair para um certo nível;

Mas não entendo o que está escrito aqui e como funciona.

Ou seja, o preço cairá abaixo do bylimit e um Askom abrirá um pedido. Mas ao mesmo tempo o pedido será aberto ao mesmo preço ou a um preço superior?

Não há nada sobre isso em nenhum lugar. Existem apenas regras. Ninguém aqui quer explicar o porquê.

Por isso, estou tentando conseguir algo.

 
Lerchik:

Aqui está o que está na documentação:

Ordem pendente

Uma ordem pendente é uma instrução de uma corretora para comprar ou vender um instrumento financeiro em condições especificadas no futuro. Existem os seguintes tipos de ordens pendentes:

  • Limite de compra- pedido comercial para comprar ao preço pedido que é igual ou inferior ao especificado no pedido. O nível de preço atual é maior do que o valor da ordem. Normalmente este tipo de pedidos é feito na expectativa de que o preço do instrumento começará a crescer quando cair para um certo nível;

Mas não entendo o que está escrito aqui e como funciona.

Ou seja, o preço cairá abaixo do bylimit e um Askom abrirá um pedido. Mas ao mesmo tempo o pedido será aberto ao mesmo preço ou a um preço superior?

Não há nada sobre isso em nenhum lugar. Existem apenas regras. Ninguém aqui quer explicar o porquê.

Portanto, eu quero alcançar algo.

O BuyLimit pode ser fixado SOMENTE abaixo do preço de compra. O SOMENTE pode ser definido acima do preço de licitação.

BuyStop só pode ser ajustado acima do preço pedido. SellStop só pode ser definido abaixo do preço de licitação.

Quando o preço correspondente atingir a ordem correspondente, ele será ativado e a posição correspondente será criada.

 
Lerchik:

Aqui está o que está na documentação:

Ordem pendente

Uma ordem pendente é uma instrução de uma corretora para comprar ou vender um instrumento financeiro em condições especificadas no futuro. Existem os seguintes tipos de ordens pendentes:

  • Limite de compra- pedido comercial para comprar ao preço pedido que é igual ou inferior ao especificado no pedido. O nível de preço atual é maior do que o valor da ordem. Normalmente este tipo de pedidos é feito na expectativa de que o preço do instrumento começará a crescer quando cair para um certo nível;

Mas não entendo o que está escrito aqui e como funciona.

Ou seja, o preço cairá abaixo do bylimit e um Askom abrirá um pedido. Mas ao mesmo tempo o pedido será aberto ao mesmo preço ou a um preço superior?

Não há nada sobre isso em nenhum lugar. Existem apenas regras. Ninguém aqui quer explicar o porquê.

Por isso, estou procurando algo.

Abra uma conta demo e experimente-a.

Olimite de compra é fixado abaixo do preço Ask atual e será aberto quando oAsk for mais baixo .

Buy Stop é definido acima do preço Ask atual e será aberto quando o Ask subir

Acompra é aberta ao preço atual Ask

 
MakarFX:

Abrir uma conta demo e praticar.

Olimite de compra é estabelecido abaixo do preço Ask atual e será aberto quandoo Ask cair .

A Stop de Compra é definida acima do preço Ask atual e será aberta quandoo Ask subir

Acompra é aberta ao preço atual Ask

Isso é alguma coisa.

Seguindo em frente...

Ok, o preço da licitação caiu abaixo do preço Ask e o Ask abre o pedido. Mas será que o preço do pedido permanecerá o mesmo que foi estabelecido no pedido ou será diferente?

 
Lerchik:

Isso é alguma coisa.

Seguindo em frente...

OK, o preço de oferta caiu abaixo do preço da ordem e o Ascom abriu a ordem. Mas o preço do pedido permanecerá o mesmo que foi estabelecido no pedido ou será diferente?

1 O preço pedido deve cair para o preço "Probabilidade".

2 O preço permanece

 
MakarFX:

1 O preço ascendente deve cair para o preço da pausa.

2 O preço permanece

Muito obrigado pelo esclarecimento.

Eu estava me perguntando por que não estava funcionando da maneira que eu queria.

 

Boa tarde a todos.

Tanto quanto entendi das respostas à minha pergunta anterior, só preciso lidar com erros, que podem ocorrer ao abrir pedidos, isso é a primeira coisa. Em segundo lugar, preciso proteger o EA de travar o servidor a cada tique no caso de um erro.

Primeira pergunta, por favor me diga como fazer o tratamento de erros?

Segunda pergunta - como se proteger da batida do servidor?

Agora meus negócios estão abertos desta maneira

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   if(ao_buy!=EMPTY_VALUE && count_orders_market_buy ==0)
   {
    if(OrderSend(Symbol(),OP_BUY,lot,Ask,slippages,Bid-sl,Bid+tp ,comment_ao_market_buy)) Print("Buy Open"); // ОТКРЫВАЕМ БАЙ ОРДЕР
   }
   } // КОНЕЦ УСЛОВИЕ1

// И ОТЛОЖКИ ВОТ ТАК

   /*УСЛОВИЕ 1*/
   if(flag_screen1==en_vbIkl_screen1 &&flag_screen2==en_vbIkl_screen2)
   { // НАЧАЛО УСЛОВИЕ 1
   
   if(ao_buy!=EMPTY_VALUE && count_orders_stop_buy ==0&& max_Price>Bid)
   { //НАЧАЛО ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   
   Print("БАЙ СТОП AO УСЛОВИЕ 1");
        if( OrderSend(Symbol(),OP_BUYSTOP,lot,max_Price,slippages,max_Price-sl,max_Price+tp ,comment_ao_otloj_buy,Magik_number,TimeCurrent()+order_life_time))Print("BUY_STOP OPEN"); // ОТКРЫВАЕМ ОТЛОЖЕННЫЙ БАЙ ОРДЕР
   
   }  //КОНЕЦ ПРОВЕРКИ УСЛОВИЯ 1 НА ОТКРЫТИЕ
   } // КОНЕЦ УСЛОВИЕ1



A variável Count Market Buy é calculada usando esta função

         void data_orders(string comment="alt",int magik_number=123)
              {
         int I = 0;
   count_orders_all = 0;   //КОЛИЧЕСТВО ВСЕХ УСТАНОВЛЕННЫХ ОРДЕРОВ
   count_orders_market_all = 0; //КОЛИЧСТВО ВСЕХ РЫНОЧНЫХ ОРДЕРОВ
   count_orders_market_buy = 0;
   
   count_orders_stop_buy = 0;    //КОЛИЧЕСТВО СТОП БАЕВ
   count_orders_limit_buy = 0;   // КОЛИЧЕСТВО ЛИМИТ БАЕВ
   
   count_orders_stop_sell = 0;    //КОЛИЧЕСТВО СТОП СЕЛОВ
   count_orders_limit_sell = 0;   //КОЛИЧЕСТВО ЛИМИТ СЕЛОВ
   
   
  lot_orders_buy = 0;    //ОБЪЁМ ЛОТА ПО БАЙ ОРДЕРАМ
         lot_orders_sell = 0;      //ОБЪЁМ ЛОТА ПО СЕЛЛ ОРДЕРАМ
         balance_all = 0;          // БАЛАНС ПО ВСЕМ ОРДЕРАМ
         balance_buy = 0;         // БАЛАНС ПО ОРДЕРАМ БАЙ
         balance_sell = 0;        // БАЛАНС ПО ОРДЕРАМ СЕЛЛ
         
         
         
          for(int i = 0; i <= OrdersTotal();i ++) // перебор всех ордеров в цикле
          {
  
   if(OrderSelect(I , SELECT_BY_POS, MODE_TRADES))// выбираем ордер по переменной цикла
   {
    if(OrderMagicNumber() != magik_number || OrderSymbol() !=Symbol()) // если ордер не нашь то
    {
    continue; // переходим на следующую итерацию
    
    }
    if(comment== OrderComment() || comment=="alt")// если коментарий нашь то 
    {
    count_orders_all+=1;
    if(OrderType()== OP_BUY)
    {
    count_orders_market_all+=1;
    count_orders_market_buy+=1;
    }
    if(OrderType()== OP_SELL)
    {
    count_orders_market_all+=1;
    count_orders_market_sell+=1;
    }
    if(OrderType()== OP_BUYSTOP)
    {
    count_orders_stop_buy+=1;
    }
    if(OrderType()== OP_BUYLIMIT)
    {
    count_orders_limit_buy+=1;
    
    }
    if(OrderType()== OP_SELLSTOP)
    {
    count_orders_stop_sell+=1;
    
    }
    if(OrderType()== OP_SELLLIMIT)
    {
    count_orders_limit_sell+=1;
    
    }
    
    
    
    }
         
         
              }
              }
              }

Se eu quiser negociar com um servidor real, eu gostaria de saber como evitar a conversa do servidor em caso de erros.

 
DanilaMactep:

Boa tarde a todos.

Por favor, escreva-me e diga-me como lidar corretamente com os erros e como evitar que o servidor chimpe a cada tique quando ocorre um erro?
if (GetLastError()==141){Alert(GetLastError()); ExpertRemove();}
 
MakarFX:

E este pedido deve ser escrito após cada linha em que há uma tentativa de abrir um pedido usando Orderend - certo?

Mas eu tenho uma pergunta - se a EA Remover eliminou a EA do gráfico, como devo fazer para que ela seja automaticamente recolocada no gráfico e continue trabalhando? Você poderia descrever o assunto com mais detalhes - erro 141 - muitos pedidos. Se houver muitos pedidos, apagamos a EA do gráfico. O que devo fazer a seguir - esperar até levantar de manhã, mudar tudo e vir ao PC para anexar novamente a EA ao gráfico?

Razão: