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
Você pode ver os comentários, que tiveram que ser retirados.
O objetivo de TradeOrdersArray e ClosedOrdersArray é descrito aqui. E mais alguns.
As funções CorrectPrice() e DrawArrowOnChart() ainda não foram definidas.
Eu afixei aqui - http://forexsystems.ru/phpBB/viewtopic.php?p=4380#4380
Teve que arrastar todas as variáveis do bloco init() para o cabeçalho - caso contrário, as variáveis não são visíveis. Meu primeiro erro.
A segunda é que o compilador está jurando pela minha tentativa de definir o valor padrão de um parâmetro na função como NULL.
Em terceiro lugar, o compilador não trava quando uma função indefinida/infinida (CorrectPrice() e DrawArrowOnChart() ) é encontrada no código.
Talvez tropeçe na NULL e não reclame mais.
A definição da função é estúpida - copiei do dicionário, então se os desenvolvedores me culparem pela declaração errada ....
//+------------------------------------------------------------------+ //| Redefine OrderSend() function | //+------------------------------------------------------------------+ int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=[b]NULL[/b],int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) { if (CorrectPrice(symbol,cmd,price,myCurrentTime)) { TradeOrdersArray[myOrdersTotal,0]= symbol; TradeOrdersArray[myOrdersTotal,1]=pool_pos; TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1; TradeOrdersArray[myOrdersTotal,3]=cmd; TradeOrdersArray[myOrdersTotal,4]=volume; TradeOrdersArray[myOrdersTotal,5]=price; TradeOrdersArray[myOrdersTotal,6]=slippage; TradeOrdersArray[myOrdersTotal,7]=stoploss; TradeOrdersArray[myOrdersTotal,8]=stoploss; TradeOrdersArray[myOrdersTotal,9]=comment; TradeOrdersArray[myOrdersTotal,10]=magic; TradeOrdersArray[myOrdersTotal,11]=myCurrentTime; DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color); myOrderTicket++; myOrdersTotal++; pool_pos++; return(myOrderTicket); } else return(-1); }Amanhã vou tentar redefinir OrderClose() - será mais fácil explicar a idéia de teste lá.
PS Duas pessoas já fizeram o download - há esperança
Rosh, eu descobri como inserir texto russo neste fórum (eu mesmo tive que descobrir :)
Quando você copia o código no editor, você deve colocá-lo em russo. E quando você cola em um fórum, respectivamente, também.
E todos os comentários serão salvos ;)
Aqui está um bom exemplo para a discussão sobre o operador vazio.
A conversão do tipo implícito é muito pior e mais perigosa do que ";" após um parêntese.
Neste caso, temos um erro explícito, mas o compilador não gerará sequer um aviso.
Rosh,
a página desapareceu novamente.
int fut_OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) { if (CorrectPrice(symbol,cmd,price,myCurrentTime)) { TradeOrdersArray[myOrdersTotal,0]= symbol;// записали иструмент TradeOrdersArray[myOrdersTotal,1]=pool_pos;// записали номер в списке терминала TradeOrdersArray[myOrdersTotal,2]=myOrderTicket+1;// записали номер тикета у брокера TradeOrdersArray[myOrdersTotal,3]=cmd;// записали тип ордера TradeOrdersArray[myOrdersTotal,4]=volume;// записали размер ордера TradeOrdersArray[myOrdersTotal,5]=price;// записали цену открытия TradeOrdersArray[myOrdersTotal,6]=slippage;// записали проскальзывание в пунктах TradeOrdersArray[myOrdersTotal,7]=stoploss;// записали stoploss TradeOrdersArray[myOrdersTotal,8]=stoploss;// записали takeprofit TradeOrdersArray[myOrdersTotal,9]=comment;// записали комментарии TradeOrdersArray[myOrdersTotal,10]=magic;// записали MagicNumber TradeOrdersArray[myOrdersTotal,11]=myCurrentTime;// записали дату выставления/открытия ордера DrawArrowOnChart(symbol,myCurrentTime,price,arrow_color); myOrderTicket++; myOrdersTotal++; pool_pos++; return(myOrderTicket); } else return(-1); } //+------------------------------------------------------------------+Eu só queria que Renat olhasse para ele mesmo e encontrasse o erro.
Mas eles não parecem olhar aqui ou achar que meu posto é estúpido.
(citação - "não respondemos a perguntas estúpidas ..." - :))
Este é o tema das desvantagens da sintaxe MQL (e/ou compilador).
O compilador não responderá a este erro, mesmo que possa adverti-lo sobre ele.
Eu simplesmente proibiria tais erros em um idioma (conversão de tipo implícito).
Para ser específico.
A matriz TradeOrdersArray tem tipo duplo.
Em vários lugares, você lhe atribuiu valores de corda.
Por exemplo:
O compilador vai comer tudo, e até mesmo o testador vai funcionar, mas não da maneira que você queria.
E é difícil procurar tal erro, especialmente se ele foi cometido há um mês,
e só apareceu hoje quando você acrescentou algumas linhas ao programa.
(Plz., conserte o roteiro - a página desapareceu, não é conveniente olhar).
Aqui está esta declaração
Mas eu acabei de copiar do dicionário por padrão.
Suspeito que você não possa.
Somente em 2 matrizes diferentes.