[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 922
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Como posso determinar o tipo de pedido aberto?
Tipo de pedido()
Na verdade, você deve começar com um livro didático... :) Ou pelo menos use F1 no MetaEditor
OP_BUY - posição de compra,
OP_SELL - posição de venda,
OP_BUYLIMIT - ordem de compra pendente ao atingir um nível especificado, o preço atual é mais alto do que o nível,
OP_BUYSTOP - ordem de compra pendente quando o nível especificado é atingido, o preço atual está abaixo do nível,
OP_SELLLIMIT - ordem de venda pendente quando o nível especificado é atingido, o preço atual está abaixo do nível,
OP_SELLSTOP - ordem de venda pendente quando o nível especificado é atingido, o preço atual está acima do nível.
A ordem deve ser pré-selecionada usando a função OrderSelect().
Um valor de ponto flutuante é um número real como o dobro
E ao invés de dígitos , use uma variável do tipo int
Por exemplo, int dg=MarketInfo ( Symbol(), MODE_DIGITS);
datetime time;
//--------------------------------------------------------------- 2 --
int start()
{
int Total;
bool
Ans =false, // Ответ сервера после закрытия
Cls_B=false, // Критерий для закрытия Buy
Cls_S=false, // Критерий для закрытия Sell
Opn_B=false, // Критерий для открытия Buy
Opn_S=false; // Критерий для открытия Sell
//--------------------------------------------------------------- 3 --
// Учёт ордеров
for(int i=OrdersTotal()-1;i>=0;i--)
if (OrderSelect(i,SELECT_BY_POS)&&OrderSymbol()==Symbol()&&OrderType()>1)Total++;
if(Total!=0 || time==Time[1])return;
static int KolBars;
if (Close[0]-Open[0] > Point && Close[1]-Open[1] > Point && Bars == KolBars)
{
KolBars=Bars ; // запоминаем кол-во бар при которых совершались действия
}
// Торговые критерии
// Критерий откр. Buy
Opn_B=true;
//--------------------------------------------------------------- 7 --
if (Opn_B)
{OrderSend(Symbol(),OP_BUY,Lot,Ask,0,0,0);time=Time[1];}
}
Por favor, ajude, estou pedindo pela 3ª vez. Uma EA elementar, abre uma posição de compra ao aparecer uma vela nova (desde que as 2 velas anteriores sejam verdes), e fecha a posição no fechamento da vela na qual a posição foi aberta, ou no fechamento da vela seguinte.
A que você vê acima abre uma posição toda vez que uma nova vela aparece, sem reagir aos critérios de abertura, mas não entendo como fechar a posição, não consegui encontrá-la no tutorial ou nos fóruns.
O valor do ponto flutuante é um número real do tipo duplo
E ao invés de dígitos , use uma variável do tipo int
Por exemplo, int dg=MarketInfo ( Symbol(), MODE_DIGITS);
Eles me escreveram: "NormalizeDuplo(), verifique o limite máximo/mínimo do lote, se cinco dígitos - aumente a parada e o lucro em 10 vezes".
A documentação diz: "Arredondamento do número do ponto flutuante para precisão especificada. Os valores calculados de StopLoss e TakeProfit, assim como os preços de abertura de ordens pendentes devem ser normalizados com precisão, cujo valor é armazenado nos Dígitos variáveis pré-definidos".
Não o encontrei no livro didático. Entendi que preciso normalizar o preço atual, StopLoss e TakeProfit com NormalizeDouble --- como devo normalizá-lo?
valor duplo -- em vez de valor duplo eu posso usar, por exemplo, Prise
int dígitos -- e esta variável dg é igual a MarketInfo( Symbol(), MODE_DIGITS); ???
Escrevi: "NormalizeDuplo(), verifique o limite máximo/mínimo do lote, se cinco dígitos - aumente a parada e o lucro em 10 vezes".
A documentação diz: "Arredondamento do número do ponto flutuante para precisão especificada. Os valores calculados de StopLoss e TakeProfit, assim como os preços de abertura de ordens pendentes devem ser normalizados com precisão, cujo valor é armazenado nos Dígitos variáveis pré-definidos".
Não o encontrei no tutorial, entendo que preciso usar NormalizeDouble --- para normalizar o preço atual, StopLoss e TakeProfit ? se sim, como exatamente?
valor duplo - em vez disso, eu posso definir, por exemplo, Prise
int dígitos -- e esta variável dg é igual a MarketInfo( Symbol(), MODE_DIGITS); ???
int StopLoss=50; // StopLoss em pips
int TakeProfit=150; // TakeProfit em pips
intOrderDistance=50; // Distância de ordem pendente em pontos
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int pt=MarketInfo(Symbol(), MODE_POINT); // Tamanho do ponto na moeda de cotação
int dg=MarketInfo(Symbol(),MODE_DIGITS); // Número de dígitos após o ponto decimal no preço do símbolo
int StLev=MarketInfo(Symbol(),MODE_STOPLEVEL); // Nível mínimo de stop loss/stake profit permitido em pontos
double pa=MarketInfo(Symbol(), MODE_ASK); // Pergunte o preço
double pb=MarketInfo(Symbol(), MODE_BID); // Preço da licitação
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
dupla slB=NormalizarDuplo(pa-StopLoss*pt, dg); // normalizar o nível de preço StopLoss para a posição Comprar
double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // normalize o nível de preço TakeProfit para a posição Bid
double slS=NormalizeDouble(pb+StopLoss*pt, dg); // normalizeStopLoss nível de preço para a posição de Venda
double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // normalize o nível de preço TakeProfit para a posição de Venda
doubleB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // normalizar o nível de preços para colocar uma ordem de compra pendente
Duplo SetS=NormalizarDuplo(pb-SetOrderDistance*pt, dg); // normalizar preço para colocar uma ordem de venda pendente
dupla slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // normalizar o nível de preço do StopLoss para uma ordem de compra pendente
double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // normalizar o nível de preço do TakeProfit da ordem de compra pendente
double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // normalizar o nível de preço do StopLoss para a ordem de venda pendente
double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // Normalizar o nível de preço de TakeProfit da ordem de venda pendente
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Descubra-o... :)
E não se esqueça do StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);
Verifique a distância mínima de parada e decolagem para ter certeza de que não é menor que este valor
int StopLoss=50; // StopLoss em pontos
int TakeProfit=150; // TakeProfit em pontos
intOrderDistance=50; // Distância de colocação de ordem pendente em pontos
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
int pt=MarketInfo(Symbol(), MODE_POINT); // Tamanho do ponto na moeda de cotação
int dg=MarketInfo(Symbol(),MODE_DIGITS); // Número de dígitos após o ponto decimal no preço do símbolo
int StLev=MarketInfo(Symbol(),MODE_STOPLEVEL); // Nível mínimo de stop loss/stake profit permitido em pontos
double pa=MarketInfo(Symbol(), MODE_ASK); // Pergunte o preço
double pb=MarketInfo(Symbol(), MODE_BID); // Preço da licitação
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
dupla slB=NormalizarDuplo(pa-StopLoss*pt, dg); // normalizar o nível de preço StopLoss para a posição Comprar
double tpB=NormalizeDouble(pa+TakeProfit*pt, dg); // normalize o nível de preço TakeProfit para a posição Bid
dupla slS=NormalizarDuplo(pb+StopLoss*pt, dg); // normalizar o nível de preço StopLoss para a posição de Venda
double tpS=NormalizeDouble(pb-TakeProfit*pt, dg); // normalize o nível de preço TakeProfit para a posição de Venda
doubleB=NormalizeDouble(pa+SetOrderDistance*pt, dg); // normalizar o nível de preços para colocar uma ordem de compra pendente
Duplo SetS=NormalizarDuplo(pb-SetOrderDistance*pt, dg); // normalizar preço para colocar uma ordem de venda pendente
dupla slBS=NormalizeDouble(SetB-StopLoss*pt, dg); // normalizar o nível de preço do StopLoss para uma ordem de compra pendente
double tpBS=NormalizeDouble(SetB+TakeProfit*pt, dg); // normalizar o nível de preço do TakeProfit da ordem de compra pendente
double slSS=NormalizeDouble(SetS+StopLoss*pt, dg); // normalizar o nível de preço do StopLoss para a ordem de venda pendente
double tpSS=NormalizeDouble(SetS-TakeProfit*pt, dg); // Normalizar o nível de preço de TakeProfit da ordem de venda pendente
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Descubra-o... :)
E não se esqueça do StopLev - int StLev=MarketInfo(Symbol(), MODE_STOPLEVEL);
Verificar a distância mínima para definir paradas e decolagens para que não seja inferior a este valor
Muito obrigado!!!! Vou dar uma olhada nisso! )
Janelas reinstaladas. a janela de alerta parou de aparecer. há uma notificação audível, há uma entrada de registro, mas a janela flutuante não aparecerá.
Eu limpei o terminal, recompilei tudo. qual poderia ser a razão?
Como criar uma função e chamá-la?
Pela enésima vez, leia um livro didático, estude o material. :)