Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 51
Você está perdendo oportunidades de negociação:
- Aplicativos de negociação gratuitos
- 8 000+ sinais para cópia
- Notícias econômicas para análise dos mercados financeiros
Registro
Login
Você concorda com a política do site e com os termos de uso
Se você não tem uma conta, por favor registre-se
Talvez eu não tenha entendido minha pergunta.
Estando no gráfico do período M1 quero preencher o buffer se no período M5, a linha indicadora " Stochastic" está agora acima do nível 55.
////////////////////////////////////////////////
for(int i=limit; i>=0; i--) {
int bar_sto2_0=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i));
int bar_sto2_1=iBarShift(Symbol(),TimeFrame2,iTime(Symbol(),TimeFrame2,i+1));
double sto2_0=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_0);
double sto2_1=iStochastic(Symbol(),TimeFrame2,kperiod2,dperiod2,slowing2,MODE_LWMA,STO_CLOSECLOSE,MODE_MAIN,bar_sto2_1);
if(sto2_0>55.0)
{
BufferUP[i]=low[i]-distance*MyPoint;
}
if(sto2_0<44.0)
{
BufferDN[i]=high[i]+distance*MyPoint;
}
Comment(sto2_0);
}
No comentário o valor atual é correto com M5, mas na história as setas não colocam em condição, caos.
O que pode ser?
No " porão", o estocástico da M5
As setas são circuladas não de acordo com o sinal
Estou escrevendo um consultor especializado que simultaneamente coloca dois StopOrders, um para vender e outro para comprar.
Como escrever a condição de que quando um StopOrder é acionado, o segundo (oposto) é apagado?
Obrigado.
Estou escrevendo um consultor especializado que simultaneamente coloca dois StopOrders, um para vender e outro para comprar.
Como escrever a condição de que quando um StopOrder é acionado, o segundo (oposto) é apagado?
Obrigado.
A condição é simples. Quando uma StopOrder dispara, uma posição aparece no mercado, significa que devemos rastrear a posição, e se ela existe, devemos apagar a ordem oposta.
Este é um código para reflexão)
bool b, s;
switch(op) {
case OP_BUY : b=ExistPositions(sy, OP_BUY , mn); break;
case OP_SELL: s=ExistPositions(sy, OP_SELL, mn); break;
}
if(b) {
DeleteOrders(sy, OP_SELLLIMIT, mn, cl);
DeleteOrders(sy, OP_SELLSTOP , mn, cl);
}
if(s) {
DeleteOrders(sy, OP_BUYLIMIT, mn, cl);
DeleteOrders(sy, OP_BUYSTOP , mn, cl);
}}
Vitaly Muzichenko, tanto quanto sei, agora precisamos acrescentar as funçõesExistPositions eDeleteOrders
Vitaly Muzichenko, pelo que entendi, agora precisamos escrever as funçõesExistPositions eDeleteOrders
Não é preciso escrevê-los, ambos estãoprontos para serem feitos.
Bem ..., para fins educacionais é bastante útil ...
Para fins práticos, é muito caro executar ciclos em cada função.
Bem ..., para fins de treinamento, é muito útil...
Para fins práticos, é muito caro executar ciclos em todas as funções.
O que fazer se a parada/parada for 200
mas
tp=NormalizeDouble((preço+(TakeProfit*_Point)),Dígitos);
sobre um dólar-yen renderá 317.000 à taxa de câmbio de 117.000
o resultado esperado é de 117.200
O que fazer se a parada/parada for 200
mas
tp=NormalizeDouble((preço+(TakeProfit*_Point)),Dígitos);
sobre um dólar-yen renderá 317.000 à taxa de câmbio de 117.000
o resultado esperado é de 117.200
Por que tantos parênteses? É uma questão de gosto, é claro, mas ainda assim é demais.
tp=NormalizeDouble(price+TakeProfit*_Point,_Digits);
Os valores são substituídos incorretamente se o resultado for incorreto na saída, porque esta linha de código calculará tudo corretamente, mesmo com parênteses extras.