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 750

 
noob1:
Olá. Algum conselho? Estou tentando calcular o StopLoss a partir da baixa e alta da 1ª barra, após colocar um pedido pendente, para compra e venda respectivamente. Mas não obtive resultado, apenas 130 erros, só isso. Agradecemos antecipadamente.
É o mesmo bilhete? E a distância até a parada pode ser muito pequena.
 
simpleton:

Verifique se o OrderOpenPrice() está muito próximo do SL, e se as paradas estão "do lado direito do preço". Você pode ler aqui:

Os preços StopLoss e TakeProfit não podem estar muito próximos do mercado. A distância mínima de parada em pips pode ser obtida usando a função MarketInfo() com o parâmetro MODE_STOPLEVEL. O erro 130 (ERR_INVALID_STOPS) será gerado em caso de paradas errôneas ou não normalizadas.

Neste caso, ou seja, para uma ordem pendente, o "mercado" é seu "preço aberto pendente".

Eu a refiz e parece funcionar. Obrigado.
 
Você pode me dizer como descobrir o endereço IP atual do computador da MT?
 
Heroix:
Você pode me dizer como obter o endereço IP atual do computador da MT?
WebRequest para http://ipecho.net/plain e leia a partir do arquivo recebido. Ou WinAPI.
 

Notestador de estratégias o comandoMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) Isto acontece em situações em que, por exemplo, o instrumento é EURUSD e a moeda de saldo é RUR .... e em outras combinações. Meu entendimento é que a moeda de saldo deve ser a mesma que o nome da segunda moeda no par de moedas. Caso contrário, retorna valor zero (no testador de estratégia), o que torna impossível a realização de testes com as combinações desejadas. Como resolver este problema?

 
ikatsko:

Notestador de estratégias o comandoMarketInfo(Symbol(),MODE_TICKVALUE) = 0(!) Isto acontece em situações em que, por exemplo, o instrumento é EURUSD e a moeda de saldo é RUR .... e em outras combinações. Meu entendimento é que a moeda de saldo deve ser a mesma que o nome da segunda moeda no par de moedas. Caso contrário, retorna valor zero (no testador de estratégia), o que torna impossível a realização de testes com as combinações desejadas. Como resolver este problema?

O destaque não é correto! Eu estou calculando em euros comEURUSD, GBPUSDetc. Somente quando ativado, ele pode dar 0 até que os primeiros dados sejam recebidos, por isso coloquei uma condiçãoantes dos cálculos comTICKVALUE que se != 0;

No testador,MarketInfo() pode não funcionar, então conhecendo o preço aproximado de um tick, eu o defini com a condição IsTesting() ||| IsOptimization() ||| IsVisualMode().

 

Por favor, ajude-me a criar um furo que comercialize dois pares ao mesmo tempo.

Se no primeiro par, a variável será assim

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Dígitos);

como será para o segundo?

Ou o código para abrir um comércio pelo primeiro personagem será

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Green);

como será o código do segundo símbolo

 
pavlicos:

Por favor, ajude-me a criar um furo que comercialize dois pares ao mesmo tempo.

Se no primeiro par, a variável será assim

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Dígitos);

como será para o segundo?

Ou o código para abrir um comércio pelo primeiro personagem será

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Green);

como será o código do segundo símbolo

NULL ouSymbol() significa um par de gráficos. Você pode usar a string mySymbol = Symbol() para distingui-los, então você pode usar 2 cópias de EA nos gráficos correspondentes e atribuir símbolos mágicos diferentes para ter certeza! Boa sorte!
 
pavlicos:

Por favor, ajude-me a criar um furo que comercialize dois pares ao mesmo tempo.

Se no primeiro par, a variável será assim

double a = NormalizeDouble(iOpen(NULL,PERIOD_CURRENT, 0), Dígitos);

como será para o segundo?

Ou o código para abrir um comércio pelo primeiro personagem será

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,Ask-StopLoss*Point,Ask+TakeProfit*Point,"",0,0,Green);

como será o código do segundo símbolo

// в OnTick()
double open_nzdusd_CUR=GetNormalizeOpenPriceBySymbol("NZDUSD",Period(),0);    // цена открытия текущей свечи NZDUSD
double open_audusd_M15=GetNormalizeOpenPriceBySymbol("AUDUSD",PERIOD_M15,1);  // цена открытия прошлой свечи AUDUSD на M15
//+------------------------------------------------------------------+

// функция вне тела OnTick()
//+------------------------------------------------------------------+
double GetNormalizeOpenPriceBySymbol(string sy, int timeframe, int shift) {
   int digits=(int)SymbolInfoInteger(sy,SYMBOL_DIGITS);
   return(NormalizeDouble(iOpen(sy,timeframe,shift),digits));
}
//+------------------------------------------------------------------+

Com a abertura, aqui está apenas o próprio conceito:

string symbol="AUDUSD";
double ask=SymbolInfoDouble(symbol,SYMBOL_ASK);
double bid=SymbolInfoDouble(symbol,SYMBOL_BID);
double pt=SymbolInfoDouble(symbol,SYMBOL_POINT);
int spread=(int)SymbolInfoInteger(symbol,SYMBOL_SPREAD);
int digits=(int)SymbolInfoInteger(symbol,SYMBOL_DIGITS);
int value=(int)SymbolInfoInteger(symbol,SYMBOL_TRADE_STOPS_LEVEL);
int level=(value==0)?spread*2:value;
//---
double sl_b=(StopLoss==0)?0:NormalizeDouble(fmin(ask-StopLoss*pt,ask-(level+1)*pt),digits);
double tp_b=(TakeProfit==0)?0:NormalizeDouble(fmax(ask+TakeProfit*pt,ask+(level+1)*pt),digits);
ticket_b=OrderSend(symbol,OP_BUY,Lots,ask,3,sl_b,tp_b,"",0,0,clrGreen);
//---
double sl_s=(StopLoss==0)?0:NormalizeDouble(fmax(bid+StopLoss*pt,bid+(level+1)*pt),digits);
double tp_s=(TakeProfit==0)?0:NormalizeDouble(fmin(bid-TakeProfit*pt,bid-(level+1)*pt),digits);
ticket_s=OrderSend(symbol,OP_SELL,Lots,bid,3,sl_s,tp_s,"",0,0,clrRed);

sem verificar os códigos de retorno do servidor comercial.

 
Hoje o Navegador no terminal expandiu-se repentinamente para toda a largura da tela, obscurecendo as cartas! Era sempre a mesma largura que o Market Watch! Procurando e não conseguindo encontrar como voltar ao seu tamanho anterior! Ajude quem sabe como lidar com este novo incômodo! Obrigado!!!