Como codificar? - página 318

 
mladen:
dasioIt já está passando por todas as horas do dia atual. Eu coloquei o iClose() e iOpen() apenas como exemplo de uma chamada de um período de tempo diferente de 1 hora. Se você quiser acessar um dia diferente do atual, substitua o "0" na data/hora de inícioTime=iTime(NULL,PERÍODO_D1,0); parte com qualquer dia para o qual você deseja que os dados coletados

Obrigado.

Talvez eu tenha que estudar.

Não entendo como posso fazer cálculos separados para a vela 00:00 - 01:00 - 02:00 etc.

Desculpe

 

Problemas de sinal

Mladen

Obrigado, olhei atentamente....Im ainda experimentando o código. Estarei notificando quando terminar.

 

dasio

Esta parte

int i=iBarShift(NULL,PERIOD_H1,startTime);

define o i para o turno da primeira vela de hora no dia especificado (é por isso que a data/hora de inícioTime=iTime(NULL,PERÍODO_D1,0); foi adicionado - para descobrir a hora de início do dia) depois disso, ele irá loopar através de cada valor da barra de 1 hora até que o dia permaneça o mesmo (por exemplo, na sexta-feira ele não irá loopar 24 vezes, mas 22 ou 23, dependendo do seu corretor)

Se você precisa sentir alguma coisa que tem que ser feita de maneira um pouco diferente, deixe-me agora uf que a idéia foi sua)

dasio:
Obrigado.

Talvez eu tenha que estudar.

Não entendo como posso fazer cálculos separados para a vela 00:00 - 01:00 - 02:00 etc.

Desculpe
 

Como fazer uma parada de um Expert ?

Olá codificadores,

Como codificar algumas linhas de codificação extras para que um Especialista pare depois de um negócio vencedor?

Os Pips estão no saco, então faça o Expert parar...

Muito obrigado

Tomcat98

 
mladen:
dasio

Esta parte

int i=iBarShift(NULL,PERIOD_H1,startTime);

define o i para o turno da primeira vela de hora no dia especificado (é por isso que a data/hora de inícioTime=iTime(NULL,PERÍODO_D1,0); foi adicionado - para descobrir a hora de início do dia) depois disso, ele irá loopar através de cada valor da barra de 1 hora até que o dia permaneça o mesmo (por exemplo, na sexta-feira ele não irá loopar 24 vezes, mas 22 ou 23, dependendo do seu corretor)

Se você precisa sentir alguma coisa que tem que ser feita de maneira um pouco diferente, deixe-me agora uf que a idéia foi sua)

Obrigado,

estou entendendo pouco mais.

No entanto, eu preciso dele, por exemplo.

Devo associar a variáveis algo como isto:

(vela 00:00 ; Variável = Perto+Alto

vela 01:00 ; Variable1 = Close+Open

vela 02:00 ; Variable2 = alto+baixo;

E assim por diante durante toda a vela de hora do dia.

Assim, as variáveis são definidas como sendo o dobro.

Depois disso tenho que fazer alguns cálculos matemáticos com a variável e associar o resultado a um buffer (não é um problema).

A questão para mim é a variável associação....

 

Outro problema... estou tentando estudar a programação e às vezes (só de vez em quando? eheh) preciso de ajuda.

Se eu tenho um pedido pendente, como posso codificar se eu quiser que quando um pedido pendente é aberto, o outro pedido pendente deve ser excluído?

Obrigado.

 

Você tem que usar 2 loops :

Primeiro você tem que contar as ordens para descobrir se algumas das ordens pendentes se tornaram uma ordem "regular" (então você tem que fazer uma contagem regular das ordens que têm tipos OP_BUY ou OP_SELL e, se desejar, contar o resto das ordens também).

Se houver ordens abertas, então você tem que fazer um loop mais uma vez e excluir todas as ordens que não sejam do tipo OP_BUY ou OP_SELL.

O código pode ser algo parecido com isto :

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=MagicNumber) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

}
dasio:
Outro problema... estou tentando estudar a programação e às vezes (apenas em tempo?eheh) eu preciso de ajuda.

Se eu tenho uma ea que coloca duas ordens pendentes, como posso codificar se eu quiser que quando uma ordem pendente é aberta, a outra ordem pendente deve ser apagada?

Obrigado.
 

Fechar todas as posições de venda ou compra somente (quando atingido o lucro alvo)

Olá a todos ... sou novo no FX e EA. Eu tentei encontrar um EA para "fechar todas as vendas" ou "fechar todas as compras" quando atingido o alvo, mas não consegui encontrar. Encontrei apenas fechar todas as vendas ou todas as compras sem o "HIT TARGET or PROFIT". É possível se alguém pudesse me ajudar a criar 1 EA com as características abaixo:-

1)Fechar todas as vendas se o lucro atingir o alvo X.

2)Fechar todas as compras se o lucro atingir a meta X.

3)Incluir trailing stop (se possível, se não houver problema).

4) Não fechar se o nível de patrimônio ou margem for inferior a X % se fechar todas as compras ou fechar todas as vendas (se possível, se não houver problema)

Nota:

Se nenhum 4 é bastante difícil de codificar, então apenas nenhum 1,2 e 3 em uma EA.

Se nenhum 4 e 3 é difícil, então apenas 1 e 2 em uma EA

Se ainda assim for difícil, basta criar o 1 e o 2 separadamente.

Seria muito grato se alguém pudesse me fornecer o acima mencionado.

Obrigado de antemão

 
pipsmonitor:
Olá a todos ... sou novo no FX e EA. Eu tentei encontrar um EA para "fechar todas as vendas" ou "fechar todas as compras" quando atingido o alvo, mas não consegui encontrar. Encontrei apenas fechar todas as vendas ou todas as compras sem o "HIT TARGET ou PROFIT". É possível se alguém pudesse me ajudar a criar 1 EA com as características abaixo:-

1)Fechar todas as vendas se o lucro atingir a meta X.

2)Fechar todas as compras se o lucro atingir a meta X.

3)Incluir trailing stop (se possível, se não houver problema).

4) Não fechar se o nível de patrimônio ou margem for inferior a X % se fechar todas as compras ou fechar todas as vendas (se possível, se não houver problema)

Nota:

Se nenhum 4 é bastante difícil de codificar, então apenas nenhum 1,2 e 3 em uma EA.

Se nenhum 4 e 3 é difícil, então apenas 1 e 2 em uma EA

Se ainda assim for difícil, basta criar o 1 e o 2 separadamente.

Seria muito grato se alguém pudesse me fornecer o acima mencionado.

Obrigado de antemão

Olá Pipsmonitor,

Talvez tenha encontrado algo aqui nesta página https://www.mql5.com/en/forum/181179 também fez uma busca de óculos na barra de cabeçalho do fórum usado fechado sobre o lucro encontrado alguns lá você pode ser capaz de usar, também pode tentar uma busca de trailing Eas, conhecer um Ema trailing e BBand parar de trailing Ea.

 

Hi,

Estou tentando fundir estes dois códigos, mas tenho problemas com ele.

Preciso que quando uma ordem pendente é preenchida, a outra deve ser cancelada.

Obrigado por sua disponibilidade.

int opened =0;

int pending =0;

for(int i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()==OP_BUY || OrderType()==OP_SELL)

opened++;

else pending++;

}

if (opened>0 && pending>0)

{

for(i=OrdersTotal()-1; i>=0; i--)

{

OrderSelect(i, SELECT_BY_POS, MODE_TRADES);

if(OrderSymbol() !=Symbol()) continue;

if(OrderMagicNumber()!=Magic) continue;

if(OrderType()!=OP_BUY && OrderType()!=OP_SELL)

OrderDelete(OrderTicket());

}

} [/PHP]

[PHP] extern int Magic = 68415;

extern int Orario_Inizio = 0;

extern int Orario_Fine = 6;

extern int Buffer = 0;

extern double Lotti = 0.1;

extern int TakeProfit = 10;

extern int StopLoss = 50;

double Massimo;

double Minimo;

int BarCount;

int BarStart;

int BarShift;

double MinLot;

double LotSize;

int i;

int ticket;

string Status;

string BuyStatus1;

string SellStatus1;

double Range;

string CommentoRange;

double pipMultiplier = 1;

int init()

{

}

int start()

{

if (Digits==3 || Digits==5)

{pipMultiplier = 10;}

else {pipMultiplier = 1; }

double TakeProfit1 = TakeProfit*Point*pipMultiplier;

double StopLoss1 = StopLoss*Point*pipMultiplier;

double Buffer1 = Buffer*Point*pipMultiplier;

double StopLossPrice = NormalizeDouble(StopLoss1,Digits);

double TakeProfitPrice = NormalizeDouble(TakeProfit1,Digits);

double BufferPrice = NormalizeDouble(Buffer1,Digits);

//CALCOLA LE BARRE DEL RANGE

if(Orario_Inizio>Orario_Fine)

{

BarCount=24+Orario_Fine-Orario_Inizio;

}

if(Orario_Inizio<Orario_Fine)

{

BarCount=Orario_Fine-Orario_Inizio;

}

//CALCOLA IL MASSIMO E IL MINIMO DEL RANGE

if(Hour()>=Orario_Fine)

{

BarStart=Hour()-Orario_Fine;

BarShift=BarStart+BarCount;

Minimo=iLow(NULL,PERIOD_H1,BarStart);

Massimo=0;

for(i=BarStart;i<=BarShift;i++)

{

Massimo=MathMax(Massimo,iHigh(NULL,PERIOD_H1,i));

Minimo=MathMin(Minimo,iLow(NULL,PERIOD_H1,i));

Range=(Massimo-Minimo)/Point;

}

}

else

{

Massimo=0;

Minimo=0;

return(0);

}

//CONTROLLA SE E' L'ORARIO PER POTER TRADARE

if(Hour()==Orario_Fine && OrdersTotal()<2)

{

//CONTROLLA SE IL MASSIMO E' STATO ROTTO. CONDIZIONE BUY

double OpenPriceBuy = NormalizeDouble((Massimo+BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_BUYSTOP,Lotti,OpenPriceBuy,0,OpenPriceBuy-StopLossPrice,OpenPriceBuy+TakeProfitPrice,NULL,Magic,0,Blue);

//CONTROLLA SE IL MINIMO E' STATO ROTTO. CONDIZIONE SELL

double OpenPriceSell = NormalizeDouble((Minimo-BufferPrice),Digits);

ticket=OrderSend(Symbol(),OP_SELLSTOP,Lotti,OpenPriceSell,0,OpenPriceSell+StopLossPrice,OpenPriceSell-TakeProfitPrice,NULL,Magic,0,Red);

if (ticket != -1)

return(0);

}

}
Razão: