Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 341

 

Народ, помогите пожалуйста. Хочу написать функцию, чтобы каждый след открытый ордер открывался лотом в 2 раза больше предыдущего. Эта функция выдает неправильные значения.. Что тут не так? Заранее спасибо!



extern double LotBuy = 0.01;


double GetLotBuy()

{

for(int n = 1; n<=CountBuy(); n++)
{
LotBuy=LotBuy*2;
}
return (LotBuy);
}

 
Trader7777:

Народ, помогите пожалуйста. Хочу написать функцию, чтобы каждый след открытый ордер открывался лотом в 2 раза больше предыдущего. Эта функция выдает неправильные значения.. Что тут не так? Заранее спасибо!



extern double LotBuy = 0.01;


double GetLotBuy()

{

for(int n = 1; n<=CountBuy(); n++)
{
LotBuy=LotBuy*2;
}
return (LotBuy);
}


Для начала:

extern double LotBuy = 0.01;

double GetLotBuy()

{
double ld_Lot = LotBuy;
for(int n = 1; n<=CountBuy(); n++)
{ld_Lot = LotBuy * n * 2;}
return (ld_Lot);
}

 
Trader7777:

Народ, помогите пожалуйста. Хочу написать функцию, чтобы каждый след открытый ордер открывался лотом в 2 раза больше предыдущего. Эта функция выдает неправильные значения.. Что тут не так? Заранее спасибо!



extern double LotBuy = 0.01;


double GetLotBuy()

{

for(int n = 1; n<=CountBuy(); n++)
{
LotBuy=LotBuy*2;
}
return (LotBuy);
}

попробуй вот так

double OrderLotsSB(string sy="", int op=-1, int mn=-1) { 
 datetime o;
   int      i, k=OrdersTotal(); double r=-1;

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if ( OrderType()==OP_SELL||OrderType()==OP_BUY) {
          if (op<0 || OrderType()==OP_SELL||OrderType()==OP_BUY) {
            if (mn<0 || OrderMagicNumber()==Magic) {
              r=OrderLots()*2;
            }
          }
        }
      }
    }
  }
  return(r);
}
 
TarasBY:

Для начала:

extern double LotBuy = 0.01;

double GetLotBuy()

{
double ld_Lot = LotBuy;
for(int n = 1; n<=CountBuy(); n++)
{ld_Lot = LotBuy * n * 2;}
return (ld_Lot);
}



Ты шутишь?
 

Сделал советника на основе собственного индикатора.

Открытие сделок покупка на росте и продажа на падении индикатора по отношению ко вчерашнему дню.

Проблемма в том, что сделки открываются и закрываются через бар и более.

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

Если нет превышения, то значение индикатора остается как в предыдущем баре (думаю проблемма где-то здесь)

Код индикатора:

//+------------------------------------------------------------------+
//|                                                         EMAF.mq4 |
//|                                                 Kamil Gazizullin |
//|                                             forexman77@yandex.ru |
//+------------------------------------------------------------------+
#property copyright "Kamil Gazizullin"
#property link      "forexman77@yandex.ru"
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//--- input parameters
//--- buffers
double ExtMapBuffer1[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_LINE,0,1);
   SetIndexBuffer(0,ExtMapBuffer1);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----  
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit;
    double
    raznica,raznica_static,
    MA_1_t,                                                  
    MA_2_t;
 
   if(counted_bars>0)
      counted_bars--;
   limit=Bars-counted_bars;
   for(int i=0;i<limit;i++)
   {  
      static double MA_otshet;
      MA_1_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+0);  
      MA_2_t=iMA(NULL,0,7,0,MODE_EMA,PRICE_CLOSE,i+1); 
      raznica=MA_1_t-MA_2_t;
      raznica_static=MA_1_t-MA_otshet;
      if(raznica_static > -0.003 && raznica_static < 0.003)
      {
      ExtMapBuffer1[i]=MA_otshet;
      }
      else
      if(raznica > -0.003 && raznica < 0.003)
      {
      ExtMapBuffer1[i]=MA_2_t;
      MA_otshet=MA_2_t;
      }
      if((raznica > 0.003) || (raznica <- 0.003))
      {
      ExtMapBuffer1[i]=MA_1_t;
      }
   }
   return(0);
  }
//+------------------------------------------------------------------+

Торговые критерии советника:

   // Торговые критерии
EMAF_1=iCustom(NULL, 0, "EMAF",0,0,i+0);    
EMAF_2=iCustom(NULL, 0, "EMAF",0,0,i+1); 
static datetime t;
if  (EMAF_1 > EMAF_2)
          {                                          
          Opn_B=true; 
          t=Time[0];                  
          }
if  (EMAF_1 < EMAF_2)
      {
       if(Time[0]>t)
          {                                      
          Cls_B=true;              
          }
      }
 
klop:
Здравия!

Необходим скрипт такого плана:

было
eur/gbp / 1 lot / open 312.25 / sl 559.45 / tp 454.55
yui/ghf / 1 lot / open 3.28 / sl 5.65 / tp 4.65
.../... / 1 lot / open ...... / sl ...... / tp .......


стало
eur/gbp / 1.02 lot / open 312.25 / sl 559.45 / tp 454.55
yui/ghf / 1.02 lot / open 3.28 / sl 5.65 / tp 4.65
.../... / 1.02 lot / open ...... / sl ...... / tp .......

Что-бы закрывал Отложенные ордера заданного объёма (лота), и открывал новые ордера с другим объёмом, но теми-же уровнями входа в рынок, стопом и тейком.

Может кто встречал..?
Я по моему на этом же форуме и встречал,попробуйте в поисковике на сайте поискать с такими функциями скрипт.
 
max020780:



ничего не пойму тут..


надо чтобы размер лота увеличивался в геометрической прогрессии ( с множителем 2), если открывается второй однонаправленный ордер.

 
Vinin:

Ты шутишь?
Решение не редко состоит из нескольких "шагов". 1-ый шаг - уменьшаем экспоненциальный рост размера лота. Попутно наделяем хоть каким-то смыслом использование цикла. А так, как не знаем "где начало", то дальнейшие шаги оставляем за автором. ;)
 
TarasBY:
Решение не редко состоит из нескольких "шагов". 1-ый шаг - уменьшаем экспоненциальный рост размера лота. Попутно наделяем хоть каким-то смыслом использование цикла. А так, как не знаем "где начало", то дальнейшие шаги оставляем за автором. ;)

это конечно замечательно, но все же как выразить, чтобы следующий однонаправленный ордер открылся лотом в два раза больше предыдущего. Уже есть две рабочие функции CountBuy() и CountSell()
 
Trader7777:
А что вам мешает сделать такую проверку (скрипт)???
Файлы:
Причина обращения: