[ARQUIVO] Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 3. - página 176

 

Você pode me dizer como comparar corretamente o preço atual ou a média móvel com a linha de tendência?

Agradecemos antecipadamente.

    double maH_fast=iMA(NULL,fast_maH_timeframe,fast_maH_period,0,fast_maH_method,fast_maH_price,0);

    if (ObjectFind("Tr_S1")==-1)
     {
      Create_Tr_S("Tr_S1",White,timf2s,TF2S,timf1s,TF1S);
     }

    if(maH_fast>"Tr_S1")
     {...}
 
ikatsko:

COMO VOCÊ CONTARIA O NÚMERO DE POSIÇÕES LONGAS LUCRATIVAS E, SEPARADAMENTE, O NÚMERO DE POSIÇÕES CURTAS LUCRATIVAS?

A estratégia é a seguinte: se o número de posições longas lucrativas desde o início da EA (ou melhor - para todo o histórico da conta) for maior do que o número de posições curtas, então somente as posições longas devem ser abertas. E vice versa.

É claro como contar estes negócios, se eles forem fechados pelo Consultor Especialista: Fechar - Contar. Mas se uma posição é fechada por TP ou SL, então ... ?

Talvez alguém tenha um código pronto da função?


int ProfitableOrdersOfLongs(){
   int i,Orders=0; 
   for(i=0;i<OrdersHistoryTotal();i++){
      if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
      if(OrderSymbol()!=Symbol())continue;
      if(OrderMagicNumber()!=Magic)continue;
      if(OrderType()==0)if(OrderProfit()>0) Orders++;              
    }  
return(Orders);} 
//====================================================================================================== 
int ProfitableOrdersOfShorts(){
   int i,Orders=0; 
   for(i=0;i<OrdersHistoryTotal();i++){
      if(!OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))continue;
      if(OrderSymbol()!=Symbol())continue;
      if(OrderMagicNumber()!=Magic)continue;
      if(OrderType()=1)if(OrderProfit()>0) Orders++;              
    }  
return(Orders);} 
 
nemo811:

Você pode me dizer como comparar corretamente o preço atual ou a média móvel com a linha de tendência?

Agradecemos antecipadamente.

Uma linha de tendência tem um ponto inicial com coordenadas tempo-preço e um ponto final com coordenadas tempo-preço.

Você pode usar a equação da linha reta com as mesmas coordenadas para encontrar o nível de preço em qualquer ponto que esteja entre essas duas coordenadas do segmento construído e comparar os níveis de preço do MAA e o ponto de cruzamento da barra desejada com esta linha...

Você pode ler - há uma descrição detalhada de tal exemplo.

 
Roman.:

Você toma o último pedido fechado, compara seu tempo de fechamento com o anterior usando OrderCloseTime(), se for o mesmo, você o compara com o tempo de fechamento de seu pedido fechado anterior... assim, naturalmente, está tudo em loop - desde o último fechado até o primeiro, você vai um após o outro e compara o tempo de fechamento dos pedidos... Outra coisa - imprima o horário de fechamento das últimas ordens que você conhece de antemão, digamos três ordens , pode ser diferente, mesmo que você o entenda como " simultaneamente", ou seja, como eu o entendo, a ordem fecha a qualquer momento, ou seja Na verdade, o tempo de fechamento de, digamos, três ordens ao mesmo tempo não pode ser o mesmo - tente imprimir() e ver os valores de suas três ordens TIME - seus valores de características OrderCloseTime(), ou seja, podemos ter que introduzir o conceito de TIME de fechamento, ou seja, desvio do tempo de fechamento de várias ordens por algum valor pequeno quando podemos considerar que elas fecharam simultaneamente. Experimentem e vejam por vocês mesmos a partir daqui.

Obrigado que funcionou, mas agora abre uma ordem múltipla

Eu o fiz assim

OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);//выбрать последний ордер 
tik=OrderCloseTime();
for (int l=OrdersHistoryTotal(); l>=0; l--) 
{
OrderSelect(l, SELECT_BY_POS, MODE_HISTORY);
if (OrderType()==OP_BUY||OP_SELL)
 {
  if (OrderMagicNumber()==1)
   {
   if (OrderProfit()<0)
    {
     if (OrderClosePrice()!= OrderStopLoss())
     {
     if (tik<=OrderCloseTime())
     {
 
vik-777:

Obrigado, mas agora um pedido múltiplo se abre.

Eu o fiz assim

Problema resolvido. Obrigado a todos vocês.

OrderSelect(OrdersHistoryTotal()-1, SELECT_BY_POS, MODE_HISTORY);//выбрать последний ордер 
tik=OrderCloseTime();
for (int l=OrdersHistoryTotal(); l>=0; l--) 
{
OrderSelect(l, SELECT_BY_POS, MODE_HISTORY);
if (OrderType()==OP_BUY||OP_SELL)
 {
  if (OrderMagicNumber()==1)
   {
   if (OrderProfit()<0)
    {
     if (OrderClosePrice()!= OrderStopLoss())
     {
     if (tik<=OrderCloseTime())
     {
     a = OrdersHistoryTotal();
     if (a>w)
     {
     if (sarik>0)
      {   
      OrderSend(Symbol(),OP_BUY,Lot1,NormalizeDouble(Ask,4),1,Ask - SL1*Point,Ask + 10*Point,0,2);
      w++;
      }
 
nemo811:

Você pode me dizer como comparar corretamente o preço atual ou a média móvel com a linha de tendência?

1. if(maH_fast>"Tr_S1") {...} -- erro: maH_fast é um número real, "Tr_S1"- valor do tipo de string;
2. double ObjectGetValueByShift( nome da string, int shift)
A função calcula e retorna o valor do preço para a barra especificada (offset da barra atual). O valor do preço é calculado usando a equação linear com base na primeira e segunda coordenadas. Aplica-se a linhas de tendência.
Parâmetros:
nome - Nome do objeto.
turno - Número de barras.
Exemplo: double price=ObjectGetValueByShift("MyTrendLine#123", 11);
 
Olá! Tenho esta pergunta... Digamos que iHighest e iLowest podem ser usados para descobrir o número de barras com o valor máximo de alto/baixo por um certo período, mas como posso descobrir o valor máximo do indicador st Dev para um certo número de barras?
 
double maxdev,mindev=1;
for(int i=0;i<counbar;i>0)
{
double val=iStdDev(NULL,0,10,0,MODE_EMA,PRICE_CLOSE,i);
if(mindev>val)mindev=val;
if(maxdev<val)maxdev=val;
}
Print("maxdev - ",maxdev," mindev - ",mindev);
Em algum lugar como este.
 
7sintez:

Olhei para tudo, fiz de tudo... Não vai abrir uma posição, só isso! Fecha corretamente, mas não abre... Eu não sei o que fazer! Talvez alguém encontre um bug no programa?




Abre e fecha os pedidos em 5 min. EURUSD corretamente. Pequenos problemas de modificação, muitas vezes tentam modificar com os mesmos valores, portanto erros freqüentes.
 

Olá a todos. Ajuda para um iniciante, por favor:

Resumindo.

1)período é de 1 dia.

2)Há uma ordem de encomenda(...) em aberto. Tem SL e TP. Como condição adicional à parada e perda, temos que definir a ordem para viver a partir do momento em que foi aberta até 18 horas, e depois fechá-la ao preço atual.

Isto significa que uma das três condições deve ser cumprida:

1. uma parada de perda é acionada

ou

2. O lucro é acionado

ou

Como nem Stop Loss nem Take Profit foram acionados, a posição é fechada 18 horas após sua abertura ao preço então vigente.

Eis como definir esta condição de tempo, eh????


Pergunta 2:

Como soletrar corretamente a condição de que o evento deve ocorrer se( período de 1 dia):

- O fechamento da barra atual é maior que C da barra anterior e maior que C da barra anterior, e C da barra anterior também é maior que C da barra anterior.


Não se preocupe, por favor. Eu estava sentado no Rumus antes e estou em processo de reconstrução...

Razão: