[Qualsiasi domanda da principiante, per non ingombrare il forum. Professionisti, non passate oltre. Non potrei andare da nessuna parte senza di te - 2. - pagina 480

 

Aiuta a dare un senso a questo Expert Advisor

basato sull'indicatore alligatore
segnale di comprare quando la linea verde incrocia il blu e il rosso dal basso verso l'alto apre una posizione su Buy
segnale di vendere quando la linea verde incrocia il rosso e il blu dall'alto verso il basso apre una posizione su Sell
le posizioni vengono chiuse quando StopLoss e TakeProfit


nessun errore durante la compilazione, ma ci sono errori quando si testa nella strategia tester
il primo errore in attesa dell'ordine stringa non ha aperto aperto cancellato il codice contenente la stringa stringa da compilato nessun errore eseguito nella strategia tester
funziona, ma si apre solo posizione Sell a Buy non vuole
Si potrebbe per favore guardare e firmare ciò che è sbagliato nel codice

File:
all_2.mq4  2 kb
 
novicek:

Aiutami adaffrontare questo EA

indicatore di alligatore
un segnale di acquisto quando la linea verde incrocia quella blu e quella rossa incrocia dal basso verso l'alto, apre una posizione di acquisto
un segnale di vendita quando la linea verde incrocia quella rossa e quella blu dall'alto verso il basso apre una posizione Sell
le posizioni vengono chiuse quando vengono raggiunti StopLoss e TakeProfit


nessun errore durante la compilazione, ma quando testato nel tester di strategia ci sono errori
il primo errore in attesa dell'ordine stringa non ha aperto cancellato il codice contenente la stringa da compilato nessun errore eseguito nel tester di strategia
funziona, ma apre solo le posizioni su Sell su Buy non vuole
Si potrebbeper favore guardare e scrivere ciò che è sbagliato nel codice


Guarda le righe iniziali:

OrderSend(Symbol(),OP_BUY,Lot,Ask,Slippage,magic,Ask , StopLoss * Point, Ask , TakeProfit * Point);
            
OrderSend(Symbol(),OP_SELL,Lot,Bid,Slippage,magic,Bid , StopLoss * Point, Bid , TakeProfit * Point);

Ora guarda le specifiche della funzione OrderSend (vedi descrizione qui https://docs.mql4.com/ru/trading/OrderSend)

int OrderSend( string symbol, int cmd, double volume, double price, int slippage, double stoploss, double takeprofit, string comment=NULL, int magic=0, datetime expiration=0, color arrow_color=CLR_NONE) 

e controllare se i parametri sono ancora lì

 
novicek:

Che non ci siano dubbi sulla mia alfabetizzazione
Non mettere i segni di punteggiatura è la mia abbuffata, tutto qui.


Quando metti in pratica la tua abbuffata di "non punteggiare", non essere sorpreso di trovare i tuoi post interrogativi spesso ignorati.

La gente ha anche l'abitudine di rispettare se stessa.
Hanno anche l'abitudine di rispettare la loro lingua.

 
Grazie, ma non ho trovato una soluzione, ho bisogno di applicare bollinger a rsi, posso farlo manualmente, ma come posso farlo programmaticamente?
 
ZZZEROXXX:
Grazie, ma non ho trovato una soluzione, ho bisogno di imporre bollinger su rsi, si può fare manualmente, ma come farlo programmaticamente?

Bollinger è una MA spinta su e giù su StdDev. Potete farlo in due modi.

1. Se siete soddisfatti della variazione di deviazione intera di Deviat, potete usare la funzione iBandsOnArray

2. Se avete anche bisogno di contare frazioni decimali di Deviat, dovrete usare le funzioni iMAOnArray e iStdOnArray

Nel codice appare come segue:

#property indicator_separate_window
#property indicator_buffers 4
#property indicator_minimum 0
#property indicator_maximum 100

#property indicator_color1 SkyBlue
#property indicator_color2 LimeGreen
#property indicator_color3 LimeGreen
#property indicator_color4 LimeGreen
#property indicator_style2 STYLE_DOT

extern int rsiPeriod=14;
extern int rsiPrice=PRICE_CLOSE;
extern int bbPeriod=20;
extern int bbShift=0;
int bbMethod=MODE_SMA;
extern double bbDeviat=2;

double rsi[], ma[], up[], dn[], stdev[];
//------------------------------------------------------------------    init
int init()
{
  int i=0;
  SetIndexBuffer(i, rsi); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "RSI"); i++;
  SetIndexBuffer(i, ma); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "MA"); i++;
  SetIndexBuffer(i, up); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "UP"); i++;
  SetIndexBuffer(i, dn); SetIndexStyle(i, DRAW_LINE); SetIndexLabel(i, "DN"); i++;
  IndicatorBuffers(5);
  SetIndexBuffer(i, stdev); SetIndexStyle(i, DRAW_NONE); // добавочный буфер расчета
  return(0);
}
//------------------------------------------------------------------    start
int start()
{
  int count=IndicatorCounted(); if (count<0) return; // если ошибка расчета
  int lim=Bars-count; if (lim>1) lim=Bars-1; // если нерасчитано более 1 бара, то полный пересчет
  // 1. получаем массив RSI
  for (int i=lim; i>=0; i--) rsi[i]=iRSI(Symbol(), Period(), rsiPeriod, rsiPrice, i);
  // 2. строим на основе RSI - МА (средняя линия болинджера), StdDev и Верхнюю и Нижнюю границу Боллинджера
  for (i=lim; i>=0; i--) 
  {
    ma[i]=iMAOnArray(rsi, 0, bbPeriod, bbShift, bbMethod, i); // средняя линия
    stdev[i]=iStdDevOnArray(rsi, 0, bbPeriod, bbShift, bbMethod, i); // отклонение
    up[i]=ma[i]+bbDeviat*stdev[i]; // верхняя граница
    dn[i]=ma[i]-bbDeviat*stdev[i]; // нижняя граница
  }
  return(0);
}
File:
_bbonrsi.mq4  3 kb
 
abolk:

Quando metti in pratica il tuo pregiudizio di "non punteggiare", non sorprenderti che i tuoi post interrogativi saranno spesso ignorati.
Le persone hanno anche la tendenza a rispettare se stesse.
Hanno anche l'abitudine di rispettare la loro lingua.

Proprio così. Fa male agli occhi e fa venir voglia di voltarsi.
E i dubbi sorgono comunque - "sulla mia alfabetizzazione (educazione)".
 
sergeev:

Nel codice, appare così:

Grazie! Proprio quello di cui hai bisogno.
 
abolk:


Quando metti in pratica il tuo pregiudizio di "non punteggiare", non sorprenderti che i tuoi post interrogativi saranno spesso ignorati.

Le persone hanno anche la tendenza a rispettare se stesse.
Hanno anche l'abitudine di rispettare la loro lingua.

Io, per esempio, non so ancora dove metterli, so solo che ci dovrebbe essere un punto alla fine - lo so per certo. Il russo è la lingua più difficile. Ma ha il vantaggio che si può esprimere in modo che qualsiasi altra lingua sarebbe l'invidia, specialmente la lingua delle parolacce, è breve e semplice, a volte la uso quando qualcuno ha difficoltà a capire che si bestemmia e tutti capiscono subito tutto e nessuno viene da te con domande stupide durante il giorno.
 
Caro, potresti consigliarmi come chiamare le informazioni Open[1] e Close[1] da diversi TF nell'Expert Advisor?
 
Un bzik e una B in russo sono cose diverse. Ho una solida B, sono abbastanza bravo.