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
Não é você que precisa de uma pausa.
Globalmente, há duas maneiras:
1) análise do ambiente (sucção no histórico das transações, verificação da posição aberta ou do volume da posição);
2) análise das transações.
O primeiro trabalha mais lentamente. Mas é mais confiável. Precisamos de um compromisso. Talvez tenhamos que olhar para a estratégia e depender dela.
Sim, a FORTS tem um ticker completo, portanto não se deve trabalhar com carrapatos, mas com o evento BookEvent.
É estranho que Vasily Sokolov não tenha se pronunciado sobre este assunto. Seu ponto de vista é interessante...
De qualquer forma, o ponto principal, imho, é este.
Globalmente, há duas maneiras:
1) análise do ambiente (sucção no histórico das transações, verificação da posição aberta ou do volume da posição);
2) análise das transações.
O primeiro trabalha mais lentamente. Mas é mais confiável. Precisamos de um compromisso. Talvez tenhamos que olhar para a estratégia e depender dela.
Sim, a FORTS tem um ticker completo, portanto não se deve trabalhar com carrapatos, mas com o evento BookEvent.
É estranho que Vasily Sokolov não tenha se pronunciado sobre este assunto. Seu ponto de vista é interessante...
De qualquer forma, o ponto principal, imho, é este.
Globalmente, há duas maneiras:
1) análise do ambiente (sucção no histórico das transações, verificação da posição aberta ou do volume da posição);
2) análise das transações.
O primeiro trabalha mais lentamente. Mas é mais confiável. Precisamos de um compromisso. Talvez tenhamos que olhar para a estratégia e depender dela.
Sim, a FORTS tem um ticker completo, portanto não se deve trabalhar com carrapatos, mas com o evento BookEvent.
É estranho que Vasily Sokolov não tenha se pronunciado sobre este assunto. Seu ponto de vista é interessante...
ou seja, posso transferir minha estratégia para lá completamente?
Uma vez trabalhei nesta ordem e escrevi a classe CiOnTrade:
Portanto, a solução ideal que encontrei foi o processamento dos estados. E eram tantos:
{
TRADE_STATE_NONE=0, // "ничего"
TRADE_STATE_ORDERS=1, // "только ордера"
TRADE_STATE_POSITION=2, // "только позиция"
TRADE_STATE_ALL=3, // "все"
};
2) "Somente ordens" - este é o estado quando as ordens são colocadas.
3) "Somente posição" é o estado quando as ordens são totalmente executadas.
4) "Todos" é o estado quando as ordens não foram executadas completamente e já existe uma posição no mercado.
Portanto, cada estado tinha que ser processado. Sim, a propósito, admito que também existem estados intermediários. Assim, minha classe poderia ser melhorada.
A propósito, surgiu uma pergunta: o eventoBookEvent pode ser usado da mesma forma que o Tick ou o Timer?
ou seja, posso transferir completamente minha estratégia para lá?
Sim! Mas considere que o copo tem mais probabilidade de gerar eventos. Portanto, você precisa de algum filtro para peneirar eventos desnecessários. Por exemplo, os preços não mudaram, mas apenas volumes de algumas licitações.
O ponto principal, imho, é este.
Globalmente, há duas formas:
1) análise do ambiente (sugando o histórico das transações, verificando posição aberta ou volume da posição);
2) análise das transações.
O primeiro trabalha mais lentamente. Mas é mais confiável. Deve haver um compromisso. Talvez tenhamos que olhar para a estratégia e depender dela.
Presumo que a informação sobre o acordo ainda não tenha chegado. Aqui (marcado em vermelho), você conta com a sorte. E ela é uma senhora caprichosa :-))
{
MqlTradeRequest Request;
MqlTradeResult Results;
ZeroMemory(Request);
ZeroMemory(Results);
Request.price=SymbolInfoDouble(_Symbol,SYMBOL_BID);
Request.action=TRADE_ACTION_DEAL;
Request.type=ORDER_TYPE_SELL;
Request.symbol=symbol;
Request.volume=volume;
Request.deviation=deviation;
Request.comment=comment;
Request.type_filling=filling;
bool res=false;
res=OrderSend(Request,Results);
if(res)
{
if(Results.deal>0) return(true);
else return(false);
}
return(false);
}
Mesmo comORDER_STATE_FILLED, Results.order pode ter um problema - Results.deal é zero. A reprodução 100% desta situação é obtida no servidor FXOpen-MT5.
Recomendo abrir muitas demonstrações em diferentes servidores e conseguir a funcionalidade total do código. Eu o fiz para o MT4 bíblico. É por isso que não há problema com o subgame.
OrderSend+Sleep(0) não é mais lento que OrderSend+OnTradeTransaction. Eu o medi. Portanto, não utilizo a segunda variante não para transações assíncronas.
A variante OrderSend+Sleep(0) é temporária, porque é uma falha dos desenvolvedores (não a use como exemplo :) ).
Quando for corrigido, somente OrderSend permanecerá