Qualquer pergunta de novato, de modo a não desorganizar o fórum. Profissionais, não passem por aqui. Em nenhum lugar sem você - 6. - página 356
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
Obrigado, mas eu gostaria de uma solução precisa. Para que a barra atual não seja levada em consideração, mas somente as barras anteriores são levadas em consideração.
Obrigado, mas eu gostaria de uma solução precisa. Para que a barra atual não seja levada em consideração, mas somente as barras anteriores são levadas em consideração.
Maldição, eu escavei no código de outra pessoa, mais uma vez, num relance, tentei mudar esta peça. Neste caso, provavelmente PRICE_CLOSE ou 0 deve ser...
Aqui está o código, mudou os turnos de 0 para 1. Isso vai ajudar?
//============================================================================================
//
//
//
//
//
//============================================================================================
inttern MA1_Period=7; // 1º período MA
intMA2_Period=13; // Período do 2º MA
externo int MA1_Método=1; // Método de cálculo MA1 (SMA=0,EMA=1,SMMA=2,LWMA=3)
método externo int MA2_Método=1; // método de cálculo MA2 (SMA=0,EMA=1,SMMA=2,LWMA=3)
externamente int MA1_Price=0; // MA1 método de cálculo do preço
externamente int MA2_Price=0; // MA2 método de cálculo do preço
turno MA1_Shift=1; // turno de tempo MA1 externo
turno MA2_Shift=1; // turno de tempo MA2 externo
Lote duplo externo = 0,01; // Lote fixo
escorregamento interno externo = 0; // Desvio de preço para ordens de mercado
int New_Bar; // 0/1 Formação de nova barra
int Time_0; // Hora de início de um novo bar
int PosClose; // Direção da travessia
int total; // Número de pedidos em aberto
duplo MA1_0; // Valor atual do 1º МА (rosa)
duplo MA1_1; // Valor anterior do 1º MA (rosa)
duplo MA2_0; // Valor atual do 2º MA (azul)
duplo MA2_1; // Valor anterior do 2º MA (azul)
int orderBuy; // 1 = fato da presença da ordem de compra
int orderSell; // 1 = fato de presença de ordem de venda
//============================================================================================
int init()
{
}
//============================================================================================
int start()
{
preço duplo;
int total=OrdensTotal(); // total de ordens
for(int i=total-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==verdadeiro) // Selecionar ordem
{
if(OrderType()==OP_BUY) // Se um pedido de compra
{
orderBuy=1;
if(CrossPositionClose()==1) // Feche o pedido se ele satisfizer
{ // condição CrossPositionClose()=1
price=MarketInfo(Symbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE);
}
}
if(OrderType()==OP_SELL) // Se um pedido de compra estiver sendo feito
{
orderSell=1;
if(CrossPositionClose()==2) // Feche o pedido se ele satisfizer
{ // condição CrossPositionClose()=2
price=MarketInfo(Symbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE);
}
}
}
}
Novo_Bar=0; // Vamos zerá-lo primeiro
se (Time_0 != Time[0]) // Se a hora de início da barra já for diferente
{
Novo_Bar= 1; // Aqui está um novo bar
Tempo_0 = Tempo[0]; // Lembre-se da nova hora de início da barra
}
MA1_0=iMA(NULL,0, MA1_Periodo, MA1_Shift,MAMétodo(MA1_Metodo), MAPrice(MA1_Preço), 0); // Valor atual do 1º MA
MA1_1=iMA(NULL,0, MA1_Periodo, MA1_Shift,MAMétodo(MA1_Metodo), MAPrice(MA1_Preço), 1); // Valor anterior do 1º MA
MA2_0=iMA(NULL,0, MA2_Periodo, MA2_Shift,MAMétodo(MA2_Metodo), MAPrice(MA2_Preço), 0); // Valor atual do 2º MA
MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1); // Valor anterior do 2º MA
retornar;
}
//============================================================================================
int CrossPositionClose()
{
PosClose=0; // aqui é onde o cão é enterrado!:)
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // Fechamento da Posição Cruzada {
{
PosClose=1;
}
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // Cruzamento para baixo
{
PosClose=2;
}
retornar(PosClose); // retornar a direção da interseção.
}
//============================================================================================
//============================================================================================
int MAMethod(int MA_Method)
{
switch(MA_Método)
{
caso 0: retorno(0); //retorno MODE_SMA=0
caso 1: retorno(1); // retorno MODE_EMA=1
caso 2: retorno(2); // Return MODE_SMMA=2
caso 3: retorno(3); //retorno MODE_LWMA=3
}
}
//============================================================================================
int MAPrice(int MA_Price)
{
switch(MA_Price)
{
case 0: return(PRICE_CLOSE); // Return PRICE_CLOSE=0
caso 1: retorno(PRICE_OPEN); //retorno PRICE_OPEN=1
caso 2: retorno(PRICE_HIGH); //retorno PRICE_HIGH=2
caso 3: retorno(PRICE_LOW); //retorno PRICE_LOW=3
caso 4: retorno(PRICE_MEDIAN); //retorno PRICE_MEDIAN=4
caso 5: retorno(PRICE_TYPICAL); //retorno PRICE_TYPICAL=5
caso 6: retorno(PREÇO_PERIGOSO); //retorno PREÇO_PERIGOSO=6
}
}
//============================================================================================
Sepulca, eu já tentei isso, o compilador jura.
Não pode ser, vou tentar eu mesmo......
Sepulca, obrigado, seu código funciona. Somente eu coloquei os turnos de volta no lugar deles.
Vou verificar em prazos mais longos, vou torturá-lo por alguns dias para ter certeza de que este código funciona.