Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1576

 
Eugen8519:

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


Всегда пожалуйста)
 
Mihail Matkovskij:

Смотря как вы собираетесь вычислять стоп и тейк на основе статистики... Не очень понятно, что такое "статистика по свечам", как вы её вычисля

Тут ответа ,как свиста рака и странно,что всегда ответа именно намой вопрос.

 
darirunu1:

Тут ответа ,как свиста рака и странно,что всегда ответа именно намой вопрос.

Как же можно ответить на вопрос, где не понятно в чём он заключается?... :)

Для того чтобы понять, как вычислить стоп и тейк, в вашем случае, нужно знать как вы вычисляете статистку по свечам? Поскольку "статистика по свечам", это довольно таки растяжимое понятие...

Также, какое соотношение стопа и тейка вы хотите?... Здесь целую торговую систему нужно за вас придумать, поскольку вы даже не знаете постановку задачи...
 
Mihail Matkovskij:

Как же можно ответить на вопрос, где не понятно в чём он заключается?... :)

Для того чтобы понять, как вычислить стоп и тейк, в вашем случае, нужно знать как вы вычисляете статистку по свечам? Поскольку "статистика по свечам", это довольно таки растяжимое понятие...

Также, какое соотношение стопа и тейка вы хотите?... Здесь целую торговую систему нужно за вас придумать, поскольку вы даже не знаете постановку задачи...

int cnt,ticket,total=0;

st = "часы общ. пон. вт. ср. чт. пт. \n";

double cHeight, gHeight, Max;

int sat, sun, mon, thu, wen, ths, fri; //, NN;

int H = TimeHour(TimeCurrent()); // определим текущий час

double NN = H + N*24; // определим смещение

if (NN>Bars) NN=Bars;

for (int t=0; t<24; t++)

{

int HeightZ = 0; int z=0;

for (int i=0; i<=NN; i++)

{

HeightZ = MathAbs(High[i]-Low[i])/Point ;

z++;

}

Какие варианты вы предложите ?
 
darirunu1:

Какие варианты вы предложите ?
int cnt,ticket,total=0;

st = "часы общ. пон. вт. ср. чт. пт. \n";

double cHeight, gHeight, Max;

int sat, sun, mon, thu, wen, ths, fri; //, NN;

int H = TimeHour(TimeCurrent()); // определим текущий час

double NN = H + N*24; // определим смещение

if (NN>Bars) NN=Bars;

for (int t=0; t<24; t++)

{

  int HeightZ = 0; int z=0;

  for (int i=0; i<=NN; i++)

  {

    HeightZ = (High[i]-Low[i])/Point;

    z++;
  }

}

На сколько я понял, движение у вас вычисляется, как высота бара (MathAbs было не нужно). 

и

double NN = H + N*24;

здесь вы пытаетесь вычислить количество баров... Но лучше задать его просто положительным числом, для начала.

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

double avBarMove(int _period) {
  double cmMove = 0;
  for (int i = 0; i < _period; i++)
    cmMove += High[i]-Low[i];
  return cmMove / _period;
} 

Теперь, можете попробовать вычислить стоп и тейк на основе результата функции.

 



Помогите правильно расположить функцию

SendNotification ("текст");




Вставил её для сообщения о вход в позицию здесь

void OPENORDER(string ord)

  {
  
  double priceL=m_symbol.Ask();
   if(ord=="Sell")      
    SendNotification ("текст");

        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")
    SendNotification ("текст");
 //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }

И я уже успешно получаю уведомления на смартфон. 




Но как  и куда вставить 

SendNotification

Чтобы приходило сообщения при достижения стоп лосс или Тейк профит.? 

 
Eugen8519:


Помогите правильно расположить функцию


Вставил её для сообщения о вход в позицию здесь

И я уже успешно получаю уведомления на смартфон. 


Но как  и куда вставить 

Чтобы приходило сообщения при достижения стоп лосс или Тейк профит.? 

Смотрите OnTradeTransaction

 

Eugen8519:

Но как  и куда вставить 

Чтобы приходило сообщения при достижения стоп лосс или Тейк профит.? 

Сначала, надо создать функцию контроля закрытия ордеров.

 
MakarFX:

Сначала, надо создать функцию контроля закрытия ордеров.

OnTradeTransaction сработает при срабатывании любого стоп ордера на сервере.

 
MakarFX:

Сначала, надо создать функцию контроля закрытия ордеров.

Может через? 

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