Ajuda na codificação - página 258

 
Tomcat98:
Olá Mladen , olá a todos,

Maldita nova construção!

Com a B625 tenho agora novas advertências.

"Valor de retorno de 'OrderSelect' deve ser verificado".

para seguir o código:

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES)";"

Como corrigir isso?

Obrigado a todos.

Tomcat98

Tomcat98

Faça o seguinte :

declare uma variável booleana global (como esta, por exemplo) :

bool dummyResultado;

E então simplesmente coloque "dummyResult =" na frente da OrderSelect - então você terá o seguinte :

dummyResult = OrderSelect(i,SELECT_BY_POS,MODE_TRADES);

 
Tomcat98:
Olá Mladen , olá a todos,

Maldita nova construção!

Com a B625 tenho agora novas advertências.

"Valor de retorno de 'OrderSelect' deve ser verificado".

para seguir o código:

"OrderSelect(i,SELECT_BY_POS,MODE_TRADES)";"

Como corrigir isso?

Obrigado a todos.

Tomcat98

Bem, você pode se livrar dele pelo custo de algum esforço.

Mas eu estou tendo um aviso permanente, que não posso remover por nenhum meio (exceto remover a linha do código fonte):

struct Empty {};[/CODE]

results in

[CODE]! struct has no members, size assigned to 1 byte

que é informação inútil, se eu a usar como um supertipo apenas para chamadas dll (não tenho idéia de qualquer outro uso da estrutura vazia).

 

Olá, Mladen,

Sim, ele funciona:

Ótimo trabalho.

Muito obrigado por sua ajuda.

Sinceramente.

Tomcat98

 

Olá a todos,

desde alguns dias estou recebendo esporadicamente o seguinte erro em um dos meus indicadores que uso em minha EA.

2014.04.10 09:01:49.533 2014.01.08 03:45 Violação de acesso escreva para 0xFFFFFFFE em 'C:\Usuários\PT5D5D5AE2430FC68F628F143CAFA9XXXX\MQL4\indicadores\MyDailyFibo.ex4'.

Eu uso a versão 4 da MT. Construir 625

Por favor, ajude-me a encontrar a causa raiz deste problema. Informe-me se você precisar procurar no indicador. Ele não aparece o tempo todo, mas com muita freqüência.

Thx e os melhores cumprimentos,

Antônio

 
Antony1:
Olá a todos,

desde alguns dias estou recebendo esporadicamente o seguinte erro em um dos meus indicadores que uso em minha EA.

2014.04.10 09:01:49.533 2014.01.08 03:45 Violação de acesso escreva para 0xFFFFFFFE em 'C:\Usuários\PT5D5D5AE2430FC68F628F143CAFA9XXXX\MQL4\indicadores\MyDailyFibo.ex4'.

Eu uso a versão 4 da MT. Construir 625

Por favor, ajude-me a encontrar a causa raiz deste problema. Informe-me se você precisar procurar no indicador. Ele não aparece o tempo todo, mas com muita freqüência.

Thx e os melhores cumprimentos,

Antônio

Antônio

Isso não é um problema com seu indicador

É um problema com o novo metatrader 4 (ele está tendo problemas com alocação e acesso adequados à memória - build 628 é um pouco melhor, mas não muito)

 

Hi,

Preciso de ajuda com este indicador que estava tentando escrever (Wilder trailing stop candles MTF).

Primeiro problema: meu indicador desenha o sinal de compra 1 barra antes desse deveria ser e sei que isso se deve à maneira como a inclinação é calculada, mas não sei como consertá-la.

Segundo problema: as cores não combinam, provavelmente eu estraguei os amortecedores nesta parte, mas eu mesmo estou me gargalhando, não consigo consertá-lo :

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

 
thefxpros:
Hi,

Preciso de ajuda com este indicador que estava tentando escrever (Wilder trailing stop candles MTF).

Primeiro problema: meu indicador desenha o sinal de compra 1 barra antes desse deveria ser e sei que isso se deve à maneira como a inclinação é calculada, mas não sei como consertá-la.

Segundo problema: as cores não combinam, provavelmente eu estraguei os amortecedores nesta parte, mas eu mesmo estou me gargalhando, não consigo consertá-lo :

if (UpLineBuffer!=EMPTY_VALUE)

{

UpBodyBuffer = High;

DnBodyBuffer = Low;

UpWickBuffer = MathMax(Open,Close);

DnWickBuffer = MathMin(Open,Close);

}

else

{

DnBodyBuffer = High;

UpBodyBuffer = Low;

DnWickBuffer = MathMax(Open,Close);

UpWickBuffer = MathMin(Open,Close);

wilders_trailing_stop_candles_mtf.mq4

wilders_trailing_stop_mtf_1.mq4

wilders_trailing_stop.mq4

mmmhh, as cores combinam. Talvez eu precise escrever primeiro os "wickbuffers" e depois os "bodybuffers"?

 
thefxpros:
mmmhh, as cores combinam. Talvez eu precise escrever primeiro os "wickbuffers" e depois os "bodybuffers"?

thefxpros

A maneira mais fácil é mudar o indicador de parada de trilha dos Wilders (caso contrário, você será pego em algumas construções complicadas, caso contrário, outras construções). Aqui está uma versão com um buffer interno que você deseja: a tendência. Se for igual a 1, a tendência é para cima, se for igual a -1, a tendência é para baixo. Use este indicador ao invés do original e simplesmente leia o valor do buffer 4 - depois disso tudo é simples

Arquivos anexados:
 
mladen:
thefxpros A maneira mais fácil é mudar o indicador de parada de trilha dos Wilders (caso contrário, você será pego em algumas construções complicadas, caso contrário, outras construções). Aqui está uma versão com um buffer interno que você deseja: a tendência. Se for igual a 1, a tendência é para cima, se for igual a -1, a tendência é para baixo. Use este indicador ao invés do original e simplesmente leia o valor do buffer 4 - depois disso tudo é simples

Assim ?

//------------------------------------------------------------------

#property copyright "thefxpros"

#property link "thefxpros@katamail.com"

//------------------------------------------------------------------

#property indicator_chart_window

#property indicator_buffers 4

#property indicator_color1 LimeGreen

#property indicator_color2 Orange

#property indicator_color3 DarkGreen

#property indicator_color4 FireBrick

#property indicator_width1 1

#property indicator_width2 2

//

//

//

extern int TimeFrame = 0;

extern int Length = 2;

extern double Coeff = 1.75;

extern color UpBodyColor = LimeGreen;

extern color DnBodyColor = Orange;

extern color UpWickColor = DarkGreen;

extern color DnWickColor = FireBrick;

extern int WickWidth = 1;

extern int BodyWidth = 2;

//

double UpBodyBuffer[];

double DnBodyBuffer[];

double UpWickBuffer[];

double DnWickBuffer[];

double TrendBuffer[];

//+------------------------------------------------------------------+

//| |

//+------------------------------------------------------------------+

int init()

{

IndicatorBuffers(6);

SetIndexBuffer(0,UpWickBuffer); SetIndexStyle(0,DRAW_HISTOGRAM, EMPTY, WickWidth, UpWickColor);

SetIndexBuffer(1,DnWickBuffer); SetIndexStyle(1,DRAW_HISTOGRAM, EMPTY, WickWidth, DnWickColor);

SetIndexBuffer(2,UpBodyBuffer); SetIndexStyle(2,DRAW_HISTOGRAM, EMPTY, BodyWidth, UpBodyColor);

SetIndexBuffer(3,DnBodyBuffer); SetIndexStyle(3,DRAW_HISTOGRAM, EMPTY, BodyWidth, DnBodyColor);

SetIndexBuffer(4,TrendBuffer);

IndicatorShortName("Wilders trailing stop MTF candles("+Length+","+Coeff+")");

Length = MathMax(Length,1);

switch(TimeFrame)

{

case 1 : string TimeFrameStr="Period_M1"; break;

case 5 : TimeFrameStr="Period_M5"; break;

case 15 : TimeFrameStr="Period_M15"; break;

case 30 : TimeFrameStr="Period_M30"; break;

case 60 : TimeFrameStr="Period_H1"; break;

case 240 : TimeFrameStr="Period_H4"; break;

case 1440 : TimeFrameStr="Period_D1"; break;

case 10080 : TimeFrameStr="Period_W1"; break;

case 43200 : TimeFrameStr="Period_MN1"; break;

default : TimeFrameStr="Current Timeframe";

}

IndicatorShortName("Wilders trailing stop MTF candles("+TimeFrameStr+")");

return(0);

}

//----

//+------------------------------------------------------------------+

//| MTF function |

//+------------------------------------------------------------------+

int start()

{

datetime TimeArray[];

int i,limit,y=0,counted_bars=IndicatorCounted();

// Plot defined time frame on to current time frame

ArrayCopySeries(TimeArray,MODE_TIME,Symbol(),TimeFrame);

limit= MathMin(Bars-counted_bars+3*TimeFrame/Period(),Bars-1);

for(i=0,y=0;i<limit;i++)

{

if (Time<TimeArray[y]) y++;

/*********************************************************************************************************

Add your main indicator loop below. You can reference an existing indicator with its iName or iCustom.

Rule 1: Add extern inputs above for all neccesary values

Rule 2: Use 'TimeFrame' for the indicator time frame

Rule 3: Use 'y' for your indicator's shift value

********************************************************************************************************/

int slope=iCustom(Symbol(),TimeFrame,"Wilders trailing stop with trend",Length,Coeff,4,y);

if (slope == 1)

{

UpWickBuffer = High;

DnWickBuffer = Low;

UpBodyBuffer = MathMax(Open,Close);

DnBodyBuffer = MathMin(Open,Close);

}

if (slope == -1)

{

DnWickBuffer = High;

UpWickBuffer = Low;

DnBodyBuffer = MathMax(Open,Close);

UpBodyBuffer = MathMin(Open,Close);

}

}

return(0);

}

//+------------------------------------------------------------------+

Não posso acreditar, funciona à primeira tentativa Existe algo mais que eu possa escrever melhor (delete trendbuffer sim, eu vi agora) do que eu fiz?

obrigado Mladen

Arquivos anexados:
cattura_2.jpg  72 kb
 
mladen:
Não é possível traçar linhas com comprimento em polegadas no gráfico (é completamente impossível usar metatrader e duvido que isso seja possível em qualquer plataforma comercial). E essas linhas são objetos de linhas horizontais não são linhas de tendência (linhas de tendência podem ser limitadas, mas linhas horizontais não podem). Se não houver uma regra matemática exata de como as linhas devem ser desenhadas (dependendo do preço, não em polegadas) elas simplesmente não podem ser desenhadas, e a partir dessa seqüência de numvers parece que as regras são únicas para cada linha.

Ok, obrigado, encontrei uma tinta melhor, que você pode editar. Foi um projeto inacabado que um codificador fez em uma fábrica de câmbio e não consegue mais localizá-lo. Por favor, substitua 00, 20, 50, 80 pelos meus números. As linhas também estão agrupadas em vez de apenas colocar nos números especiais 5, 15, 31, 45 e 67.

Obrigado

Arquivos anexados: