Pergunte! - página 108

 
Dave137:
void TrailingPositions() {

double pBid, pAsk, pp;

pp = MarketInfo(OrderSymbol(), MODE_POINT);

if (OrderType()==OP_BUY) {

pBid = MarketInfo(OrderSymbol(), MODE_BID);

//BreakEven routine

if (BreakEven>0) {

if ((pBid-OrderOpenPrice())>BreakEven*pp) {

if ((OrderStopLoss()-OrderOpenPrice())<0) {

ModifyStopLoss(OrderOpenPrice()+0*pp);

}

}

}

if (TrailingStop>0) {

if ((pBid-OrderOpenPrice())>TrailingStop_Over135*pp){ //15 pips TS

ModifyStopLoss(pBid-TrailingStop_Over135*pp);

if (pBid-OrderOpenPrice()>TrailingStop_Over90*pp && pBid-OrderOpenPrice()<TrailingStop_Over135*pp){ //55 pips TS

ModifyStopLoss(pBid-TrailingStop_Over90*pp);

if ((OrderOpenPrice()-pAsk)>TrailingStop +TrailingStep+1*pp && (OrderOpenPrice()-pAsk) < TrailingStop_Over90*pp+TrailingStep-1*pp || OrderStopLoss()==0) {//75 pips TS

ModifyStopLoss(pAsk+TrailingStop*pp);

return;

}

}

}

}

}[/PHP]

Three levels of Trailing Stop:

1) 75 Pips TS up to first 90 Pips Profit.

2) 55 Pips TS after 90 but only up to 135 pips profit.

3) 15 Pips TS after 135 pips profit.

The problem I am having is the Trailing Stop moves both up and down as the price moves up and down . . It should just be moving up as the price profit increases and stop if the price starts dropping! How do I get it to stop moving down as the price drops - The Trailing Stop is acting like a Yo-Yo as the price moves up and down.

I am not sure how to stop this from happening?? Please, I need your expertise!

Humbly,

Dave

por exemplo:[PHP]ts = pBid - TrailingStop_Over135*pp;

se (ts > OrderOpenPrice() && ts > OrderStopLoss()) ModifyStopLoss(ts);

 

por favor, posso pedir ajuda?

Posso pedir a alguém que dê uma olhada em meu código para ver onde ele está errado, por favor.... Eu não sou muito de programador e gostaria de alguma ajuda com isto.

muito obrigado de antemão

também acabei de perceber algo - há um cara chamado Ben Taylor vendendo um EA que se parece quase exatamente com aquele que o guru do codificador programou - talvez esse seja um de seus clientes - rs

se não for o caso - devemos informar o guru codificador sobre isso

Arquivos anexados:
 
Michel:
Se necessário, verifique primeiro se você tem mais de 8 horas da manhã:
if(Hour() < 8) return;[/PHP]

Then, find the max and min of the current day. (if its ok for you, its easier than from 8 am): [PHP]double Max = iHigh(Symbol(), PERIOD_D1, 0);

double Min = iLow(Symbol(), PERIOD_D1, 0);

int Range = (Max - Min) / Point;

if(Range > 90) return;

...

Olá, Michel:

Eu me refiro ao seu código:

se(Hora() < 8) retornar;

Modifiquei o código como se segue:

if(Hora()>12) hr_x=1;

.....

.....

.....

.....

if(hr_x===1) sinal=50;

Mas eu tinha toda a barra de histograma 50!!!!

Se você olhar o gráfico abaixo, parece que o comando "Hora" não o reconhece!!!

FYI, estou usando o gráfico de 30 minutos, haverá uma tabela diferente. Tentei mudar para o gráfico de 1Hora, mas o problema ainda existe!

Também tentei "se(Hora() < 8) retornar;" mas toda a barra desapareceu!!!

Eu tentei muitas coisas, mas ainda não consegui fazer funcionar.

É possível me aconselhar novamente? Obrigado

Arquivos anexados:
untitled_5.jpg  115 kb
 
n3sve1k4s:
Olá codersguru, você poderia adicionar sinal com pop-up e setas ao indicador abaixo?

alguém pode acrescentar um sinal????

 

Obrigado Michel pela correção adequada da minha codificação da tripla Parada de Rastreamento. Espero que esta seja a última correção para a minha nova criação da ea. Sem a generosidade do conhecimento de todos, eu não teria sido capaz de programar esta linguagem. Guardo anotações sobre todas as novas informações que adquiro sobre esta linguagem. Espero que quando o MT5 for introduzido, a codificação não mude para radicalmente - eu odiaria começar tudo de novo! Mais uma vez, obrigado!!

Dave

<<<

 
solamax:

Posso pedir a alguém que dê uma olhada em meu código para ver onde ele está errado, por favor.... Eu não sou um grande programador e gostaria de alguma ajuda com isto.

muito obrigado de antemão

também acabei de perceber algo - há um cara chamado Ben Taylor vendendo um EA que se parece quase exatamente com aquele que o guru do codificador programou - talvez esse seja um de seus clientes - rs

se não for o caso - devemos informar o guru codificador sobre isso
double Buy2_1 = iOpen(NULL, 0, Current + 0); //Statement in question for crossover! double Buy2_2 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

Se eu tivesse que zerar em uma área problemática, seria este código acima. É preciso que haja uma cruz para uma compra e uma venda.

double Buy1_1 = iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, Atual + 0);

duplo Compra1_2 = iMA(NULL, 0, 5, 0, MODE_EMA, PREÇO_CLOSE, Atual + 1); //1-Volta

double Buy2_1 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, Atual + 0);

duplo Buy2_2 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, Atual + 1); //1-Back

duplo Sell1_1 = iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, Atual + 0);

duplo Sell1_2 = iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, Corrente + 1); //1-Back

duplo Sell2_1 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, Atual + 0);

duplo Sell2_2 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, Corrente + 1); //1-Back

if(Buy1_1>Sell2_1 && Buy1_2<Sell2_2) Then Buy; // Ocorreu o crossover 'UP' apropriado!

if(Sell1_1Buy2_2) Then Sell; // Ocorreu o crossover 'DOWN' apropriado!

Dave

 

Isto não é bem o que você está procurando, mas procure de qualquer maneira. Anexe a outro gráfico e ele monitora todos os lucros, perdas dos gráficos que têm funcionado neles.

 

Dave - você é uma benção:)

Dave137:
double Buy2_1 = iOpen(NULL, 0, Current + 0); //Statement in question for crossover! double Buy2_2 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

Se eu tivesse que zerar em uma área problemática, seria este código acima. Precisa haver uma cruz para uma compra e uma venda.

double Buy1_1 = iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, Current + 0);

duplo Compra1_2 = iMA(NULL, 0, 5, 0, MODE_EMA, PREÇO_CLOSE, Atual + 1); //1-Volta

double Buy2_1 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, Atual + 0);

duplo Buy2_2 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, Atual + 1); //1-Back

duplo Sell1_1 = iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, Atual + 0);

duplo Sell1_2 = iMA(NULL, 0, 5, 0, MODE_EMA, PRICE_CLOSE, Corrente + 1); //1-Back

duplo Sell2_1 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, Atual + 0);

duplo Sell2_2 = iMA(NULL, 0, 50, 0, MODE_EMA, PRICE_CLOSE, Corrente + 1); //1-Back

if(Buy1_1>Sell2_1 && Buy1_2<Sell2_2) Then Buy; // Ocorreu um crossover 'UP' apropriado!

if(Sell1_1Buy2_2) Then Sell; // Ocorreu o crossover 'DOWN' apropriado!

Dave

muito obrigado de fato - eu vou tentar

 

Ajuda na codificação necessária

Qualquer ajuda apreciada...

Isto iria em uma EA como um componente da rotina de fechamento comercial.

Preciso criar uma variável que sempre retorne o maior saldo histórico da conta. Acho que isto exigiria um array?

Em termos práticos, a linguagem seria dizer. "se meu lucro aberto for X-pips maior do que o saldo mais alto de todos os tempos na conta, feche todas as negociações".

Se alguém puder ajudar com a variável, eu acho que posso codificar o resto.

Obrigado de antemão.

 

Obrigado por sua resposta, mas você está certo, eles não são exatamente o que eu estou procurando.

Eu ainda não tenho o código para resolver o problema.

Eu preciso do código para devolver a "marca d'água alta" do saldo da conta.

Mais uma vez, obrigado, qualquer ajuda é bem-vinda.

Dave137:
Isto não é bem o que você está procurando, mas procure de qualquer maneira. Anexe a outro gráfico e ele monitora todos os lucros, perdas dos gráficos que têm funcionado neles.
Razão: