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

 
hoz:


Na verdade, sim. Talvez seja tarde demais, mas eu não entendo. Esse é essencialmente o lucro em pps. Essa é a distância da abertura ao fechamento. Por que então a expressão está errada?

Porque temos que dividir por ponto o resultado desta expressão
 

Estou ficando um pouco cheio de mim mesmo... :) O problema:

1. Há uma posição aberta de 0,1 lote

2. Seu valor TakeProfit é de 50 pips.

3. Calculo seu lucro potencial de acordo com a fórmula PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE);

4. Do cálculo recebo o lucro potencial de $5,00 (0,1*50*1,0).

A posição vai no vermelho e em algum momento mais uma compra em média abre, mas com 0,2 lote

1. Calculo o Breakeven para estas duas posições. A função tem sido usada há muito tempo, como requerido, e não tenho nenhuma reclamação até agora:

//+----------------------------------------------------------------------------+
/*
Расчёт уровня БУ для множества по одному инструменту:
сумма лотов = суммарная позиция (СП)
стоимость тика СП = СТ
профит СП = ПСП
Формула расчёта довольно проста:
КП = ПСП / (СТ * СП)
В которой узнаём количество пипс (КП) до уровня БУ относительно текущей цены (ТЦ) символа.
И подставив КП в формулу БУ = ТЦ - КП * Point получаем уровень цены БУ.
В зависимости от направления СП выбирается прибавлять либо отнимать от ТЦ.
*/
double PriceWL(int op, int m1, int m2, double &ll) {
   double Res, pp, pt, tic, NumPP, Prof=0, SumLot=0.00000001;
   int i;
   
   pt =MarketInfo(sy,MODE_POINT);
   tic=MarketInfo(sy,MODE_TICKVALUE);                          // Стоимость тика СТ
   for (i=0; i<OrdersTotal(); i++) {
      if (OrderSelect(i,SELECT_BY_POS)) {
         if (OrderSymbol()!=sy)        continue;
         if (OrderType()!=op)          continue;
         if (OrderMagicNumber()==m1 || OrderMagicNumber()==m2) {
            Prof+=(OrderProfit()+OrderSwap()+OrderCommission());  // Суммарный профит позиций ПСП
            SumLot+=OrderLots();                                  // Суммарный лот позиций    СП
            }
         }
      }
   SumLot=MathAbs(NormalizeLot(SumLot));
   NumPP=MathAbs(Prof/(tic*SumLot));                           // Количество пунктов до уровня бу КП
   if (op==0) Res=Ask+NumPP*pt;
   if (op==1) Res=Bid-NumPP*pt;
   ll=SumLot;
   return(Res);
}
//+----------------------------------------------------------------------------+

2. Perfeito. Você calculou o nível de breakeven, mas... se você colocar as fichas dessas duas posições, elas fecharão em zero. Está bem, eu acho. Agora preciso somar a este nível da BU tantos pontos quantos forem necessários para obter um lucro total, igual ao previamente calculado - $5.

3. e aqui é onde eu tenho um bloqueio no meu cérebro. O que faço: Tomo $5, divido pelo lote total destas duas posições (0,1 + 0,2 = 0,3), multiplicado pelo TICK_VALUE

Eu tenho 5/(0,3*1,0) = 16,6666 Depois multiplico por Ponto (0,00016) e adiciono ao preço Breakeven.

4. Perfeito. Os gastos são transferidos para lá, mas me parece que o lucro total de dois Baisers fechando neste nível não é igual a US$ 5 - me parece menos. Isto pode ser visto no gráfico de testes. Mostra claramente que quando uma posição fecha, o aumento do saldo é muito maior do que quando múltiplas posições são fechadas no nível de tomada total calculado (você pode ver estes lugares no gráfico pela aparência da linha de equidade sobre eles). A tabela:


Onde eu estou errado?

Eu entendo que você pode imprimir o lucro total, mas... Quero entender onde posso estar errado em meus cálculos, não o valor das variáveis. Eu já os imprimi.

 
semiromid:

Tenho um preço que consiste em 5 dígitos. Exemplo: 1.3221.


Significa 4 dígitos. Significa 4 ou 5 após o ponto decimal. De cinco dígitos, seria, por exemplo, 132210.
 

\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Cavalheiros programadores, favor aconselhar como combinar uma EA com um indicador?

Por exemplo, peguei um simples bot mo_bidir.mq4 que negocia usando seu próprio algoritmo e quero que ele abra negócios usando seu próprio algoritmo, mas depois de 3 sinais de MA

Por exemplo nosinal - Três Médias em Movimento:

FastEMA>MediumEMA>SlowEMA (tendência acima) - bot compra

FastEMA<MediumEMA<SlowEMA (tendência down) - bot vende

Inp_Signal_ThreeEMA_FastPeriod = 8;

Inp_Signal_ThreeEMA_MediumPeriod = 38;

Inp_Signal_ThreeEMA_SlowPeriod= 48;

Quero que meu consultor especializado opere com um prazo de 5 minutos e que o indicador dê sinais diários ou de 4 horas, e quero poder mudar os prazos nas configurações do bot.

\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

Peço desculpas pela repetição, mas ao menos me diga em que tópico do fórum devo aplicar, ou devo criar um novo tópico?

Eu não sei o que fazer.

 
Este é o lugar para você : Trabalho
 

Olá a todos. Você pode explicar por que a OrderSend não está abrindo uma vaga?

if (NormalizeDouble(Open[0],Norm)>ma && NormalizeDouble(Bid,Norm)<=ma)

      {

      if (CheckFiltr()>=Filtr) 

         {

         Print (CheckFiltr()+" Buy"); <= Это в журнале есть, значит должна открыться сделка.

         for (i=0;i>5;i++)

            {

            res=OrderSend(Symbol(),OP_BUY,Lot,Ask,3,Bid-Sl*Point,0,"OpenBuy",Magik,0,Green);

            Print ("Проверка Бай "+i); <= Этого в журнале нет.

            if (res>0) break;

            Print (GetLastError()); <= Этого в журнале нет.

            Sleep (5000);

            }

         }

      }   
 
for (i=0;i<5;i++)
 
artmedia70:

Estou ficando um pouco cheio de mim mesmo... :) O problema:

1. Há uma posição aberta de 0,1 lote

2. Seu valor TakeProfit é de 50 pips.

3. Calculo seu lucro potencial de acordo com a fórmula PotentialProfit = Lots*TakeProfit*MarketInfo(Symbol(), MODE_TICKVALUE);

4. Do cálculo recebo o lucro potencial de $5,00 (0,1*50*1,0).

A posição vai no vermelho e em algum momento mais uma compra em média abre, mas com 0,2 lote

1. Calculo o Breakeven para estas duas posições. A função tem sido usada há muito tempo, como requerido, e não tenho nenhuma reclamação até agora:

2. Perfeito. Você calculou o nível de breakeven, mas... se você colocar as fichas dessas duas posições, elas fecharão em zero. Está bem, eu acho. Agora preciso somar a este nível da BU tantos pontos quantos forem necessários para obter um lucro total, igual ao previamente calculado - $5.

3. e aqui é onde eu tenho um bloqueio no meu cérebro. O que faço: Tomo $5, divido pelo lote total destas duas posições (0,1 + 0,2 = 0,3), multiplicado pelo TICK_VALUE

Eu tenho 5/(0,3*1,0) = 16,6666 Depois multiplico por Ponto (0,00016) e adiciono ao preço Breakeven.

4. Perfeito. As receitas são transferidas para lá, mas me parece que o lucro total de dois Baisers fechando neste nível não é igual a US$ 5 - me parece menos. Isto pode ser visto no gráfico de testes. Mostra claramente que quando uma posição fecha, o aumento do saldo é muito maior do que quando múltiplas posições são fechadas no nível de tomada total calculado (você pode ver estes lugares no gráfico pela aparência da linha de equidade sobre eles). A tabela:


Onde eu estou errado?

Eu entendo que você pode imprimir o lucro total, mas... Quero entender onde posso estar errado em meus cálculos, não o valor das variáveis. Eu já os imprimi.

mesmo que a posição seja Sell ?
Arquivos anexados:
mr01.mq4  6 kb
 
FAQ:

for (i=0;i<5;i++)

Peço desculpas, explique qual é o erro aqui. Eu não consigo entender.

 
pako:
mesmo que a posição seja Sell ?

Estou falando de posições de compra. Você não precisa ser tão meticuloso. Naturalmente, para as posições de Venda que levo embora.
Razão: