[ARQUIVO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 4. - página 626

 
rigonich:

OrderModify(OrderTicket(),OrderLots( ),stop_loss,OrderTakeProfit( ), 0,CLR_NONE);

Espere, então você tem muito -- 0.


Obrigado por essa!!!!

aqui é onde pensar....

esta linha é da função "modificar" - eu não a escrevi, mas a inseri já pronta, e funciona.... talvez "0" signifique o tamanho da posição atual... mas prefiro fixá-la a um valor - graças a que os lotes são fixos

 
rigonich:

OrderModify(OrderTicket(),OrderLots( ),stop_loss,OrderTakeProfit( ), 0,CLR_NONE);

Pare, então seu lote é 0.


não há muitas modificações :))))))) há um preço de abertura por alguma razão...

OrderModify( int ticket, preço duplo, stoploss duplo, takeprofit duplo, data de vencimento, cor seta_color=CLR_NONE)
 
lottamer:


não há muito na modificação :))))))) há um preço de abertura por alguma razão...

OrderModify( int ticket, preço duplo, stoploss duplo, takeprofit duplo, data de vencimento, cor seta_color=CLR_NONE)


Certo, eu o confundi ao copiar e colar, não consigo me acostumar a colar nos comentários, se copiado da ajuda, é colado como um link.

No meu próprio caso, para inserir uma função com muitos parâmetros, copio-a da ajuda e substituo os parâmetros por aqueles de que preciso por sua vez\, para não ficar confuso.

 

Prezados todos!

Descarregado e lançado PFG FX traider (versão mais recente). Tentei fazer um indicador.

Imediatamente dois enigmas:

1. meu indicador é visível por baixo do editor, abre e tudo, mas eu não consigo encontrá-lo no sistema de arquivo. De forma alguma, nem mesmo através de buscas.

2. indicador abre arquivo - escreve carrapatos. Ele escreve e trava, mas também não consigo encontrar o arquivo!!!!

Como isso pode ser? Windows 7.

 

Irmãos, não ignorem o esforço de um principiante!

Precisa de um roteiro pronto (ou algo do gênero) que indique nos arquivos

movimentos na programação filtrados pelo momento e pelo tempo.

Por exemplo, o movimento começou às 14h00 e terminou às 14h45.

E a quantidade de movimento foi de 410 pontos (em cálculo de cinco dígitos).

Então, existe um roteiro que marcaria visualmente tais movimentos no gráfico "no passado"?

e para que os valores de força-tempo possam ser inseridos independentemente.

______

Favor indicar uma filial ou um local onde eles possam aconselhar como fazer isso.

Na programação - não em Aristóteles, mas suspeito que tal roteiro não seja difícil de ser feito.

___

Pronto para compartilhar o que parece ter sido encontrado, e o mais importante - os parâmetros para o filtro por tempo e força.

 
Chibrikin:

Prezados todos!

Descarregado e lançado PFG FX traider (versão mais recente). Tentei fazer um indicador.

Imediatamente dois enigmas:

1. meu indicador é visível por baixo do editor, abre e tudo, mas eu não consigo encontrá-lo no sistema de arquivo. De forma alguma, nem mesmo através de buscas.

2. indicador abre arquivo - escreve carrapatos. Ele escreve e trava, mas também não consigo encontrar o arquivo!!!!

Como isso pode ser? Windows 7.


No Semestre, alguns arquivos às vezes não são colocados no terminal, mas em D:Nome do usuárioeAppData Local:Arquivos de programa da loja virtual, depois o nome do terminal

Isto acontece freqüentemente se vários terminais forem instalados em diferentes diretórios ou se houver muitos indicadores, EAs ou outros arquivos de usuários acumulados no terminal.

 
TUNGUS:

Irmãos, não ignorem o esforço de um principiante!

Precisa de um roteiro pronto (ou algo do gênero) que indique nos arquivos

movimentos na programação filtrados pelo momento e pelo tempo.

Por exemplo, o movimento começou às 14h00 e terminou às 14h45.

E a quantidade de movimento foi de 410 pontos (em cálculo de cinco dígitos).

Então, existe um roteiro que marcaria visualmente tais movimentos no gráfico "no passado"?

e para que os valores de força-tempo possam ser inseridos independentemente.

______

Favor indicar uma filial ou um local onde eles possam aconselhar como fazer isso.

Na programação - não em Aristóteles, mas suspeito que tal roteiro não seja difícil de ser feito.

___

Pronto para compartilhar o que parece ter sido encontrado, e o mais importante - os parâmetros para o filtro por tempo e força.


Não tenho certeza do que você quer do roteiro.
 

A ajuda é urgentemente necessária, estou totalmente confuso. Aqui está a função de negociação e a função de modificação de ordem:

void OrdersModifying(double& sl, double& tp)
{
  int total = OrdersTotal() - 1;
  sl = 0; tp = 0;
  
  for(int i=total; i>=0; i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)                            // Если ордер есть и он выбран..
    {
      if(g_type == OP_BUY)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt,Digits);                    // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,Digits);                    // Получаем значение тейкпрофита для выбранного ордера
      }
      if(g_type == OP_SELL)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,Digits);                // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,Digits);                // Получаем значение тейкпрофита для выбранного ордера
      }
      if(sl != 0 || tp != 0)                                                            // Если полученные значения sl и tp не равныы 0, то..
      {
        OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime);      // Модифицируем ордер
      }
    }
  }
}
bool OpenBuy()
{
  g_ticket = -1;
  string myNote = "сов баянул";
  
  if(GetPriceToInput() < Ask)
  {       
    g_ticket = OrderSend(Symbol(),OP_BUYLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Blue);
  }
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
 
  return(true);
}
bool OpenSell()
{
  g_ticket = -1;
  string myNote = "сов шортанул";
 
  if(GetPriceToInput() > Bid)
  {
    g_ticket = OrderSend(Symbol(),OP_SELLLIMIT,0.1,GetPriceToInput(),3,0,0,myNote,myMagic,0,Red);
  }
    if(g_ticket > 0 && OrderSelect(g_ticket,SELECT_BY_TICKET,MODE_TRADES) == true)
  
  return(true);
}
bool Trade (int signal)
{
  FindOrders();

  if(signal == SIGNAL_BUY)                                                          // Если сигнал на покупку и открытых ордеров нет..
    if(!OpenBuy())                                                                  // открываем лимитный ордер на покупку
      return(false);                                                                
      
  if(signal == SIGNAL_SELL)                                                       // Если сигнал на продажу и открытых ордеров нет..
     if(!OpenSell())
       return(false);                                                              // открываем лимитный ордер на продажу
  
  OrdersModifying(sl, tp); - ТУТ НЕ ВЪЕЗЖАЮ КАК БЫТЬ

  return(true);
}

Atualmente tenho modificações de pedidos que não funcionam, embora quando várias funções estavam em uma, tudo funcionava. Mas eu quero que todas as funções sejam separadas por conveniência. Em geral, eu gostaria de ter a funçãoOrdensModificar para modificar as ordens. Entendo que logicamente deve ser colado na função Comércio onde eu o colei, mas temos que passar 2 parâmetros sl e tp da funçãoOrdensModificando para ela.

Eu passei corretamente as variáveis sl e tp através dos parâmetros da funçãoOrderModifying ?

 
hoz:

A ajuda é urgentemente necessária, estou totalmente confuso. Aqui está a função de negociação e a função de modificação de ordem:

Atualmente tenho modificações de pedidos que não funcionam, embora quando várias funções estavam em uma, tudo funcionava. Mas eu quero que todas as funções sejam separadas por conveniência. Em geral, eu gostaria de ter a funçãoOrdensModificar para modificar as ordens. Entendo que logicamente deve ser colado na função Comércio onde eu o colei, mas temos que passar 2 parâmetros sl e tp da funçãoOrdensModificando para ela.

Eu passei corretamente os parâmetros sl e tp para a funçãoOrderModifying ?

Primeiro você faz sl = 0; tp = 0; e depois if(sl != 0 ||| tp != 0).
 
rigonich:
Primeiro você faz sl = 0; tp = 0; e depois if(sl != 0 ||| tp != 0).


Vitaly, o ponto é claro aí. Veja:

void OrdersModifying(double& sl, double& tp)
{
  int total = OrdersTotal() - 1;
  sl = 0; tp = 0;
  
  for(int i=total; i>=0; i--)
  {
    if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES) == true)                            // Если ордер есть и он выбран..
    {
      if(g_type == OP_BUY)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() - i_sl*pt,Digits);                    // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() + i_tp*pt,Digits);                    // Получаем значение тейкпрофита для выбранного ордера
      }
      if(g_type == OP_SELL)
      {
        if(i_sl != 0)                                                                 // Если входной параметр стоп-лосса не равен 0, то..
           sl = NormalizeDouble(OrderOpenPrice() + i_sl*pt,Digits);                // Получаем значение стоп-лосса для выбранного ордера
        if(i_tp != 0)                                                                 // Если входной параметр тейкпрофита не равен 0, то..
           tp = NormalizeDouble(OrderOpenPrice() - i_tp*pt,Digits);                // Получаем значение тейкпрофита для выбранного ордера
      }
      if(sl != 0 || tp != 0)                                                            // Если полученные значения sl и tp не равныы 0, то..
      {
        OrderModify(g_ticket,OrderOpenPrice(),sl,tp,OrderOpenTime() + 86400,Lime);      // Модифицируем ордер
      }
    }
  }
}

No início sl = 0; tp = 0; Depois encontro os valores normalizados de sl e tp que já estarão na ordem baseada no i_sl e i_tp inseridos pelo usuário. E então eu verifico sesl etp não são iguais a zero, ou seja, se mudaram depois que eu os declarei no início da função, então modificamos o pedido.

E sesl etp são iguais a zero, isso significa que esses parâmetros não foram calculados. como eu o entendo. Uma vez obtidos os valores dessas variáveis, elas se tornarão imediatamente não-zero, e podemos modificar a ordem... Faz sentido?

Razão: