Na coluna Especialistas: 2018.05.14 12:08:17.578 LIMIT (Si-6.18,M15) Alerta: 10009, nada mais
Bem, aqui está como ajudá-lo? Primeiro você escreve que o Sell Limit não é exibido, você dá extratos do log. E agora estamos falando de uma ordem de compra limite. Portanto, o problema deve ser flutuante. Além disso, você nunca citou a lei. Você afirma que a ordem não é visível na realidade. E o estatuto pode ajudar a esclarecer a situação.
voidOnStart()
{MqlTradeRequest request={0};
MqlTradeResult result={0};
doubleBid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
doubleAsk=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);
double p=NormalizeDouble(ChartPriceOnDropped(),digits);
if( SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)==10)
{p=MathRound(ChartPriceOnDropped()*0.1)/0.1;
}
int V=75;
if (p<Ask)
{
request.action =TRADE_ACTION_PENDING; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((Ask-p)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
}
request.type =ORDER_TYPE_BUY_LIMIT; // тип ордера
request.price =NormalizeDouble(Ask-SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // цена для открытия
request.deviation=50; // допустимое отклонение от цены
request.sl =p; // Stop Loss позиции
request.tp =NormalizeDouble(Ask+(Ask-p)*3,digits); // Take Profit позиции
request.type_filling=ORDER_FILLING_IOC;
request.type_time=ORDER_TIME_DAY;
request.stoplimit=Ask;
OrderSend(request,result);
}
if (p>Bid)
{
request.action =TRADE_ACTION_PENDING; // тип торговой операции
request.symbol =Symbol(); // символ
request.volume =MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/V/((p-Bid)/
SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)*SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_VALUE)));
if (request.volume>AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL))
{ request.volume=MathFloor(AccountInfoDouble(ACCOUNT_BALANCE)/SymbolInfoDouble(_Symbol,SYMBOL_MARGIN_INITIAL));
} // объем
request.type =ORDER_TYPE_SELL_LIMIT; // тип ордера
request.price =NormalizeDouble(Bid+SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE),digits); // цена для открытия
request.deviation=50; // допустимое отклонение от цены
request.sl =p; // Stop Loss позиции
request.tp =NormalizeDouble(Bid-(p-Bid)*3,digits); // Take Profit позиции
request.type_time=ORDER_TIME_DAY;
request.type_filling=ORDER_FILLING_IOC;
request.stoplimit=Bid;
OrderSend(request,result);
}
Alert(result.retcode);
return;
}
Como posso ajudá-los? Primeiro, você escreve que Sell Limit não está sendo colocado, e você dá trechos do registro. Agora estamos falando de uma ordem de compra limite. Portanto, o problema deve ser flutuante. Além disso, você nunca citou a lei. Você afirma que a ordem não é visível na realidade. O estatuto pode ajudá-lo a esclarecer a situação.
Não há limite de venda nem limite de compra,Alert(result.retcode) retorna 10009. Onde posso obter esta "estatuição", o que preciso fazer?
Executar este código por minha conta. Note que você receberá um erro de divisão de 0 nos símbolos não-binários, pois não há margem de inicialização lá.
No código onde eu consegui executá-lo, tive que adicionar uma verificação de volume. Caso contrário, o volume era igual a zero:
if (request.volume < SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN))
request.volume = SymbolInfoDouble(_Symbol, SYMBOL_VOLUME_MIN);
Depois disso, o pedido é feito com sucesso. Observe também que ele aciona muito rapidamente - está próximo do preço. Portanto, a ordem em si pode não ser notada por você. Ela é convertida em uma posição ou anexada a ela se o tipo de conta for netting.
Não há limite de venda nem limite de compra,Alert(result.retcode) retorna 10009. Onde posso obter este "retcode", o que devo fazer?
A aba "História" da janela "Caixa de ferramentas". No menu de contexto, selecione "Ordens". Em seguida, selecione "Relatório" no menu de contexto - "HTML". Mas você provavelmente poderá ver por si mesmo por que o pedido está faltando: seu status será marcado como "preenchido".
Executar este código por minha conta. Note que você receberá um erro de divisão de 0 nos símbolos não-binários, pois não há margem de inicialização lá.
No código onde eu consegui executá-lo, tive que adicionar uma verificação de volume. Caso contrário, o volume era igual a zero:
Depois disso, o pedido é feito com sucesso. Observe também que ele aciona muito rapidamente - está próximo do preço. Portanto, a ordem em si pode não ser notada por você. Ela é convertida em uma posição ou anexada a ela se o tipo de conta for netting.
No final do código também Alert(result.retcode);
no diário de bordo geral:
2018.05.14 12:08:16.984 Scripts script LIMIT (Si-6.18,M15) carregado com sucesso
2018.05.14 12:08:17.187 Comércios '992940': limite de compra 3,00 Si-6,18 a 62091 (62092) sl: 61821 tp: 62905
2018.05.14 12:08:17.484 Comércios '992940': limite de compra aceito 3,00 Si-6,18 a 62091 (62092) sl: 61821 tp: 62905
2018.05.14 12:08:17.500 Negociações '992940': limite de compra 3,00 Si-6,18 a 62091 (62092) sl: 61821 tp: 62905 colocado para execução
2018.05.14 12:08:17.546 Comércios '992940': pedido #13235300 limite de compra 3,00 / 3,00 Si-6,18 a 62091 feito em 337.532 ms
2018.05.14 12:08:17.578 Scripts script LIMIT (Si-6.18,M15) removido
Na coluna Especialistas: 2018.05.14 12:08:17.578 LIMIT (Si-6.18,M15) Alerta: 10009, nada mais
Bem, aqui está como ajudá-lo? Primeiro você escreve que o Sell Limit não é exibido, você dá extratos do log. E agora estamos falando de uma ordem de compra limite. Portanto, o problema deve ser flutuante. Além disso, você nunca citou a lei. Você afirma que a ordem não é visível na realidade. E o estatuto pode ajudar a esclarecer a situação.
Como posso ajudá-los? Primeiro, você escreve que Sell Limit não está sendo colocado, e você dá trechos do registro. Agora estamos falando de uma ordem de compra limite. Portanto, o problema deve ser flutuante. Além disso, você nunca citou a lei. Você afirma que a ordem não é visível na realidade. O estatuto pode ajudá-lo a esclarecer a situação.
Não há limite de venda nem limite de compra, Alert(result.retcode) retorna 10009. Onde posso obter esta "estatuição", o que preciso fazer?
Executar este código por minha conta. Note que você receberá um erro de divisão de 0 nos símbolos não-binários, pois não há margem de inicialização lá.
No código onde eu consegui executá-lo, tive que adicionar uma verificação de volume. Caso contrário, o volume era igual a zero:
Depois disso, o pedido é feito com sucesso. Observe também que ele aciona muito rapidamente - está próximo do preço. Portanto, a ordem em si pode não ser notada por você. Ela é convertida em uma posição ou anexada a ela se o tipo de conta for netting.
Não há limite de venda nem limite de compra, Alert(result.retcode) retorna 10009. Onde posso obter este "retcode", o que devo fazer?
A aba "História" da janela "Caixa de ferramentas". No menu de contexto, selecione "Ordens". Em seguida, selecione "Relatório" no menu de contexto - "HTML". Mas você provavelmente poderá ver por si mesmo por que o pedido está faltando: seu status será marcado como "preenchido".
Encontrei meu roteiro de 2009, mas agora compila com um aviso:'M' - sequência de fuga de caracteres não reconhecidos 1.mq4 66 37
Você pode me dizer o que devo ajustar na linha para compilar corretamente?
Executar este código por minha conta. Note que você receberá um erro de divisão de 0 nos símbolos não-binários, pois não há margem de inicialização lá.
No código onde eu consegui executá-lo, tive que adicionar uma verificação de volume. Caso contrário, o volume era igual a zero:
Depois disso, o pedido é feito com sucesso. Observe também que ele aciona muito rapidamente - está próximo do preço. Portanto, a ordem em si pode não ser notada por você. Ela é convertida em uma posição ou anexada a ela se o tipo de conta for netting.
Encontrei meu roteiro de 2009, mas agora compila com um aviso:'M' - sequência de fuga de caracteres não reconhecidos 1.mq4 66 37
Você pode me dizer o que devo ajustar na linha para compilar corretamente?
Colocar uma dupla contrabarra antes da MQL4