Em alguns casos (nunca encontrei um padrão), ao compilar código com umavariável declarada não utilizada, oMetaEditor5 não avisa sobre a variável não utilizada.
Hoje enfrentei mais duas questões que não compreendo, mas desta vez estão no código extraído da Referência MQL5 na sua totalidade. Desta vez eu próprio não escrevi nada, mas apenas tomei um exemplo pronto.
Modify Pending Order
Торговый приказ на модификацию уровней цен отложенного ордера. Требуется указание 7 полей:
action
order
price
sl
tp
type_time
expiration
Пример торговой операции TRADE_ACTION_MODIFY для модификации уровней цен отложенного ордера:
Isto é claro. Sou seguido por um exemplo com o seguinte código:
#define EXPERT_MAGIC 123456// MagicNumber эксперта//+------------------------------------------------------------------+//| Модификация отложенных ордеров |//+------------------------------------------------------------------+voidOnStart()
{
//-- объявление и инициализация запроса и результатаMqlTradeRequest request={};
MqlTradeResult result={};
int total=OrdersTotal(); // количество установленных отложенных ордеров//--- перебор всех установленных отложенных ордеровfor(int i=0; i<total; i++)
{
//--- параметры ордераulong order_ticket=OrderGetTicket(i); // тикет ордераstring order_symbol=Symbol(); // символint digits=(int)SymbolInfoInteger(order_symbol,SYMBOL_DIGITS); // количество знаков после запятойulong magic=OrderGetInteger(ORDER_MAGIC); // MagicNumber ордераdouble volume=OrderGetDouble(ORDER_VOLUME_CURRENT); // текущий объем ордераdouble sl=OrderGetDouble(ORDER_SL); // текущий Stop Loss ордераdouble tp=OrderGetDouble(ORDER_TP); // текущий Take Profit ордераENUM_ORDER_TYPE type=(ENUM_ORDER_TYPE)OrderGetInteger(ORDER_TYPE); // тип ордераint offset = 50; // отступ от текущей цены для установки ордера, в пунктахdouble price; // цена срабатывания ордераdouble point=SymbolInfoDouble(order_symbol,SYMBOL_POINT); // размер пункта//--- вывод информации об ордереPrintFormat("#%I64u %s %s %.2f %s sl: %s tp: %s [%I64d]",
order_ticket,
order_symbol,
EnumToString(type),
volume,
DoubleToString(PositionGetDouble(POSITION_PRICE_OPEN),digits),DoubleToString(sl,digits),
DoubleToString(tp,digits),
magic);
//--- если MagicNumber совпадает, Stop Loss и Take Profit не заданыif(magic==EXPERT_MAGIC && sl==0 && tp==0)
{
request.action=TRADE_ACTION_MODIFY; // тип торговой операции
request.order = OrderGetTicket(i); // тикет ордера
request.symbol =Symbol(); // символ
request.deviation=5; // допустимое отклонение от цены//--- установка уровня цены, тейк-профит и стоп-лосс ордера в зависимости от его типаif(type==ORDER_TYPE_BUY_LIMIT)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_ASK)-offset*point;
request.tp = NormalizeDouble(price+offset*point,digits);
request.sl = NormalizeDouble(price-offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
elseif(type==ORDER_TYPE_SELL_LIMIT)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_BID)+offset*point;
request.tp = NormalizeDouble(price-offset*point,digits);
request.sl = NormalizeDouble(price+offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
elseif(type==ORDER_TYPE_BUY_STOP)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_ASK)+offset*point;
request.tp = NormalizeDouble(price+offset*point,digits);
request.sl = NormalizeDouble(price-offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
elseif(type==ORDER_TYPE_SELL_STOP)
{
price = SymbolInfoDouble(Symbol(),SYMBOL_BID)-offset*point;
request.tp = NormalizeDouble(price-offset*point,digits);
request.sl = NormalizeDouble(price+offset*point,digits);
request.price =NormalizeDouble(price,digits); // нормализованная цена открытия
}
//--- отправка запросаif(!OrderSend(request,result))
PrintFormat("OrderSend error %d",GetLastError()); // если отправить запрос не удалось, вывести код ошибки//--- информация об операции PrintFormat("retcode=%u deal=%I64u order=%I64u",result.retcode,result.deal,result.order);
//--- обнуление значений запроса и результатаZeroMemory(request);
ZeroMemory(result);
}
}
}
//+------------------------------------------------------------------+
Estou a tentar compreender a linha realçada em amarelo. Uma pergunta surge imediatamente: O que é que oPositionGetDouble(POSITION_PRICE_OPEN) tem a ver com istose este exemplo estiver relacionado com encomendas pendentes? Talvez, deveria haver uma linha como esta:
Este é o primeiro ponto. O segundo número surge quando tento executar este guião num gráfico com uma ordem pendente de BUY_STOP que defini (apesar de tudo o que acontece semelhante a outros tipos de ordens pendentes). Então, o que acontece? Nada acontece! Não vejo qualquer modificação de uma ordem pendente. Talvez, eu não compreendo alguma coisa?
Não há preço no forex Last.
A solução é a seguinte.Deve ser uma tal tareia ))
Configure todas as propriedades de apresentação do gráfico como desejar, e guarde-o no modelo como padrão.tpl
Como se faz isto?
Não compreendo porque é que esta última linha de preços foi acrescentada, num sentido prático é inútil.
como é que o faço?
PCM no gráfico -> Modelos -> Guardar modelo
Nome do ficheiro: default.tpl
Fórum sobre comércio, sistemas automatizados de comércio e testes estratégicos
Quaisquer perguntas de novatos sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos
MrBrooklin, 2022.02.25 07:15
Bom dia, Caros Peritos!
Hoje enfrentei mais duas questões que não compreendo, mas desta vez estão no código extraído da Referência MQL5 na sua totalidade. Desta vez eu próprio não escrevi nada, mas apenas tomei um exemplo pronto.
Abro Referência MQL5 / Constantes, Enumerações e Estruturas / Estruturas de Dados / Estrutura de um Pedido de Comércio. Encontrei-o lá:
Estrutura do pedido comercialIsto é claro. Sou seguido por um exemplo com o seguinte código:
Estou a tentar compreender a linha realçada em amarelo. Uma pergunta surge imediatamente: O que é que o PositionGetDouble(POSITION_PRICE_OPEN) tem a ver com istose este exemplo estiver relacionado com encomendas pendentes? Talvez, deveria haver uma linha como esta:
Só encontro isto no separador Especialistas: Caros Peritos, por favor ajudem-me a compreender este exemplo, porque é que ele está no directório, mas o seu código não funciona?
Cumprimentos, Vladimir.
Olá. Pode dizer-me como levantar o depósito para o cartão?
Este é o website do criador da plataforma comercial. Não é um corretor, não é um CD, não existem contas comerciais reais.
Diz claramente isso no final da página:
Por favor, faça tais perguntas ao seu corretor - quem transferiu o dinheiro para a sua conta de negociação.
Boa tarde. Pode dizer-me como levantar o depósito para o cartão?
Caros programadores! Porque é que na segunda e terceira chamadas está (T* const Ptr) sobrecarregada em vez de (T* & Ptr)?
Isto é um insecto ou uma característica? b3213.
PCM no gráfico -> Modelos -> Guardar modelo
Nome do ficheiro: default.tpl
Por defeito, existe um modelo deste tipo. Eu substituí-o. Não ajudou, infelizmente. Continua a ser o mesmo quando se muda de ou para ele.
Sabe como escrever para os criadores? Certamente já lhes foi relatado algumas centenas de vezes, bem, vou escrever novamente.
Ao rolar, o cabeçalho nos sinais anda