Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Da nessuna parte senza di te - 6. - pagina 356

 
Ho provato a cambiare i parametri MA1_Shift=1 di entrambi i muwings. Sembra aiutare. Lo testerò al minuto.
 
okidoki543:
Grazie, ma vorrei una soluzione precisa. In modo che la barra attuale non venga contata, ma solo le barre precedenti.

Per avere una soluzione esatta, avete bisogno del vostro codice, dal quale volete ottenere una soluzione esatta. Ma non avete il codice. Quindi neanche tu hai una soluzione...
 
всokidoki543:
Grazie, ma vorrei una soluzione precisa. In modo che la barra attuale non sia presa in considerazione, ma solo le barre precedenti.


Accidenti, ho scavato nel codice di qualcun altro, ancora una volta a colpo d'occhio cercare di cambiare questo pezzo. In questo caso probabilmente PRICE_CLOSE o 0 dovrebbe essere...

   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-й МА
 

Ecco il codice, ho cambiato gli spostamenti da 0 a 1. Sarà d'aiuto?

//============================================================================================
//
//
//
//
//
//============================================================================================
inttern MA1_Period=7; // 1° periodo MA
extern int intMA2_Period=13; // Periodo del 2° MA
extern int MA1_Method=1; // metodo di calcolo MA1 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA2_Method=1; // metodo di calcolo MA2 (SMA=0,EMA=1,SMMA=2,LWMA=3)
extern int MA1_Price=0; // metodo di calcolo del prezzo MA1
extern int MA2_Price=0; // metodo di calcolo del prezzo MA2
extern int MA1_Shift=1; // spostamento temporale MA1
extern int MA2_Shift=1; // spostamento temporale MA2
extern double Lot = 0.01; // Lotto fisso
extern int slippage = 0; // Deviazione di prezzo per ordini a mercato
int New_Bar; // 0/1 Nuova formazione della barra
int Time_0; // Tempo di inizio di una nuova barra

int PosClose; // direzione di attraversamento
int totale; // numero di ordini aperti
double MA1_0; // valore corrente del 1° МА (rosa)
double MA1_1; // valore precedente della 1a MA (rosa)
double MA2_0; // Valore corrente della 2a MA (blu)
double MA2_1; // valore precedente della 2a MA (blu)
int orderBuy; // 1 = fatto di presenza dell'ordine Buy
int orderSell; // 1 = fatto di presenza di ordine Sell
//============================================================================================
int init()
{

}
//============================================================================================
int start()
{

prezzo doppio;

int total=OrdersTotal(); // totale ordini
for(int i=totale-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES)==true) // Seleziona ordine
{
if(OrderType()==OP_BUY) // se un ordine di acquisto
{
orderBuy=1;
if(CrossPositionClose()==1) // Chiudi l'ordine se soddisfa
{ // condizione CrossPositionClose()=1
price=MarketInfo(Symbol(),MODE_BID);
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE);
}
}
if(OrderType()==OP_SELL) // Se viene piazzato un ordine di acquisto
{
orderSell=1;
if(CrossPositionClose()==2) // Chiudi l'ordine se soddisfa
{ // condizione CrossPositionClose()=2
price=MarketInfo(Symbol(),MODE_ASK);
OrderClose(OrderTicket(),OrderLots(),price,slippage,CLR_NONE);
}
}
}
}

New_Bar=0; // Azzeriamo prima
if (Time_0 != Time[0]) // Se il tempo di inizio della barra è già diverso
{
New_Bar= 1; // Ecco una nuova barra
Time_0 = Time[0]; // Ricorda il nuovo tempo di inizio della barra
}

MA1_0=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 0); // Valore corrente del 1° MA
MA1_1=iMA(NULL,0, MA1_Period, MA1_Shift,MAMethod(MA1_Method), MAPrice(MA1_Price), 1); // Valore precedente del 1° MA
MA2_0=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 0); // Valore corrente del 2° MA
MA2_1=iMA(NULL,0, MA2_Period, MA2_Shift,MAMethod(MA2_Method), MAPrice(MA2_Price), 1); // Valore precedente del 2° MA


ritorno;
}

//============================================================================================
int CrossPositionClose()
{
PosClose=0; // qui è dove il cane è sepolto!!!:)
if ((MA1_1>=MA2_0 && MA1_0<MA2_0) || (MA1_1>MA2_0 && MA1_0<=MA2_0)) // CrossPosition Close {
{
PosClose=1;
}
if ((MA1_1<=MA2_0 && MA1_0>MA2_0) || (MA1_1<MA2_0 && MA1_0>=MA2_0)) // Intersezione verso il basso
{
PosClose=2;
}
return(PosClose); // restituisce la direzione di intersezione.
}
//============================================================================================

//============================================================================================
int MAMethod(int MA_Method)
{
interruttore(MA_Metodo)
{
caso 0: return(0); //ritorno MODE_SMA=0
caso 1: return(1); // ritorno MODE_EMA=1
caso 2: return(2); // Ritorno MODE_SMMA=2
caso 3: return(3); //ritorno MODE_LWMA=3
}
}
//============================================================================================
int MAPrice(int MA_Price)
{
interruttore(MA_Price)
{
caso 0: return(PRICE_CLOSE); // Return PRICE_CLOSE=0
caso 1: return(PRICE_OPEN); //return PRICE_OPEN=1
caso 2: return(PRICE_HIGH); //return PRICE_HIGH=2
caso 3: return(PRICE_LOW); //return PRICE_LOW=3
caso 4: return(PRICE_MEDIAN); //return PRICE_MEDIAN=4
caso 5: return(PRICE_TYPICAL); //return PRICE_TYPICAL=5
caso 6: return(PRICE_WEIGHTED); //return PRICE_WEIGHTED=6
}
}
//============================================================================================

 
Sepulca, ci ho già provato, il compilatore giura.
 
okidoki543:
Sepulca, ci ho già provato, il compilatore giura.

Non può essere, lo proverò io stesso......
 
Merda, ora non è più una bestemmia. Mi dispiace per la confusione. L'errore veniva fuori prima per qualche motivo. (
 
Niente parolacce.... Test da voi..... Ho già fatto delle modifiche, che l'autore mi perdoni ....
 
Ho due messaggi del mio forum aperti con un clic alla volta, o il mio mouse fa rumore o qualcos'altro. Devo cancellarlo di nuovo più tardi......Ma controllerò questo post....
 

Sepulca, grazie, il tuo codice funziona. Solo che ho rimesso i turni al loro posto.

Lo controllerò su timeframe più lunghi, lo torturerò per qualche giorno per essere sicuro che questo codice funzioni.