[AVISO FECHADO!] Qualquer pergunta de novato, para não desorganizar o fórum. Profissionais, não passem por aqui. Não posso ir a lugar algum sem você. - página 606

 
Roger:


Mostrar a função em si.

Se for nulo ClosePartPosBySelect(peça dupla), mude para

void ClosePartPosBySelect()

Mas como você pode passar um parâmetro para esta função? Suponha:
if (x==2 && y==4) Part=0.5;
else Part=2;

ClosePartPosBySelect(Part);

A função ClosePosBySelect() da Kim é alterada de modo que requer um parâmetro passado do tipo duplo, que é a variável Part

 
keekkenen:

de duas maneiras

1. na função onde o valor é alterado, acrescente um ampersand,

por exemplo, função void ( double& Part ){}

então, quando um valor dentro da função é alterado, o novo valor retornará ao local de chamada

2. remover a variável da lista de parâmetros da função, já que a variável é definida globalmente, seu valor pode ser alterado em qualquer lugar do código sem passá-la como parâmetro...

A primeira variante é melhor, já que pode haver mais de uma variável declarada globalmente (e dentro de uma função)...


Dei uma olhada no correio, na verdade, a resposta já foi dada.

Obrigado, vou tentar...
 
zelek:

Olá Prezados Profissionais.

Eu realmente gostaria de escrever um EA que abrisse dois pedidos de Venda e Compra ao mesmo tempo.

Depois de um certo número de pontos (parâmetro lim), a ordem de perda seria fechada,

e um rentável será fechado quando o preço tiver caído abaixo do preço máximo desde que a ordem foi aberta

(uma espécie de parada virtual de trilha).

Em agonia eu criei isto, mas não funciona... não funciona

Por favor, sugira algo

Como você acha que vai decidir se é um recuo ou um recuo? Ou você abrirá duas posições em cada recuo? É um busto...
 
artmedia70:
Como você passa então um parâmetro para esta função?


Se o parâmetro for declarado globalmente, você não precisa passá-lo, atribua diretamente o valor desejado. Só então não precisa ser anulado na função.
 
É interessante...

Este é todo o ano de 2009... Somente leituras de Momentum são usadas para entrada:
Na TF H1 procuramos o momento da pausa do movimento Momentum, e na TF M5 encontramos o momento exato para entrar no mercado. Ao abrir uma posição, verificamos o tempo de abertura da posição anterior, para não abrir todo o depósito no momento do sinal de entrada...
A hora de entrar no mercado é confirmada pela posição da Demarker nas zonas sobre-comprado/sobre-vendido na TF M5 e M15...
... A propósito, sem travamento também foi um resultado positivo.

... Mesmo o fato de ter feito o teste negligentemente apenas com o Demarker, ainda assim deu resultados interessantes:

É algo parecido com isto em algum lugar:

//---------------------------------------------------------
   MomML_0   =iMomentum(NULL,PERIOD_M5,14,PRICE_CLOSE,0);
   MomML_1   =iMomentum(NULL,PERIOD_M5,14,PRICE_CLOSE,1);
   MomML_2   =iMomentum(NULL,PERIOD_M5,14,PRICE_CLOSE,2);
   
   MomST_0  =iMomentum(NULL,PERIOD_H1,14,PRICE_CLOSE,0);
   MomST_1  =iMomentum(NULL,PERIOD_H1,14,PRICE_CLOSE,1);
   MomST_2  =iMomentum(NULL,PERIOD_H1,14,PRICE_CLOSE,2);
   
   DeM5     =iDeMarker(NULL,PERIOD_M5, 14,0);
   DeM15    =iDeMarker(NULL,PERIOD_M15,14,0);

//---------------------------------------------------------
//==============================================================================================
   // Поиск пересечений
//==============================================================================================  
//----------------------- Проверка условий для старшего ТФ --------------------    
// ---------- Покупка --------
   MomBuy56M15=false;
   if (
         MomST_0<100 && 
         MomST_1<100 && 
         MomST_2<100 &&
         MomST_0>MomST_1 &&
         MomST_1<MomST_2 &&
         DeM15<0.3
      )                                
         {   
            MomBuy56M15=true;
         }

// ---------- Продажа --------
   MomSell56M15=false;
   if (
         MomST_0>100 && 
         MomST_1>100 && 
         MomST_2>100 &&
         MomST_0<MomST_1 &&
         MomST_1>MomST_2 &&
         DeM15>0.7
      )                                
         {   
            MomSell56M15=true;
         }
//----------------------- Проверка условий для младшего ТФ ---------------------    
// ---------- Покупка --------
   MomBuy56M5=false;
   if (
         MomML_0<100 && 
         MomML_1<100 && 
         MomML_2<100 &&
         MomML_0>MomML_1 &&
         MomML_1<MomML_2 &&
         DeM5<0.3   
      )                                
         {   
            MomBuy56M5=true;
         }

// ---------- Продажа --------
   MomSell56M5=false;
   if (
         MomML_0>100 && 
         MomML_1>100 && 
         MomML_2>100 &&
         MomML_0<MomML_1 &&
         MomML_1>MomML_2 &&
         DeM5>0.7   // ... и тут ...
      )                                
         {   
            MomSell56M5=true;
         }      

//==============================================================================================
   // Вычисление основных торговых критериев
//====================================================================  
   if (
         MomBuy56M15==true &&
         MomBuy56M5 ==true
      )
      
      return(106);                       // Открытие Buy по стратегии 6 
 //====================================================================   
 
   if (
         MomSell56M15==true &&
         MomSell56M5 ==true
      )
      
      return(206);                       // Открытие Sell по стратегии 6 
 //====================================================================   

Eu me pergunto, se o resultado é semelhante, então por que usar o impulso, que é bom (como dizem) para mostrar o momento de exaustão (fim) da tendência? Quando o momentum quebra, o preço continuava a subir e as posições eram abertas a cada nova quebra de momentum. Por isso, foram as primeiras entradas que decidi trancar.
O que você pensa sobre isso?

 

você não pode usar barra zero no testador, pela simples razão de que, apesar de só estar sendo formado (ticks do testador), o testador tem informações completas sobre os preços desta barra, porque ela (a barra) é um fato consumado e o testador olha para o futuro pegando dados do histórico de cotações, não o que ele gera com ticks... mude uma barra para a esquerda e considere Momentums para 1,2,3 ao invés de 0,1,2 e demo 1 ao invés de 0...

Também faz sentido utilizar somente o m5 atual e o período de multiplicação onde são utilizados os preços mais antigos. 14 * PERÍODO_H1 / Período() e 14 * PERÍODO_M15 / Período()

 
keekkenen:

você não pode usar barra zero no testador, pela simples razão de que, apesar de só estar sendo formado (ticks do testador), o testador tem informações completas sobre os preços desta barra, porque ela (a barra) é um fato consumado e o testador olha para o futuro pegando dados do histórico de cotações, não o que ele gera com ticks... mude uma barra para a esquerda e considere Momentums para 1,2,3 ao invés de 0,1,2 e demo 1 ao invés de 0...

Também faz sentido utilizar somente o m5 atual e o período de multiplicação onde são utilizados os preços mais antigos. 14 * PERÍODO_H1 / Período() e 14 * PERÍODO_M15 / Período()

Por que se imprimimos cada preço fechado da barra zero no testador, então em cada tick o preço é diferente? O mesmo em prazos mais altos, o mesmo sem visualização. Então, onde está a visualização?
 
bem, se o resultado (dinâmica) não for muito diferente daquele obtido usando uma barra zero, pode não haver espiada, mas é melhor salvaguardar contra ilusões...
 

Eu já estou com os miolos em franja :) - aqui está o problema:

A EA funciona em modo semi-automático - suas entradas são minhas saídas de posições, mas eu não consigo descobrir - como fazer a EA para fazer apenas uma troca antes do meu comando para a próxima, ou seja, eu simplesmente não tenho um botão start/start no gráfico :) . Minha seção init() está ocupada, e não posso desativar minha EA - seus cálculos são necessários para o arrasto correto

 
keekkenen:
bem, se o resultado (dinâmica) não for muito diferente daquele obtido usando uma barra zero, pode não haver espreitar, mas é melhor salvaguardar contra ilusões...
Todas as ilusões podem ser ilusões, mas até o final de 2008 toda a grande irmandade de Limites desencadeados, acrescentando fielmente depoimento, não conseguiu lidar com o drawdown, formado por posições abertas usando sinais de indecisão, e aqui está, o tão esperado chamado do tio Kolya... :)

Como é possível resolver tais problemas?


Talvez haja alguma maneira de reduzir esse deslizamento? O que você pensa?

Razão: