Discussão do artigo "Negociação usando canais Donchian"

 

Novo artigo Negociação usando canais Donchian foi publicado:

No artigo, são desenvolvidas e testadas várias estratégias com base no canal Donchian com a utilização de diferentes indicadores de filtro. São realizadas a pesquisa e a análise comparativa de seu funcionamento.

Condições deste sistema:

  • Rompimento da borda superior ou inferior do canal Donchian.
  • A linha principal de força de tendência ADX deve estar acima do nível predefinido ADX Level.
  • Se houver rompimento da linha superior, DI+ deve ser superior a DI-. Por conseguinte, se o rompimento ocorrer para baixo, DI- superior a DI+.

Fig.2. Condições de entrada no mercado para estratégia canal Donchian+ADX

Autor: Alexander Fedosov

 

Canal Donchian == ZigZag padrão - portanto, o sinal será muito atrasado.

O canal de Donchian é bom para arrastar e obter lucro em uma tendência contrária.

 
'DonchianExpert.mq5' DonchianExpert.mq5 1 1
'TradeFunctions.mqh' TradeFunctions.mqh 1 1
'PositionInfo.mqh' PositionInfo.mqh 1 1
'Object.mqh' Object.mqh 1 1
'StdLibErr.mqh' StdLibErr.mqh 1 1
'SymbolInfo.mqh' SymbolInfo.mqh 1 1
'Trailing.mqh' Trailing.mqh 1 1
'DonchianUI.mqh' DonchianUI.mqh 1 1
Não é possível abrir o arquivo de inclusão "C:\Program Files\RoboForex - MetaTrader 5\MQL5\include\EasyAndFastGUI\WndEvents.mqh" DonchianUI.mqh 6 11
'CWndEvents' - declaração sem tipo DonchianUI.mqh 10 28
'CWndEvents' - erro de sintaxe DonchianUI.mqh 10 28
'CDonchianUI' - função de membro não definida DonchianUI.mqh 51 14
'~CDonchianUI' - função membro não definida DonchianUI.mqh 57 15
'OnInitEvent' - função membro não definida DonchianUI.mqh 63 19
'OnDeinitEvent' - função de membro não definida DonchianUI.mqh 69 19
'OnTimerEvent' - função de membro não definida DonchianUI.mqh 77 19
'OnEvent' - função membro não definida DonchianUI.mqh 97 19
'CreateMainPanel' - função membro não definida DonchianUI.mqh 113 19
'CreateStatusBar' - função membro não definida DonchianUI.mqh 141 19
'CreateLabel1' - função membro não definida DonchianUI.mqh 168 19
'CreateLabel2' - função membro não definida DonchianUI.mqh 187 19
'CreateLabel3' - função membro não definida DonchianUI.mqh 206 19
'CreateCanvasTable' - função membro não definida DonchianUI.mqh 224 19
'CDonchianUI' - struct indefinida DonchianExpert.mq5 19 1
'CWndEvents' - importação não definida DonchianUI.mqh 72 4
')' - Esperava-se ponto e vírgula DonchianUI.mqh 73 3
'OnTimerEvent' - função já definida e com corpo DonchianUI.mqh 77 19
'OnTimerEvent' - a declaração não é permitida para o escopo atual DonchianUI.mqh 77 19
'OnEvent' - a função já está definida e tem corpo DonchianUI.mqh 97 19
'OnEvent' - a declaração não é permitida para o escopo atual DonchianUI.mqh 97 19
'CreateMainPanel' - função já definida e com corpo DonchianUI.mqh 113 19
'CreateMainPanel' - a declaração não é permitida para o escopo atual DonchianUI.mqh 113 19
'CreateStatusBar' - a função já está definida e tem corpo DonchianUI.mqh 141 19
'CreateStatusBar' - a declaração não é permitida para o escopo atual DonchianUI.mqh 141 19
'CreateLabel1' - a função já está definida e tem corpo DonchianUI.mqh 168 19
'CreateLabel1' - a declaração não é permitida para o escopo atual DonchianUI.mqh 168 19
'CreateLabel2' - a função já está definida e tem corpo DonchianUI.mqh 187 19
'CreateLabel2' - a declaração não é permitida para o escopo atual DonchianUI.mqh 187 19
'CreateLabel3' - a função já está definida e tem corpo DonchianUI.mqh 206 19
'CreateLabel3' - a declaração não é permitida para o escopo atual DonchianUI.mqh 206 19
'CreateCanvasTable' - função já definida e com corpo DonchianUI.mqh 224 19
'CreateCanvasTable' - a declaração não é permitida para o escopo atual DonchianUI.mqh 224 19
A declaração de 'Trade' oculta a declaração global na linha 17 DonchianExpert.mq5 17 13
Veja a declaração anterior de 'Trade' DonchianExpert.mq5 17 13
A declaração de 'Trall' oculta a declaração global na linha 18 DonchianExpert.mq5 18 13
Veja a declaração anterior de 'Trall' DonchianExpert.mq5 18 13
'CDonchianUI' - struct undefined DonchianExpert.mq5 19 1
A declaração de 'UI' oculta a declaração global na linha 19 DonchianExpert.mq5 19 13
veja a declaração anterior de 'UI' DonchianExpert.mq5 19 13
enumeração já definida DonchianExpert.mq5 23 6
'Donchian' - identificador de enumerador já definido DonchianExpert.mq5 25 4
'Donchian_ADX' - identificador de enumerador já definido DonchianExpert.mq5 26 4
'Donchian_MACD' - identificador de enumerador já definido DonchianExpert.mq5 27 4
'Donchian_AvrSpeed_RSI' - identificador do enumerador já definido DonchianExpert.mq5 28 4
enumeration already defined DonchianExpert.mq5 33 6
'HIGH_LOW' - identificador de enumerador já definido DonchianExpert.mq5 35 4
'HIGH_LOW_OPEN' - identificador do enumerador já definido DonchianExpert.mq5 36 4
'HIGH_LOW_CLOSE' - identificador do enumerador já definido DonchianExpert.mq5 37 4
'OPEN_HIGH_LOW' - identificador do enumerador já definido DonchianExpert.mq5 38 4
'CLOSE_HIGH_LOW' - identificador do enumerador já definido DonchianExpert.mq5 39 4
'sinput' - token inesperado DonchianExpert.mq5 44 1
A declaração de 'Inp_EaComment' oculta a declaração global na linha 44 DonchianExpert.mq5 44 28
Veja a declaração anterior de 'Inp_EaComment' DonchianExpert.mq5 44 28
'input' - token inesperado DonchianExpert.mq5 45 1
A declaração de 'Inp_Lot' oculta a declaração global na linha 45 DonchianExpert.mq5 45 28
Veja a declaração anterior de 'Inp_Lot' DonchianExpert.mq5 45 28
'input' - token inesperado DonchianExpert.mq5 46 1
A declaração de 'Inp_MMode' oculta a declaração global na linha 46 DonchianExpert.mq5 46 28
Veja a declaração anterior de 'Inp_MMode' DonchianExpert.mq5 46 28
'input' - token inesperado DonchianExpert.mq5 47 1
A declaração de 'Inp_MagicNum' oculta a declaração global na linha 47 DonchianExpert.mq5 47 28
Veja a declaração anterior de 'Inp_MagicNum' DonchianExpert.mq5 47 28
'input' - token inesperado DonchianExpert.mq5 48 1
A declaração de 'Inp_StopLoss' oculta a declaração global na linha 48 DonchianExpert.mq5 48 28
Veja a declaração anterior de 'Inp_StopLoss' DonchianExpert.mq5 48 28
'input' - token inesperado DonchianExpert.mq5 49 1
A declaração de 'Inp_TakeProfit' oculta a declaração global na linha 49 DonchianExpert.mq5 49 28
Veja a declaração anterior de 'Inp_TakeProfit' DonchianExpert.mq5 49 28
'input' - token inesperado DonchianExpert.mq5 50 1
A declaração de 'Inp_Deviation' oculta a declaração global na linha 50 DonchianExpert.mq5 50 28
Veja a declaração anterior de 'Inp_Deviation' DonchianExpert.mq5 50 28
'input' - token inesperado DonchianExpert.mq5 51 1
A declaração de 'InpInd_Timeframe' oculta a declaração global na linha 51 DonchianExpert.mq5 51 28
Veja a declaração anterior de 'InpInd_Timeframe' DonchianExpert.mq5 51 28
'input' - token inesperado DonchianExpert.mq5 52 1
A declaração de 'InfoPanel' oculta a declaração global na linha 52 DonchianExpert.mq5 52 28
Veja a declaração anterior de 'InfoPanel' DonchianExpert.mq5 52 28
'input' - token inesperado DonchianExpert.mq5 55 1
A declaração de 'DonchianPeriod' oculta a declaração global na linha 55 DonchianExpert.mq5 55 28
Veja a declaração anterior de 'DonchianPeriod' DonchianExpert.mq5 55 28
'input' - token inesperado DonchianExpert.mq5 56 1
A declaração de 'Extremes' oculta a declaração global na linha 56 DonchianExpert.mq5 56 28
Veja a declaração anterior de 'Extremes' DonchianExpert.mq5 56 28
'input' - token inesperado DonchianExpert.mq5 59 1
A declaração de 'CurStrategy' oculta a declaração global na linha 59 DonchianExpert.mq5 59 28
Veja a declaração anterior de 'CurStrategy' DonchianExpert.mq5 59 28
'input' - token inesperado DonchianExpert.mq5 62 1
A declaração de 'ADX_period' oculta a declaração global na linha 62 DonchianExpert.mq5 62 28
Veja a declaração anterior de 'ADX_period' DonchianExpert.mq5 62 28
'input' - token inesperado DonchianExpert.mq5 63 1
A declaração de 'ADX_level' oculta a declaração global na linha 63 DonchianExpert.mq5 63 28
Veja a declaração anterior de 'ADX_level' DonchianExpert.mq5 63 28
'input' - token inesperado DonchianExpert.mq5 66 1
A declaração de 'InpFastEMA' oculta a declaração global na linha 66 DonchianExpert.mq5 66 28
Veja a declaração anterior de 'InpFastEMA' DonchianExpert.mq5 66 28
'input' - token inesperado DonchianExpert.mq5 67 1
A declaração de 'InpSlowEMA' oculta a declaração global na linha 67 DonchianExpert.mq5 67 28
Veja a declaração anterior de 'InpSlowEMA' DonchianExpert.mq5 67 28
'input' - token inesperado DonchianExpert.mq5 68 1
A declaração de 'InpSignalSMA' oculta a declaração global na linha 68 DonchianExpert.mq5 68 28
Veja a declaração anterior de 'InpSignalSMA' DonchianExpert.mq5 68 28
'input' - token inesperado DonchianExpert.mq5 69 1
A declaração de 'InpAppliedPrice' oculta a declaração global na linha 69 DonchianExpert.mq5 69 28
Veja a declaração anterior de 'InpAppliedPrice' DonchianExpert.mq5 69 28
'input' - token inesperado DonchianExpert.mq5 72 1
A declaração de 'Inp_Bars' oculta a declaração global na linha 72 DonchianExpert.mq5 72 28
Veja a declaração anterior de 'Inp_Bars' DonchianExpert.mq5 72 28
'input' - token inesperado DonchianExpert.mq5 73 1
A declaração de 'Price' oculta a declaração global na linha 73 DonchianExpert.mq5 73 28
Veja a declaração anterior de 'Price' DonchianExpert.mq5 73 28
'input' - token inesperado DonchianExpert.mq5 74 1
A declaração de 'Trend_lev' oculta a declaração global na linha 74 DonchianExpert.mq5 74 28
Veja a declaração anterior de 'Trend_lev' DonchianExpert.mq5 74 28
'input' - token inesperado DonchianExpert.mq5 77 1
A declaração de 'RSIperiod1' oculta a declaração global na linha 77 DonchianExpert.mq5 77 28
Veja a declaração anterior de 'RSIperiod1' DonchianExpert.mq5 77 28
'input' - token inesperado DonchianExpert.mq5 78 1
A declaração de 'RSIperiod2' oculta a declaração global na linha 78 DonchianExpert.mq5 78 28
Veja a declaração anterior de 'RSIperiod2' DonchianExpert.mq5 78 28
'input' - token inesperado DonchianExpert.mq5 79 1
A declaração de 'RSIperiod3' oculta a declaração global na linha 79 DonchianExpert.mq5 79 28
Veja a declaração anterior de 'RSIperiod3' DonchianExpert.mq5 79 28
'input' - token inesperado DonchianExpert.mq5 80 1
A declaração de 'RSIperiod4' oculta a declaração global na linha 80 DonchianExpert.mq5 80 28
Veja a declaração anterior de 'RSIperiod4' DonchianExpert.mq5 80 28
'input' - token inesperado DonchianExpert.mq5 81 1
A declaração de 'Applied_price' oculta a declaração global na linha 81 DonchianExpert.mq5 81 28
Veja a declaração anterior de 'Applied_price' DonchianExpert.mq5 81 28
'input' - token inesperado DonchianExpert.mq5 82 1
A declaração de 'rsiUpperTrigger' oculta a declaração global na linha 82 DonchianExpert.mq5 82 28
Veja a declaração anterior de 'rsiUpperTrigger' DonchianExpert.mq5 82 28
'input' - token inesperado DonchianExpert.mq5 83 1
A declaração de 'rsiLowerTrigger' oculta a declaração global na linha 83 DonchianExpert.mq5 83 28
Veja a declaração anterior de 'rsiLowerTrigger' DonchianExpert.mq5 83 28
'input' - token inesperado DonchianExpert.mq5 86 1
A declaração de 'UseTrailing' oculta a declaração global na linha 86 DonchianExpert.mq5 86 28
Veja a declaração anterior de 'UseTrailing' DonchianExpert.mq5 86 28
'input' - token inesperado DonchianExpert.mq5 87 1
A declaração de 'VirtualTrailingStop' oculta a declaração global na linha 87 DonchianExpert.mq5 87 28
Veja a declaração anterior de 'VirtualTrailingStop' DonchianExpert.mq5 87 28
'input' - token inesperado DonchianExpert.mq5 88 1
A declaração de 'parameters_trailing' oculta a declaração global na linha 88 DonchianExpert.mq5 88 28
Veja a declaração anterior de 'parameters_trailing' DonchianExpert.mq5 88 28
'input' - token inesperado DonchianExpert.mq5 90 1
A declaração de 'TF_Tralling' oculta a declaração global na linha 90 DonchianExpert.mq5 90 28
veja a declaração anterior de 'TF_Tralling' DonchianExpert.mq5 90 28
'input' - token inesperado DonchianExpert.mq5 92 1
A declaração de 'StepTrall' oculta a declaração global na linha 92 DonchianExpert.mq5 92 28
Veja a declaração anterior de 'StepTrall' DonchianExpert.mq5 92 28
'input' - token inesperado DonchianExpert.mq5 93 1
A declaração de 'StartTrall' oculta a declaração global na linha 93 DonchianExpert.mq5 93 28
Veja a declaração anterior de 'StartTrall' DonchianExpert.mq5 93 28
'input' - token inesperado DonchianExpert.mq5 95 1
A declaração de 'period_ATR' oculta a declaração global na linha 95 DonchianExpert.mq5 95 28
Veja a declaração anterior de 'period_ATR' DonchianExpert.mq5 95 28
'input' - token inesperado DonchianExpert.mq5 97 1
A declaração de 'step_PSAR' oculta a declaração global na linha 97 DonchianExpert.mq5 97 28
Veja a declaração anterior de 'step_PSAR' DonchianExpert.mq5 97 28
'input' - token inesperado DonchianExpert.mq5 98 1
A declaração de 'maximum_PSAR' oculta a declaração global na linha 98 DonchianExpert.mq5 98 28
Veja a declaração anterior de 'maximum_PSAR' DonchianExpert.mq5 98 28
'input' - token inesperado DonchianExpert.mq5 100 1
A declaração de 'ma_period' oculta a declaração global na linha 100 DonchianExpert.mq5 100 28
Veja a declaração anterior de 'ma_period' DonchianExpert.mq5 100 28
'input' - token inesperado DonchianExpert.mq5 101 1
A declaração de 'ma_method' oculta a declaração global na linha 101 DonchianExpert.mq5 101 28
veja a declaração anterior de 'ma_method' DonchianExpert.mq5 101 28
'input' - token inesperado DonchianExpert.mq5 102 1
A declaração de 'applied_price' oculta a declaração global na linha 102 DonchianExpert.mq5 102 28
Veja a declaração anterior de 'applied_price' DonchianExpert.mq5 102 28
'input' - token inesperado DonchianExpert.mq5 104 1
A declaração de 'PercentProfit' oculta a declaração global na linha 104 DonchianExpert.mq5 104 28
Veja a declaração anterior de 'PercentProfit' DonchianExpert.mq5 104 28
A declaração de 'InpInd_Handle1' oculta a declaração global na linha 106 DonchianExpert.mq5 106 10
Veja a declaração anterior de 'InpInd_Handle1' DonchianExpert.mq5 106 10
A declaração de 'InpInd_Handle2' oculta a declaração global na linha 106 DonchianExpert.mq5 106 25
Veja a declaração anterior de 'InpInd_Handle2' DonchianExpert.mq5 106 25
A declaração de 'InpInd_Handle3' oculta a declaração global na linha 106 DonchianExpert.mq5 106 40
Veja a declaração anterior de 'InpInd_Handle3' DonchianExpert.mq5 106 40
A declaração de 'dcs_up' oculta a declaração global na linha 107 DonchianExpert.mq5 107 10
veja a declaração anterior de 'dcs_up' DonchianExpert.mq5 107 10
A declaração de 'dcs_low' oculta a declaração global na linha 107 DonchianExpert.mq5 107 19
Veja a declaração anterior de 'dcs_low' DonchianExpert.mq5 107 19
A declaração de 'close' oculta a declaração global na linha 107 DonchianExpert.mq5 107 29
Veja a declaração anterior de 'close' DonchianExpert.mq5 107 29
A declaração de 'adx' oculta a declaração global na linha 108 DonchianExpert.mq5 108 10
Veja a declaração anterior de 'adx' DonchianExpert.mq5 108 10
A declaração de 'adx_m' oculta a declaração global na linha 108 DonchianExpert.mq5 108 16
Veja a declaração anterior de 'adx_m' DonchianExpert.mq5 108 16
A declaração de 'adx_p' oculta a declaração global na linha 108 DonchianExpert.mq5 108 24
Veja a declaração anterior de 'adx_p' DonchianExpert.mq5 108 24
A declaração de 'macd_m' oculta a declaração global na linha 109 DonchianExpert.mq5 109 10
Veja a declaração anterior de 'macd_m' DonchianExpert.mq5 109 10
A declaração de 'macd_s' oculta a declaração global na linha 109 DonchianExpert.mq5 109 19
Veja a declaração anterior de 'macd_s' DonchianExpert.mq5 109 19
A declaração de 'avs' oculta a declaração global na linha 110 DonchianExpert.mq5 110 10
Veja a declaração anterior de 'avs' DonchianExpert.mq5 110 10
A declaração de 'rsi_1b' oculta a declaração global na linha 111 DonchianExpert.mq5 111 10
veja a declaração anterior de 'rsi_1b' DonchianExpert.mq5 111 10
A declaração de 'rsi_2b' oculta a declaração global na linha 111 DonchianExpert.mq5 111 19
veja a declaração anterior de 'rsi_2b' DonchianExpert.mq5 111 19
A declaração de 'rsi_3b' oculta a declaração global na linha 111 DonchianExpert.mq5 111 28
veja a declaração anterior de 'rsi_3b' DonchianExpert.mq5 111 28
A declaração de 'rsi_4b' oculta a declaração global na linha 111 DonchianExpert.mq5 111 37
veja a declaração anterior de 'rsi_4b' DonchianExpert.mq5 111 37
A declaração de 'rsi_1s' oculta a declaração global na linha 112 DonchianExpert.mq5 112 10
Veja a declaração anterior de 'rsi_1s' DonchianExpert.mq5 112 10
A declaração de 'rsi_2s' oculta a declaração global na linha 112 DonchianExpert.mq5 112 19
Veja a declaração anterior de 'rsi_2s' DonchianExpert.mq5 112 19
A declaração de 'rsi_3s' oculta a declaração global na linha 112 DonchianExpert.mq5 112 28
Veja a declaração anterior de 'rsi_3s' DonchianExpert.mq5 112 28
A declaração de 'rsi_4s' oculta a declaração global na linha 112 DonchianExpert.mq5 112 37
Veja a declaração anterior de 'rsi_4s' DonchianExpert.mq5 112 37
'OnInit' - a função pode ser declarada somente no escopo global DonchianExpert.mq5 116 5
'OnInit' - função já definida e com corpo DonchianExpert.mq5 116 5
'OnDeinit' - a função pode ser declarada somente no escopo global DonchianExpert.mq5 180 6
'OnDeinit' - função já definida e com corpo DonchianExpert.mq5 180 6
'OnTick' - a função pode ser declarada somente no escopo global DonchianExpert.mq5 187 6
'OnTick' - função já definida e com corpo DonchianExpert.mq5 187 6
'OnChartEvent' - a função só pode ser declarada no escopo global DonchianExpert.mq5 215 6
'OnChartEvent' - função já definida e com corpo DonchianExpert.mq5 215 6
'BuySignal' - a função pode ser declarada somente no escopo global DonchianExpert.mq5 225 6
'BuySignal' - função já definida e com corpo DonchianExpert.mq5 225 6
'SellSignal' - a função só pode ser declarada no escopo global DonchianExpert.mq5 256 6
'SellSignal' - função já definida e com corpo DonchianExpert.mq5 256 6
'GetIndValue' - a função pode ser declarada somente no escopo global DonchianExpert.mq5 287 6
'GetIndValue' - função já definida e com corpo DonchianExpert.mq5 287 6

101 erro(s), 66 aviso(s) 100 67

e como lidar com isso?

 
natyog:
Não é possível abrir o arquivo de inclusão "C:\Program Files\RoboForex - MetaTrader 5\MQL5\include\EasyAndFastGUI\WndEvents.mqh" DonchianUI.mqh 6 11

e como lidar com isso?

Em primeiro lugar, conecte a biblioteca EasyAndFastGUI conforme descrito na última frase do artigo. Porém, como há dificuldades com isso, anexei o arquivo junto com a biblioteca e os materiais do artigo.
Arquivos anexados:
MQL5.zip  1816 kb
 
natyog:

101 erro(s), 66 aviso(s) 100 67

e como lidar com isso?

Desculpe o transtorno, mas os arquivos do artigo foram substituídos. Faça o download deles novamente e tente compilá-los.
 

Obrigado por compartilhar! Ouro 0,3 dólares americanos pode retornar à capital, é necessário entrar em contato com o nome de usuário WeChat whkh18

 

oi estou tentando testar os Canais de Donchian no MT5, mas preciso de um Expert Advisor, gostei do seu artigo, mas não consigo criar o Expert Advisor do seu artigo

eu ja baixei os arquivos anexados, colei eles na pasta, do MT5, mas ele não aparece no MT5. como faço? o que falta ainda?

 
Não acredite em mim, eu criei esse canal sem saber de sua existência ))))... provavelmente, como eu, aprendi com Ishimoku.... mas eu o abordo de um lado ligeiramente diferente, considero a negociação dentro do canal, usando níveis de fibo com entrada no nível 61 e fixação de 161. No período M5-M15. E alguns pips na correção ao atingir o nível 161.
 

Bom dia!


Também não consegui fazer funcionar!

 

O Ea Esta com erro Critico... Tem que informar o programador do erro e aguardar que ele solucione.

 

Estou tendo problemas para compilar isso. Seu código é avançado para mim, portanto, estou tendo dificuldades para descobrir como corrigi-lo. São esses erros aqui:

'method' - identificador não declarado MenuItem.mqh 228 110

'method' - algum operador esperado MenuItem.mqh 228 110

expressão não booleana ChartCanvas.mqh 129 53


bool CMenuItem::CreateMenuItem(const long chart_id,const int subwin,const int index_number,const string label_text,const int x_gap,const int y_gap)
  {
//--- Sair se não houver ponteiro para o formulário
   if(!CElement::CheckWindowPointer())
      return(false);
//--- Se não houver um ponteiro para o nó anterior, então
// um item de menu independente está implícito, ou seja, aquele que não faz parte de um menu de contexto
   if(::CheckPointer(m_prev_node)==POINTER_INVALID)
     {
      //--- Sair, se o tipo de conjunto não corresponder
      if(m_type_menu_item!=MI_SIMPLE && m_type_menu_item!=MI_HAS_CONTEXT_MENU)
        {
         ::Print(__FUNCTION__," > The type of the independent menu item can be only MI_SIMPLE or MI_HAS_CONTEXT_MENU,",
                 "that is only with a context menu.\n",
                 __FUNCTION__," > The type of the menu item can be set using the CMenuItem::TypeMenuItem()") method")";
         return(false);
        }
     }