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

 
AlexeyVik:
Разве тикет может быть равен нулю?

Из документации о OrderSend():

.......

Возвращаемое значение

Возвращает номер тикета, который назначен ордеру торговым сервером или -1 в случае неудачи. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError()

 
Sepulca:

Из документации о OrderSend():

.......

Возвращаемое значение

Возвращает номер тикета, который назначен ордеру торговым сервером или -1 в случае неудачи. Чтобы получить информацию об ошибке, необходимо вызвать функцию GetLastError(). 

И я о том-же... Номер тикета не может быть 0 даже в тестере, а при ошибке функция возвращает -1 что меньше 0. Вот и спросил, в каком случае тикет может быть равен нулю... Ведь в условии написано >= то-есть больше или равно...
 
h-l


подскажите, есть ли индикатор для мт4, считающий волатильность на выбранном таймфрейме?

Например для дневок( H-L)n, где n-количество дней.

 
lempopo:


подскажите, есть ли индикатор для мт4, считающий волатильность на выбранном таймфрейме?

Например для дневок( H-L)n, где n-количество дней.

А разве это волатильность? 

"Волатильность  — это статистический показатель, характеризующий тенденцию изменчивости цены." - примерно так звучит определение. 

Историческая волатильность — это величина, равная стандартному отклонению стоимости финансового инструмента за заданный промежуток времени, рассчитанному на основе исторических данных о его стоимости. 

И как показатель волатильности в терминале есть индикатор стандартное отклонение - Standard Deviation.

 
AlexeyVik:
И я о том-же... Номер тикета не может быть 0 даже в тестере, а при ошибке функция возвращает -1 что меньше 0. Вот и спросил, в каком случае тикет может быть равен нулю... Ведь в условии написано >= то-есть больше или равно...

c тикетом все понятно.у меня и функция есть определения последнего открытого ордера(по тикету) даже по OrderTupy разделил.Ребята вопрос то в следующем .комплиматор ошибок не выдает и в тестере нет ошибок но ордер не модифицируется....почему?????если я не могу понять свою ошибку я не могу ее осознать

 

  if(OrderSend(Symbol(),OP_BUYLIMIT,0.10,Ask,Slippage,0,0,"первый ордер бай установлен",Magik,0)== true)

      { 
          TicketB = FindLastTicket(OP_BUY);
          if(TicketB >0)
          {
             SL = priseBuy + NormalizeDouble(takeP1 * Point,Digits);
             TP = priseBuy - NormalizeDouble(stopL1 * Point,Digits);
             if(OrderModify(TicketB,priseBuy,SL,TP,0)== true)
             Comment("урааааааа");
            
          }
 

подскажите где найти мастера, который напишет маленький скрипт для пробы бесплатно

 
burbur87:

c тикетом все понятно.у меня и функция есть определения последнего открытого ордера(по тикету) даже по OrderTupy разделил.Ребята вопрос то в следующем .комплиматор ошибок не выдает и в тестере нет ошибок но ордер не модифицируется....почему?????если я не могу понять свою ошибку я не могу ее осознать

 

if(OrderSend(Symbol(),OP_BUYLIMIT,0.10,Ask,Slippage,0,0,"первый ордер бай установлен",Magik,0)== true)
      { 
          TicketB = FindLastTicket(OP_BUY);
          if(TicketB >0)
          {
             SL = priseBuy + NormalizeDouble(takeP1 * Point,Digits);
             TP = priseBuy - NormalizeDouble(stopL1 * Point,Digits);
             if(OrderModify(TicketB,priseBuy,SL,TP,0)== true)
             Comment("урааааааа");
            
          }

Пользуйся кнопкой SRC в панельке выше окна ввода текста.

По сути: то что компилятор не выдаёт ошибок это ещё ни о чём не говорит. Надо смотреть в журнале нет-ли там каких ошибок и выводить принтом условия и параметры. Это общие рекомендации.

Конкретно по твоему коду: функция OrderSend() возвращает номер тикета или -1 в случае ошибки. Если внимательно прочесть документацию по типам данных, конкретно тип bool то можно понять что значение false это 0. Всё остальное это true. Поэтому как бы не завершилось выполнение функции OrderSend() булево значение всегда будет true.

В приведённом примере нет необходимости искать тикет ордера дополнительной функцией, ведь его возвращает OrderSend().

По текущей цене лимитные ордера не ставятся. О какой модификации идёт речь, если ордер по такой команде не должен открыться?

 
virginvl:

подскажите где найти мастера, который напишет маленький скрипт для пробы бесплатно


На любом форуме несколько тем с предложениями написать бесплатно. Люди учатся писать ...
 
virginvl:   подскажите где найти мастера, который напишет маленький скрипт для пробы бесплатно

Мастер находится в MetaEditor: Файл --> Создать. Что должен делать скрипт? Давай, напишем вместе!!! Объясню по шагам...


 
AlexeyVik:

Пользуйся кнопкой SRC в панельке выше окна ввода текста.

По сути: то что компилятор не выдаёт ошибок это ещё ни о чём не говорит. Надо смотреть в журнале нет-ли там каких ошибок и выводить принтом условия и параметры. Это общие рекомендации.

Конкретно по твоему коду: функция OrderSend() возвращает номер тикета или -1 в случае ошибки. Если внимательно прочесть документацию по типам данных, конкретно тип bool то можно понять что значение false это 0. Всё остальное это true. Поэтому как бы не завершилось выполнение функции OrderSend() булево значение всегда будет true.

В приведённом примере нет необходимости искать тикет ордера дополнительной функцией, ведь его возвращает OrderSend().

По текущей цене лимитные ордера не ставятся. О какой модификации идёт речь, если ордер по такой команде не должен открыться?


точно..а тестер открывал позицию...более того этот ордер был как флаг от которого он потом сетку открывал..

 void OnTick()

{

 if(trend == 1)

 Comment("за семь месяцев тренд бай");

 else Comment("за семь месяцев тренд сел");

 double priseBuy = FindLastOrderPrise (OP_BUY);

 double priseSel = FindLastOrderPrise (OP_SELL);


double frezeelevl = MarketInfo(OrderSymbol(),MODE_FREEZELEVEL); 

  rsi = iRSI(Symbol(),PERIOD_D1,7,PRICE_CLOSE,0);

  trend = WhatTrend();

if (CountTrades() == 0)

 {

   if(trend == 1 && rsi <=30)

   { double vtoroilimt     = NormalizeDouble  (priseBuy - Vtoroilimit * Point,Digits);

     double tretiilimit    = NormalizeDouble  (priseBuy - Tretiilimit * Point,Digits);

     double hetvertiilimit = NormalizeDouble  (priseBuy - Hetvertiilimit * Point,Digits);

     double pervstop       = NormalizeDouble  (priseBuy + Pervstop  * Point,Digits);

     double vtoroistop     = NormalizeDouble  (priseBuy + Vtoroistop * Point,Digits); 

     

     if(OrderSend(Symbol(),OP_BUYLIMIT,0.04,Ask,Slippage,0,0,"первый ордер бай установлен",Magik,0)== true)

      { 

          OrderSend(Symbol(),OP_BUYLIMIT,0.06, Ask - vtoroilimt,Slippage,0,0,"",Magik,0);          

         OrderSend(Symbol(),OP_BUYLIMIT,0.08, Ask -  tretiilimit,Slippage,0,0,"",Magik,0);

         OrderSend(Symbol(),OP_BUYLIMIT,0.10,Ask -   hetvertiilimit,Slippage,0,0,"",Magik,0);

         OrderSend(Symbol(),OP_BUYLIMIT,0.02,Ask -   pervstop,Slippage,0,0,"",Magik,0);

         OrderSend(Symbol(),OP_BUYLIMIT,0.01,Ask  -  vtoroistop,Slippage,0,0,"",Magik,0); 

        

      }    

    }//   if(trend == 1 && rsi <=30)

    

   else if(trend == 2 && rsi >= 70)

   { double vtoroilimt     = NormalizeDouble  (priseSel + Vtoroilimit * Point,Digits);

     double tretiilimit    = NormalizeDouble  (priseSel + Tretiilimit * Point,Digits);

     double hetvertiilimit = NormalizeDouble  (priseSel + Hetvertiilimit * Point,Digits);

     double pervstop       = NormalizeDouble  (priseSel - Pervstop  * Point,Digits);

     double vtoroistop     = NormalizeDouble  (priseSel - Vtoroistop * Point,Digits); 

     

     if(OrderSend (Symbol(),OP_SELLLIMIT,0.04,Bid,Slippage,0,0,"первый ордер сел установлен",Magik,0)== true)

      {

         

         OrderSend(Symbol(),OP_SELLLIMIT,0.06, Bid + vtoroilimt,Slippage,0,0,"",Magik,0);          

         OrderSend(Symbol(),OP_SELLLIMIT,0.08, Bid + tretiilimit,Slippage,0,0,"",Magik,0);

         OrderSend(Symbol(),OP_SELLLIMIT,0.10,Bid + hetvertiilimit,Slippage,0,0,"",Magik,0);

         OrderSend(Symbol(),OP_SELLSTOP,0.02,Bid + pervstop,Slippage,0,0,"",Magik,0);

         OrderSend(Symbol(),OP_SELLSTOP,0.01,Bid + vtoroistop,Slippage,0,0,"",Magik,0); 

            

      }//     if(OrderSend (Symbol(),OP_SELLLIMIT,0.10,Bid,Slippage,0,0,"первый ордер сел установлен",Magik,0)== true)


  }//   else if(trend == 2 && rsi >= 70)

 

       

 }//if (CountTrades() == 0)


 

   

}

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

код растет с большими мучениями.но без модификации ордера совсем никуда.первый ордер я изменю.а что за кнопка срс??? 

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