Colocar uma ordem comercial para a execução sob condições especificadas (ordem pendente)
Exemplo da operação TRADE_ACTION_PENDING para colocação de uma ordem pendente:
#property description"Example of placing pending orders"#property script_show_inputs#define EXPERT_MAGIC 123456// MagicNumber of the expertinputENUM_ORDER_TYPE orderType=ORDER_TYPE_BUY_LIMIT; // order type//+------------------------------------------------------------------+//| Placing pending orders |//+------------------------------------------------------------------+voidOnStart()
{
//--- declare and initialize the trade request and result of trade requestMqlTradeRequest request={0};
MqlTradeResult result={0};
//--- parameters to place a pending order
request.action =TRADE_ACTION_PENDING; // type of trade operation
request.symbol =Symbol(); // symbol
request.volume =0.1; // volume of 0.1 lot
request.deviation=2; // allowed deviation from the price
request.magic =EXPERT_MAGIC; // MagicNumber of the orderint offset = 50; // offset from the current price to place the order, in pointsdouble price; // order triggering pricedouble point=SymbolInfoDouble(_Symbol,SYMBOL_POINT); // value of pointint digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS); // number of decimal places (precision)//--- checking the type of operationif(orderType==ORDER_TYPE_BUY_LIMIT)
{
request.type =ORDER_TYPE_BUY_LIMIT; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_SELL_LIMIT)
{
request.type =ORDER_TYPE_SELL_LIMIT; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_BUY_STOP)
{
request.type =ORDER_TYPE_BUY_STOP; // order type
price =SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point; // price for opening
request.price=NormalizeDouble(price,digits); // normalized opening price
}
elseif(orderType==ORDER_TYPE_SELL_STOP)
{
request.type =ORDER_TYPE_SELL_STOP; // order type
price=SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point; // price for opening
request.price =NormalizeDouble(price,digits); // normalized opening price
}
elseAlert("This example is only for placing pending orders"); // if not pending order is selected//--- send the requestif(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // if unable to send the request, output the error code//--- information about the operationPrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
}
//+------------------------------------------------------------------+
Artyom Trishkin: Vladimir, você não pode escrevê-lo em russo?
Você não pode. Porque eu citei na íntegra a partir da referência. Caso contrário, é um tiro no escuro: todos têm um 'bilhete' e alguns têm 'bilhetes'. É por isso que as funções, ajuda e citações da ajuda estão em inglês.
Você não pode. Porque eu citei a referência completa. Caso contrário, é um tiro no escuro: todos têm um "bilhete" e alguns têm "bilhetes". Portanto, as funções, a referência e as citações da referência estão em inglês.
E eles têm "ingressos" só porque começam a traduzir com o google :)
Na ajuda oficial russa, há "ingressos".
Em florestamento, apenas a partir de traduções livres.
Olá a todos! Acho que a questão é principalmente para os profissionais (como acontece). Foi uma semana com uma pergunta sobre o código.
Por exemplo - sabemos que a vela M5 contém 5 velas M1 (por exemplo, 00:00, 00:01, 00:02, 00:03 e 00:04). Além disso, consideraremos apenas esta conjunção - ou seja, executamos o indicador no M1 e queremos ver as leituras do indicador a partir do M5.
Ou seja, para exibir corretamente os dados da parte inferior, eu deveria fazer um laço em todas as 5 barras da parte inferior à medida que elas aparecem. Isto é, a primeira barra aparece como 00:00, depois 00:01 etc. até 00:04 e depois disso aparece a próxima. Isto significa que o ciclo deve ser de 0 a 4 - este é o máximo, enquanto as lacunas na história não são consideradas. O problema é que eu recebo o ciclo de 0 a 5, e não tenho lógica suficiente para chegar a 4! Acredite em mim, há uma semana que estou lutando com isto e estou realmente pedindo sua ajuda. Abaixo está um código muito truncado onde o laço vai para 5 em vez de 4. Quero que seja 4!!!!!
#property copyright""#property link""#property version""#property indicator_chart_window//+----------------------------------------------+//| Входные параметры индикатора |//+----------------------------------------------+inputENUM_TIMEFRAMES TF=PERIOD_M5;
int LastCountBar;
datetime tt;
//+------------------------------------------------------------------+//| Custom indicator initialization function |//+------------------------------------------------------------------+intOnInit()
{
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+//| Custom indicator iteration function |//+------------------------------------------------------------------+intOnCalculate(constint rates_total, // количество истории в барах на текущем тикеconstint prev_calculated,// количество истории в барах на предыдущем тикеconstdatetime &time[],
constdouble &open[],
constdouble& high[], // ценовой массив максимумов цены для расчёта индикатораconstdouble& low[], // ценовой массив минимумов цены для расчёта индикатораconstdouble &close[],
constlong &tick_volume[],
constlong &volume[],
constint &spread[])
{
datetime IndTime[1];
//--- объявления локальных переменныхint limit,bar;
//--- индексация элементов в массивах как в таймсерияхArraySetAsSeries(time,true);
//--- расчёт стартового номера first для цикла пересчёта баровif(prev_calculated>rates_total || prev_calculated<=0) // проверка на первый старт расчёта индикатора
{
limit=100; // стартовый номер для расчёта всех баров
LastCountBar=limit;
}
else
limit=LastCountBar+rates_total-prev_calculated; // стартовый номер для расчёта новых баров//--- основной цикл расчёта индикатораfor(bar=limit; bar>=0; bar--)
{
//--- копируем вновь появившиеся данные в массив IndTimeif(CopyTime(Symbol(),TF,time[bar],1,IndTime)<=0)
return(0);
if(time[bar]>=IndTime[0] && time[bar+1]<IndTime[0])
{
LastCountBar=bar;
//--- Далее проводим вычисления индикатора МТФ ...............Print(bar," ",IndTime[0]);
//---
}
}
return(rates_total);
}
//+------------------------------------------------------------------+
Eu tenho a biblioteca acima. Quero adicionar uma caixa de edição com uma etiqueta dentro desta lista. Você pode me dizer como eu posso fazer isso? Eu já tentei, mas não funciona.
A questão é a seguinte. Posso abrir 2 (ou mais) gráficos ao toque de um botão para que sejam posicionados verticalmente, ocupando igualmente todo o monitor?
ENUM_TRADE_REQUEST_ACTIONS
Identificador
Descrição
COMÉRCIO_AÇÃO_PROBLEMA
Colocar uma ordem comercial para uma execução imediata com os parâmetros especificados (ordem de mercado)
COMÉRCIO_ATIVO_DEPENDENTE
Colocar uma ordem comercial para a execução sob condições especificadas (ordem pendente)
Exemplo da operação TRADE_ACTION_PENDING para colocação de uma ordem pendente:
ENUM_TRADE_REQUEST_ACTIONS
Identificador
Descrição
COMÉRCIO_AÇÃO_PROBLEMA
Colocar uma ordem comercial para uma execução imediata com os parâmetros especificados (ordem de mercado)
COMÉRCIO_ATIVO_DEPENDENTE
Colocar uma ordem comercial para a execução sob condições especificadas (ordem pendente)
Obrigado!
Exemplo da operação TRADE_ACTION_PENDING para colocação de uma ordem pendente:
Vladimir, você não pode escrevê-lo em russo?
Você não pode. Porque eu citei na íntegra a partir da referência. Caso contrário, é um tiro no escuro: todos têm um 'bilhete' e alguns têm 'bilhetes'. É por isso que as funções, ajuda e citações da ajuda estão em inglês.
Você não pode. Porque eu citei a referência completa. Caso contrário, é um tiro no escuro: todos têm um "bilhete" e alguns têm "bilhetes". Portanto, as funções, a referência e as citações da referência estão em inglês.
Olá a todos! Acho que a questão é principalmente para os profissionais (como acontece). Foi uma semana com uma pergunta sobre o código.
Por exemplo - sabemos que a vela M5 contém 5 velas M1 (por exemplo, 00:00, 00:01, 00:02, 00:03 e 00:04). Além disso, consideraremos apenas esta conjunção - ou seja, executamos o indicador no M1 e queremos ver as leituras do indicador a partir do M5.
Ou seja, para exibir corretamente os dados da parte inferior, eu deveria fazer um laço em todas as 5 barras da parte inferior à medida que elas aparecem. Isto é, a primeira barra aparece como 00:00, depois 00:01 etc. até 00:04 e depois disso aparece a próxima. Isto significa que o ciclo deve ser de 0 a 4 - este é o máximo, enquanto as lacunas na história não são consideradas. O problema é que eu recebo o ciclo de 0 a 5, e não tenho lógica suficiente para chegar a 4! Acredite em mim, há uma semana que estou lutando com isto e estou realmente pedindo sua ajuda. Abaixo está um código muito truncado onde o laço vai para 5 em vez de 4. Quero que seja 4!!!!!
Como posso adicionar uma janela de edição de visualização de lista?
https://www.mql5.com/en/docs/standardlibrary/controls/clistview
Eu tenho a biblioteca acima. Quero adicionar uma caixa de edição com uma etiqueta dentro desta lista. Você pode me dizer como eu posso fazer isso? Eu já tentei, mas não funciona.
E eles têm "ingressos" só porque começam a traduzir com o google :)
OK, eu confesso: me pegou. Respondeu rapidamente e não trocou a linguagem de ajuda 😎
Copie isso ;)