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

 

para Armen

Isto significa que as funções não foram utilizadas na EA. Escreva algo como

if (CountBuys()>2 && CountSells()>2) {\\действия}

 
Você pode me dizer se é possível retirar fundos em excesso, por exemplo, para um cofre-forte, se eles excederem o depósito original enquanto a EA estiver funcionando e deixá-los dentro do depósito original, sem fechar nenhuma posição em aberto?
 
link1:


Vinin, muito obrigado por sua resposta. Mas eu sinceramente não entendo porque perguntar1,perguntar2,perguntar3 são atribuídos valores 1,-1,-1. o que eles significam. Se você não se importa, poderia descrever em palavras o que e como acontece, sou um novato, ainda não entendo tudo. Serei muito grato a vocês).


A eles são atribuídos valores que nunca serão iguais ao preço.

 
yosuf:
Posso retirar fundos em excesso, por exemplo para o cofre-forte, se eles excederem o depósito inicial durante a operação de EA e deixá-los dentro do depósito inicial sem fechar as posições abertas?

No MT5 você pode ver. Usando TesterWithdrawal() para simular a retirada de lucro

Isso não é possível no MT4

 

Olá!

Estou escrevendo um indicador que conta o número de pontos que o preço subiu e desceu durante um tick.
O que há de errado com o código e onde está o erro, por favor, avise!

#property indicator_chart_window

extern int LimitBar = 10;
extern int cegl = 6;
extern string Shrift = "Arial Black";
extern bool delete = true;



double old_price, max_price, sum_pip_sell, sum_pip_bay, new_pip_bay, new_pip_sell, old_pip_bay, old_pip_sell;
datetime ctat_SB =0;

int init() {return(0);}

int deinit() {
if (delete == true) {
GetDellName(); 
}
ObjectsDeleteAll(0, OBJ_TREND);
return(0);
}

int start() {
double price;
string name_4,name_b;
int i=0;
int limit, pip; 
double delta; 
int counted_bars=IndicatorCounted(); 
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
if(ctat_SB==0) ctat_SB=Time[0];

if(limit>0) limit=0;

for(i=limit; i>=0; i--) {
if(old_price==0) old_price=Close[i];

if(iBarShift(NULL,0,ctat_SB)-iBarShift(NULL,0,Time[i])>=LimitBar) { ' счетчик баров для LimitBar

sum_pip_sell =0;
sum_pip_bay = 0; 
new_pip_bay = 0;
new_pip_sell = 0;
old_pip_bay = 0;
old_pip_sell = 0;

} 

price = Close[i];
if(price > max_price) max_price=price; 

delta = price - old_price; ' разница пунктов
pip = delta*10000; ' округляем до целого

//---- Каунт плюс 

if(delta>=0) { ' условие для ап пунктов

new_pip_bay = pip;
sum_pip_bay = old_pip_bay+new_pip_bay;
old_pip_bay = sum_pip_bay; 

}
//---- Каунт минус
if(delta<0) { ' условие для даун пунктов

new_pip_sell = MathAbs(pip);
sum_pip_sell = old_pip_sell+new_pip_sell;
old_pip_sell = sum_pip_sell;

} 
//----
old_price=price;

//---- размещаем счетчик на графике
name_4 = "TPM_ 4 "+TimeToStr(ctat_SB);
SetText(name_4+"sell",DoubleToStr(sum_pip_sell,0), ctat_SB+60*Period()*2, max_price+(Ask-Bid)*6, Blue,12); 
SetText(name_4+"bay",DoubleToStr(sum_pip_bay,0),ct at_SB-60*Period()*2, max_price+(Ask-Bid)*4.5, Red,12); 

} 

return(0);
}
void SetText(string name,string text,datetime t1, double p1, color c, int size) // --- отображение текста
{
if (ObjectFind(name)!=-1) ObjectDelete(name);
ObjectCreate(name,OBJ_TEXT,0,0,0,0,0); 
ObjectSet(name, OBJPROP_TIME1 , t1);
ObjectSet(name, OBJPROP_PRICE1, p1); 
ObjectSetText(name,text,cegl,Shrift,c);
}

//+------------------------------------------------------------+
void GetDellName (string name_n = "TPM_ ") // -- удаление меток с графика
{
string vName;
for(int i=ObjectsTotal()-1; i>=0;i--)
{
vName = ObjectName(i);
if (StringFind(vName,name_n) !=-1) ObjectDelete(vName);
} 
} 
//----

Obrigado de antemão!


 
yosuf:
Por favor me diga se é possível retirar fundos em excesso, por exemplo, para o cofre-forte, se eles excederem o depósito inicial durante o trabalho da EA e deixá-los dentro do depósito inicial, sem fechar as posições abertas?

Somente permitir que o Expert Advisor negocie com um depósito igual ao depósito inicial.

Lembre-se do tamanho do depósito inicial e, antes de cada abertura de uma posição, verifique seu lote. Se o volume do negócio exceder o valor permitido - reduzir o lote ou liberar os fundos.

 
Fox_RM:

Olá!

Estou escrevendo um indicador que conta o número de pontos que o preço subiu e desceu durante um tick.
O que há de errado com o código e onde está o erro, por favor, avise!

Obrigado de antemão!


Por que há tanta coisa?

Lembre-se do preço do tick anterior. Com a chegada de um novo tick, conte a diferença de preço dividida pelo ponto e lembre-se novamente desse preço como o preço do tick anterior.

 
artmedia70:

Por que isso é tanta coisa?

Lembre-se do preço do último tick. Com a chegada de um novo tick, conte a diferença de preço dividida pelo ponto e lembre-se novamente desse preço como o preço do tick anterior.

Nas condições dos pontos AP e DAUN o código diz exatamente isso, mas ao exibir o indicador na tabela de preços, o marcador sai 0 para o número de pontos acima e 0 para o número de pontos abaixo. Qual é o problema que eu não entendo!
 

Cavalheiros programadores!

A prioridade (e associatividade) das operações da MQL4 corresponde à C?

Não quero abusar dos parênteses, mas a prioridade das operações não é mencionadaem nenhuma parte da documentação.

Esta não é uma pergunta ociosa. A MQL4 está posicionada como uma linguagem tipo C. A palavra-chave aqui é DEFINITIVAMENTE. Se um cálculo completo de expressões lógicas é apenas um desvio do padrão C, então a visibilidade das variáveis definidas em um bloco fora desse bloco é um erro grave na programação de cânones.

Quem sabe até onde a imaginação dos desenvolvedores da MQL4 poderia ir :).

 
artmedia70:

Somente permitir que o Expert Advisor negocie com um depósito igual ao depósito inicial.

Lembre-se do tamanho do depósito inicial e, antes de cada abertura de uma posição, verifique seu lote. Se o volume do comércio exceder o tamanho permitido - reduzir o lote ou liberar os fundos.

Quero dizer algo como isto: quando eu negocio em micro-real com depósito de 10k centavos de dólar, posso retirar meus fundos excedentes manualmente sempre que eu quiser durante a operação EA, ou tenho que parar a EA, fechar todas as posições abertas e só então retirar os fundos excedentes? Eu negocio com um lote fixo 0,1. Como posso realmente implementar sua recomendação: "Permitir que o consultor especializado negocie somente com o depósito igual ao depósito inicial".
Razão: