StopLimit

 

Você está usando oStopLimit no comércio real?

É claro que oStopLimit funciona inadequadamente no testador.

Faz sentido usá-lo no comércio real? Quais são as vantagens e desvantagens?

 
Sergey Chalyshev:

Você está usando oStopLimit no comércio real?

É claro que oStopLimit funciona inadequadamente no testador.

Faz sentido usá-lo no comércio real? Quais são as vantagens e desvantagens?

O que há de errado com o testador?
 
Artyom Trishkin:
O que há de errado com o testador?

Aparentemente ninguém a utiliza,

o pedido é aberto a preços inexistentes:

sl

Um exemplo simples a ser verificado:

//+------------------------------------------------------------------+
//|                                               StopLimit_Test.mq5 |
//+------------------------------------------------------------------+
#include <Trade\Trade.mqh>
CTrade trade;

input int Deviation = 100;
//+------------------------------------------------------------------+
void OnTick()
  {
   MqlTick tick;
   SymbolInfoTick(_Symbol,tick);
   trade.SetTypeFilling(ORDER_FILLING_RETURN);
   double ticksise=SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE);

   if(OrdersTotal()==0)
      trade.OrderOpen(
         _Symbol,                      // символ
         ORDER_TYPE_BUY_STOP_LIMIT,    // тип ордера
         1.0,                          // объем ордера
         tick.ask+Deviation*ticksise,  // цена исполнения
         tick.ask+10*ticksise,         // цена стоплимита
         0,                            // цена stop loss
         0                             // цена take profit
      );
  }
//+------------------------------------------------------------------+
 
Sergey Chalyshev:

Aparentemente ninguém a utiliza,

o pedido é aberto a preços inexistentes:

Um exemplo simples a ser verificado:

Um pedido BuyStopLimit funciona desta forma:

  1. Um pedido BuyStop é colocado acima do preço (valor do preço na estrutura do pedido comercial = preço + distância de ajuste do pedido de parada)
  2. Quando um pedido BuyStop é acionado, um pedido BuyLimit é colocado abaixo do preço
    (a preço de parada na estrutura de solicitação comercial que deve ser calculada corretamente: stoplimit = preço - distância de ajuste do pedido de parada)
  3. Quando uma ordem BuyLimit é acionada, uma entrada no mercado é feita ao preço da ordem BuyLimit

Exemplo:


 
Artyom Trishkin:

Um pedido BuyStopLimit funciona desta forma:

  1. Definimos um pedido BuyStop acima do preço (valor do preço na estrutura do pedido comercial = preço + distância de definição do pedido de parada)
  2. Quando o BuyStop é acionado, um pedido BuyLimit é colocado abaixo do preço
    (a preço de parada na estrutura de solicitação comercial que deve ser calculada corretamente: stoplimit = preço - distância de ajuste do pedido de parada)
  3. Quando uma ordem BuyLimit é acionada, uma entrada no mercado é feita ao preço da ordem BuyLimit

Exemplo:


Quando oBuyLimit está abaixo do preço, ele funciona bem no testador.

Quando oBuyLimit é mais alto que o preço, ele deve abrir ao preço Ask. Na troca, no real, funciona dessa maneira.

Não faz sentido usar o StopLimit para definir oBuyLimit abaixo do preço.

 
Sergey Chalyshev:

Quando oBuyLimit está abaixo do preço, ele funciona bem no testador.

Quandoo BuyLimit está acima do preço, ele deve abrir a preço de pedido. Na troca, no real, funciona dessa maneira.

Usar um StopLimit para colocar o BuyLimit abaixo do preço não faz sentido.

Campo

Descrição

ação

Tipo de operação comercial. O valor pode ser um dos valores da enumeração ENUM_TRADE_REQUEST_ACTIONS

mágica

Identificador do Conselheiro Especialista. Permite organizar o processamento analítico das ordens comerciais. Cada consultor especializado pode exibir seu próprio identificador exclusivo ao enviar um pedido comercial

encomenda

Encomendar bilhete. Necessário para modificação de ordens pendentes

símbolo

Nome do símbolo para o qual o pedido é feito. Não é necessário para modificação de pedidos e fechamento de posições

Volume

Volume solicitado de um negócio em lotes. O valor real do volume ao abrir uma posição depender á dotipo de ordem a ser executada.

preço

Este é o preço pelo qual o pedido deve ser preenchido. O preço não é necessáriopara ordens de mercado com o tipo "Market Execution" ( SYMBOL_TRADE_EXECUTION_MARKET ) com o tipoTRADE_ACTION_DEAL

stoplimit

Preço pelo qual a ordem de limite pendente será colocada quando o preço atingir o valor do preço (esta condição é obrigatória). Até esse momento, a ordem pendente não é colocada no sistema comercial

sl

Preço ao qual uma ordem de Stop Loss será acionada quando o preço do título se mover em uma direção desfavorável

tp

Preço no qual a ordem Take Profit é acionada pelo movimento de preços na direção favorável

desvio

Desvio máximo aceitável do preço solicitado, fixado em pontos

tipo

Tipo de pedido. O valor pode ser um dos valores da enumeração ENUM_ORDER_TYPE

type_filling

Tipo de ordem a executar. O valor pode ser um dos valores deENUM_ORDER_TYPE_FILLING

type_time

Tipo de pedido_tempo de preenchimento. O valor pode ser um dos valores deENUM_ORDER_TYPE_TIME

expiração

Prazo de validadeda ordem pendente (para ordens ORDER_TIME_SPECIFIED)

comentário

Comentário ao pedido

posição

Bilhete para a posição. Isto deve ser preenchido quando uma posição é alterada e fechada para identificá-la claramente. Isto geralmente corresponde ao bilhete da ordem que resultou na abertura da posição.

posição_por

Um bilhete para uma posição de balcão. Usado ao fechar uma posição do contador - aberto para o mesmo instrumento, mas na direção oposta.


Espero que você saiba o que é uma ordem limite. E uma ordem de parada também, espero que você não tenha dúvidas.

E isto é o que diz aqui sobre como funciona um pedido StopLimit: quando o preço atinge o nível de um pedido Stop (e é colocado acima do preço de Compra), somente então um pedido Limit será colocado (e é colocado abaixo do preço de Compra).

 
Sergey Chalyshev:

Quando oBuyLimit está abaixo do preço, ele funciona bem no testador.

Quando oBuyLimit está acima do preço, ele deve abrir a preço de pedido.Na troca, no real, funciona dessa maneira.

Usar o StopLimit para colocar o BuyLimit abaixo do preço não faz sentido.

Desculpe, como você coloca o pedido de BuyLimit acima do preço?

Não deve ser definido de forma alguma neste cenário.

Se você estiver usando uma classe comercial SB, há uma verificação de parâmetros errôneos, e em tal situação uma ordem pendente não é colocada, mas uma ordem de mercado é aberta.

 
Artyom Trishkin:

Campo

Descrição

ação

Tipo de operação comercial. O valor pode ser um dos valores da enumeração ENUM_TRADE_REQUEST_ACTIONS

mágica

Identificador do Conselheiro Especialista. Permite organizar o processamento analítico das ordens comerciais. Cada consultor especializado pode exibir seu próprio identificador exclusivo ao enviar um pedido comercial

encomenda

Encomendar bilhete. Necessário para modificação de ordens pendentes

símbolo

Nome do símbolo para o qual o pedido é feito. Não é necessário para modificação de pedidos e fechamento de posições

Volume

Volume solicitado de um negócio em lotes. O valor real do volume ao abrir uma posição depender á dotipo de ordem a ser executada.

preço

Este é o preço pelo qual o pedido deve ser preenchido. O preço não é necessáriopara ordens de mercado do tipo "Market Execution" ( SYMBOL_TRADE_EXECUTION_MARKET ) com o tipoTRADE_ACTION_DEAL

stoplimit

Preço pelo qual a ordem de limite pendente será colocada quando o preço atingir o valor do preço (esta condição é obrigatória). Até esse momento, a ordem pendente não é colocada no sistema comercial

sl

Preço ao qual uma ordem de Stop Loss será acionada quando o preço do título se mover em uma direção desfavorável

tp

Preço no qual a ordem Take Profit é acionada pelo movimento de preços na direção favorável

desvio

Desvio máximo aceitável do preço solicitado, fixado em pontos

tipo

Tipo de pedido. O valor pode ser um dos valores da enumeração ENUM_ORDER_TYPE

type_filling

Tipo de ordem a executar. O valor pode ser um dos valores deENUM_ORDER_TYPE_FILLING

type_time

Tipo de pedido_tempo de preenchimento. O valor pode ser um dos valores deENUM_ORDER_TYPE_TIME

expiração

Prazo de validadeda ordem pendente (para ordens ORDER_TIME_SPECIFIED)

comentário

Comentário ao pedido

posição

Bilhete para a posição. Isto deve ser preenchido quando uma posição é alterada e fechada para identificá-la claramente. Isto geralmente corresponde ao bilhete da ordem que resultou na abertura da posição.

posição_por

Um bilhete para uma posição de balcão. É usado quando se fecha uma posição com uma posição contrária - aberta para o mesmo instrumento, mas na direção oposta.


Espero que você saiba o que é uma ordem limite. E uma ordem de parada também, espero que você não tenha dúvidas.

E isto é o que diz aqui sobre como funciona um pedido StopLimit: quando o preço atinge o nível do pedido Stop (e é colocado acima do preço de Compra), somente neste caso será colocado um pedido Limit (e é colocado abaixo do preço de Compra).

O que o faz pensar que o pedido BuyLimit deve necessariamente estar abaixo do preço?

Estou falando do mercado de ações, o forex não é interessante.

 
Artyom Trishkin:

Desculpe-me, o que você está fazendo ao estabelecer o pedido BuyLimit acima do preço?

Não deve ser colocado de forma alguma nesta situação.

Se você estiver usando a classe SB-trading, ela tem uma verificação de parâmetros inválidos e, em tal situação, a ordem pendente não é aberta, e a posição é aberta por ordem do mercado.

Dei-lhes um exemplo de código acima.

Deve ser ajustado e está ajustado.

Se fosse aberto pelo mercado, não haveria problema no testador; seria aberto pelo preço Ask. Mas seria aberta a um preço inexistente, você pode vê-la na foto acima.

p.s. Tente você mesmo o código acima em uma conta de câmbio
 
"Fantástico" stoplimit na biblioteca padrão, sem palavras :))
limite deve definir o deslize de uma ordem de mercado, não a definição de uma ordem limite :))
 
Roman:
O "incrível" stoplimit na biblioteca padrão, sem palavras :))
limite deve definir o escorregamento da ordem de mercado, não a definição da ordem limite :))

O escorregamento é definido pelo parâmetro de desvio no pedido comercial.

E o nível de parada é o nível no qual a ordem de limite é estabelecida em relação ao nível de ordem de parada.

Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
Документация по MQL5: Константы, перечисления и структуры / Структуры данных / Структура торгового запроса
  • www.mql5.com
Взаимодействие клиентского терминала и торгового сервера для проведения операций постановки ордеров производится посредством торговых запросов. Запрос представлен специальной предопределенной структурой MqlTradeRequest, которая содержит все поля, необходимые для заключения торговых сделок. Результат обработки запроса представлен структурой...
Razão: