[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 224

 

Por favor, ajude-me a mudar a administração do dinheiro no meu código EA.

Há 2 condições em minha EA

1 - lote mínimo + trabalhar com lote fixo ou 2 - aumentar o lote em % dos fundos disponíveis

Quero que o lote aumente em 0,01 lote após a 1ª transação fracassada, ou em 0,02 lote após a 2ª transação fracassada,

e após a terceira perda, o lote é novamente mínimo.

Preciso de funções que eu possa colar em minha EA (de preferência a mais simples possível)

Tentei colocar em código incluir (lot_lib) que ele gera muitos erros e não funciona.

Agradecemos antecipadamente pelo seu tempo!


 

Olá!

Estou escrevendo código, o objetivo é colocar o nível de parada de perda no ponto mais baixo/mais alto das três últimas barras. Eis o que saiu:

double FindSL(int mode)
   {
    double sl; //уровень стоплосса
    double buf; //буфер
    double lvl1, lvl2, lvl3; //выборка из 3-х последних баров
    if (mode == 1) //покупали
      {
       lvl1 = iLow(symb, 0, 0);
       lvl2 = iLow(symb, 0, 1);
       lvl2 = iLow(symb, 0, 2);
       buf = MathMin(lvl1, lvl2); //ищем низ
       sl = MathMin(buf, lvl3);
      }
    else if (mode == 2) //продавали
      {
       lvl1 = iHigh(symb, 0, 0);
       lvl2 = iHigh(symb, 0, 1);
       lvl3 = iHigh(symb, 0, 2);
       buf = MathMax(lvl1, lvl2); //ищем вершину
       sl = MathMax(buf, lvl3);
      }
    return (sl);
   }

As ordens são abertas pelo seguinte código:

int OpenOrder(int sell_or_buy)                                  //Открытие ордеров
   {
    GetLot();

     if(sell_or_buy==2)                                          //покупка
       {
        StopLoss = FindSL(1);
        OrderSend(symb, OP_BUYSTOP, Lots, iHigh(symb, 0, 1), 0, StopLoss, 
        iHigh(symb, 0, 1)+TakeProfit*Point, "Ichimoku Simple Adviser Trade", 1001, TimeCurrent()+ExpirationTime, Green);    
        return (1);
       }
     else if (sell_or_buy==1)                                    //продажа
       {
        StopLoss = FindSL(2);
        OrderSend(symb, OP_SELLSTOP, Lots, iLow(symb, 0, 1), 0, StopLoss, 
        iLow(symb, 0, 1)-TakeProfit*Point, "Ichimoku Simple Adviser Trade", 1001, TimeCurrent()+ExpirationTime, Red);
        return (1);
       }
     else {return (0);}
   } 

A StopLoss é uma variável global.

Ao testar, chega um momento em que o dinheiro se esgota, tudo de uma só vez, em um único negócio. Os lotes são pequenos, então o único problema é que a perda de carga não é definida por alguma razão (igual a 0)

Não consigo descobrir o que é o erro.

Olhe o código por favor, onde eu poderia cometer um erro?

 
gogent:

Olá!

Estou escrevendo código, o objetivo é colocar o nível de parada de perda no ponto mais baixo/mais alto das três últimas barras. Eis o que saiu:

As ordens são abertas pelo seguinte código:

A StopLoss é uma variável global.

Ao testar, chega um momento em que o dinheiro se esgota, tudo de uma só vez, em um único negócio. Os lotes são pequenos, então o único problema é que a perda de carga não é definida por alguma razão (igual a 0)

Não consigo descobrir o que é o erro.

Olhe o código por favor, onde eu poderia cometer um erro?

Ostop loss é sempre 0 após a compra.

Motivo: a variável lvl3 não está definida (erro mecânico)

 

Olá.

Eu estou lidando com a propagação. A propagação é sempre contra mim. Então eu tenho que adicioná-lo a um stop loss e subtraí-lo de um take profit? Portanto, se eu quiser obter um lucro líquido de 50 pips (digamos, 3 pips espalhados em um par de moedas), isso significa que tenho que definir um take profit de 53 pips em meu pedido. Se eu tiver uma perda líquida de 50 pips, então deve ser dado um stop loss de 47 pips. Eu acertei?

Obrigado de antemão!

 
01123456789:

Olá.

Eu estou lidando com a propagação. A propagação é sempre contra mim. Então eu deveria adicioná-lo a um stop loss e subtraí-lo de um take profit? Portanto, se eu quiser obter um lucro líquido de 50 pips (digamos, 3 pips espalhados em um par de moedas), isso significa que tenho que definir um take profit de 53 pips em meu pedido. Se eu tiver uma perda líquida de 50 pips, então deve ser dado um stop loss de 47 pips. Será que acertei?

Obrigado de antemão!


Olá!

Se estamos falando de seus planos e expectativas, isso é certo.

Se estamos falando formalmente, não está claro para mim o que significa "em uma ordem ... " na ordem..."

 

Olá! me ajude com uma função personalizada.

Eu entendo: se a condição é verdadeira, ela retorna para isitpik- (verdadeiro). A condição é calculada a partir do 0º tampão onde se encontra o cálculo do AO. Ou apenas a última barra i está no tampão e na ocorrência de condições para estes critérios então (verdadeiro) é passado para isitpik()? E por que atribuir tipo int à variável (i) se ela é feita por condição acima.


bool isitpik( int i )
   {
   if(ExtBuffer0[i]>0 && ExtBuffer0[i]>ExtBuffer0[i+1] && ExtBuffer0[i]>ExtBuffer0[i-1])return(true);
   if(ExtBuffer0[i]<0 && ExtBuffer0[i]<ExtBuffer0[i+1] && ExtBuffer0[i]<ExtBuffer0[i-1])return(true);
   }
 
tara:


Olá!

Se é sobre seus planos e expectativas, tudo bem.

Se estamos falando formalmente, não está claro para mim o que significa "em uma ordem... especificar take profit =53 pontos".

Quando eu disse: "Eu quis dizer uma ordem pendente (por exemplo, Buy Stop) com duas colunas para Stop Loss e Take Profit. Isto é, se eu quiser obter um lucro de 50 pips, eu deveria especificar 53 pontos de lucro na ordem pendente, ao invés de 50 porque 3 pontos tirarão o spread. Certo?
 
01123456789:
Ao dizer: "Eu quis dizer uma ordem pendente (por exemplo, Buy Stop) com duas colunas para Stop Loss e Take Profit. Isto é, se eu quiser obter um lucro de 50 pips, eu deveria especificar 53 pontos de lucro na ordem pendente, ao invés de 50 porque 3 pontos afetarão o spread. Certo?

Nos pedidos, TP e SL devem ser especificados em preços, não em pontos.
 
01123456789:
Ao dizer: "Eu quis dizer uma ordem pendente (por exemplo, Buy Stop) com duas colunas para Stop Loss e Take Profit. Isto é, se eu quiser obter um lucro de 50 pips, eu deveria especificar 53 pontos de lucro na ordem pendente, ao invés de 50 porque 3 pontos tirarão o spread. Certo?
Toda empresa de corretagem tem isto em seu contrato. Os pedidos de compra são fechados ao longo da linha Ask e os pedidos de venda são fechados ao longo da linha Bid. Tudo o que você entende corretamente. Dependendo do spread, você o adicionará ao seu lucro. Se você quiser obter 50 pips, você receberá +3 (dependendo do spread do par de moedas). Não esqueça que todos os gráficos são desenhados por Bid.
 
deyron:
Todas as corretoras têm isso no contrato. Os pedidos de compra são fechados na linha Ask e os pedidos de venda na linha Bid.
É assim? Parece-me que você está enganado. As ordens de compra abrem nos preços Ask e fecham nos preços Bid. As ordens de venda são abertas pelas linhas Bid e são fechadas pelas linhas Ask. Em outras palavras, se comprarmos (Ask price), fechamos a transação vendendo (Bid price).