Ajuda na codificação - página 22

 

obrigado por sua resposta Robert

tal painel seria perfeito, mas não encontrei um com bb squeeze, e não faço idéia de como mudar os painéis existentes para detectar em bb squeeze

minha própria idéia era muito simples, parecia assim:

int Current;

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

//| expert start function |

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

int start() {

int USDCHF, GBPUSD, EURUSD, AUDUSD;

double upperBB_USDCHF = iBands("USDCHF", 0, 20, 2, 0, PRICE_CLOSE, MODE_UPPER, Current + 0);

double upperKC_USDCHF = iCustom("USDCHF", 0, "Keltner Channels", 20, 0, Current + 0);

double lowerBB_USDCHF = iBands("USDCHF", 0, 20, 2, 0, PRICE_CLOSE, MODE_LOWER, Current + 0);

double lowerKC_USDCHF = iCustom("USDCHF", 0, "Keltner Channels", 20, 2, Current + 0);

if(upperBB_USDCHFlowerKC_USDCHF)

Comment(": BollingerSqueeze for USDCHF");

return(0);

}

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

isso é apenas para vários pares diferentes então, mas como eu disse o "Comentário" se atualiza o tempo todo.

editar: ok, eu consertei, não é mais necessária nenhuma ajuda

 
crexsking:
Olá Mladen e todos os colegas,

Eu negocio padrão de gráfico com "movimento de vela grande" (Open[0]-Close[0] > 32 pips ou vice versa) n i eurusd (H1 em FXOpen <--- o tamanho de vela mais preciso n padrão)...

Portanto, não havia absolutamente nenhum indicador. Apenas filosofia de negociação.

Tento codificar uma EA sobre essa lógica, mas acho que falta algo aí... Por favor, ajude!!!

O que é "algo que falta" que eu quero dizer:

-quero antes que a "vela grande" aconteça... o sistema calculou as últimas 4 velas < 20pips (abrir - fechar ou vice versa) para cada vela.

Enquanto... o que aconteceu é que o meu código mql4 não lê as últimas 4 velas antes da "vela grande"... estou tão confiante...

O que deveria acontecer é que..:

1. Hora da Vela Grande :-

- 15h,16h,5h(London Open) ..n... 20pm,9pm,10pm(US Open) <---- todo o tempo dado como malaio, então mude seu computador para GMT 8.00++

2. Tamanho da vela grande :-

- 32 pips n acima ( se lateralmente antes são 20 pips n abaixo )

- 42 pips n acima ( se lateralmente antes são 20 pips n acima )

3. Mercado lateral :-

- abaixo de 50 pips para as últimas 4 horas no mínimo n devem ter cor diferente.

4. Mercado vazio ou perigoso (mercado cancelado): <--- nenhuma troca se esta condição de mercado acontecer

1. Lado antes do London Open B,B,B,B acima ou S,S,S,S abaixo. <--- B,B,B,B,B = Velas Comprar,comprar,comprar,comprar... continuamente

2. Vela grande fecha no máximo da zona diária. <---- 75 pips mínimo alto baixo

3. Vela grande ocorre às 22h00. <----- GMT 8++ ou horário da Malásia

4. Vela grande muito grande e mais de 80 pips.

5. Há uma vela mais de 50 pips antes da abertura de Londres.

6. A forma de um mercado para cima em Tóquio e uma vela grande para cima em Londres abre (vice versa para baixo).

Os problemas de codificação anexados :-

extern double trigger = 32;

extern double sideway = 20;

extern int hour1 = 6;

extern int hour2 = 7;

extern int hour3 = 8;

extern int hour4 = 9;

extern int hourCB = 10;

extern int hourTRADE = 11;

extern int TradeTimeStart = 0;

extern int TradeTimeEnd = 23;

//---Variables

double currentPrice = 0.00000;

static datetime barStart;

string openTrades = "none";

int ticket;

int i = 0;

double lotSize;

double CBB = 0;

double CBS = 0;

double CBBT;

double CBST;

double PreviousCBB;

double PreviousCBS;

double CS1B;

double CS2B;

double CS3B;

double CS4B;

double CS5B;

double CS6B;

double CS1S;

double CS2S;

double CS3S;

double CS4S;

double CS5S;

double CS6S;

double CS1BT;

double CS2BT;

double CS3BT;

double CS4BT;

double CS1ST;

double CS2ST;

double CS3ST;

double CS4ST;

double PreviousCS1B;

double PreviousCS2B;

double PreviousCS3B;

double PreviousCS4B;

double PreviousCS1S;

double PreviousCS2S;

double PreviousCS3S;

double PreviousCS4S;

double GroupSW1B;

double GroupSW2B;

double GroupSW3B;

double GroupSW4B;

double GroupSW5B;

double GroupSW6B;

double GroupSW1S;

double GroupSW2S;

double GroupSW3S;

double GroupSW4S;

double GroupSW5S;

double GroupSW6S;

string permit = "suspended";

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

//| expert initialization function |

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

int init()

{

//----

//----

return(0);

}

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

//| expert deinitialization function |

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

int deinit()

{

//----

//----

return(0);

}

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

//| expert start function |

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

int start(){

CBB=(Close[1]-Open[1])/Point;

CBS=(Open[1]-Close[1])/Point;

CBBT=(hourCB==Hour());

CBST=(hourCB==Hour());

PreviousCBB = (CBB == CBBT);

PreviousCBS = (CBS == CBST);

CS1B=(Close[7]-Open[7])/Point;

CS2B=(Close[6]-Open[6])/Point;

CS3B=(Close[5]-Open[5])/Point;

CS4B=(Close[4]-Open[4])/Point;

CS5B=(Close[3]-Open[3])/Point;

CS6B=(Close[2]-Open[2])/Point;

CS1S=(Open[7]-Close[7])/Point;

CS2S=(Open[6]-Close[6])/Point;

CS3S=(Open[5]-Close[5])/Point;

CS4S=(Open[4]-Close[4])/Point;

CS5S=(Open[3]-Close[3])/Point;

CS6S=(Open[2]-Close[2])/Point;

CS1BT=(hour1==Hour());

CS2BT=(hour2==Hour());

CS3BT=(hour3==Hour());

CS4BT=(hour4==Hour());

CS1ST=(hour1==Hour());

CS2ST=(hour2==Hour());

CS3ST=(hour3==Hour());

CS4ST=(hour4==Hour());

PreviousCS1B = (CS1B == CS1BT);

PreviousCS2B = (CS2B == CS2BT);

PreviousCS3B = (CS3B == CS3BT);

PreviousCS4B = (CS4B == CS4BT);

PreviousCS1S = (CS1S == CS1ST);

PreviousCS2S = (CS2S == CS2ST);

PreviousCS3S = (CS3S == CS3ST);

PreviousCS4S = (CS4S == CS4ST);

GroupSW1B = (CS3B<sideway&&CS4S<sideway&&CS5B<sideway&&CS6S=trigger);

GroupSW1S = (CS3S<sideway&&CS4B<sideway&&CS5S<sideway&&CS6B=trigger);

currentPrice = iClose(NULL,0,0);

Comment("Price Continuation\n",

"Status: ",status()

);

//----Trade Algorithm

//trade hours value...

if(TradeTimeStart <= Hour() && Hour() <= TradeTimeEnd){

if(openTrades == "none" && permit == "approved"){

requestLongOrder();

requestShortOrder();

}

else{

requestPermit();

}

}

if(openTrades == "long"){

manageLongTrade();

}

if(openTrades == "short"){

manageShortTrade();

}

return(0);

}

//---FUNCTIONS---

//--

void requestLongOrder(){

if(hourTRADE==Hour() && GroupSW1B){

//--

Lots = CalcLots ();

ticket = OrderSend(Symbol(),OP_BUY,Lots,Ask,3,currentPrice-stopLoss,currentPrice+takeProfit,"My order ",06010,0,Green);

if(ticket<0){

//add email/sms alert here with GetLastError();

}

if(ticket>0){

openTrades = "long";

permit = "suspended";

}

}

}

void requestShortOrder(){

if(hourTRADE==Hour() && GroupSW1S){

//--

Lots = CalcLots ();

ticket = OrderSend(Symbol(),OP_SELL,Lots,Bid,3,currentPrice+stopLoss,currentPrice-takeProfit,"My order ",06010,0,Red);

if(ticket<0){

//add email/sms alert here with GetLastError();

}

if(ticket>0){

openTrades = "short";

permit = "suspended";

}

}

}

* o que deve acontecer como imagem de tela anexada.

Por favor, ajude...

Obrigado...

Cumprimentos,

crexsking

Olá Crexsking,

A única coisa que posso pensar é que você pode precisar converter para um corretor de 5 dígitos, depois de começar a colocar algo como isto

pipMultiplicador duplo = 1; (antes do init)

int start()

{

se (Dígitos==3 || Dígitos===5)

pipMultiplicador = 10;

caso contrário pipMultiplier = 1;

E depois de cada ponto algo como este Ponto*pipMultiplicador.

 

Como os comentários foram resolvidos?

Deorn:
obrigado por sua resposta Robert

tal painel seria perfeito, mas não encontrei um com bb squeeze, e não faço idéia de como mudar os painéis existentes para detectar em bb squeeze

minha própria idéia era muito simples, parecia assim:

========

isso é apenas para vários pares diferentes, mas como eu disse, o "Comentário" se atualiza o tempo todo.

editar: ok eu consertei, não é mais necessária ajuda

Oi Deorn,

É ótimo ouvir que você resolveu seu desafio. Quer compartilhar o que você fez para corrigir o "comentário" refrescante...?

Divirta-se com a sua codificação...!

Robert

 
cosmiclifeform:
Oi Deorn,

É ótimo ouvir que você resolveu seu desafio. Quer compartilhar o que você fez para corrigir o "comentário" refrescante...?

Divirta-se com a sua codificação...!

Robert

Eu o fiz com "objtcreate", como você disse

Percebi isso para os prazos M5 a 10 pares diferentes mensalmente:

Os canais Keltner são necessários com o nome exato 'Keltner Channels', eu escolho as configurações 20 com Fator 1.5

ambos são dois indicadores normais

Eu escolheria uma janela em branco para colocá-la em

e desculpe pela programação feia é meu primeiro indicador próprio, mas ele faz o trabalho

saudações

Arquivos anexados:
 
mrtools:
Olá Crexsking,

A única coisa que posso pensar é que você pode precisar converter para um corretor de 5 dígitos, depois de começar a colocar algo como isto

pipMultiplicador duplo = 1; (antes do init)

int start()

{

se (Dígitos==3 || Dígitos===5)

pipMultiplicador = 10;

caso contrário pipMultiplier = 1;

E depois de cada ponto algo como este Ponto*pipMultiplicador.

Oi mrtools n obrigado...

Vou fazer isso, mas antes disso posso perguntar... qual é a relação para convertê-lo com corretores de 5 dígitos?

Quero dizer... antes disso, o sistema não consegue reconhecer touro ou vela de urso nas últimas 4 velas do mercado lateral.

Se eu colocar este código, o sistema o reconhecerá?

Desculpe pelo meu pobre inglês...

cumprimentos,

crexsking

 
crexsking:
Oi mrtools n obrigado...

Vou fazer isso, mas antes disso posso perguntar... qual é a relação para convertê-lo com corretores de 5 dígitos?

Quero dizer... antes disso, o sistema não consegue reconhecer touro ou vela de urso nas últimas 4 velas do mercado lateral.

Se eu colocar este código, o sistema o reconhecerá?

Desculpe pelo meu pobre inglês...

cumprimentos,

crexsking

Crexsking, ele o levará a pips, então se por exemplo você tiver .91135 para abrir e .90685 para fechar a diferença é .0045 se você estiver no ponto de corretagem de 5 dígitos seria igual a 450 porque seu valor é dividido por .00001, mas se você usar a conversão corretamente o fará em 45 pips, porque você está então dividindo por .0001 ou .00001 x 10.E quanto ao reconhecimento de vela de touro ou de urso realmente não pode dizer porque eu não vejo mais nada de errado com seu código.

 

Big Player's Coding... Ajuda por favor...

\\14 de Fevereiro de 2009 Editado

Muito bem feito...

Problema resolvido.

cumprimentos,

crexsking

 

Precisa de ajuda

Olá para todos os códigos mestres, eu preciso de sua ajuda, por favor:

Que tal codificá-la se eu quiser criar linhas horizontais os limites superior e inferior no grupo da vela (fechar - abrir) é pequeno em valor. Valor (fechado - aberto)*100000 = sem polaridade e sempre positivo. Meu número de velas de conteúdo externo.

Exemplo:

int externo (fechado - aberto)*100000 = 10; // Sua média (fechado - aberto) <= 10

int externo Número máximo de velas = 3;

"Limite superior da linha horizontal" = extraído do limite superior de abertura/fecho mais alto inerente ao grupo

"Limite inferior da linha horizontal" = tirado do limite superior aberto/fechado inerente ao grupo

Meus melhores cumprimentos,

Obrigado

Arquivos anexados:
 

...

Receio não entender exatamente o que você quer dizer. portanto, respondendo apenas a uma parte de sua pergunta.

Se você multiplicar a diferença de um símbolo de 5 dígitos em um corretor de 5 dígitos com 100000, então ypu vai obter o valor desejado, mas se o símbolo for, por exemplo, um dos cruzamentos do JPY, você vai obter valores que excedem de longe esses valores. Além disso, em um corretor de 4 dígitos, você também terá valores maiores. Para evitar que a melhor maneira seja calcular a diferença em pips. É assim que você pode fazer isso:
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

//

//

// calculate the difference in pips

//

//

double difference = MathAbs((Close[shift] - Open[shift])/(Point*pipMultiplier));[/PHP]

E estará sempre em pips, independentemente do símbolo ou do corretor

A partir do mínimo e máximo você pode encontrar um valor mínimo e máximo de uma faixa de barras com um código como este (este exemplo é definido para procurar em uma faixa de 3 barras como você está falando sobre isso) :
[PHP]duplo mais alto = alto;

duplo mais baixo = baixo

;
paijowijaya:
Olá para todos os códigos mestres, eu preciso de sua ajuda, por favor:

Que tal codificá-la se eu quiser criar linhas horizontais os limites superior e inferior no grupo da vela (fechar - abrir) é pequeno em valor. Valor (fechado - aberto)*100000 = sem polaridade e sempre positivo. Meu número de velas de conteúdo externo.

Exemplo:

int externo (fechado - aberto)*100000 = 10; // Sua média (fechado - aberto) <= 10

int externo Número máximo de velas = 3;

"Limite superior da linha horizontal" = extraído do limite superior de abertura/fecho mais alto inerente ao grupo

"Limite inferior da linha horizontal" = tirado do limite superior aberto/fechado inerente ao grupo

Meus melhores cumprimentos,

Obrigado
 
mladen:
Se você multiplicar a diferença de um símbolo de 5 dígitos em um corretor de 5 dígitos com 100000, então ypu vai obter o valor desejado, mas se o símbolo for, por exemplo, um dos cruzamentos do JPY, você vai obter valores que excedem de longe esses valores. Além disso, em um corretor de 4 dígitos, você também terá valores maiores. Para evitar que a melhor maneira seja calcular a diferença em pips. É assim que você pode fazer isso:
double pipMultiplier = 1;

if (Digits==3 || Digits==5) pipMultiplier = 10;

// calculate the difference in pips

double difference = MathAbs((Close[shift] - Open[shift])/(Point*pipMultiplier));[/PHP]

:
[PHP]duplo mais alto = alto;

duplo mais baixo = baixo;

Grande surpresa estou muito feliz que o senhor responda à minha pergunta, Mestre Mladen,

Mas desculpe-me, ainda estou confuso, você daria uma codificação completa? Valor * 100000 Eu queria ser fácil nas leituras, não 0,0002 (4 dígitos atrás da vírgula), mas se você tiver uma maneira mais fácil, eu seguirei seu caminho. Em essência, quando encontrei três velas (a zona de balanço ou compradores = vendedores ou zona lateral, cada TF seu número diferente de velas) que é pequeno (seu valor é retirado da diferença entre Fechado - Aberto) quero traçar uma linha horizontal exatamente como a imagem que carreguei. Assim, conheço a oferta e a demanda no gráfico com a ajuda da linha. Ou existe tal indicador que você tem?

Meus melhores cumprimentos,

Obrigado Mestre Mladen