[ARQUIVO]Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por ela. Não posso ir a lugar nenhum sem você - 5. - página 336

 

E barma, certifique-se

//--------------------------------------------------------------- 5 --
// торговые критерии
if(vverh>0)
  {
   Opn_B=true;
   Cls_S=true;
   Opn_S=false;
   Cls_B=false;
  }
if(vverh>0)
  {
   Opn_S=true;
   Cls_B=true;
   Opn_B=false;
   Cls_S=false;
  }
  
//--------------------------------------------------------------- 6 --
se as condições tiverem sido corretamente explicitadas
 

Cavalheiros! Boa noite (à noite, de manhã, à tarde)!

Você poderia me dar uma resposta a uma simples pergunta?

Qual função retorna o preço de abertura de um pedido, qual:

- fechado por último

- fechado em um Stop Loss.

Obrigado por sua ajuda.

 
solnce600:

Cavalheiros! Boa noite (à noite, de manhã, à tarde)!

Por favor, diga-me a resposta a uma simples pergunta.

Qual função retorna o preço de abertura do pedido, qual:

- fechado por último

- Fechado em um Stop Loss.

Obrigado por sua ajuda.



não existe tal função - há um pequeno código a ser escrito
 
artmedia70:

As variáveis só podem ser usadas quando se testa a estratégia no testador.

Para o mundo real, todo valor necessário para executar a lógica deve ser calculado no momento certo, porque os valores destas variáveis são muito fáceis de perder, por exemplo, durante um reinício.



Artem, e é possível dar um exemplo? Afinal de contas, é possível até mesmo substituir uma variável por função. E você não pode substituir uma função por uma variável :)

 

solnce600:


Cavalheiros! Boa noite (ou noite, ou manhã) para todos!

Por favor, diga-me a resposta a uma simples pergunta para você.

Qual função retorna o preço aberto do pedido, qual :

- fechado por último

- Fechado em um Stop Loss.

Obrigado por sua ajuda.



um ramo como esse, há muitas coisas lá, coisas interessantes.

Esta função retorna a bandeira para fechar a última posição na parada

 

Muito obrigado pela dica.

Esta é exatamente a função que estou usando.

Após o fechamento de uma ordem de parada, preciso codificar a abertura das ordens de mercado ao preço de

do último pedido fechado na parada.

Eu tentei memorizar o preço de abertura do último pedido fechado na parada na variável
if (isCloseLastPosByStop()==True)                                            //если посл.орд.SELL  закрылся по стопу(стоп данного ордера SELL = 295 п.)

double PrStop = (Bid - 0.0295);                                              // от цены срабатывания СТОП-ЛОССА вычитаем 295 п. 
                                                                             // и запоминаем это значение,(т.е. цену открытия ордера)в переменной  PrStop         
if (Bid == PrStop )                                                          //если цена Bid будет равна значению PrStop
OrderSend(Symbol(),OP_BUY,0.1,Ask,1,Bid-2950*Point,Bid+150*Point,"jfh",123 );//открыть ордер.

Mas quando o preço é igual ao valor do PrStop, o pedido não é feito.

Eu também tentei fazer um pedido quando o preço era inferior ao valor da PrStop.

Mas não voltou a estabelecer uma ordem.

if (Bid < PrStop ) 

Penso que a razão pode ser que até o próximo pedido NÃO PARE DE PERDER.

isCloseLastPosByStop () retornará True a cada tick e a variável PrStop receberá

EM CADA TICK UM NOVO VALOR.

Examinei atentamente todas as funções de Kim, mas seus nomes parecem ser inadequados para resolver meu problema.

Eu ficaria muito grato àqueles que me guiam na direção certa.

 

Por favor, me dê uma dica! Estou apenas começando a dar meus primeiros passos na programação.

Como uma função funcionaria mais rapidamente? (A função é chamada 2 vezes)

- se for chamado da biblioteca

- se for descrito fora do início da função() diretamente na EA.

- se estiver na função de início() em si

 

solnce600, Andrei, você tem a última posição fechada no SL em suas mãos! E quem o impede de descobrir tudo o que você quer sobre isso, ajustando um pouco a função:

double GetOOPCloseLastPosByStop(string sy="", int op=-1, int mn=-1) {
  datetime t; 
  double   ocp, osl, OOP;
  double p = 0;
  int    i, j=-1, k=OrdersHistoryTotal();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
        if (op<0 || OrderType()==op) {
          if (t<OrderCloseTime()) {
            t=OrderCloseTime();
            j=i;
//            p = OrderProfit()+OrderCommission()+OrderSwap();
            OOP = OrderOpenPrice();
  } } } } }
  if (OrderSelect(j, SELECT_BY_POS, MODE_HISTORY)) {
    ocp=NormalizeDouble(OrderClosePrice(), 5);
    osl=NormalizeDouble(OrderStopLoss(), 5);
//    if (ocp==osl) return(p);
    if (ocp==osl) return(OOP);
  }
  return(0);
}
Comentei as duas linhas que me dão o lucro final, e acrescentei duas linhas para obter o preço de abertura dessa posição fechada. Eu não testei, mas deve funcionar como tudo funciona quando eu substituo o que eu preciso! Confira!
 
borilunad:

solnce600, Andrei, você tem a última posição fechada no SL em suas mãos! E quem está impedindo que você descubra tudo o que quiser sobre isso, ajustando um pouco a função:

Comentei as duas linhas que me dão o lucro de fechamento e acrescentei duas linhas para obter o preço de abertura dessa posição fechada. Não o testei, mas deve funcionar como tudo funciona quando coloco o que preciso! Confira!

Muito obrigado por sua pronta ajuda.

Eu também ficaria muito grato se você pudesse me dar uma idéia sobre.....

Minha estratégia é muito simples.

Se o preço se mover para cima (300 pips) mais rápido do aberto (iOpen (Símbolo (),0,0) do que uma distância menor(10 pips) na direção oposta

-Após a inversão do preço e indo na direção oposta, as ordens de mercado abertas ao preço de abertura de cada vela ( iOpen (Símbolo (),0,0) .

Para implementar esta idéia, a primeira coisa que me vem à mente é

1. Ao preço aberto de cada vela, colocar uma ordem de mercado com uma grande parada e um pequeno lucro.

Se a ordem fechou mais rápido na parada do que no lucro, defina uma ordem de mercado ao preço de abertura da ordem que fechou na parada.

Este método permite detectar castiçais a preços de abertura que mais tarde devem ser definidos como ordens de mercado.....Mas para fazer isso eu tenho que colocar no mercado

encomendas com grandes paradas e pequenos lucros NA ABERTURA DE TODAS AS ATUALIDADES.

E eu não preciso colocar ordens na abertura de cada vela em negociações reais.

A primeira coisa que me vem à mente é

- Devemos abrir um pedido na abertura de cada castiçal em uma conta demo que terá uma EA anexada a seu gráfico.

- E eu deveria abrir ordens somente pelas condições descritas acima em uma conta real com outra EA anexada ao gráfico.

Mas me parece que negociar em duas contas e dois EAs também não é a variante mais conveniente e ideal. Gostaria de negociar em uma conta e um EA.

PERGUNTA: De que outra forma posso encontrar as condições de abertura de posição descritas acima sem abrir ordens de mercado na abertura de cada vela?

Obrigado.

 
solnce600:

Muito obrigado por sua pronta ajuda.

Eu também ficaria muito grato se você pudesse me dar uma idéia sobre.....

Minha estratégia é muito simples

Se o preço desde o início de uma vela (iOpen (Símbolo (),0,0) subisse (300 pips) mais distância (300 pips) do que uma distância menor(10 pips) na direção oposta

-então, depois que o preço gira e vai na direção oposta, abrir ordens de mercado ao preço da vela ( iOpen (Símbolo (),0,0) na abertura de cada vela.

Para implementar esta idéia, a primeira coisa que me vem à mente é

1. Ao preço aberto de cada vela, colocar uma ordem de mercado com uma grande parada e um pequeno lucro.

Se a ordem for fechada mais rapidamente na parada do que no lucro, defina uma ordem de mercado ao preço de abertura da ordem que fechou na parada.

Este método permite detectar castiçais a preços de abertura que mais tarde devem ser definidos como ordens de mercado.....Mas para fazer isso eu tenho que colocar no mercado

encomendas com grandes paradas e pequenos lucros NA ABERTURA DE TODAS AS ATUALIDADES.

E eu não preciso colocar ordens na abertura de cada vela em negociações reais.

A primeira coisa que me vem à mente é

- Devemos abrir um pedido na abertura de cada castiçal em uma conta demo que terá uma EA anexada a seu gráfico.

- E eu deveria abrir ordens somente pelas condições descritas acima em uma conta real com outra EA anexada ao gráfico.

Mas me parece que negociar em duas contas e dois EAs também não é a variante mais conveniente e ideal. Gostaria de negociar em uma conta e em um EA.

PERGUNTA: De que outra forma posso detectar as condições para a abertura da posição sem abrir a ordem do mercado na abertura de cada vela?

Obrigado.

Bem, é claro, você fez disso um grande negócio como se o tivesse visto de verdade, o que eu duvido! Não entendo bem sua idéia, mas sugiro que você tente, rastreando os castiçais nas condições e, se essas condições coincidirem com as suas, definir as ordens pendentes nas distâncias desejadas da abertura do castiçal zero, enquanto fixa as paradas e os lucros, modificando-as imediatamente após a sua definição, aplicando da mesma forma a função de outro Kim para determinar os dados da última ordem colocada! Examine cuidadosamente sua lógica, experimente e vá em frente! Boa sorte!