Quaisquer perguntas de recém-chegados sobre MQL4 e MQL5, ajuda e discussão sobre algoritmos e códigos - página 38
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
Em seguida, passe o argumento para a função, uma vez que ela é fornecida. Embora seja melhor removê-la, a tautologia sai.
E nem todos os pedidos do loop serão recalculados.
O bilhete com sobrescrito, trabalhando a partir da última encomenda com um Martin.
e então como remover a "contagem" esconde a declaração global na linha...
é interessante fazê-la funcionar como deve ser.
Até agora, o testador mostra resultados bastante bons e às vezes "erros intransponíveis no Expert Advisor".
Saudações.
Tropeçou em uma gravação neste formato:
Isto é, aqui o condicional se a declaração foi substituída por uma função de comércio do tipo bool em vez de uma expressão. Entendo corretamente que tal escrita é igual a :
if(OrderSelect(ticket,SELECT_BY_TICKET))==verdadeiro {OrderModify(ticket,OrderOpenPrice(), SL, TP,0};?
Procurei tanto no Help quanto no tutorial - não encontrei tal formato.
Posso usar esta forma para escrever diretamente funções de um tipo diferente em vez de uma expressão? E se for o caso, qual seria o algoritmo?
Eu o consertei, coloquei um argumento em âmbito global, agora ele gera um aviso de que este argumento já é usado como input em outras funções
Bilhete com sobregravação, trabalho da última encomenda com martin
e então como remover a declaração de "contagem" esconde a declaração global na linha...
É interessante fazê-la funcionar como deve ser.
Até agora, o testador mostra resultados bastante bons, mas há "erros intransponíveis no Expert Advisor".
Saudações.
Tropeçou em uma gravação neste formato:
Isto é, aqui o condicional se a declaração foi substituída por uma função de comércio do tipo bool em vez de uma expressão. Entendo corretamente que tal escrita é igual a :
if(OrderSelect(ticket,SELECT_BY_TICKET))==verdadeiro {OrderModify(ticket,OrderOpenPrice(), SL, TP,0};?
Procurei tanto no Help quanto no tutorial - não encontrei tal formato.
Posso usar esta forma para escrever diretamente funções de um tipo diferente em vez de uma expressão? Em caso afirmativo, qual seria o algoritmo?
Assimse(OrderSelect(ticket,SELECT_BY_TICKET))==verdadeiro {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; não funcionará. A condição não deve ser jogada fora de parênteses.
Masse(OrderSelect(ticket,SELECT_BY_TICKET)==verdadeiro) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; você pode.
Assimse(OrderSelect(ticket,SELECT_BY_TICKET))==verdadeiro {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; não funcionará. A condição não deve ser jogada fora de parênteses.
Masse(OrderSelect(ticket,SELECT_BY_TICKET)==verdadeiro) {OrderModify(ticket,OrderOpenPrice(), SL, TP,0}; você pode.
Por favor, mostre-me a versão corrigida, porque sem o código é um palpite.
Certo.
Acabei o que pude. A descrição é feita. O objetivo é entender porque não funciona do jeito que eu quero.
//| ОТЛОЖКИ.mq4 |
//+------------------------------------------------------------------+
extern double StopLoss = 1000; //Стоплосс ордера
extern double TakeProfit = 1500; //Тейкпрофит ордера
extern double TrailingStop = 1000; // трал
extern int Delta = 100; //Расстояние от цены для установки ордера
extern double LOT = 0.1; //Объём позиции
extern int Magic =200;
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (TrailingStop!=0) Trailing();
//ИНДИКАТОР RSI
double RSI0=iRSI(NULL,0,5,PRICE_CLOSE,0);
double RSI1=iRSI(NULL,0,5,PRICE_CLOSE,1);
int b,s,p,res;
double BuyPrice=Ask+Delta*Point;
double SellPrice=Bid-Delta*Point;
for (int i=0; i<OrdersTotal(); i++)
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP) b++;
if (OrderType()==OP_SELLSTOP) s++;
}
}
double SL,TP;
//---- buy stop
if(RSI0>50&&RSI1<50)
{
res=OrderSend(Symbol(),OP_BUYSTOP,LOT,BuyPrice,0,BuyPrice-StopLoss*Point,BuyPrice+TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_SELLSTOP,Blue);
}
//---- sell stop
if(RSI0<50&&RSI1>50)
{
res=OrderSend(Symbol(),OP_SELLSTOP,LOT,SellPrice,0,SellPrice+StopLoss*Point,SellPrice-TakeProfit*Point,"ОТЛОЖКИ",Magic,OP_BUYSTOP,Red );
}
//---- buy stop делете
if(RSI0<50&&RSI1>50)
{
OrderDelete( OrderTicket());
}
//---- sell stop делете
if(RSI0>50&&RSI1<50)
{
OrderDelete( OrderTicket());
}
//----
return(0);
}
//--------------------------------------------------------------------
//---------ФУНКЦИЯ ТРАЛА----------------------------------------------
//--------------------------------------------------------------------
void Trailing()
{
for(int i=0; i<OrdersTotal(); i++)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
if(OrderSymbol()==Symbol()||OrderMagicNumber()==Magic)
if(OrderType()==OP_BUY)
{
if(TrailingStop>0)
{
if(Bid-OrderOpenPrice()>TrailingStop)
{
if(OrderStopLoss()<Bid-TrailingStop)
{
OrderModify(OrderTicket(),OrderOpenPrice(),Bid-TrailingStop,OrderTakeProfit(),0,Green);
}
}
}
}
if(OrderType()==OP_SELL)
{
if(TrailingStop>0)
{
if((OrderOpenPrice()-Ask)>TrailingStop)
{
if((OrderStopLoss()>(Ask+TrailingStop)) || (OrderStopLoss()==0))
{
OrderModify(OrderTicket(),OrderOpenPrice(),Ask+TrailingStop,OrderTakeProfit(),0,Red);
}
}
}
}
}
}
//+------------------------------------------------------------------------------------+
//+------------------------------------------------------------------------------------+--------------------------------------------------------------------+
e como você conseguiu o ingresso para o pedido não aberto?
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP)
if (сигнал_bue) OrderDelete(OrderTicket());
else b++;
if (OrderType()==OP_SELLSTOP)
if (сигнал_sell) OrderDelete(OrderTicket());
else s++;
}
}
Certo? simplesmente não consigo colocá-lo lá dentro.
{
if (OrderSelect(i, SELECT_BY_POS)==true)
{
if (OrderSymbol()!=Symbol() || OrderMagicNumber()!=Magic) continue;
if (OrderType()==OP_BUY || OrderType()==OP_SELL) p++;
if (OrderType()==OP_BUYSTOP)
if (сигнал_bue) OrderDelete(OrderTicket());
else b++;
if (OrderType()==OP_SELLSTOP)
if (сигнал_sell) OrderDelete(OrderTicket());
else s++;
}
}