Como codificar? - página 187

 

Sim, eu quero fazer 3 passos

Exemplar:

Chegar aos 15 e voltar aos 10

Chegar aos 30 e voltar aos 15

Chegar aos 45 e voltar aos 15

Ou fechar em stop loss.

Vou tirar uma foto e tentar explicar melhor.

 
fosgate_r:
Isto é algo novo para mim.

Então, o fechamento do comércio perdedor sempre precisa esperar até que ele salte de volta, certo?

Que tal se não ressaltar?

Vamos fechar no SL incial?

Obrigado agora, já consegui, agora tentando otimizar para obter bons resultados com esta proteção contra perdas.

 

Estou tentando encontrar informações sobre como traçar uma linha, assim como o indicador RSI, por exemplo... Tenho dois números que quero traçar como linhas no mesmo indicador

Eu sei que isso envolverá uma série de códigos, mas não estou tendo sorte em descobrir que grupo de códigos fará isso acontecer.

 

tampão indicador

SPACECHIMP:
Estou tentando encontrar informações sobre como traçar uma linha, assim como o indicador RSI, por exemplo... Tenho dois números que quero traçar como linhas no mesmo indicador... Sei que isso envolverá algum tipo de conjunto, mas não estou tendo sorte em descobrir que grupo de código fará isso acontecer.

Por favor, leia este artigo

Linguagem MQL4 para iniciantes. Indicadores personalizados (Parte 1) - Artigos da MQL4

 
smb1970:
Olá, pessoal,

Não sei se alguém está familiarizado com o Forex Made-EZ de George Smith.

Estou atualmente revendo seu trabalho e me pergunto se alguém codificou um indicador para o oscilador Oscar que ele usa?

A fórmula é

let A = a maior altura das últimas oito barras (incluindo esta)

let B = a mais baixa das últimas oito barras (incluindo esta)

let C = preço atual de fechamento das barras

let X = a figura do oscilador anterior (Oscar)

O oscilador "bruto" de hoje é igual a (C-B) dividido por (A-B) vezes 100.

Em seguida, "suavizamos" nosso número aproximado (vamos chamá-lo de Y) assim:

Número final do oscilador = ((X dividido por 3) vezes 2), mais (Y dividido por 3).

Se alguém já codificou isto ou pode codificar isto, seria muito apreciado.

Cumprimentos a Steve

Eu mesmo já codifiquei isto. Alguém poderia comentar se isto faz o que eu acho que faz. Os valores não parecem corresponder ao que eles fazem se eu calcular manualmente os números. Além disso, ele só começa a partir do momento em que o indicador é colocado. Eu gostaria que ele mostrasse também os valores históricos.

#Janela_do_indicador_de_propriedade

#property indicator_buffers 1

#indicador de propriedade_cores1 Vermelho

//---- buffers

duplo ExtMapBuffer1[];

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

//| Função de inicialização do indicador personalizado |

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

int init()

{

//---- indicadores

SetIndexStyle(0,DRAW_LINE);

SetIndexBuffer(0,ExtMapBuffer1);

string short_name = "Oscar Indicator";

IndicatorShortName(nome_curto_curto);

//----

retorno(1);

}

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

//| Função de desinicialização do indicador do cliente |

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

int deinit()

{

retorno(0);

}

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

//| Função de iteração de indicador personalizada |

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

int start()

{

int counted_bars=IndicatorCounted();

//---- verificação de possíveis erros

se (counted_bars<0) retornar(-1);

//---- última barra contada será contada novamente

se (barras_contadas>0) barras_contadas--;

int pos=barras_contadas_combars;

//---- circuito principal de cálculo

duplo x;

x=50;

while(pos>=0)

{

duplo a, b, c, y, osc;

//let A = a maior altura das últimas oito barras (incluindo esta)

a=elevada;

//let B = a mais baixa das últimas oito barras (incluindo esta)

b=baixo;

//let C = preço atual de fechamento das barras

c = Fechar[pos];

//let X = a figura do oscilador anterior (Oscar)

// O oscilador "áspero" de hoje é igual a (C-B) dividido por (A-B) vezes 100.

y=((c-b)/(a-b))*100;

//Nextra "suavizamos" nosso número aproximado (vamos chamá-lo de Y) assim:

//Final número do oscilador = ((X dividido por 3) vezes 2), mais (Y dividido por 3).

osc=((x/3)*2)+(y/3);

ExtMapBuffer1[pos]= osc ;

pos--;

}

retorno(0);

}

Qualquer ajuda recebida com gratidão.

Obrigado Steve

 

Pergunte... Mode_trades

oi, alguém pode dar o exemplo para MODE_TRADES usar para?

Obrigado.

 

Para smb1970 - é isto :

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

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

#property indicator_separate_window

#property indicator_buffers 1

#property indicator_color1 Red

#property indicator_maximum 100

#property indicator_minimum 0

//

//

//

//

//

extern int OscPeriod = 8;

extern int OscPrice = PRICE_CLOSE;

double oscBuffer[];

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

//| |

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

//

//

//

//

//

int init()

{

SetIndexBuffer(0,oscBuffer);

IndicatorShortName("Osc ("+OscPeriod+")");

return(0);

}

int deinit() { return(0); }

int start()

{

int counted_bars=IndicatorCounted();

int i,limit;

if(counted_bars<0) return(-1);

if(counted_bars>0) counted_bars--;

limit=Bars-counted_bars;

//

//

//

//

//

for(i=limit; i>=0; i--)

{

double price = iMA(NULL,0,1,0,MODE_SMA,OscPrice,i);

double high = High[ArrayMaximum(High,OscPeriod,i)];

double low = Low[ArrayMinimum(Low,OscPeriod,i)];

//

//

//

//

//

if (high!=low)

double raw = 100.00*(price-low)/(high-low);

else raw = 0.00;

oscBuffer= oscBuffer*2.0/3.0 + raw/3.0;

}

return(0);

}

Mas, veja também a foto: em cima está "Oscar" em baixo está Ema(5) de estocástico(8), ou para simplificar ainda mais, em baixo está estocástico(8,5,1) com a linha de sinal definida para exponencial. Assim, "Oscar" é simplesmente uma linha de sinal do estocástico

Arquivos anexados:
oscar.gif  21 kb
 

Obrigado!

Obrigado mladen, não só isso é muito útil, como também é muito revelador!

 

NewB precisa de alguma ajuda na codificação :-(

Olá a todos,

Estou precisando de uma ajuda díspar aqui . Tenho algum código que procurará um acordo entre diferentes indicadores. Uma vez que todos eles concordem, quero uma forma de entrar nas negociações da maneira que descrevi nas imagens do gráfico. Até agora eu posso entrar na 1ª "compra", mas ela não entra apenas em 1 "....", ela entra em até 8 negociações. E então, se o mercado vai contra mim, eu entro numa "negociação de contingência" onde estou comprando/vendendo novamente, apesar de estar indo contra mim. Eu apreciaria muito se alguém pudesse me mostrar como deve ser o código correto

Não tenho certeza se estas imagens aparecerão, mas só no caso de eu também tê-las como anexos.

Aqui está meu código defeituoso que é suposto executar o ofício.

enquanto (execute_comércio ==5)

{if ( OrdensTotal() == buy_trade1 ) //buy_trade1 = 1...isto pára depois de 1 ordem ter sido colocada...mas ainda não funciona

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);

execute_trade=0;

if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

Imprimir ("Meu bilhete é: " , bilhete);

{

buy1 = OrderOpenPrice(); //tomando o preço da 1ª ordem e empurrando-a para esta variável

// Comentário("pedido #1 preço aberto é ", OrderOpenPrice() + " " + buy1 + " menos de " + (buy1-0.0030))

se (compre1 >= (compre1-0.0030))

{

//if ( OrdensTotal() <= buy_trade1 ) //isto pára após 1 ordem ter sido colocada.

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+TakeProfit*Point);

//execute_trade=0;

}

} else

Print("OrderSelect devolveu o erro de ",GetLastError()));

}

 

NewB que precisa de ajuda com a codificação

Olá a todos,

Estou precisando de alguma ajuda díspar aqui. Tenho algum código que procurará um acordo entre diferentes indicadores. Uma vez que todos eles concordem, quero uma forma de entrar nas negociações da maneira que descrevi nas imagens do gráfico. Até agora eu posso entrar na 1ª "compra", mas ela não entra em apenas 1 negociação...., ela entra em até 8 negociações. E então, se o mercado vai contra mim, eu entro numa "negociação de contingência" onde estou comprando/vendendo novamente, apesar de estar indo contra mim.Eu apreciaria muito se alguém pudesse me mostrar como deve ser o código correto

Não tenho certeza se estas imagens aparecerão, mas só no caso de eu também tê-las como anexos.

Figura 1

Figura 2

Aqui está meu código defeituoso que é suposto executar o ofício...

enquanto (execute_comércio ==5)

{if ( OrdensTotal() == buy_trade1 ) //buy_trade1 = 1...isto pára depois de 1 ordem ter sido colocada...mas ainda não funciona

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point);

execute_trade=0;

if(OrderSelect(ticket, SELECT_BY_TICKET, MODE_TRADES))

Imprimir ("Meu bilhete é: " , bilhete);

{

buy1 = OrderOpenPrice(); //tomando o preço da 1ª ordem e empurrando-a para esta variável

// Comentário("pedido #1 preço aberto é ", OrderOpenPrice() + " " + buy1 + " menos de " + (buy1-0.0030))

se (compre1 >= (compre1-0.0030))

{

//if ( OrdensTotal() <= buy_trade1 ) //isto pára após 1 ordem ter sido colocada.

ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,3,0,Ask+ TakeProfit*Point);

//execute_trade=0;

}

}

senão

Print("OrderSelect devolveu o erro de ",GetLastError()));

}

Arquivos anexados: