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

 
Code:


Obrigado pela resposta e eu responderei suas perguntas.

Essa característica é exatamente toda a idéia por trás do indicador. E, ao mesmo tempo, é um exercício de MQL. Eu pensei em uma tarefa e intuitivamente entendo que sua implementação em uma linguagem não é muito difícil. Eu me sento e tento.

Portanto, a essência da característica é que eu comparo um certo nível teórico fixo de dois volumes unidirecionais com o nível real. Isto é, se a relação real da soma de dois volumes com o intervalo real "open-close" for maior que a teórica especificada, eu adiciono um "bônus" ao segundo volume real na forma da diferença entre os resultados teóricos calculados e os resultados reais. Se o nível real for inferior ao teórico, subtraio a mesma diferença do volume da segunda barra. Posso explicar isso claramente?

Só por precaução, direi que ao revelar esta característica, você coloca colchetes incorretamente, provavelmente com pressa.

Além disso, parece-me que aquelas cordas que você considera equivalentes às minhas levarão à divisão por zero. Vou verificar isso agora.

É claro. Mas não está claro como 2 (a média entre os dois volumes) e o que é calculado na variável UP12 estão relacionados. Afinal de contas, as dimensões de ambos são diferentes. Os tempos e o preço nos denominadores. Afinal, lá na escola nos ensinaram que metros e quilos não se somam de forma alguma! :))))


Isso é certo, é errado! :)))) Uma coisa é ter fórmulas como frações, mas outra é colocar tudo em uma só linha e não entender como... Isso é desatenção, não pressa...

Eu também otimizei o código incorretamente. Lá novamente foi um erro matemático. Esqueci de colocar entre parênteses.

   double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);
 
Roman.:

Seu ponto não é de modo algum o certo... aos critérios comerciais errados, a questão é sobre a STOHAS-TEAM. :-Р

A questão era esta:

idéias para a vida:

Se a condição1 for cumprida, então:
- cheque para ordens de venda abertas
-Se houver - feche-os
-verificar a disponibilidade de fundos na conta
-Open BUY order

O mesmo se a condição 2 for cumprida, então
-verificar se há alguma ordem de compra aberta
-se houver, feche-os
verificar se há alguma ordem de compra aberta - se houver, fechá-la
-abrir uma ordem de venda
+ análise de erros (não é o principal, mas é possível)

O que isso tem a ver com a HOSTAGE? :))))

Todas as verificações necessárias já foram feitas e um sinal comercial já foi ou não formado.

 
demlin:

Olá a todos!

Graças à inestimável ajuda dos especialistas deste ramo (especialmente Roman), consegui fazer um simples Expert Advisor, que mostrou + no testador. Pergunta: Como determinar se ela pode ser colocada para comercialização real? Existe algum critério?


Sim, quais são os critérios, você trabalha nas coisas "básicas" (afiar para o real - o controle de desconectar e mudar para uma linha adicional que eu não considero), na forma de tratamento competente de possíveis erros com a adoção do especialista das decisões organizacionais apropriadas sobre o trabalho adicional, então a demonstração é obrigatória, depois o micro-real ... Se você estiver satisfeito com os resultados - "fique louco" ... :-)) Para começar, retire o tratamento de erros de EAs do tutorial, antes de fazer pedidos não se esqueça de fazer as verificações necessárias das exigências e limitações das operações comerciais, em busca de algo como: tratamento de erros site:mql4.com, preparação de EAs para site real:mql4.com, eu (parte :-R) tenho um especialista que faz fi ndings como este:

// После старта
if (!IsTradeAllowed() || IsTradeContextBusy() || !IsConnected()) return; // если торговля невозможна, то выходим

Verificação da seleção do pedido para utilizá-lo

                if (ticket>0)                                               // Если позиция открылась
                    {
                       while(OrderSelect(ticket,SELECT_BY_TICKET)==false) Sleep(1000);     // Если ордер выбран
                         double OpenPrice=OrderOpenPrice();
                         ...  
                           

No início

color ColorBuy = Blue, ColorSell = Red;
bool UseSound = true;
string alert.wav;
color clr, ClrClose = Gray;
int Level_new; 
double price;
bool result, Buy_signal=false, Sell_signal=false;
int  orderIndex;
bool IsExpertFailed = false;
bool IsExpertStopped = false;
double lots;                       // вспомогательная переменная для расчета нового размера лота 
double Lots_New;                   // Количество лотов для новых ордеров
int ticket;                        // Номер ордера
double orderLots;                  // Lots   
double orderProfit;                // Profit
double Price;                      // Цена открытия рыночного ордера
double SL;                         // Значение StopLoss ордера
double  TP;                        // Значение TakeProfit ордера
static datetime prevtime = 0;       // по ценам открытия

int init(){
    IsExpertStopped = false;
    if (!IsTradeAllowed())
       {
         Comment("Необходимо разрешить советнику торговать");
         IsExpertStopped = true;
         return (0);
       }
      
    if (!IsTesting())
       {
         if (IsExpertEnabled())  Comment("Советник запустится следующим тиком");       
           else  Comment("Отжата кнопка \"Разрешить запуск советников\"");
      
       }
    ...
   
   return (0);
}

Isso é tudo, IMHO, para começar; poderíamos continuar e continuar...

Em qualquer caso, o controle do "Gerente" é necessário ... :-R Para não ser excruciantemente doloroso para os depósitos perdidos.

 

MaxZ:


A questão era esta:

O que isso tem a ver com o STOCHASTAGE? :))))

Toda a verificação necessária foi feita e o sinal comercial foi formado ou não.


Havia uma pergunta direta:

"Tudo isso está no par de moedas atual.
int start()
{
duplo M_0, M_1; // valor principal em 0 e 1 bar
S_0, S_1; // valor SINAL em 0 e 1 bar
//--------------------------------------------------------------------
// Chamar a função para a exibição técnica.
M_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 0);// 0 bar
M_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN, 1);// 1 bar
S_0 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,0);// 0 bar
S_1 = iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_SIGNAL,1);// 1 bar
//--------------------------------------------------------------------

if( M_1 < S_1 && M_0 >= S_0 ) // CONDIÇÃO 1: Cruz verde vermelha do fundo

if( M_1 > S_1 && M_0 <= S_0 ) // CONDIÇÃO 2: Cruz verde vermelha de cima

//--------------------------------------------------------------------
retorno; //Exit desde o início()
}"

Basicamente, seja o que for, IMHO, o autor foi referido, ele vai descobrir... :-Р

 

Roman.:


No início.

...
int init(){
    IsExpertStopped = false;
    if (!IsTradeAllowed())
       {
         Comment("Необходимо разрешить советнику торговать");
         IsExpertStopped = true;
         return (0);
       }
...

Qual é a finalidade da variável IsExpertStopped? E acontece que cada tique no tronco mostrará a mensagem "O Conselheiro Especialista deve ser autorizado a negociar"...

 
MaxZ:

Qual é a finalidade da variável IsExpertStopped? E acontece que a cada carrapato no tronco haverá uma mensagem "O Conselheiro Especialista deve ser autorizado a negociar"...

Isto é o que eu faço:


F1 pressione em
IsTradeAllowed()

Você vai descobrir... :-Р

Especificamente "

Se a EA tem permissão para negociar e o fio está livre", então negociar, caso contrário IsExpertStopped = EA parou, esperando pela permissão para negociar...

 
Roman.:

F1 pressione em

você vai descobrir... :-Р

Nomeadamente "

se a EA tem permissão para negociar e o fio para a execução da negociação é livre", então negociar, caso contrário IsExpertStopped = EA parou, esperando pela permissão para negociar...

Entendi... Hoje estou totalmente distraído. Eu vejo init() e penso em começar()! :)))))

 
MaxZ:

É claro. Mas não está claro como 2 (a média entre os dois volumes) e o que é calculado na variável UP12 estão relacionados. Afinal de contas, as dimensões de ambos são diferentes. Os tempos e o preço nos denominadores. Afinal, lá na escola nos ensinaram que metros e quilos não se somam de forma alguma! :))))


Isso mesmo, isso não está certo! :)))) Uma coisa é ter fórmulas como frações, outra coisa é colocar tudo em uma linha e não entender como... Isso é desatenção, não pressa...

Eu também otimizei o código erroneamente. Lá novamente é um erro em matemática. Esqueci de usar parênteses.


MaxZ, depressa, oh depressa :))) com conclusões!

Eu não acrescento quilômetros e quilos. Um exemplo de vida real. O eurodólar de hoje, 5 minutos. Basta apertar o gráfico onde há 2 velas em ascensão em uma fila.

vback1=703, dVolume=696. (vback1+dVolume)/2=699,5.

Nos mesmos castiçais (Close[i]-Open[i+1] )*1000=(1.42911-1.42549)*1000=3.62

(vback1+dVolume)/3.62=386.5

Total: 696+699,5-386,5=1009. Que é o que deve ser desenhado. E o que exatamente 1009 é mostrado pelo indicador neste lugar. E assim por diante.

Outra coisa é que eu mesmo calculei este exemplo aqui e descobri que, de acordo com a fórmula do código, o que descrevi no post anterior não ocorre. Na verdade, acabou sendo uma ideologia diferente, uma espécie de auto-regulamentação. Desde que os valores negativos do parâmetro vrealUP12 não excedam a soma de dVolume+vteor12, haverá uma adição ao último volume. Ou parâmetros adicionais devem ser inseridos para o cálculo do ExtVolumesBuffer[i].

E na linha

double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);

Acabei de repor para

double vrealUP12=(dVolume+vback1)/UP12;

de modo a não alongar.

 
Code:


MaxZ, despache-se, oh despache-se :))) com suas conclusões!

Eu não somei quilômetros e quilos. Um exemplo de vida real. O eurodólar de hoje, 5 minutos. Basta apertar o gráfico onde há 2 velas em ascensão em uma fila.

Merda... Você faz a soma, e como! :))

O vétero variável12 tem a dimensão de Volumes (isto é, Nossos medidores).

 vteor12=(dVolume+vback1)/2;

A variável UP12 tem a dimensão de Pips para alguns pares de moedas.

UP12=(Close[i]-Open[i+1])*1000

A variável vrealUP12 é dimensional em relação à relação entre volumes e pontos (isto é, nossos quilogramas).

vrealUP12=(dVolume+vback1)/UP12;

E você acaba calculando sua característica, que é a soma de metros e quilos, que é o que está em jogo! ;D

ExtVolumesBuffer[i]=dVolume+vteor12-vrealUP12;


A menos que 2 não sejam os 20 pontos que o Preço por duas barras deveria passar em teoria! :)) Mas isso já é um disparate...


Código:


E na linha

double vrealUP12=(dVolume+vback1)/((Close[i]-Open[i+1])*1000);

Coloquei-o de volta em

double vrealUP12=(dVolume+vback1)/UP12;

de modo a não alongá-lo.

O alongamento às vezes é útil. Economiza recursos de informática! :))) Por que você precisa desta variável extra?

 
MaxZ:

Oh, cara... Você faz, e como! :))

O vétero variável12 tem a dimensão de Volumes (isto é, Nossos medidores).

A variável UP12 tem a dimensionalidade do preço.

A variável vrealUP12 é dimensionada por Volumes e Preços (este é nosso quilograma).

E no final você calcula sua característica, que é a soma de metros e quilos, que é o que está em jogo! ;D


OK, vamos tentar outra maneira de ver as coisas.

vVolume12 pode ser escrito como (dVolume+vback1)/k1 (fator 1)

vrealUP12 pode ser escrito como (dVolume+vback1)/k2 (fator 2)

Como tentei descrever a ideologia do indicador, ela consiste na comparação de alguns níveis teóricos e reais. Para obter estes níveis, comparo (ou seja, dividir) o mesmo valor (dVolume+vback1) com algum valor teórico (k1) e valor real (k2). É claro que a k1 estou apenas inventando, para colocar as coisas em seus nomes próprios. Ou, se você quiser, fazer uma suposição. Agora isto tem que ser comparado a algo. Neste caso, nada é mais objetivo e verdadeiro do que o próprio gráfico. Portanto, tomo as diferenças de abertura e fechamento, tomando-as como a linha de fundo de um determinado período de tempo. E a única tarefa aqui é levá-lo ao mesmo dígito, e é por isso que ele é multiplicado por 1000.

Tente calcular várias variantes diferentes de castiçais vizinhos em uma calculadora e você poderá se surpreender com a variedade de resultados de acordo com esta fórmula muito simples.

E em termos de lógica escolar, você está certo. Eu acrescento Volume + Volume/Preço, você não pode fazer isso na escola. :))

Razão: