Verifiquei-o na vida real, coloquei-o no gráfico, ele abriu uma posição, depois alterou o tempo para que fosse além do vencimento do símbolo atual, o robô fechou a posição e já a abriu em outro endereço.
Está tudo certo... mas há uma desvantagem, ele fecha, abre, mas o gráfico em que o robô está permanece antigo, seria bom que com a abertura de uma posição em um novo futuro e o próprio instrumento mudasse, para que não fosse necessário mover o robô para um novo futuro manualmente.
Adicionei uma linha
//+------------------------------------------------------------------+ void CheckPos(string sym, string & TradeFutures, double lot) { if(SymbolInfoInteger(TradeFutures,SYMBOL_EXPIRATION_TIME)-TimeCurrent()<hours_before_expiration*60*60) { trade.PositionClose(TradeFutures); Sleep(3000); SymbolSelect(TradeFutures,false); TradeFutures=NextFutures(sym); } if(!PositionSelect(TradeFutures)) { if(lot>0) trade.Buy(lot,TradeFutures); if(lot<0) trade.Sell(-lot,TradeFutures); ChartSetSymbolPeriod(0,TradeFutures,PERIOD_CURRENT); Sleep(3000); } } //+------------------------------------------------------------------+
Tudo está mudando bem.
Obrigado pelo exemplo.
Eu adicionei uma linha
Tudo muda sem problemas.
Obrigado pelo exemplo.
Se o Expert Advisor negociar vários instrumentos, acho que não faz sentido trocar o gráfico. Você pode colocá-lo em uma cola.
Isso é apenas um exemplo, fica a critério do proprietário.
Para negociações reais, eu descartaria o Sleeps e faria uma verificação normal da execução da ordem. Mas eu não queria sobrecarregar a essência do exemplo, esse é outro tópico.
Se o Expert Advisor negociar vários instrumentos, acho que não faz sentido trocar o gráfico. É possível colocá-lo em uma cola.
Esse é apenas um exemplo, fica a critério do proprietário.
Em uma negociação real, eu descartaria o Sleeps e faria uma verificação normal da execução da ordem. Mas eu não queria sobrecarregar a essência do exemplo, é outro tópico.
Concordo plenamente com você, mas preciso de um algoritmo que feche a posição do dia, remova todos os limitadores, o robô mude para outro contrato futuro com uma mudança no cronograma de negociação e inicie uma nova negociação com uma folha limpa no novo contrato futuro.
Como se eu tivesse feito tudo isso, mas havia um problema que eu não conseguia descobrir como contornar
Por exemplo, adicionando
ChartSetSymbolPeriod(0,TradeFutures,PERIOD_CURRENT);
O gráfico muda, mas se eu tentar clicar em timeframes após a transição, por exemplo, M5, M30 etc., o robô retornará no próximo tick o TF no qual ele mudou o gráfico de futuros.
Também planejei fazer uma escolha forçada do instrumento negociado nas configurações, por exemplo, colocamos petróleo (de acordo com a sua escolha), mas o robô é lançado para rts, ao inicializar o gráfico muda para oil.... Eu fiz tudo isso, mas ao mudar para outro futuro no vencimento, há um looping, o robô inicializou quando definido como BR-5.18, então há uma mudança para 6.18 com uma mudança de gráfico e aqui em cada tick começa a mudar de 6.18 para 5.18 e volta....
Não encontrei exemplos desse tipo de trabalho no banco de dados. Talvez isso seja feito por meio de verificações, sinalizadores etc., mas ainda não descobri como fazer isso. Ficaria grato se me desse um pontapé na direção certa, acho que não sou o único... Seria ótimo ver um exemplo estendido do V2, acho que todos concordarão comigo que esse algoritmo de transição e mudança de cronograma de negociação deve ser incorporado por padrão em todos os robôs que negociam no FORTS, talvez os próprios desenvolvedores o adicionem à sua biblioteca.
- 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
Futures Portfolio Control Expiration:
Expert Advisor de portfólio para o mercado MOEX FORTS.
Autor: Sergey Chalyshev