u pode fazer um caso de erro no código ur e usar RefreshRates()
Eu não sei como fazer isso de improviso, mas talvez você possa fazer algo assim.
if(Trade===fase)
{
int ErrorCode= GetLastError();
if (ErrorCode=130)
{
RefreshRates();
}
}
novamente este código pode não estar correto, então você deve procurar no Google como fazer isso.
também, se você já não tiver feito a função NormalizeDouble para arredondar os números.
u pode fazer um caso de erro no código ur e usar RefreshRates()
Como isso vai ajudar ?
poderia ser uma questão temporária. ele disse que era sensível a casos, portanto, refrescar as tarifas poderia consertá-la.
poderia ser uma questão temporária. ele disse que era sensível a casos, portanto, refrescar as tarifas poderia resolvê-la.
verdade.
Raptor, eu não conheço a propagação para o comércio acima. Adicionei uma saída de log no código, na próxima vez que o erro acontecer, serei capaz de lhe dizer o spread.
Mas você pode me dizer, por que o spread é importante? De que forma eu preciso levar em conta a lança, ao determinar a perda de carga?
Eu envio um pedido com, por exemplo:
int ticket = OrderSend(Symbol(), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL, EXPERT_ID, 0, Green);
assim, a única variável predefinida que eu utilizo ao enviar pedidos é Ask
SLIPPAGE e TAKEPROFIT são ambas 0.
EXPERT_ID é um número mágico único
position_size é um inteiro, por exemplo, 3
initial_stop é meu stoploss, que é (no caso do exemplo acima) Bid - risco.
O risco é um valor maior que (MODE_STOPLEVEL * Ponto), no caso da troca no primeiro posto. O risco era: 1,35
obrigado por seus pensamentos.
Raptor, não conheço a propagação para o comércio acima. Adicionei uma saída de log no código, na próxima vez que o erro acontecer, serei capaz de lhe dizer o spread.
Mas você pode me dizer, por que o spread é importante? De que forma eu preciso levar em conta o spread, ao determinar o stoploss?
Muito bem feito para adicionar a impressão ao log para o futuro:-)
Sempre tenho que pensar muito sobre onde Spread tem que ser considerado e não . . . parece que tenho um bloqueio mental no que diz respeito . . . mas acho que tenho isto correto.
Para uma Buy it shouldn't matter, Buy at Ask, SL acontecerá na Bid, portanto o Spread já está incluído em seu OpenPrice. Para uma Venda é um assunto diferente . . você Vende na Bid e seu SL será tomado pelo preço Ask . . onde está o preço Ask ? bem que depende do spread no momento . . Acho que isto é correto, por favor, pense sobre isso e veja se faz sentido . . Estou mais do que feliz em ser corrigido se estiver errado . . . . :-)
int ticket = OrderSend(Symbol(), OP_BUY, position_size, Ask, SLIPPAGE, initial_stop, TAKEPROFIT, NULL, EXPERT_ID, 0, Green);EAs devem se ajustar para corretores de 4/5 dígitos, TP, SL, AND slippage. Nos corretores ECN, você deve abrir e ENTÃO definir paradas.
//++++ These are adjusted for 5 digit brokers. int pips2points; // slippage 3 pips 3=points 30=points double pips2dbl; // Stoploss 15 pips 0.0015 0.00150 int Digits.pips; // DoubleToStr(dbl/pips2dbl, Digits.pips) int init(){ if (Digits % 2 == 1){ // DE30=1/JPY=3/EURUSD=5 forum.mql4.com/43064#515262 pips2dbl = Point*10; pips2points = 10; Digits.pips = 1; } else { pips2dbl = Point; pips2points = 1; Digits.pips = 0; } // OrderSend(... Slippage.Pips * pips2points, Bid - StopLossPips * pips2dbl //---- These are adjusted for 5 digit brokers. /* On ECN brokers you must open first and THEN set stops int ticket = OrderSend(...) if (ticket < 0) Alert("OrderSend failed: ", GetLastError()); else if (!OrderSelect(ticket, SELECT_BY_POS)) Alert("OrderSelect failed: ", GetLastError()); else if (!OrderModify(OrderTicket()...) Alert("OrderModify failed: ", GetLastError()); */
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Você concorda com a política do site e com os termos de uso
Tenho visto muitos no fórum lutando contra este erro.
Como entendi os outros tópicos, o erro pode ser causado por
a: definição de um valor de stoploss muito próximo do preço atual
b: um número errado de dígitos após 0
Com relação a:
Como eu entendi. MarketInfo(Symbol(), MODE_STOPLEVEL)) deve me dar a distância mínima que o stoploss precisa ter.
Portanto, aqui está um exemplo de um comércio fracassado:
Marekt Info:
Data: 2011/9/15 16:31
Símbolo: #ESU1
Nível de parada: 75.00000000
Ponto: 0.01000000
Tamanho do Tick: 0,25000000
Valor do Tick: 12.50000000
Dígitos: 2.00000000
Assim, a distância mínima deve ser o nível de parada * ponto, certo? então 0,75
Então, aqui está minha ordem falhada:
2011.09.15 16:32:07 '393930': ordem de venda 18.00 #ESU1 abertura às 1201.00 sl: 1202.35 tp: 0.00 falhou [Inválido S/L ou T/P]
O erro é: 130 / paradas inválidas
O stoploss está a 1,35 de distância da abertura. Portanto, deve estar bem. Os dígitos (b) também combinam.
Então, por que eu recebo este erro?
Além disso, este erro é difícil de reproduzir. Às vezes ele aparece. Às vezes, não aparece.
Às vezes ele aparece várias vezes um após o outro.
Alguma idéia?
Obrigado de antemão!
shinobi