Программисты помогите пожалуйста написать советника.

 

Сам осилить не могу...

Не думаю, что он сложный по коду. Просто если кто может помочь отпишитесь. А то на других сайтах бросают только ссылки на платные ресурсы по этому поводу.

Заранее благодарен кто откликнется.

 
ТЗ в студию.
 
Вообщем суть вот в чем.
1. Условие открытия на покупку: если предшествующая свеча открылась и закрылась выше MAn(где n-период средней EMA), то открываем ордер на покупку с TP=A(A-величина TakeProfitа), SL=B(B-величина StopLossa) и лотом Lot1.
2. Условие открытия на продажу: если предшествующая свеча открылась и закрылась ниже MAn(где n-период средней EMA), то открываем ордер на продажу с TP=A(A-величина TakeProfitа), SL=B(B-величина StopLossa) и лотом Lot1.
3. Если сработал StopLoss, то следующий ордер открывается с лотом Lot2, если опять сработал StopLoss, то уже следующий ордер с лотом Lot3 и так 10 раз, т.е. (Lot1, Lot2, Lot3, Lot4, Lot5, Lot6, Lot7, Lot8, Lot9, Lot10)
В случае срабатывания TakeProfitа следующий ордер открывается опять с лотом Lot1
4. Выносные параметры будут соответственно: 
  Период EMA, TP, SL, Lot1, Lot2, Lot3, Lot4, Lot5, Lot6, Lot7, Lot8, Lot9, Lot10. 
5. Конечно, если будет возможно и будет время у программиста, то в замен TakeProfitа, при достижения определенного количества пунктов прибыли K переносить StopLoss в безубыток и далее в плюс на величину K...вообщем тралить
 
отшлифовать ТЗ можно тут https://www.mql5.com/ru/forum/132458 - чтобы интересно было глянуть что из этого получится.
 
vladimir64:
Вообщем суть вот в чем.
1. Условие открытия на покупку: если предшествующая свеча открылась и закрылась выше MAn(где n-период средней EMA), то открываем ордер на покупку с TP=A(A-величина TakeProfitа), SL=B(B-величина StopLossa) и лотом Lot1.
2. Условие открытия на продажу: если предшествующая свеча открылась и закрылась ниже MAn(где n-период средней EMA), то открываем ордер на продажу с TP=A(A-величина TakeProfitа), SL=B(B-величина StopLossa) и лотом Lot1.
3. Если сработал StopLoss, то следующий ордер открывается с лотом Lot2, если опять сработал StopLoss, то уже следующий ордер с лотом Lot3 и так 10 раз, т.е. (Lot1, Lot2, Lot3, Lot4, Lot5, Lot6, Lot7, Lot8, Lot9, Lot10)
В случае срабатывания TakeProfitа следующий ордер открывается опять с лотом Lot1
4. Выносные параметры будут соответственно:
Период EMA, TP, SL, Lot1, Lot2, Lot3, Lot4, Lot5, Lot6, Lot7, Lot8, Lot9, Lot10.
5. Конечно, если будет возможно и будет время у программиста, то в замен TakeProfitа, при достижения определенного количества пунктов прибыли K переносить StopLoss в безубыток и далее в плюс на величину K...вообщем тралить

можно не стараться. стандартная схема - можно порыться в кодабазе - эта стратегия не работает - париться для удовлетворения любопытства топикстартера можно только платно
 
abolk:

можно не стараться. стандартная схема - можно порыться в кодабазе - эта стратегия не работает - париться для удовлетворения любопытства топикстартера можно только платно

да. мартин с открыванием по тренду в надежде что таки отобьется убыток.

в приложении ТЗ, кто захочет.

Файлы:
joazrn.zip  7 kb
 

платно 20 с без убытком 25 можно с тралом и хитрым увеличением лота по не перекрытому убытку суммарно за серию убыточных сделок 35

в личку

 

помогите пожалуйста с кодами для стохастика ... чтобы покупка была в пределах за 80 и за 20 по уровню ...

спасибо заранее

 
financion.comission:

помогите пожалуйста с кодами для стохастика ... чтобы покупка была в пределах за 80 и за 20 по уровню ...

спасибо заранее

Примерно так:

if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0) > 80) покупка;
if(iStochastic(NULL,0,5,3,3,MODE_SMA,0,MODE_MAIN,0) < 20) продажа;
Если для МТ5, там  двумя строчками не обойдешься. Создаешь массив для хранения данных индикатора, потом создаешь хендл, потом копируешь данные индюка в массив. Потом сравниваешь данные массива со своим уровнем и совершаешь сделку. И все.
 
Evgeniy Zhdan:

Примерно так:

Если для МТ5, там  двумя строчками не обойдешься. Создаешь массив для хранения данных индикатора, потом создаешь хендл, потом копируешь данные индюка в массив. Потом сравниваешь данные массива со своим уровнем и совершаешь сделку. И все.

не подскажешь как ваше можно вставить что бы оно работало

//+------------------------------------------------------------------+

//|                                                          777.mq5 |

//|                                  Copyright 2021, MetaQuotes Ltd. |

//|                                             https://www.mql5.com |

//+------------------------------------------------------------------+

#property copyright "Copyright 2021, MetaQuotes Ltd."

#property link      "https://www.mql5.com"

#property version   "1.00"

//+------------------------------------------------------------------+

//| Include                                                          |

//+------------------------------------------------------------------+

#include <Expert\Expert.mqh>

//--- available signals

#include <Expert\Signal\SignalStoch.mqh>

//--- available trailing

#include <Expert\Trailing\TrailingNone.mqh>

//--- available money management

#include <Expert\Money\MoneyFixedLot.mqh>

//+------------------------------------------------------------------+

//| Inputs                                                           |

//+------------------------------------------------------------------+

//--- inputs for expert

input string         Expert_Title           ="777";       // Document name

ulong                Expert_MagicNumber     =21346;       //

bool                 Expert_EveryTick       =false;       //

//--- inputs for main signal

input int            Signal_ThresholdOpen   =10;          // Signal threshold value to open [0...100]

input int            Signal_ThresholdClose  =10;          // Signal threshold value to close [0...100]

input double         Signal_PriceLevel      =0.0;         // Price level to execute a deal

input double         Signal_StopLevel       =2.0;        // Stop Loss level (in points)

input double         Signal_TakeLevel       =3.0;        // Take Profit level (in points)

input int            Signal_Expiration      =4;           // Expiration of pending orders (in bars)

input int            Signal_Stoch_PeriodK   =5;           // Stochastic(5,3,3,...) K-period

input int            Signal_Stoch_PeriodD   =3;           // Stochastic(5,3,3,...) D-period

input int            Signal_Stoch_PeriodSlow=3;           // Stochastic(5,3,3,...) Period of slowing

input ENUM_STO_PRICE Signal_Stoch_Applied   =STO_LOWHIGH; // Stochastic(5,3,3,...) Prices to apply to

input double         Signal_Stoch_Weight    =1.0;         // Stochastic(5,3,3,...) Weight [0...1.0]

//--- inputs for money

input double         Money_FixLot_Percent   =10.0;        // Percent

input double         Money_FixLot_Lots      =0.1;         // Fixed volume

//+------------------------------------------------------------------+

//| Global expert object                                             |

//+------------------------------------------------------------------+

CExpert ExtExpert;

//+------------------------------------------------------------------+

//| Initialization function of the expert                            |

//+------------------------------------------------------------------+

int OnInit()

  {

//--- Initializing expert

   if(!ExtExpert.Init(Symbol(),Period(),Expert_EveryTick,Expert_MagicNumber))

     {

      //--- failed

      printf(__FUNCTION__+": error initializing expert");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Creating signal

   CExpertSignal *signal=new CExpertSignal;

   if(signal==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating signal");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//---

   ExtExpert.InitSignal(signal);

   signal.ThresholdOpen(Signal_ThresholdOpen);

   signal.ThresholdClose(Signal_ThresholdClose);

   signal.PriceLevel(Signal_PriceLevel);

   signal.StopLevel(Signal_StopLevel);

   signal.TakeLevel(Signal_TakeLevel);

   signal.Expiration(Signal_Expiration);

//--- Creating filter CSignalStoch

   CSignalStoch *filter0=new CSignalStoch;

   if(filter0==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating filter0");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

   signal.AddFilter(filter0);

//--- Set filter parameters

   filter0.PeriodK(Signal_Stoch_PeriodK);

   filter0.PeriodD(Signal_Stoch_PeriodD);

   filter0.PeriodSlow(Signal_Stoch_PeriodSlow);

   filter0.Applied(Signal_Stoch_Applied);

   filter0.Weight(Signal_Stoch_Weight);

//--- Creation of trailing object

   CTrailingNone *trailing=new CTrailingNone;

   if(trailing==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating trailing");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Add trailing to expert (will be deleted automatically))

   if(!ExtExpert.InitTrailing(trailing))

     {

      //--- failed

      printf(__FUNCTION__+": error initializing trailing");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Set trailing parameters

//--- Creation of money object

   CMoneyFixedLot *money=new CMoneyFixedLot;

   if(money==NULL)

     {

      //--- failed

      printf(__FUNCTION__+": error creating money");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Add money to expert (will be deleted automatically))

   if(!ExtExpert.InitMoney(money))

     {

      //--- failed

      printf(__FUNCTION__+": error initializing money");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Set money parameters

   money.Percent(Money_FixLot_Percent);

   money.Lots(Money_FixLot_Lots);

//--- Check all trading objects parameters

   if(!ExtExpert.ValidationSettings())

     {

      //--- failed

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- Tuning of all necessary indicators

   if(!ExtExpert.InitIndicators())

     {

      //--- failed

      printf(__FUNCTION__+": error initializing indicators");

      ExtExpert.Deinit();

      return(INIT_FAILED);

     }

//--- ok

   return(INIT_SUCCEEDED);

  }

//+------------------------------------------------------------------+

//| Deinitialization function of the expert                          |

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

   ExtExpert.Deinit();

  }

//+------------------------------------------------------------------+

//| "Tick" event handler function                                    |

//+------------------------------------------------------------------+

void OnTick()

  {

   ExtExpert.OnTick();

  }

//+------------------------------------------------------------------+

//| "Trade" event handler function                                   |

//+------------------------------------------------------------------+

void OnTrade()

  {

   ExtExpert.OnTrade();

  }

//+------------------------------------------------------------------+

//| "Timer" event handler function                                   |

//+------------------------------------------------------------------+

void OnTimer()

  {

   ExtExpert.OnTimer();

  }

//+------------------------------------------------------------------+

Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
Открой новые возможности в MetaTrader 5 с сообществом и сервисами MQL5
  • 2021.04.21
  • www.mql5.com
MQL5: язык торговых стратегий для MetaTrader 5, позволяет писать собственные торговые роботы, технические индикаторы, скрипты и библиотеки функций