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

 
Tentei alterar os parâmetros MA1_Shift=1 de ambos os muwings. Parece ajudar. Vou testá-lo no minuto que for preciso.
 
okidoki543:
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.

Para ter uma solução exata, você precisa de seu código, do qual você quer obter uma solução exata. Mas você não tem o código. Então você também não tem uma solução...
 
всokidoki543:
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...

   MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1);    // Текущее    значение 1-й МА
   MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 2);    // Предыдущее значение 1-й МА
   MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1);    // Текущее    значение 2-й МА
   MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 2);    // Предыдущее значение 2-й МА
 

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.
 
okidoki543:
Sepulca, eu já tentei isso, o compilador jura.

Não pode ser, vou tentar eu mesmo......
 
Merda, agora não é praguejar. Desculpe a confusão. O erro estava surgindo antes por alguma razão. (
 
Nada de palavrões.... Teste por você..... Já fiz alterações, que o autor me perdoe....
Arquivos anexados:
 
Tenho dois de meus posts no fórum abertos com um clique de cada vez, ou meu mouse está balançando ou qualquer outra coisa. Eu tenho que apagar novamente mais tarde...... Mas vou verificar este post....
 

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.

Razão: