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

 
Barras removidas, adicionadas ordens pendentes em X incrementos de preço, a única coisa que resta é abrir ordens fechadas imediatamente individualmente em vez de esperar que todas as 4 ordens sejam fechadas e o cálculo do lote, dependendo do % de equidade, me ajude a corrigir estas 2 nuances
Aqui está o que parece agora:

//+------------------------------------------------------------------+
//| mo_bidir.mq4
//| Funciona melhor em 5M de tempo |
//+------------------------------------------------------------------+
#direitos de propriedade intelectual "Copyright © 2010 - Monu Ogbe"

#define MAGIC 1234
#define IDENT "mo_bidir"

lotes duplos externos = 1;
parada_perda_dupla externa = 76; //
double take_profit externo = 750; //
passos int externos = 5; // Passo de ordem pendente

int start(){

se (OrdersTotal() == 0){
OrderSend(Symbol(), OP_BUY, lots,Ask,3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue);
OrderSend(Symbol(), OP_SELL, lots,Bid, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red);
OrderSend(Symbol(), OP_BUYSTOP, 0,5* lotes,Ask+steps*Point, 3, Ask - stop_loss * Point, Bid + take_profit * Point, IDENT, MAGIC, 0, Blue);
OrderSend(Symbol(), OP_SELLSTOP, 0,5*lots,Bid-steps*Point, 3, Bid + take_profit * Point, Ask - take_profit * Point, IDENT, MAGIC, 0, Red);
}
retorno(0);
}
Arquivos anexados:
 
belck:
Procurando por um código Breakeven na história. pode ter.
Eu tenho um código Breakeven, mas funciona a partir de ordens abertas.
Eu tenho um EA que fecha as perdas no sinal oposto, e abre em um sinal. e agora você precisa ter este código Breakeven para se lembrar de quanto está em déficit e passar as informações, de modo que a segunda, etc. ordens já tenham visto no gráfico a linha de lucro zero, levando em conta perdas passadas. O Expert Advisor não tem um stop loss, o que significa que o fechamento de um negócio perdido não é por um stop loss.


Toda vez que você o mover para o preço desejado (quebrar o equilíbrio com um fechamento), e não exclua-o (a linha) quando fechar um pedido e ver o preço antigo no próximo pedido
 
belck:
Procurando por um código de equilíbrio histórico. talvez alguém tenha um. por favor, compartilhe.
Eu tenho um código de Breakeven, mas é baseado em ordens abertas.
Eu tenho uma boa ordem de trabalho quando há uma perda em uma ordem e ela deve abrir quando a ordem atinge o ponto de equilíbrio. Os pedidos já viram a linha zero na linha de lucro no gráfico, levando em conta as perdas anteriores. O Expert Advisor não tem um stop loss, o que significa que um comércio perdido não será fechado por um stop loss.

Se eu entendi corretamente, parte de sua pergunta é a contabilização das perdas totais em negócios consecutivos perdidos de sua EA para comparação com o nível de lucro nas ordens de mercado atuais para estabelecer a linha de equilíbrio?
 
FAQ:

Toda vez que você o mover para o preço desejado (breakeven no fechamento), e não o excluir (a linha) quando fechar o pedido e ver o preço antigo no próximo pedido

isto não é fácil.

Eu mesmo não posso implementá-lo.

Quero que a linha apareça na perda de negócios para que eu possa fechar quando ela for alcançada.

Isto é, eu preciso de uma linha que será desenhada somente quando houver perda de ordens, mas esta linha será desenhada com base no lote de uma negociação aberta e na história anterior de perda de negociações.
 
Roman.:
Se eu entendi corretamente, a parte de sua pergunta é levar em conta a perda total das sucessivas perdas comerciais de sua EA e compará-la com o nível de lucro das ordens atuais do mercado para estabelecer a linha de equilíbrio?

Não tenho linhas de parada, ou seja, sem stop loss e sem take profit.

Quero ver a linha de preços, onde tenho que ir para fechar o negócio de tal forma que as ordens fechadas anteriores sejam sobrepostas.

preciso de um bloco atrás do bloco inicial que contará e transferirá informações para o bloco inicial, e usarei essas informações para fechar o negócio quando ele atingir essa linha de preço.

 
Você precisa de uma variável global, torná-la um Terminal global, ou objeto gráfico - então ela só será visível neste gráfico, escrevê-la em um arquivo se necessário, ou no registro, ou na memória diretamente. Há muitas opções.
 
FAQ:
Você precisa de uma variável global, torná-la um Terminal global, ou objeto gráfico - então ela só será visível neste gráfico, escrevê-la em um arquivo se necessário, ou no registro, ou na memória diretamente. Há muitas variantes.
esta é sua resposta para mim?
 
belck: Mas não posso escrever o bloco Breakeven pela própria história.

Aqui está minha seção de código - responsável pela contabilização da perda total das sucessivas perdas de negócios desta EA em particular (de acordo com o mágico). Eu o fiz para minha variante de Avalanche de rede - você pode editá-lo de acordo com suas necessidades - o código é comentado...

Variáveis globais

double Current_Loss, Sum_Loss;     // текущий и суммарный убыток
int start()    // -----------------------СТАРТ ЭКСПЕРТА---------------
{

//---------------------расчет по истории ордеров номера очередной итерации----------------------------------------------- 
  Iteration = 0; // зануляем инерации перед их учетом в цикле по истории
  Sum_Loss = 0;  // суммарный убыток по этим итерациям

datetime 
Time_at_History_Current = 0,
Time_at_History_Previos = 0;     
 
 if(OrdersHistoryTotal() != 0)
   {
    for(int counter = OrdersHistoryTotal()-1; counter >= 0; counter--)
      {
       OrderSelect(counter, SELECT_BY_POS, MODE_HISTORY);
       if(OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
         {
          if(OrderType() == OP_BUY || OrderType() == OP_SELL)
            {
             if(OrderProfit() < 0) // если убыток по выбранному ордеру, то считаем суммарный и записываем время закрытия ордера
                                   // для последующего его анализа при подсчете количества итераций
                {
                 double lastLoss = OrderProfit();
                 Sum_Loss=Sum_Loss+lastLoss;  // считаем общий убыток по закрытым подряд убыточным ордерам
                 Time_at_History_Current = OrderCloseTime();
                } 
             
             //Print(" Time_at_History_Current_в цикле = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS));
             //Print(" Time_at_History_Previos_в цикле = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
             
             if(Time_at_History_Current != Time_at_History_Previos) // если они не равны, то считаем итерации и делаем их равными
               {
                Time_at_History_Previos = Time_at_History_Current ;
                Iteration++;
                //Print("Iteration at History в условии сравнения  = ",  Iteration);
               }   
             else // они равны, то проверяем, дополнительно, наличие профита по выбранному следующему ордеру и выходим из цикла
               {
                if(OrderProfit() >= 0)
                  break;
               }
            }
         }
      }
   }
 //Print("Iteration at History = ",  Iteration, " Time_at_History_Current = ", TimeToStr(Time_at_History_Current, TIME_DATE|TIME_SECONDS),
 //      " Time_at_History_Previos = ", TimeToStr(Time_at_History_Previos, TIME_DATE|TIME_SECONDS));
...
...
}// конец старт   

Após esta seção de código, você também percorre as ordens abertas desta mesma EA e calcula seu lucro total. Então você compara este valor com a variável

Sum_Loss

e tomar uma decisão.

 
belck:
Procurando por um código de equilíbrio histórico. talvez alguém tenha um. por favor, compartilhe.
Eu tenho um código de Breakeven, mas é baseado em ordens abertas.
Eu tenho uma boa ordem de trabalho quando há uma perda em uma ordem e ela deve abrir quando a ordem atinge o ponto de equilíbrio. Os pedidos já viram a linha zero na linha de lucro no gráfico, levando em conta as perdas anteriores. O Expert Advisor não tem um stop loss, o que significa que um comércio perdido não será fechado por um stop loss.

Calcular o lucro total de todos os negócios fechados e economizá-lo em uma variável, por exemplo, TotalCloseProfit. E então use o seguinte código, sem nenhum gráfico ou outros artifícios:

if (TotalCloseProfit) < 0.0) { // Имеем убыток по закрытым позам
  if ((AccountEquity() + TotalCloseProfit) >= AccountBalance()) { // Достигли безубытка
    // Здесь какой-то код, который необходимо выполнить при достижении безубытка
  }
}
 
utyff:


Eu dei uma olhada no tronco.

Essa parece ser a razão, mas não sei o que isso significa. Alguém pode explicar? E como consertá-lo?

Não se trata de um erro. Os erros no registro são marcados com ícones vermelhos, não amarelos.