Помощь в кодировании - страница 630

 
Привет, Младен, мне нужно прикрепленное изображение фильтра ниже.
Файлы:
filter.jpg  114 kb
 

Я прошу простой советник Aroon.

Покупка: Когда aroon up пересекает уровень выше aroon down. Выход: когда aroon up пересекает уровень 50 вниз или когда возникает противоположный сигнал, в зависимости от того, что наступит раньше. (Противоположный сигнал означает, когда aroon up пересекает уровень ниже aroon down).

Продажа: Когда aroon down пересекает уровень выше aroon up. Выход, когда aroon down пересечет уровень 50 вниз или когда появится противоположный сигнал, в зависимости от того, что произойдет раньше. (Противоположный сигнал означает, когда aroon down пересекает уровень ниже aroon up).

Все сделки следует открывать на открытии следующей свечи после появления сигнала.

Устанавливайте стоп-лосс на уровне предыдущего максимума/минимума свинга. Если это невозможно, используйте ATR стоплосс или ручной стоплосс.

Если возможно, добавьте функцию управления капиталом.

Мы очень ценим ваше время, навыки и щедрость. С уважением,

Реймак.

 
Привет, у кого-нибудь есть сигнал fps buysell mq4? Если да, то не могли бы вы поделиться здесь... я видел только файлы ex4...
 

в этом индикаторе high low показаны короткими желтыми линиями... нравится, что после цены low зигзага. от самой цены нужны короткие линии для 0.326% ,0.5%, 0.618%, 1%, 1.618%, 2.27%, 2.618%, 3.33%, 4.236% т.е. фибо ретрейсмент только для этой цены, что выглядит как (после установки low) low+(low*0.326/100)............ low +(low*0.5/100)........... как...

после этого для максимума .... та же процедура, как короткие пунктирные линии.

высокий (высокий*0.326/100)........... высокий - (высокий*0.5/100)........

не могли бы вы сделать это для меня?

Я буду очень благодарен вам...

Файлы:
 

Здравствуйте,

Я хотел бы протестировать два индикатора в советнике.

1 - Parabolic SAR of KAMA 1_5.mq4

2 - Macd - std normalized.mq4 1_2 (Filter).


Я тестирую с кодом ниже для открытия ордеров.
Я провел обратный тест на 3 месяца в H1.
Результат был очень плохим.

Можно ли как-то улучшить способ открытия ордеров?

Результат

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:

Здравствуйте,

Я хотел бы протестировать два индикатора в советнике.

1 - Parabolic SAR of KAMA 1_5.mq4

2 - Macd - std normalized.mq4 1_2 (Filter).


Я тестирую с кодом ниже для открытия ордеров.
Я провел обратный тест на 3 месяца в H1.
Результат был очень плохим.

Можно ли как-то улучшить способ открытия ордеров?

Пожалуйста, прочитайте этот пост: https: //www.mql5.com/en/forum/186208/page3 о возможной оптимизации. Что касается того, почему это работает так: вы, вероятно, могли бы пересмотреть правила, которые вы используете, когда ордера открываются и закрываются. Но в любом случае, проверьте правила, которые вы используете, и проверьте, когда ваши ордера закрываются.
 
ramzam:

в этом индикаторе high low показаны короткими желтыми линиями... нравится, что после цены low зигзага. от самой цены нужны короткие линии для 0.326% ,0.5%, 0.618%, 1%, 1.618%, 2.27%, 2.618%, 3.33%, 4.236% т.е. фибо ретрейсмент только для этой цены, что выглядит как (после установки low) low+(low*0.326/100)............ low +(low*0.5/100)........... как...

после этого для высокой цены .... та же процедура, как короткие пунктирные линии

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

не могли бы вы, пожалуйста, кто-нибудь сделать это для меня?

Я буду вам очень благодарен.

Я не могу проверить файл в данный момент. но видя название, вы уверены, что использование зигзага для сигналов может быть использовано так, как вы ожидаете (учитывая, что зигзаг перерисовывает)?
 
mladen:
Пожалуйста, прочитайте этот пост: https: //www.mql5.com/en/forum/186208/page3 о возможной оптимизации. Что касается того, почему это работает так: вы, вероятно, могли бы пересмотреть правила, которые вы используете, когда ордера открываются и закрываются. Но в любом случае, проверьте правила, которые вы используете, и проверьте, когда ваши ордера закрываются.

Уважаемый Младен,

Правилооткрытия было неправильным.

Я изменил код, но все еще продолжается с очень плохой производительностью, теряя много денег.


Для создания фильтра вместе с Параболиком лучше использовать 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:

Уважаемый Младен,

Правилооткрытия было неправильным.

Я изменил код, но все равно советник продолжает работать очень плохо, теряя много денег.


Для создания фильтра вместе с Параболиком лучше использовать RSI?

Пожалуйста, постарайтесь оптимизировать ваш советник.

 
kapoo:

Младен, пожалуйста, посмотрите на приведенные ниже коды, стрелка не появляется в реальном времени, пока я не переключу таймфрейм.


Это перерисованная версия индикатора sidus

Версию без перерисовки можно скачать отсюда: https: //www.mql5.com/en/forum/180648/page293.

Причина обращения: