Perguntas de Iniciantes MQL5 MT5 MetaTrader 5 - página 1210

 
MQL_User:

Não pensei que encontraria tal problema, porque à primeira vista deveria ser uma questão natural redesenhar o gráfico a partir do programa. Nesta perspectiva, o objectivo da função ChartRedraw() não é claro...

Não se trata de indicadores, mas de exibir as alterações feitas nas propriedades dos objectos gráficos.

É necessário enviar um sinal ao indicador - depois o indicador será redesenhado. Bem, ou seja, fará o que deve fazer no novo tick.

E para enviar um novo tick, é necessário ou esperar por ele, o que não é uma opção, ou actualizar o gráfico por PCM --> Refresh, que também não é uma opção, ou usar a função ChartSetSymbolPeriod() com tais parâmetros para o gráfico actual:

ChartSetSymbolPeriod(0,NULL,PERIOD_CURRENT);
Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
Документация по MQL5: Операции с графиками / ChartSetSymbolPeriod
  • www.mql5.com
Меняет значения символа и периода указанного графика. Функция работает асинхронно, то есть отдает команду и не ждет окончания ее выполнения. Отданная команда поступает в очередь сообщений графика и выполняется только после обработки всех предыдущих команд. Возвращает true в случае удачного помещения команды в очередь графика, иначе false. Чтобы...
 


Olá, ajudem-me, escrevi um guião que abre uma ordem limite mas a preço de mercado. Todos os trabalhos, decidiram alterá-lo para colocar um limite abaixo/abaixo do mercado, nada funciona, embora o código de retorno do servidor de negociação 10009, e GetLastError() devolve 0. Código:

void OnStart()
 {MqlTradeRequest request={0};
  MqlTradeResult  result={0};
 double Bid=SymbolInfoDouble(Symbol(),SYMBOL_BID);
 double Ask=SymbolInfoDouble(Symbol(),SYMBOL_ASK);
 int digits=SymbolInfoInteger(_Symbol,SYMBOL_DIGITS);  
 double p=NormalizeDouble(ChartPriceOnDropped(),digits); 
 if( SymbolInfoDouble(_Symbol,SYMBOL_TRADE_TICK_SIZE)==10)
 {p=NormalizeDouble(ChartPriceOnDropped()*0.1,digits)/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    =Ask;                                    // цена для открытия
             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);
            }
se pedido.preço, por exemplo: Ask-Point()*30 não o define, a normalização do preço também não dá nada
 
Artem, o que pode dizer, à pergunta acima, opinião interessante. como uma experiência de aprendizagem.
 
Artyom Trishkin:

Isto não é para indicadores, mas para mostrar as alterações feitas às propriedades dos objectos gráficos.

É necessário enviar um tique ao indicador - depois o indicador volta a ser desenhado. Ou seja, fará o que deve fazer na nova carraça.

Para enviar um novo tick tem de esperar por ele, o que não é uma opção, ou para actualizar o gráfico usando PKM --> Refresh, que também não é uma opção, ou para usar ChartSetSymbolPeriod() com estes parâmetros para o gráfico actual:

Artem, obrigado.

Está tudo a funcionar. :)

 
Alguém sabe como desactivar a visualização de todos os indicadores utilizados na EA no gráfico durante os testes visuais?
 
Сергей Таболин:
Alguém sabe como desactivar a exibição de todos os indicadores utilizados na EA no gráfico durante os testes visuais?

TesterHideIndicators(true);

 

Como posso saber se o indicador não está pronto para trabalhar com outro período de tempo?

A história não é de paginação (não construída) para prazos adjacentes. O indicador funciona em M15, mas preciso de olhar para H1 (no topo do gráfico M15), quando o mudo - o gráfico está vazio. Quando me refresco num par de segundos - beleza, todos os amortecedores são renderizados.

Como posso fazer o indicador verificar o histórico num outro período de tempo e manter o cálculo até aparecer?

 
Igor Zakharov:

TesterHideIndicators(true);

Muito obrigado ))))

 

Não consigo obter valores ATP a partir de outro período de tempo:

ATR_handle=iATR(_Symbol,ATR_TF,ATR_Period);
CopyBuffer(ATR_handle,0,time[i],1,ATR);

do prazo actual - funciona. de prazos superiores - sempre 0

 

Em futuros, como se cria um contrato contínuo? para análise de cartas técnicas?

Razão: