Aiuto per la codifica - pagina 630

 
Ciao Mladen, ho bisogno dell'immagine del filtro allegato qui sotto.
File:
filter.jpg  114 kb
 

Sto richiedendo un semplice Aroon EA.

Comprare: Quando aroon up incrocia sopra aroon down. Esci quando l'aroon up incrocia il livello 50 verso il basso o quando si verifica un segnale opposto, a seconda di quale si verifica prima. (Segnale opposto significa quando l'aroon up incrocia sotto l'aroon down)

Vendere: Quando aroon down incrocia sopra aroon up. Esci quando l'aroon down attraversa il livello 50 verso il basso o quando si verifica un segnale opposto, a seconda di quale dei due eventi si verifica per primo. (Segnale opposto significa quando l'aroon down incrocia sotto l'aroon up)

Tutti i trade dovrebbero essere aperti all'apertura della candela successiva al segnale.

Impostare lo stop loss all'altezza del precedente swing high/swing low. Se non è possibile farlo, usate lo stop loss ATR o quello manuale.

Se possibile, aggiungete anche la funzione di gestione del denaro.

Il tuo tempo, le tue capacità e la tua generosità sono molto apprezzati. Saluti

Reymaq.

 
ciao qualcuno ha fps buysell segnale mq4? se sì significa si può per favore condividere qui .. ho visto solo ex4 file ...
 

altrimenti voglio un aiuto. in questo indicatore alto basso stanno mostrando con brevi linee gialle ... piace che dopo il prezzo di basso dello zigzag ... dal prezzo stesso bisogno di linee brevi per 0,326%, 0.5%, 0.618% , 1%, 1.618%,2.27%,2.618%,3.33%, 4.236% i significa che il ritracciamento fibo è solo per quel prezzo che è come (dopo aver impostato il basso) low+(low*0.326/100)............ low +(low*0.5/100)........... come...

dopo che per l'alto fatto significa .... stessa procedura come linee corte punteggiate

high(high*0.326/100)........... high -(high*0.5/100)........

Per favore, qualcuno può fare questo per me?

Sarò molto grato a u..

File:
 

Salve,

Vorrei testare i loro due indicatori in un EA.

1 - SAR parabolico di KAMA 1_5.mq4

2 - Macd - std normalizzato.mq4 1_2 (Filtro)


Sto testando con il codice qui sotto per aprire gli ordini.
Ho fatto un back test per 3 mesi in H1.
Il risultato è stato pessimo
.

C'è un modo per migliorare il modo di apertura degli ordini?

Risultato

extern int    BarToUse    = 1;       // Bar to test (0, for still opened, 1 for first closed, and so on)
extern string     IndicatorsSettings   = "===== INDICATORS SETTINGS=====";
extern string     _Indicator           = "===== Parabolic SAR =====";
extern double    AccStep         = 0.02;      // Accumulation step
extern double    AccLimit        = 0.2;       // Accumulation limit
extern int       AmaPeriod       = 10;        // Kaufman AMA period
extern int  AmaPrice        = 0;  // Price to be used by Kaufman AMA
extern double    FastEnd         = 2;         // Kaufman AMA fast end
extern double    SlowEnd         = 30;        // Kaufman AMA slow end
extern double    SmoothPower     = 2;         // Smooth power
extern bool      JurikFDAdaptive = true;      // Should the Kaufman AMA be Jurik fractal dimension adaptive?
//extern enDisplayType DisplayType = "" ; // What should be displayed?
extern int       LineWidth       = 2;         // Lines width
extern int       ArrowsWidth     = 0;         // Arrows (dots) width
extern bool      Interpolate     = true;      // Interpolate in multi time frame mode?
extern string PARAMETERS_INDICATOR_TWO = "Macd";
extern int                FastMAPeriod  = 23;            // Fast macd period
extern int                SlowMAPeriod  = 50;            // Slow macd period
extern int                SignalPeriod  = 9;             // Signal period
extern int                StdPeriod     = 50;            // Standard deviation used for normalization
extern int Price         = 0;   // Price to use 
extern double             Filter        = 0;             // Filter to apply to macd value
extern int                FilterPeriod  = 0;             // Filter period to use (<= to use the slow macd period)
extern colorOn            ColorChangeOn = clrOnSlope;    // Color change on : 

#define _doNothing 0
#define _doBuy     1
#define _doSell    2
int start()
{
   //MagicWarning();//Display a warning in case MagicNumber is changed
   AutoMagic();//Generate Magic Number based on Symbol and Long/Short params
   
      int doWhat = _doNothing;
      double sarUp = iCustom(NULL,0,"Parabolic SAR of KAMA 1_5",0,AccStep,AccLimit,AmaPeriod,AmaPrice,FastEnd,SlowEnd,SmoothPower,JurikFDAdaptive,0,BarToUse); 
      double sarDn = iCustom(NULL,0,"Parabolic SAR of KAMA 1_5",0,AccStep,AccLimit,AmaPeriod,AmaPrice,FastEnd,SlowEnd,SmoothPower,JurikFDAdaptive,1,BarToUse+1); 
      
      double macdUp= iCustom(NULL,0,"Macd - std normalized 1_2 histo",0,FastMAPeriod,SlowMAPeriod,SignalPeriod,StdPeriod,Price,Filter,FilterPeriod,ColorChangeOn,0,BarToUse);
      double macdDn= iCustom(NULL,0,"Macd - std normalized 1_2 histo",0,FastMAPeriod,SlowMAPeriod,SignalPeriod,StdPeriod,Price,Filter,FilterPeriod,ColorChangeOn,1,BarToUse+1);
      
         

        
      if (sarUp!=sarDn & macdUp!=macdDn)
         if (sarUp<sarDn & macdUp<macdDn) //buy
               doWhat = _doBuy;
         else  doWhat = _doSell;
         if (doWhat==_doNothing && !DisplayInfo) return(0);

   if (doWhat==_doBuy && openedBuys==0)
      {
         RefreshRates();
         //double BStopLossLevel   = Ask - StopLoss   *myPoint;
         //double BTakeProfitLevel = Ask + TakeProfit *myPoint;               
         double stopLossBuy   = 0; if (StopLoss>0)   stopLossBuy   =Ask - StopLoss   *myPoint; //Ask-StopLoss*Point*MathPow(10,Digits%2);
         double takeProfitBuy = 0; if (TakeProfit>0) takeProfitBuy =Ask + TakeProfit *myPoint; //Ask+TakeProfit*Point*MathPow(10,Digits%2);
         if (EcnBroker)
         {
            int ticketb = OrderSend(Symbol(),OP_BUY,LotSize,NormalizeDouble(Ask,digit),Slippage*myPoint,0,0,EASHORTNAME+"_"+Symbol()+"("+GetChartTimeFrame()+")_B",MagicNumber,0,Blue);
            if (ticketb>-1)
               dummyResult = OrderModify(ticketb,OrderOpenPrice(),NormalizeDouble(stopLossBuy,digit),NormalizeDouble(takeProfitBuy,digit),0,CLR_NONE);
              
              
         }
         else dummyResult = OrderSend(Symbol(),OP_BUY,LotSize,NormalizeDouble(Ask,digit),Slippage*myPoint,NormalizeDouble(stopLossBuy,digit),NormalizeDouble(takeProfitBuy,digit),EASHORTNAME+"_"+Symbol()+"("+GetChartTimeFrame()+")_B",MagicNumber,0,Blue);
          
      }
   if (doWhat==_doSell && diStcSell==true && openedSells==0)
      {
         RefreshRates();
         //double SStopLossLevel   = Bid + StopLoss   *Mypoint;
         //double STakeProfitLevel = Bid - TakeProfit *Mypoint;
         double stopLossSell   = 0; if (StopLoss>0)   stopLossSell=Bid + StopLoss   *myPoint; //Bid+StopLoss*Point*MathPow(10,Digits%2);
         double takeProfitSell = 0; if (TakeProfit>0) takeProfitSell =Bid - TakeProfit *myPoint; //Bid-TakeProfit*Point*MathPow(10,Digits%2);
         if (EcnBroker)
         {
            int tickets = OrderSend(Symbol(),OP_SELL,LotSize,NormalizeDouble(Bid,digit),Slippage*myPoint,0,0,EASHORTNAME+"_"+Symbol()+"("+GetChartTimeFrame()+")_S",MagicNumber,0,Red);
            if (tickets>-1)
                dummyResult = OrderModify(tickets,OrderOpenPrice(),NormalizeDouble(stopLossSell,digit),NormalizeDouble(takeProfitSell,digit),0,CLR_NONE);
         }
         
         else dummyResult = OrderSend(Symbol(),OP_SELL,LotSize,NormalizeDouble(Bid,digit),Slippage*myPoint,NormalizeDouble(stopLossSell,digit),NormalizeDouble(takeProfitSell,digit),EASHORTNAME+"_"+Symbol()+"("+GetChartTimeFrame()+")_S",MagicNumber,0,Red);
 
borgesr:

Salve,

Vorrei testare i loro due indicatori in un EA.

1 - SAR parabolico di KAMA 1_5.mq4

2 - Macd - std normalizzato.mq4 1_2 (Filtro)


Sto testando con il codice qui sotto per aprire gli ordini.
Ho fatto un back test per 3 mesi in H1.
Il risultato è stato pessimo
.

C'è un modo per migliorare il modo di apertura degli ordini?

Si prega di leggere questo post: https: //www.mql5.com/en/forum/186208/page3 sull'eventuale ottimizzazione. Per quanto riguarda il motivo per cui funziona così: probabilmente potresti rivedere le regole che stai usando quando gli ordini vengono aperti e chiusi. Ma in ogni caso, controlla le regole che stai usando e controlla quando i tuoi ordini sono chiusi
 
ramzam:

altrimenti voglio un aiuto. in questo indicatore alto basso stanno mostrando con brevi linee gialle ... piace che dopo il prezzo di basso dello zigzag ... dal prezzo stesso bisogno di linee brevi per 0,326%, 0.5%, 0.618% , 1%, 1.618%,2.27%,2.618%,3.33%, 4.236% i significa che il ritracciamento fibo è solo per quel prezzo che è come (dopo aver impostato il basso) low+(low*0.326/100)............ low +(low*0.5/100)........... come...

dopo di che per l'alto fatto significa .... stessa procedura come linee brevi tratteggiate

alto(alto*0.326/100)........... alto -(alto*0.5/100)........

potete per favore qualcuno fare questo per me?

Sarò molto grato a u..

Non posso controllare il file al momento. ma vedendo il nome, sei sicuro che l'uso di zigzag per i segnali può essere usato nel modo che ti aspetti (essendo che zigzag ridisegna)?
 
mladen:
Per favore leggi questo post: https: //www.mql5.com/en/forum/186208/page3 sull'eventuale ottimizzazione. Per quanto riguarda il motivo per cui funziona così: probabilmente potresti rivedere le regole che stai usando quando gli ordini vengono aperti e chiusi. Ma in ogni caso, controlla le regole che stai usando e verifica quando i tuoi ordini sono chiusi

Caro Mladen,

La regola diapertura era sbagliata.

Ho cambiato il codice ma continua ancora con una performance molto scarsa perdendo un sacco di soldi.


Per fare il filtro insieme al Parabolic sarebbe meglio usare l 'RSI?

      int doWhat = _doNothing;
      double sarUp = iCustom(NULL,0,"Parabolic SAR of KAMA 1_5",0,AccStep,AccLimit,AmaPeriod,AmaPrice,FastEnd,SlowEnd,SmoothPower,JurikFDAdaptive,0,BarToUse); 
      double sarDn = iCustom(NULL,0,"Parabolic SAR of KAMA 1_5",0,AccStep,AccLimit,AmaPeriod,AmaPrice,FastEnd,SlowEnd,SmoothPower,JurikFDAdaptive,1,BarToUse+1); 
      
      double macdUp= iCustom(NULL,0,"Macd - std normalized 1_2 histo",0,FastMAPeriod,SlowMAPeriod,SignalPeriod,StdPeriod,Price,Filter,FilterPeriod,ColorChangeOn,0,BarToUse);
      double macdDn= iCustom(NULL,0,"Macd - std normalized 1_2 histo",0,FastMAPeriod,SlowMAPeriod,SignalPeriod,StdPeriod,Price,Filter,FilterPeriod,ColorChangeOn,1,BarToUse+1);
      
         

        
      
         if (sarUp<sarDn & macdUp<macdDn) doWhat = _doBuy;
         if (sarUp>sarDn & macdUp>macdDn)  doWhat = _doSell;
         if (doWhat==_doNothing && !DisplayInfo) return(0);
         
  for (int i = OrdersTotal()-1; i>=0; i--)
   {
      if (!OrderSelect(i,SELECT_BY_POS,MODE_TRADES)) continue;
      if (OrderSymbol()      != Symbol())            continue;
      if (OrderMagicNumber() != MagicNumber)         continue;

      //
      //
      //
      //
      //
      
      if (DisplayInfo) currentProfit += OrderProfit()+OrderCommission()+OrderSwap();
         
         //
         //
         //
         //
         //
         
         if (OrderType()==OP_BUY)
            if (doWhat==_doSell )
                  { RefreshRates(); if (!OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Orange)) openedBuys++; }
            else  openedBuys++;
         if (OrderType()==OP_SELL)
            if (doWhat==_doBuy )
                  { RefreshRates(); if (!OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Green)) openedSells++; }
            else  openedSells++;            
   }
   if (DisplayInfo) Comment("Current profit : "+DoubleToStr(currentProfit,2)+" "+AccountCurrency()); if (doWhat==_doNothing) return(0);

   //
   //
   //
   //
   //
   if (doWhat==_doBuy && openedBuys==0)
      {
         RefreshRates();
         //double BStopLossLevel   = Ask - StopLoss   *myPoint;
         //double BTakeProfitLevel = Ask + TakeProfit *myPoint;               
         double stopLossBuy   = 0; if (StopLoss>0)   stopLossBuy   =Ask - StopLoss   *myPoint; //Ask-StopLoss*Point*MathPow(10,Digits%2);
         double takeProfitBuy = 0; if (TakeProfit>0) takeProfitBuy =Ask + TakeProfit *myPoint; //Ask+TakeProfit*Point*MathPow(10,Digits%2);
         if (EcnBroker)
         {
            int ticketb = OrderSend(Symbol(),OP_BUY,LotSize,NormalizeDouble(Ask,digit),Slippage*myPoint,0,0,EASHORTNAME+"_"+Symbol()+"("+GetChartTimeFrame()+")_B",MagicNumber,0,Blue);
            if (ticketb>-1)
               dummyResult = OrderModify(ticketb,OrderOpenPrice(),NormalizeDouble(stopLossBuy,digit),NormalizeDouble(takeProfitBuy,digit),0,CLR_NONE);
              
              
         }
         else dummyResult = OrderSend(Symbol(),OP_BUY,LotSize,NormalizeDouble(Ask,digit),Slippage*myPoint,NormalizeDouble(stopLossBuy,digit),NormalizeDouble(takeProfitBuy,digit),EASHORTNAME+"_"+Symbol()+"("+GetChartTimeFrame()+")_B",MagicNumber,0,Blue);
          
      }
   if (doWhat==_doSell & openedSells==0)
      {
         RefreshRates();
         //double SStopLossLevel   = Bid + StopLoss   *Mypoint;
         //double STakeProfitLevel = Bid - TakeProfit *Mypoint;
         double stopLossSell   = 0; if (StopLoss>0)   stopLossSell=Bid + StopLoss   *myPoint; //Bid+StopLoss*Point*MathPow(10,Digits%2);
         double takeProfitSell = 0; if (TakeProfit>0) takeProfitSell =Bid - TakeProfit *myPoint; //Bid-TakeProfit*Point*MathPow(10,Digits%2);
         if (EcnBroker)
         {
            int tickets = OrderSend(Symbol(),OP_SELL,LotSize,NormalizeDouble(Bid,digit),Slippage*myPoint,0,0,EASHORTNAME+"_"+Symbol()+"("+GetChartTimeFrame()+")_S",MagicNumber,0,Red);
            if (tickets>-1)
                dummyResult = OrderModify(tickets,OrderOpenPrice(),NormalizeDouble(stopLossSell,digit),NormalizeDouble(takeProfitSell,digit),0,CLR_NONE);
         }
         
         else dummyResult = OrderSend(Symbol(),OP_SELL,LotSize,NormalizeDouble(Bid,digit),Slippage*myPoint,NormalizeDouble(stopLossSell,digit),NormalizeDouble(takeProfitSell,digit),EASHORTNAME+"_"+Symbol()+"("+GetChartTimeFrame()+")_S",MagicNumber,0,Red);
      }
   return(0);
}
 
borgesr:

Caro Mladen,

La regola diapertura era sbagliata.

Ho cambiato il codice ma continua ancora con una performance molto scarsa perdendo un sacco di soldi.


Per fare il filtro insieme al Parabolic sarebbe meglio usare RSI?

Per favore, cerca di ottimizzare il tuo EA

 
kapoo:

Mr. Mladen, per favore guardi i codici qui sotto, la freccia non viene fuori in live fino a quando non ho cambiato time frame.


Questa è una versione di riverniciatura dell'indicatore sidus

La versione non riverniciante può essere scaricata da qui: https: //www.mql5.com/en/forum/180648/page293