Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 1144

 
Маргарита Королёва:

A resposta oficial do meu corretor (extrato):

"Nossos documentos regulamentares estipulam que fornecemos apenas o terminal de negociação MT4 para negociação com contabilidade de hedge e negociações multidirecionais".

Então... Um senão é um senão... Estou chateado novamente :(

...é melhor eu ir com minhas namoradas a um striptease, meurelacionamento com forex não está indo bem ultimamente:(
Você já leu? E esta é uma tendência.
 
Маргарита Королёва:

Então... Um senão é um senão... Estou me sentindo todo rasgado novamente :(


...e quanto mais você cavar o MT5, mais eles vão ficar confusos)
comece com MT4
 
Маргарита Королёва:

A resposta oficial do meu corretor (extrato):

"Nossos documentos regulamentares estipulam que fornecemos apenas o terminal de negociação MT4 para negociação com contabilidade de hedge e negociações multidirecionais".

Diga-me por favor, por que você precisa de uma cobertura? O sistema de rede é fácil de trocar, especialmente para o escalpe. Há um mercado para isso também. Se o preço subir, eu compro 0,01 lote. Eu também aumento o lote até 0,02. Quando o preço desce, eu vendo 0,02. A compra é automaticamente fechada, restando 0,01 lote a ser vendido. Em um movimento, a transação é revertida. Não há necessidade de fechar a posição. E assim por diante. É rápido e conveniente. A qualquer momento existe uma posição total, que é conveniente de administrar. Abra quantas ordens você quiser, e a posição é a média. Enquanto os comerciantes terão problemas para fechar uma grande quantidade de posições opostas. Para o comércio, o MT5 é mais adequado, enquanto que para o estudo inicial do idioma MQL4 é mais adequado. Isto é o que lhe diz o lobo de Rostov com anos de experiência em comércio e programação.

Vamos simular a cobertura em nosso bazar da cidade.

Você pode vender batatas a um comerciante por 50 (BID) e comprar dela por 100 (ASK). Viemos comprar um balde de batatas por 100 rublos. E concordamos em devolvê-lo em uma hora ao preço de mercado (por 50). Afinal de contas, em Forex, uma posição aberta deve ser fechada mais cedo ou mais tarde com uma transação inversa. Presumimos que eles virão buscar batatas na cantina. E o preço será triplicado. Em seguida, eles vendem por 150 e mais 50 ficam no bolso. Mas então os agricultores coletivos chegam com um caminhão cheio de batatas e o preço desce (40 e 80) - a tendência mudou. Smart seria vender nosso balde por 40 (para vender o depósito) e esquecer o Forex. Mas nós vamos nos proteger. Vendemos nossa batata a outro comerciante por 40 e concordamos que em meia hora compraremos a batata ao preço de mercado (aparentemente por 80) para devolver o primeiro comerciante. Existe algum erro na descrição da sebe em algum lugar? Em seguida, corrigi-la, ou dar outro exemplo para provar a cobertura.

 
Lembrarei meu primeiro cheque de pagamento para o resto da minha vida. Eu vivia em um albergue e era livre como um pássaro.
Eu ainda evito o álcool, e mesmo assim eu era avesso a ele. Decidi me dar algo para comer com meu salário, então fui ao mercado.
Conheci um cara, apelidado de 'Indicador', de nosso quintal. Dizemos olá e ele me diz:
- Tire uma ferramenta de mim. Eu lhe darei por 100. E em duas semanas, a primavera finalmente chegará, os homens sairão das garagens,
você lhes dará a ferramenta por 130. Você a terá para a cerveja.
Eu gostei do raciocínio do indicador. Eu peguei uma ferramenta dele por 100.
Na semana seguinte, fui novamente ao mercado para verificar meu lucro.
Onde da última vez foi o Indicador, agora havia um homem chamado de Mediador. Ele diz:
- "Nós batemos no Indicador. Ele tem derrubado o preço. Leve outra ferramenta, eu a darei por 80.
Você tem 180 para os dois, ou seja, 90 para cada um. Você terá um dezner de volta.
Se você movimentar o take lucro de 130 para 120, você também venderá mais rápido. Isso vai lhe comprar duas cervejas.
Eu também gostei do raciocínio do Oddsmaker. Tirou dele a segunda ferramenta por 80.
Na próxima semana, corro para o mercado para saber sobre o lucro. Diz o Orediator:
- Leve mais duas ferramentas, eu as darei a você por 70. Acontece que você deu 320 para quatro, ou seja, 80 para cada um.
Você passa de 120 para 110 - você venderá mais rápido também. Você terá o suficiente para quatro cervejas.
Eu pensei - acontece, como se eu tivesse vinte de volta, e o lucro será mais rápido. Levou as ferramentas.
Assim que os coloco em meus bolsos, Mihalych aparece e diz ao mediador:
- Aqui estão mais cinco, você vai levar 50 cada um?
O mediador pega as ferramentas, Mikhalych coloca o dinheiro em seu bolso e se afasta. Eu o alcanço e digo:
- Espere, Mikhalych. Algumas pessoas aqui estão calculando a média, a fim de obter maiores lucros mais tarde. E o que você está fazendo?
E eu lhe contei tudo como está. Ele olhou para mim com raiva, até cuspiu para mim com raiva, e disse:
- Então era você quem estava comprando as ferramentas, aumentando o preço? Só você comprou 4 mil, e eu trouxe 15 mil. Esse é o preço que vai descer!!!
Onde você o conseguiu? Pedi emprestado aos vizinhos da minha garagem. Não é provável que eles os comprem, eles esperam que eu os pague de volta.
Acontece que há um excedente de ferramentas no bazar, então o preço está caindo. Quando chegar a 20 ou pelo menos 30,
Eu os comprarei de volta e os devolverei aos meus amigos. E a diferença é minha. É claro que o preço subirá para 60.
Mas acho que não vai voltar a 100.
O que aconteceu em seguida? Chegou uma nova tecnologia, então guardei as ferramentas como uma lembrança. Estou farto da média da minha vida.
 
Taras Slobodyanik:...e quanto mais você se aprofundar no MT5, mais eles ficarão desordenados) comece com o MT4

Para negociação, MT5 com uma conta netting é melhor. Para masterização da programação, MQL4 é melhor. Então, em uma semana você muda para MQL5. Portanto, coloque ambos

 

Quero estabelecer uma ordem pendente para que após o tempo igual ao período da TF a ordem seja cancelada (na próxima vela). Eu estou fazendo isso:

ulong time = TimeCurrent () + GetSecCountFromTF (PERIOD_CURRENT);
G_LastTicket = SendOrder (Symbol (),
                          lot,
                          type,
                          ORDER_TIME_SPECIFIED, // ORDER_TIME_GTC,
                          (datetime)time,
                          NormalizeDouble (priceOpen, Digits ()),
                          NormalizeDouble (priceSL,   Digits ()),
                          NormalizeDouble (priceTP,   Digits ()),
                          Magic_P,
                          comment,
                          FillReturn_P);

//——————————————————————————————————————————————————————————————————————————————
// Установить отложенный ордер, усех: номер тикета, неудача: -1,
// функция НЕ делает нормализацию значений цены и уровней стопов
ulong SendOrder (string                  symbol,     //символ
                 double                  volume,     //объем
                 ENUM_ORDER_TYPE         type,       //тип ордера, ORDER_TYPE_BUY_LIMIT, ORDER_TYPE_SELL_LIMIT
                 ENUM_ORDER_TYPE_TIME    typeTime,   //ORDER_TIME_GTC           - Ордер будет находится в очереди до тех пор, пока не будет снят
                                                     //ORDER_TIME_DAY           - Ордер будет действовать только в течение текущего торгового дня
                                                     //ORDER_TIME_SPECIFIED     - Ордер будет действовать до даты истечения
                                                     //ORDER_TIME_SPECIFIED_DAY - Ордер будет действовать до 23:59:59 указанного дня. Если это время не попадает на торговую сессию, истечение наступит в ближайшее торговое время.
                 datetime                expTime,    // дата истечения
                 double                  priceOpen,  // уровень цены установки ордера
                 double                  priceSL      = 0.0,  // уровень цены SL
                 double                  priceTP      = 0.0,  // уровень цены TP
                 long                    magic_number = 0,    // уникальный идентификатор
                 string                  comment      = "",   // комментарий
                 ENUM_ORDER_TYPE_FILLING filling = ORDER_FILLING_RETURN) //ORDER_FILLING_FOK - всё или ничего
                                                                         //ORDER_FILLING_IOC - разрешен неполный объем
                                                                         //ORDER_FILLING_RETURN - частичное до полного заполнения
{
  //--- готовим запрос
  MqlTradeRequest request = { 0 }; //торговый запрос
  MqlTradeResult  result  = { 0 }; //результат торгового запроса

  request.symbol       = symbol;               // инструмент
  request.volume       = volume;               // объем
  request.action       = TRADE_ACTION_PENDING; // установка отложенного ордера
  request.type         = type;                 // тип ордера
  request.type_time    = typeTime;             // тип времени истечения ордера
  request.expiration   = expTime;
  request.price        = priceOpen;            // цена для открытия
  request.sl           = priceSL;              // уровень Stop Loss
  request.tp           = priceTP;              // уровень Take Profit
  request.magic        = magic_number;         // уникальный идентификатор
  request.comment      = comment;              // комментарий
  request.type_filling = filling;              // тип заливки ордера

  //--- отправим торговый приказ
  bool success = OrderSend (request, result);
  if(success)
  {
    return ((int)result.order);
  }

  //--- выведем в лог ответ сервера
  Print ("Failed send pending order, comment from server: " + result.comment + ", Retcode: " + (string)result.retcode);

  return (-1);
}
//——————————————————————————————————————————————————————————————————————————————

//——————————————————————————————————————————————————————————————————————————————
// Возвращает количество секунд в указанном ТФ
int GetSecCountFromTF (ENUM_TIMEFRAMES period)
{
  switch(period)
  {
  case PERIOD_M1:
    return (60);
  case PERIOD_M2:
    return (120);
  case PERIOD_M3:
    return (180);
  case PERIOD_M4:
    return (240);
  case PERIOD_M5:
    return (300);
  case PERIOD_M6:
    return (360);
  case PERIOD_M10:
    return (600);
  case PERIOD_M12:
    return (720);
  case PERIOD_M15:
    return (900);
  case PERIOD_M20:
    return (1200);
  case PERIOD_M30:
    return (1800);
  case PERIOD_H1:
    return (3600);
  case PERIOD_H2:
    return (7200);
  case PERIOD_H3:
    return (10800);
  case PERIOD_H4:
    return (14400);
  case PERIOD_H6:
    return (21600);
  case PERIOD_H8:
    return (28800);
  case PERIOD_H12:
    return (43200);
  case PERIOD_D1:
    return (86400);
  case PERIOD_W1:
    return (604800);
  case PERIOD_MN1:
    return (2592000);
  default:
    return (60);
  }
}
//——————————————————————————————————————————————————————————————————————————————

Mas o servidor retorna um erro:

2017.04.16 09:48:49.732 Core 1 2017.02.10 05:25:00 Falha no envio de pedido pendente, comentário do servidor: Validade inválida, Retcode: 10022

O que eu estou fazendo de errado? Estou verificando no testador.

 
Andrey Dik:

Quero estabelecer uma ordem pendente para que após o tempo igual ao período da TF a ordem seja cancelada (na próxima vela). Eu estou fazendo isso:

Mas o servidor retorna um erro:

2017.04.16 09:48:49.732 Core 1 2017.02.10 05:25:00 Falha no envio de pedido pendente, comentário do servidor: Validade inválida, Retcode: 10022

O que eu estou fazendo de errado? Estou verificando no testador.

Quando eu estava fazendo o cancelamento de pedidos para o quinto tipo, eu recebi o mesmo erro. Talvez, o tempo de expiração não seja utilizado. Eu só executo o pedido por mim mesmo após o tempo de expiração - se o tempo atual for mais ou igual ao tempo de colocação do pedido mais PeriodSeconds(NEEDED_PERIOD_WEEK)*número de castiçais.
 
Andrey Dik:

Quero estabelecer uma ordem pendente para que após o tempo igual ao período da TF a ordem seja cancelada (na próxima vela). Eu estou fazendo isso:

Mas o servidor retorna um erro:

2017.04.16 09:48:49.732 Core 1 2017.02.10 05:25:00 Falha no envio de ordem pendente, comentário do servidor: Validade inválida, Retcode: 10022

O que eu estou fazendo de errado? Estou verificando no testador.

A data de vencimento mais próxima +10 minutos foi em mql4. Não sei como é agora, devo verificar em mql5.
 
Artyom Trishkin:
Eu também me deparei com tal erro quando estive lidando com o cancelamento de um quinto pedido. Talvez, o tempo de expiração do pedido não seja utilizado. Eu acabei de remover o pedido por mim mesmo após o tempo de expiração - se o tempo atual for maior ou igual ao tempo de colocação do pedido mais PeriodSeconds(NEEDED_PERIOD_WEEK)*número de castiçais.

Obrigado pelo PeriodSeconds (), eu esqueci esta função.

Alexey Viktorov:
Em mql4 a data de expiração mais próxima foi de +10 minutos. Não sei como é agora, deveria verificar com mql5.

Não quero mudá-lo com mql5 também.


Estou vendo. Eu mesmo teria que verificar a data do pedido e apagá-lo, eu realmente não quero fazer isso.

 
Por favor, avise! Como escrever código com esta condição, se antes do fechamento da vela 0 saiu 1 segundo, então abra uma ordem em uma direção ou na outra! Eu ficaria sinceramente grato pela ajuda.