Ответ
 
Опции темы
Старый 21.10.2013, 06:37   #401 (permalink)
Активный участник
 
Аватар для Walt6730
 
Регистрация: 19.05.2009
Сообщений: 36
Репутация: 2
Walt6730
Сказал(а) спасибо: 15
Поблагодарили 2 раз(а) в 2 сообщениях
Поинты: 28
Сообщение от Evgen1y Посмотреть сообщение
HELP!!! Не могу заставить советник открывать сделки на ренко. На простых графиках открывает, переношу код открытия позы в скрипт - открывает. Какой код вписать в советник, что бы открывал сделки на ренко???
Присоединяюсь к запросу. Джентльмены программеры, не поможете особо одаренным?
Walt6730 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 30.10.2013, 11:16   #402 (permalink)
Местный знаток
 
Аватар для gince
 
Регистрация: 09.09.2008
Адрес: Литва
Сообщений: 401
Репутация: 751
gince - gince - gince - gince - gince - gince - gince -
Сказал(а) спасибо: 188
Поблагодарили 751 раз(а) в 194 сообщениях
Поинты: 194
Отправить сообщение для gince с помощью Skype™
Сообщение от eevviill Посмотреть сообщение
Добрый вечер. Расписывать вступную речь не буду(она никому не нужна).

Скрипт.

Скрытый текст

PHP код:
#property copyright "eevviill"
#property show_inputs

extern string Risk_by_trade_in_percents;
extern double Percent 10;
extern bool buy false;
extern bool sell false;
 
extern int SL 44;
extern int TP 41
int sell_TP;
int buy_TP;
int sell_SL;
int buy_SL;
extern int Slippage 4;
extern int Magic 3414;
double Margin;
double Cost_of_1_lot;
double Lot_step;
double Lot_rounded;
double Max_lot;
double Min_lot;
int start()
  {
1)Margin AccountFreeMargin();
2)Cost_of_1_lot MarketInfo(Symbol(),MODE_MARGINREQUIRED);  
3)Lot_step MarketInfo(Symbol(),MODE_LOTSTEP);
4)Lot_rounded MathFloor(Margin*Percent/100/Cost_of_1_lot/Lot_step)*Lot_step ;
5)Min_lot MarketInfo(Symbol(),MODE_MINLOT);
Max_lot MarketInfo(Symbol(),MODE_MAXLOT);
6)if(Lot_rounded<Min_lotLot_rounded Min_lot;
if(
Lot_rounded>Max_lotLot_rounded Max_lot;
7)double SLbuy=0SLsell=0,TPbuy=0,TPsell=0
8)if(SL>0) {SLbuy=Ask-SL*PointSLsell=Bid+SL*Point;}
if(
TP>0) {TPbuy=Ask+TP*Point;TPsell=Bid-TP*Point;}
9)while(!IsTradeAllowed()) Sleep(1000);
10)if(buyOrderSend(Symbol(),OP_BUY,Lot_rounded,Ask,Slippage,SLbuy,TPbuy,"Risk by trade",Magic,0,Blue);
while(!
IsTradeAllowed()) Sleep(1000);
if(
sellOrderSend(Symbol(),OP_SELL,Lot_rounded,Bid,Slippage,SLsell,TPsell,"Risk by trade",Magic,0,Orange);
11)if(buyAlert(Symbol(),"  Buy  ",Ask,"  ",Percent,"%  ",Lot_rounded);
if(
sellAlert(Symbol(),"  Sell  ",Bid,"  ",Percent,"%  ",Lot_rounded);
   return(
0);
  } 
[свернуть]

Пояснение.
До функции Start() это всё объявление переменных. Это мы уже знаем.
1)Функция AccountFreeMargin() возвращает суму свободных средств на счете. Тоесть если в терминале у нас 400 доларов в средствах, то переменной Margin будет присвоено значение 400.00.
2)Функция MarketInfo(Symbol(),MODE_MARGINREQUIRED) узнаёт то условие торговли у нашего брокера что нам надо. Имеет 2 свойства.
2.1)MarketInfo(Symbol(),) название валютной пары. Если Symbol(), то значит проверка идёт по той валютной паре, к графику какой мы прикрипили скрипт.
2.2)MarketInfo(,MODE_MARGINREQUIRED) это то количество денег, что надо для покупки 1-го лота валютной пары.
3)MarketInfo(Symbol(),MODE_LOTSTEP) тоже что и в придыдущем примере, только MODE_LOTSTEP значит минимальный шаг на который мы можем увеличивать объём ордера.
4)Функция MathFloor округляет значения чегото то до 2 цифр после запятой. Это нам нужно, для того чтобы округлить наш 4-ох значный после запятой лот.
5)Функция MarketInfo(Symbol(),MODE_MINLOT). MODE_MINLOT это минимальный лот который разрешает брокер.
6)if(Lot_rounded<Min_lot) Lot_rounded = Min_lot; Здесь мы указали что если наш рисковый лот меньше минимальнодопустимого лота, то рисковый лот будет минимальнодопустимым.
7)double SLbuy=0, SLsell=0,TPbuy=0,TPsell=0; Здесь мы объявили переменные для ТП и СЛ. Они должны стоять со значениями 0.
8)if(SL>0) {SLbuy=Ask-SL*Point; SLsell=Bid+SL*Point;}
Здесь, мы указали что если СЛ больше 0, то(расчёт СЛ).
Квадратные скобки нужны если после if мы используем 2 и больше действия в случае if(истина).
Расчёт СЛ нужен потому что в ордере что мы открываем нужно указывать цену СЛ, а не на сколько пунктов она от цены открытия.
Point это то что переводит наш СЛ в цену.
9)Функция while(!IsTradeAllowed()) Sleep(1000);
while будет выполнять(зацикливание) то что у неё в скобках пока оно не станет ЛОЖЬ. (!IsTradeAllowed()) значит что скрипт не будет дальше выполнятся, пока не будет разрешена торговля(отключение терминала, торговля запрещена и т.д.) IsTradeAllowed значит что разрешена торговля, но у нас стоит знак ! значит не разрешена.
Sleep(1000) это количество милисекунд на выполнение цыкла.
10)if(buy) OrderSend(Symbol(),OP_BUY,Lot_rounded,Ask,Slippage ,SLbuy,TPbuy,"Risk by trade",Magic,0,Blue);
Это уже окрытие ордера. Мы написали условие для его открытия, а именно если мы поставим buy=true(при прикреплении к графику).
OrederSend имеет 11 свойств.
10.1)Валютная пара.
10.2)бай, сел, бай стоп, сел стоп, бай лимит, сел лимит.
10.3)Лот.
10.4)Цена. Ask Bid.
10.5)Проскальзывание(в пунктах).
10.6)СЛ(в цене).
10.7)ТП(в цене).
10.8)Коментарий(будет виден в столбце Коментарии).
10.9)Магик намбер. Индивидуальный номер ордера.
10.10)Время истечения действия отложенного ордера.
10.11)Цвет стрелки на графике при открытии ордера.
11)if(buy) Alert(Symbol()," Buy ",Ask," ",Percent,"% ",Lot_rounded);
Это обычный алерт, но с условием и показан пример как делать растояние между значением переменных.
У вас в коде нету ни где примрненного Percent .
И еще такой вопрос. Как посчитать величину лота , если у меня стоп лос 200 пунктов (5 знаков) и я хочу рицковать только 2 процентамо от свободных средств. Т. е. , если закроеться по стопу, то я потеряю только 2 процента от свободных среств. Как токой подщет должен выглядеть ?

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Гинтарас

Последний раз редактировалось NSerega; 04.11.2013 в 01:19.
gince на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 30.10.2013, 12:13   #403 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9025
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,679
Поблагодарили 9,025 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от gince Посмотреть сообщение
...
И еще такой вопрос. Как посчитать величину лота , если у меня стоп лос 200 пунктов (5 знаков) и я хочу рицковать только 2 процентамо от свободных средств. Т. е. , если закроеться по стопу, то я потеряю только 2 процента от свободных среств. Как токой подщет должен выглядеть ?
Думаю типа так.
1) Узнаём сколько от дэпо(1000) эти 2%. 1000/100*2=20 дол.
2) Узнаём сколько доларов припадает на 1 тик. 20/200=0.1 дол.
3) MarketInfo(Symbol(),MODE_TICKVALUE)/10(у меня в терминале один тик считает 4 знак, хотя 5)*0.1=0.01(если еврдол)

P.S.
_http://mql4you.ru/tag/funkciya-rascheta-lota-mt4

Последний раз редактировалось eevviill; 30.10.2013 в 13:04.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.11.2013, 00:54   #404 (permalink)
Новичок форума
 
Аватар для uran2012
 
Регистрация: 29.12.2012
Сообщений: 65
Репутация: 18
uran2012
Сказал(а) спасибо: 17
Поблагодарили 17 раз(а) в 14 сообщениях
Поинты: 72
Привет Всем! Подскажите как вписать работающий тейк профит !!!! не получается ничего!!!

Скрытый текст

PHP код:
                                                               
//+------------------------------------------------------------------+

extern string T "Параметры торговли";
int ИНН=3333333;
extern double ЛотОткрытия 0.02;     
int Повтор 1;
extern int Лось 100;
extern int Профит 100;
extern int Пип 50;
bool Принт=false;
extern string ММ "Мани менеджмент";
extern bool    ИспользоватьММ  false;
extern double  Риск               10;    
extern double  ИспользоватьПроцентБаланса 100;   
extern double  Потери1000;  
extern double Экспонента =1.7;
double Покупка,Продажа,ПокупкаЛока,ПродажаЛока,открытие,ПрофитЗакрытия,Лосик,Проф,глав,сиг,глав1,сиг1;
string КоментарийКоманда="",тип,ком;
int билет,КоличествоОрдеров,операция,цвет,ордер;
extern string I "Параметры Индюка";
extern int ПериодСигнала 4;
extern int ПериодУсреднения 2;
int Коэффициент1 1;
int Разрешение1 1;
int Разрешение2 1;
int СмещениеМакс 999;
double Матрица1[];
double Матрица2[];
double Матрица3[];
double Матрица4[];
double Матрица5[];
double Матрица6[];
bool ВключитьСигнализацию FALSE;
bool Email FALSE;
bool ПодтверждениеПокупка FALSE;
bool ПодтверждениеПродажа FALSE;
datetime Время;
static 
int Смена=0,Сигнал;




int start() {
   
   
double ИндюкВВ1[25000];
   
double ИндюкВВ2[25000];
   
double МатрицаСигналов2[25000];
   
double МатрицаСигналов1[25000];
   
double Максималка;
   
double Закрывалка;
   for (
int Смещение СмещениеМаксСмещение 0Смещение--) {
      
Матрица1[Смещение] = 0;
      
Матрица2[Смещение] = 0;
      
Матрица3[Смещение] = 0;
      
Матрица4[Смещение] = 0;
      
Матрица5[Смещение] = 0;
      
Матрица6[Смещение] = 0;
   }
   for (
Смещение СмещениеМакс ПериодСигнала 1Смещение 0Смещение--) {
      
ИндюкВВ1[Смещение] = iBands(NULL0ПериодСигналаПериодУсреднения0PRICE_CLOSEMODE_UPPERСмещение);
      
ИндюкВВ2[Смещение] = iBands(NULL0ПериодСигналаПериодУсреднения0PRICE_CLOSEMODE_LOWERСмещение);
      if (
Close[Смещение] > ИндюкВВ1[Смещение 1]) Сигнал 1;
      if (
Close[Смещение] < ИндюкВВ2[Смещение 1]) Сигнал = -1;
      if (
Сигнал && ИндюкВВ2[Смещение] < ИндюкВВ2[Смещение 1]) ИндюкВВ2[Смещение] = ИндюкВВ2[Смещение 1];
      if (
Сигнал && ИндюкВВ1[Смещение] > ИндюкВВ1[Смещение 1]) ИндюкВВ1[Смещение] = ИндюкВВ1[Смещение 1];
      
МатрицаСигналов2[Смещение] = ИндюкВВ1[Смещение] + (Коэффициент1 1) / 2.0 * (ИндюкВВ1[Смещение] - ИндюкВВ2[Смещение]);
      
МатрицаСигналов1[Смещение] = ИндюкВВ2[Смещение] - (Коэффициент1 1) / 2.0 * (ИндюкВВ1[Смещение] - ИндюкВВ2[Смещение]);
      if (
Сигнал && МатрицаСигналов1[Смещение] < МатрицаСигналов1[Смещение 1]) МатрицаСигналов1[Смещение] = МатрицаСигналов1[Смещение 1];
      if (
Сигнал && МатрицаСигналов2[Смещение] > МатрицаСигналов2[Смещение 1]) МатрицаСигналов2[Смещение] = МатрицаСигналов2[Смещение 1];
      if (
Сигнал 0) {
         if (
Разрешение1 && Матрица1[Смещение 1] == -1.0) {
            
Матрица3[Смещение] = МатрицаСигналов1[Смещение];
            
Матрица1[Смещение] = МатрицаСигналов1[Смещение];
            if (
Разрешение2 0Матрица5[Смещение] = МатрицаСигналов1[Смещение];
            if (
ВключитьСигнализацию == TRUE && Смещение == && !ПодтверждениеПокупка) {
               
Максималка Low[1];
               if (
Low[2] < МаксималкаМаксималка Low[2];
               if (
Low[3] < МаксималкаМаксималка Low[3];
               if (
Low[4] < МаксималкаМаксималка Low[4];
               
Максималка -= Лось Point;
               
Закрывалка Close[1];
               
Сигнализация("Покупка"0МаксималкаЗакрывалка);
               
ПодтверждениеПокупка TRUE;
               
ПодтверждениеПродажа FALSE;
            }
         } else {
            
Матрица1[Смещение] = МатрицаСигналов1[Смещение];
            if (
Разрешение2 0Матрица5[Смещение] = МатрицаСигналов1[Смещение];
            
Матрица3[Смещение] = -1;
         }
         if (
Разрешение1 == 2Матрица1[Смещение] = 0;
         
Матрица4[Смещение] = -1;
         
Матрица2[Смещение] = -1.0;
         
Матрица6[Смещение] = 0;
      }
      if (
Сигнал 0) {
         if (
Разрешение1 && Матрица2[Смещение 1] == -1.0) {
            
Матрица4[Смещение] = МатрицаСигналов2[Смещение];
            
Матрица2[Смещение] = МатрицаСигналов2[Смещение];
            if (
Разрешение2 0Матрица6[Смещение] = МатрицаСигналов2[Смещение];
            if (
ВключитьСигнализацию == TRUE && Смещение == && !ПодтверждениеПродажа) {
               
Максималка High[1];
               if (
High[2] > МаксималкаМаксималка High[2];
               if (
High[3] > МаксималкаМаксималка High[3];
               if (
High[4] > МаксималкаМаксималка High[4];
               
Максималка += Лось Point;
               
Закрывалка Close[1];
               
Сигнализация("Продажа"0МаксималкаЗакрывалка);
               
ПодтверждениеПродажа TRUE;
               
ПодтверждениеПокупка FALSE;
            }
         } else {
            
Матрица2[Смещение] = МатрицаСигналов2[Смещение];
            if (
Разрешение2 0Матрица6[Смещение] = МатрицаСигналов2[Смещение];
            
Матрица4[Смещение] = -1;
         }
         if (
Разрешение1 == 2Матрица2[Смещение] = 0;
         
Матрица3[Смещение] = -1;
         
Матрица1[Смещение] = -1.0;
         
Матрица5[Смещение] = 0;
      }
   }
   

 if (
КоличествоОткрытых("+")<1&&Сигнал==1&&Смена!=Сигнал){if (КоличествоОткрытых("-")>0)Закрытие("-");Позиция("+");}
 if (
КоличествоОткрытых("-")<1&&Сигнал==-1&&Смена!=Сигнал){if (КоличествоОткрытых("+")>0)Закрытие("+");Позиция("-");}

 
Смена=Сигнал
   return (
0);
}
//+------------------------------------------------------------------+
int КоличествоОткрытых(string тип)
{  
int количество=0;
   
int i;
   for(
i=OrdersTotal()-1;i>=0;i--)
   {  
OrderSelect(i,SELECT_BY_POS,MODE_TRADES);
      if(
OrderSymbol()!=Symbol()||OrderMagicNumber()!=ИНН) continue;
      if(
OrderSymbol()==Symbol()&&OrderMagicNumber()==ИНН)
      {  if (
тип == "+")
         {if(
OrderType()==OP_BUYколичество++;}
         if (
тип == "-")
         {if(
OrderType()==OP_SELLколичество++;}}}
   return(
количество);}
//+------------------------------------------------------------------+
//+ MM
//+------------------------------------------------------------------+
double ММ()
{
   
double лот;
   
double МинимальныйЛот  MarketInfo(Symbol(), MODE_MINLOT);
   
double МаксимальныйЛот  MarketInfo(Symbol(), MODE_MAXLOT);
   
double ШагЛота MarketInfo(Symbol(), MODE_LOTSTEP);
   
лот  = (ИспользоватьПроцентБаланса 100) * AccountBalance() * (Риск 100) / Потери;
   
лот MathRound(лот ШагЛота)  * ШагЛота;
   if(
лот == 0) Print("Недостаточно ДЕПО для открытия минимального лота");
   else if(
NormalizeDouble(лот-МинимальныйЛот,2) < 0) {Print("Взят минимальный лот"); лот МинимальныйЛот;}
   else if(
NormalizeDouble(лот-МаксимальныйЛот,2) > 0) {Print("Взят максимальный лот"); лот МаксимальныйЛот;}
   return (
лот);
}
//+------------------------------------------------------------------+
//|Размер нового лота                                      
//+------------------------------------------------------------------+
double НовыйЛот(string тип)
{  
double Лот;
   
double МинимальныйЛот MarketInfo(Symbol(), MODE_MINLOT);
   
double МаксимальныйЛот MarketInfo(Symbol(), MODE_MAXLOT);
       if(
тип=="+"&&ПоследнийЗакрОрдер("-","профит")>=0&&!ИспользоватьММ)Лот ЛотОткрытия;else
       if(
тип=="-"&&ПоследнийЗакрОрдер("+","профит")>=0&&!ИспользоватьММ)Лот ЛотОткрытия;else
       
       if(
тип=="+"&&ПоследнийЗакрОрдер("-","профит")>=0&&ИспользоватьММ)Лот ММ();else
       if(
тип=="-"&&ПоследнийЗакрОрдер("+","профит")>=0&&ИспользоватьММ)Лот ММ();else
       
       if(
тип=="+"&&ПоследнийЗакрОрдер("-","профит")<0)OrderSelect(ПоследнийЗакрытый("-"),SELECT_BY_TICKET);else
       if(
тип=="-"&&ПоследнийЗакрОрдер("+","профит")<0)OrderSelect(ПоследнийЗакрытый("+"),SELECT_BY_TICKET);
        
Лот=NormalizeDouble(OrderLots()*Экспонента,2);
   if(
Лот МинимальныйЛотЛот МинимальныйЛот
   if(
Лот МаксимальныйЛотЛот МаксимальныйЛот
   return(
Лот);}

//+------------------------------------------------------------------+
//Возвращает цену или лот последнего ордера
//+------------------------------------------------------------------+
int ПоследнийЗакрытый(string тип)
{
int t;
  if (
тип=="+")t=OP_BUY;
  if (
тип=="-")t=OP_SELL;
   
int iномер=0;
   for(
i=OrdersHistoryTotal()-1;i>=0;i--)
   {  
OrderSelect(iSELECT_BY_POSMODE_HISTORY);
      if(
OrderSymbol()!=Symbol()||OrderMagicNumber()!=ИНН&&OrderType()!=t) continue;
      if(
OrderSymbol()==Symbol()&&OrderMagicNumber()==ИНН&&OrderType()==t&&OrderCloseTime()>0)
         if(
OrderTicket()>номерномер=OrderTicket();}
return(
номер);}
   
//+------------------------------------------------------------------+
//| открытие                               
//+------------------------------------------------------------------+
void Позиция(string инд)
{   
double p,l;
  if (
инд=="+"){операция=OP_BUYоткрытие=Ask;Покупка НовыйЛот(инд);цвет=Blue;тип="Бай";}
  if (
инд=="-"){операция=OP_SELLоткрытие=Bid;Покупка НовыйЛот(инд);цвет=Red;тип="Селл";}
    {
RefreshRates();
    
билет=0;
      while(
билет<1)
         { if(
Принт) Print("Покупка "+тип+". Новый. Параметры. символ="+Symbol()+", лот="+DoubleToStr(Покупка,2)+", цена="+DoubleToStr(открытие,4)+" Профит="+DoubleToStr(p,4)+" Лось="+DoubleToStr(Лосик,4)+" маджик="+ИНН);
            
билет OrderSend(Symbol(),операция,Покупка,открытие,3,0,0,0,ИНН,0,цвет);
            if(
билет<1) {if(Принт)Print("Ошибка: ",GetLastError()," Новая попытка покупки через "+(Повтор*60)+" секунд");Sleep(Повтор*60*1000);}}}
}
//+------------------------------------------------------------------+
//| Закрытие                                       
//+------------------------------------------------------------------+
void Закрытие(string тип)
  { 
int Тип;double цена;
          
int Проскальзывание=3;
          if (
тип=="-"){Тип=OP_SELL;цена=Ask;}
          if (
тип=="+"){Тип=OP_BUY;цена=Bid;}
          for (
int i=OrdersTotal()-1i>=0i--)
            {
OrderSelect(iSELECT_BY_POSMODE_TRADES);
            if (!
OrderSelect(i,SELECT_BY_POS,MODE_TRADES)&&OrderType()!=Тип) break;
            if (
OrderSymbol()==Symbol()&&OrderMagicNumber()==ИНН&&OrderType()==Тип)OrderClose(OrderTicket(),OrderLots(),цена,Проскальзывание,CLR_NONE);
            }}     

//+------------------------------------------------------------------+
//Сигнализатор
//+------------------------------------------------------------------+

void Сигнализация(string ТекстДействияdouble ЦенаПрофитаdouble ЦенаЛосяdouble ЦенаОткрытия) {
   
string НадписьЛось;
   
string НадписьПрофит;
   
string Надпись1;
   
string Заголовок;
   
string ТекстПисьма;
   if (
Time[0] != Время) {
      
Время Time[0];
      if (
ЦенаОткрытия != 0.0Надпись1 " at price " DoubleToStr(ЦенаОткрытия4);
      else 
Надпись1 "";
      if (
ЦенаПрофита != 300НадписьПрофит ", TakeProfit on " DoubleToStr(ЦенаПрофита4);
      else 
НадписьПрофит "";
      if (
ЦенаЛося != 0.0НадписьЛось ", StopLoss on " DoubleToStr(ЦенаЛося4);
      else 
НадписьЛось "";
      
Alert("Дятел рекомендует " ТекстДействия Надпись1 НадписьПрофит НадписьЛось " "Symbol(), ", "Period(), " минутный график");
      
Заголовок "Дятел рекомендует - " ТекстДействия Надпись1;
      
ТекстПисьма "Дятел рекомендует " ТекстДействия Надпись1 НадписьПрофит НадписьЛось " " Symbol() + ", " Period() + " минутный график";
      if (
EmailSendMail(ЗаголовокТекстПисьма);
   }
}   
//+------------------------------------------------------------------+
//Возвращает цену или лот последнего ордера
//+------------------------------------------------------------------+
double ПоследнийЗакрОрдер(string тип,string инф)
{  
double профит;
   
int iномер=0;
      
OrderSelect(ПоследнийЗакрытый(тип), SELECT_BY_TICKET);
                     
профит=OrderProfit();
 if(
инф=="профит")  return(профит);

[свернуть]

Последний раз редактировалось NSerega; 04.11.2013 в 01:18.
uran2012 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.11.2013, 01:32   #405 (permalink)
 
Аватар для Platoon
 
Регистрация: 08.02.2009
Адрес: Ростов-на-Дону
Сообщений: 540
Репутация: 4052
Platoon Platoon Platoon Platoon Platoon Platoon Platoon Platoon Platoon Platoon Platoon
Сказал(а) спасибо: 85
Поблагодарили 4,048 раз(а) в 508 сообщениях
Поинты: 720
Сообщение от uran2012 Посмотреть сообщение
Привет Всем! Подскажите как вписать работающий тейк профит !!!! не получается ничего!!!
тейк профит (и стоп-лосс) указывается в функции OrderSend()
Если ваш ДЦ не позволяет сразу выставить тейк профит (и стоп-лосс) открываемого ордера, то нужно открыть ордер с нулевым ТП ( и нулевым СЛ), а затем немедленно его модифицировать, указав нужный ТП (и/или СЛ).
Пример (кусочек скрипта):

Скрытый текст

PHP код:
...
   while(
nn<3)     {
     
ticket=OrderSend(Symbol(),OP_BUYSTOP,Lot,fractal,Slippage,0,0,NULL,MAGIC,0,CLR_NONE);
     if(
ticket<=0)   {   int error=GetLastError();   Print("Error = "error,"    ",ErrorDescription(error));  break;   }
     if(
ticket>0)  {
       
nn=4;
       if(
OrderSelect(ticketSELECT_BY_TICKET))  {
         
modify=OrderModify(ticketOrderOpenPrice(), 0OrderOpenPrice()+Профит*Point,0,CLR_NONE);
         if(!
modify)  {  error=GetLastError();   Print("Modify Error = "error,"    ",ErrorDescription(error));  break;   }
       }
     }
... 
[свернуть]

_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
Надо только выучиться ждать,
Надо быть спокойным и упрямым...
---------------------------------------------------------------------------
Слушай всех, прислушивайся к немногим, решай сам. (Чанг Инг Ю)
---------------------------------------------------------------------------

Последний раз редактировалось NSerega; 04.11.2013 в 13:08.
Platoon на форуме   Ответить с цитированиемОтветить с цитированием  
Старый 04.11.2013, 11:17   #406 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9025
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,679
Поблагодарили 9,025 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от uran2012 Посмотреть сообщение
Привет Всем! Подскажите как вписать работающий тейк профит !!!! не получается ничего!!!
http://forexsystemsru.com/indikatory...tml#post596494
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
uran2012 (04.11.2013)
Старый 04.11.2013, 13:24   #407 (permalink)
Новичок форума
 
Аватар для uran2012
 
Регистрация: 29.12.2012
Сообщений: 65
Репутация: 18
uran2012
Сказал(а) спасибо: 17
Поблагодарили 17 раз(а) в 14 сообщениях
Поинты: 72
Возник новый вопрос: КАК заставить открывать ордер только один раз!!?
Пример:
Линия пересекает уровень 0, и открывается сделка. Сделка закрывается по тейкпрофиту , либо по стоплосс.

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

PHP код:
int start()
  {
  
double tp,sl;
  if (
Digits==2||Digits==4){tp=TekeProfit*Pointsl=StopLoss*Point;}
  if (
Digits==3||Digits==5){tp=TekeProfit*10*Point;sl=StopLoss*10*Point;}
  
double Line=iCustom(Symbol(),0,"NameIndicator",period,1,1);
//----
    
if (OrdersTotal()==0&&Volume[0]==1)
    {
    if (
Line>LevelOrderSend(Symbol(),OP_BUY,Lot,Ask,100,Ask-sl,Ask+tp,NULL,Magic,0,CLR_NONE);
    }
//----
   
return(0);
  } 
Ps. Начинающий сильно не пинать)

Последний раз редактировалось uran2012; 04.11.2013 в 13:41. Причина: исправление
uran2012 вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Viko2000 (17.05.2015)
Старый 04.11.2013, 13:50   #408 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9025
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,679
Поблагодарили 9,025 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от uran2012 Посмотреть сообщение
Возник новый вопрос: КАК заставить открывать ордер только один раз!!?
Пример:
Линия пересекает уровень 0, и открывается сделка. Сделка закрывается по тейкпрофиту , либо по стоплосс.

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

PHP код:
int start()
  {
  
double tp,sl;
  if (
Digits==2||Digits==4){tp=TekeProfit*Pointsl=StopLoss*Point;}
  if (
Digits==3||Digits==5){tp=TekeProfit*10*Point;sl=StopLoss*10*Point;}
  
double Line=iCustom(Symbol(),0,"NameIndicator",period,1,1);
//----
    
if (OrdersTotal()==0&&Volume[0]==1)
    {
    if (
Line>LevelOrderSend(Symbol(),OP_BUY,Lot,Ask,100,Ask-sl,Ask+tp,NULL,Magic,0,CLR_NONE);
    }
//----
   
return(0);
  } 
Ps. Начинающий сильно не пинать)
Там же есть функция подсчета ордеров.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Dobryj (05.11.2013), Viko2000 (17.05.2015)
Старый 04.11.2013, 14:05   #409 (permalink)
Новичок форума
 
Аватар для uran2012
 
Регистрация: 29.12.2012
Сообщений: 65
Репутация: 18
uran2012
Сказал(а) спасибо: 17
Поблагодарили 17 раз(а) в 14 сообщениях
Поинты: 72
Сообщение от eevviill Посмотреть сообщение
Там же есть функция подсчета ордеров.
возможно не работает, либо из за того что индикатор рисует линию при появлении нового бара??
как написать код для закрытия при противоположном сигнале??
uran2012 вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 04.11.2013, 20:34   #410 (permalink)
Активный участник
 
Аватар для Evgen1y
 
Регистрация: 14.06.2013
Сообщений: 74
Репутация: 35
Evgen1y
Сказал(а) спасибо: 32
Поблагодарили 34 раз(а) в 23 сообщениях
Поинты: 70
Сообщение от Walt6730 Посмотреть сообщение
Присоединяюсь к запросу. Джентльмены программеры, не поможете особо одаренным?
Решил проблему используя этот индюк:
Вложения:
Тип файла: mq4 RenkoLiveChart_v2.1.mq4 (9.5 Кб, 14 просмотров)
Evgen1y вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
eevviill (04.11.2013)
Старый 05.11.2013, 20:53   #411 (permalink)
Почётный гражданин
 
Аватар для Dobryj
 
Регистрация: 07.06.2012
Сообщений: 222
Репутация: 325
Dobryj Dobryj Dobryj Dobryj
Сказал(а) спасибо: 384
Поблагодарили 293 раз(а) в 127 сообщениях
Поинты: 100
Добрый Вечер всем !
помогите разрешить проблему ,пишу скрипт идея такая при установке на график рисуются 2 объекта трендова и вертикальная линия , при растяжении трендовой линии
вертикальная тоже движется по формуле !
есть понимание что при изминении длины трендовой должна быть проверка данных для вертикальной линии если есть изменения ее нужно удалить и нарисовать новую по новым значениям , только вот не получается ...
Помогите мне =)
вот код...

Скрытый текст

//+------------------------------------------------------------------+
//| 11111111111111111111111111111.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| _http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
// INPUT parameters
int t0,tp,i0,ip;
double V,kt,per;
double pr0,prp,Hight,low;
datetime xxx;
//------------------------------------
int init()
{
per=Period();
kt=60/per;
t0=TimeOnDropped();

i0=iBarShift(Symbol(),Period(),t0); // считываем
pr0=Close[i0];
ip=i0+40;
tp=Time[ip];
prp=Close[ip];


ObjectCreate("LineV",2,0,tp,prp,t0,pr0); //Рисуем трендовую линию
ObjectSet ("LineV",OBJPROP_COLOR,Blue);
ObjectSet ("LineV", OBJPROP_RAY,False);


ObjectCreate( "LineW",OBJ_VLINE,0,xxx,0); //Рисуем Вертикальную линию
ObjectSetText("LineW","text", 20, "Arial",Blue );
ObjectSet("LineW",OBJPROP_COLOR,Blue);
ObjectSet("LineW",OBJPROP_STYLE,STYLE_DASH);


return(0);
}

//---------------------------------------------------------


int start()
{

while(IsStopped()==false)
{
tp=ObjectGet("LineV",OBJPROP_TIME1);
t0=ObjectGet("LineV",OBJPROP_TIME2);



ip=iBarShift(Symbol(),Period(),tp);
i0=iBarShift(Symbol(),Period(),t0);

if (t0>Time[0]) i0=(Time[0]-t0)/60/per;


xxx=((ip-i0)*86400)+ t0;

Comment(xxx);
}





return(0);
}
//+------------------------------------------------------------------+
[свернуть]

Последний раз редактировалось NSerega; 06.11.2013 в 01:41.
Dobryj вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 06.11.2013, 09:21   #412 (permalink)
Активный участник
 
Аватар для _SERG_
 
Регистрация: 21.07.2009
Сообщений: 259
Репутация: 81
_SERG_
Сказал(а) спасибо: 11
Поблагодарили 81 раз(а) в 67 сообщениях
Поинты: 300
Я так понимаю, что для того, чтобы выполнить второе условие, о перерисовке вертикальной линии, в скрипте должны быть данные о первой линии, которые можно будет сравнить с новыми её параметрами (после изменения), для того чтобы принять решение о перерисовке второй линии. (Про время не забудь.)
В общем, надо бы переменных добавить. Дальше по тексту.
Ну и то что в Init() :

ObjectCreate("LineV",2,0,tp,prp,t0,pr0); //Рисуем трендовую линию
ObjectSet ("LineV",OBJPROP_COLOR,Blue);
ObjectSet ("LineV", OBJPROP_RAY,False);


ObjectCreate( "LineW",OBJ_VLINE,0,xxx,0); //Рисуем Вертикальную линию
ObjectSetText("LineW","text", 20, "Arial",Blue );
ObjectSet("LineW",OBJPROP_COLOR,Blue);
ObjectSet("LineW",OBJPROP_STYLE,STYLE_DASH);

Перенести в Start(), а то как отрисовываться будет?

Последний раз редактировалось _SERG_; 06.11.2013 в 09:24.
_SERG_ на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Dobryj (06.11.2013), eevviill (06.11.2013)
Старый 06.11.2013, 11:18   #413 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,546
Репутация: 3663
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,129
Поблагодарили 3,667 раз(а) в 1,482 сообщениях
Поинты: 2028
Сообщение от Dobryj Посмотреть сообщение
Добрый Вечер всем !
помогите разрешить проблему ,пишу скрипт идея такая при установке на график рисуются 2 объекта трендова и вертикальная линия , при растяжении трендовой линии
вертикальная тоже движется по формуле !
есть понимание что при изминении длины трендовой должна быть проверка данных для вертикальной линии если есть изменения ее нужно удалить и нарисовать новую по новым значениям , только вот не получается ...
Помогите мне =)
вот код...

Скрытый текст

//+------------------------------------------------------------------+
//| 11111111111111111111111111111.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| _http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"

//+------------------------------------------------------------------+
//| script program start function |
//+------------------------------------------------------------------+
// INPUT parameters
int t0,tp,i0,ip;
double V,kt,per;
double pr0,prp,Hight,low;
datetime xxx;
//------------------------------------
int init()
{
per=Period();
kt=60/per;
t0=TimeOnDropped();

i0=iBarShift(Symbol(),Period(),t0); // считываем
pr0=Close[i0];
ip=i0+40;
tp=Time[ip];
prp=Close[ip];


ObjectCreate("LineV",2,0,tp,prp,t0,pr0); //Рисуем трендовую линию
ObjectSet ("LineV",OBJPROP_COLOR,Blue);
ObjectSet ("LineV", OBJPROP_RAY,False);


ObjectCreate( "LineW",OBJ_VLINE,0,xxx,0); //Рисуем Вертикальную линию
ObjectSetText("LineW","text", 20, "Arial",Blue );
ObjectSet("LineW",OBJPROP_COLOR,Blue);
ObjectSet("LineW",OBJPROP_STYLE,STYLE_DASH);


return(0);
}

//---------------------------------------------------------


int start()
{

while(IsStopped()==false)
{
tp=ObjectGet("LineV",OBJPROP_TIME1);
t0=ObjectGet("LineV",OBJPROP_TIME2);



ip=iBarShift(Symbol(),Period(),tp);
i0=iBarShift(Symbol(),Period(),t0);

if (t0>Time[0]) i0=(Time[0]-t0)/60/per;


xxx=((ip-i0)*86400)+ t0;

Comment(xxx);
}





return(0);
}
//+------------------------------------------------------------------+
[свернуть]
Ничего удалять не надо. Надо просто используя ObjectSet() назначить новые параметры.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Dobryj (06.11.2013), eevviill (06.11.2013)
Старый 06.11.2013, 18:33   #414 (permalink)
Почётный гражданин
 
Аватар для Dobryj
 
Регистрация: 07.06.2012
Сообщений: 222
Репутация: 325
Dobryj Dobryj Dobryj Dobryj
Сказал(а) спасибо: 384
Поблагодарили 293 раз(а) в 127 сообщениях
Поинты: 100
Сообщение от AlexeyVik Посмотреть сообщение
Ничего удалять не надо. Надо просто используя ObjectSet() назначить новые параметры.
Спасибо помогло !
появилась новая проблемка

Скрытый текст

int a=50;
//t0-это координата трендовой линии от которой нужно отложить (a)


time=t0+a*86400;


ObjectCreate( "LineW",OBJ_VLINE,0,time,0);
ObjectSetText("LineW","text", 20, "Arial",Blue );
ObjectSet("LineW",OBJPROP_COLOR,Blue);
ObjectSet("LineW",OBJPROP_STYLE,STYLE_DASH);
ObjectSet("LineW",OBJPROP_TIME1,time);
[свернуть]

Вертикальная линия движется но отмеряет не 50 баров а с погрешностью всегда 4-8 баров , с чем это связано ?и как исправить ?
Dobryj вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 06.11.2013, 18:52   #415 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9025
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,679
Поблагодарили 9,025 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от Dobryj Посмотреть сообщение
Спасибо помогло !
появилась новая проблемка

Скрытый текст

int a=50;
//t0-это координата трендовой линии от которой нужно отложить (a)


time=t0+a*86400;


ObjectCreate( "LineW",OBJ_VLINE,0,time,0);
ObjectSetText("LineW","text", 20, "Arial",Blue );
ObjectSet("LineW",OBJPROP_COLOR,Blue);
ObjectSet("LineW",OBJPROP_STYLE,STYLE_DASH);
ObjectSet("LineW",OBJPROP_TIME1,time);
[свернуть]

Вертикальная линия движется но отмеряет не 50 баров а с погрешностью всегда 4-8 баров , с чем это связано ?и как исправить ?
Проблему сходу не решу(да и ветка не та), но
1) Узнать сколько занимает один бар
PHP код:
int one_bar_time=Time[1]-Time[2]; 
2) Создавать объект надо полсе проверки есть ли он уже.
PHP код:
if(ObjectFind("LineW")==-1)
ObjectCreate"LineW",OBJ_VLINE,0,time,0); 
3) Если дальше идёт установка координат, то объект можно(нужно?) создавать с нулевыми параметрами.
PHP код:
ObjectCreate"LineW",OBJ_VLINE,0,0,0); 
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Dobryj (06.11.2013)
Старый 06.11.2013, 20:35   #416 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,546
Репутация: 3663
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,129
Поблагодарили 3,667 раз(а) в 1,482 сообщениях
Поинты: 2028
Сообщение от Dobryj Посмотреть сообщение
Спасибо помогло !
появилась новая проблемка

Скрытый текст

int a=50;
//t0-это координата трендовой линии от которой нужно отложить (a)


//time=t0+a*86400; Это должно быть так
time = Time[t0+50]; // Или Time[t0+a];

ObjectCreate( "LineW",OBJ_VLINE,0,time,0);
ObjectSetText("LineW","text", 20, "Arial",Blue );
ObjectSet("LineW",OBJPROP_COLOR,Blue);
ObjectSet("LineW",OBJPROP_STYLE,STYLE_DASH);
ObjectSet("LineW",OBJPROP_TIME1,time);
[свернуть]

Вертикальная линия движется но отмеряет не 50 баров а с погрешностью всегда 4-8 баров , с чем это связано ?и как исправить ?
Подсказка в коде. Если не попал, значит пробуй не 50, а 49
Или-же если считаешь по ТФ не соответствующему открытому графику, то надо использовать iBarShift()
И перед созданием объекта поставь проверку на его наличие как подсказал Василий. Не обязательно, но так будет грамотней. А создавать объект с нулевыми параметрами не обязательно, но не критично, если дальше в коде есть ObjectSet() с нужными параметрами.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Dobryj (07.11.2013), eevviill (06.11.2013)
Старый 07.11.2013, 13:48   #417 (permalink)
Почётный гражданин
 
Аватар для Dobryj
 
Регистрация: 07.06.2012
Сообщений: 222
Репутация: 325
Dobryj Dobryj Dobryj Dobryj
Сказал(а) спасибо: 384
Поблагодарили 293 раз(а) в 127 сообщениях
Поинты: 100
Сообщение от eevviill Посмотреть сообщение
Проблему сходу не решу(да и ветка не та), но
1) Узнать сколько занимает один бар
PHP код:
int one_bar_time=Time[1]-Time[2]; 
2) Создавать объект надо полсе проверки есть ли он уже.
PHP код:
if(ObjectFind("LineW")==-1)
ObjectCreate"LineW",OBJ_VLINE,0,time,0); 
3) Если дальше идёт установка координат, то объект можно(нужно?) создавать с нулевыми параметрами.
PHP код:
ObjectCreate"LineW",OBJ_VLINE,0,0,0); 
Сделал как сказали но проблема не ушла
всегда есть погрешность 1-2 бара !скрипт тестирую на дневном тайме
я уже думаю что это как то выходные всю картинку портят ...
может есть еще мысли как данный баг исправить
вот код

Скрытый текст

//+------------------------------------------------------------------+
//| Time_Go! .mq4 |
//| |
//| Dobryjj |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""




/*=====INPUT parameters=====*/
extern int A=50; //откладываемое расстояние
double pr0,prp,Hight,low;
double V,kt,per;
int i0,ip;
datetime tp,t0,time;


/*==========================*/

int init()
{

per=Period();
kt=60/per;
t0=WindowTimeOnDropped();

i0=iBarShift(Symbol(),Period(),t0); // считываем
pr0=Close[i0];
ip=i0+40;
tp=Time[ip];
prp=Close[ip];

if(ObjectFind("LineV")==-1)
{
ObjectCreate("LineV",2,0,tp,prp,t0,pr0); //Рисуем трендовую линию
ObjectSet ("LineV",OBJPROP_COLOR,Blue);
ObjectSet ("LineV", OBJPROP_RAY,False);
}

if(ObjectFind("LineW")==-1)
{
ObjectCreate( "LineW",OBJ_VLINE,0,0,0); //Рисуем Вертикальную линию
ObjectSetText("LineW","text", 20, "Arial",Blue );
ObjectSet("LineW",OBJPROP_COLOR,Blue);
ObjectSet("LineW",OBJPROP_STYLE,STYLE_DASH);
}

return(0);
}


/*==========================================================*/


int start()
{

Comment(A);

while(IsStopped()==false)
{

tp=ObjectGet("LineV",OBJPROP_TIME1);
t0=ObjectGet("LineV",OBJPROP_TIME2);
prp=ObjectGet("LineV",OBJPROP_PRICE1);
pr0=ObjectGet("LineV",OBJPROP_PRICE2);
ip=iBarShift(Symbol(),Period(),tp);
i0=iBarShift(Symbol(),Period(),t0);

if (t0>Time[0]) i0=(Time[0]-t0)/60/per;

/*------------------------------------------*/
time=t0+(A*86400);
ObjectSet("LineW",OBJPROP_TIME1,time);
/*------------------------------------------*/

}
return(0);
}
/*==========================================================*/

int deinit()
{
ObjectDelete("LineV");
ObjectDelete("LineW");
}
[свернуть]
Вложения:
Тип файла: mq4 Time_Go! .mq4 (2.2 Кб, 10 просмотров)
Dobryj вне форума   Ответить с цитированиемОтветить с цитированием  
Старый 07.11.2013, 14:07   #418 (permalink)
Заблокирован
За второе место в конкурсе 

 
Аватар для eevviill
 
Регистрация: 30.07.2009
Сообщений: 5,474
Репутация: 9025
eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill eevviill
Сказал(а) спасибо: 13,679
Поблагодарили 9,025 раз(а) в 3,179 сообщениях
Поинты: 1105
Отправить сообщение для eevviill с помощью Skype™
Сообщение от Dobryj Посмотреть сообщение
Сделал как сказали но проблема не ушла
всегда есть погрешность 1-2 бара !скрипт тестирую на дневном тайме
я уже думаю что это как то выходные всю картинку портят ...
может есть еще мысли как данный баг исправить
вот код
...
Ты лучше фото сделай что ты хочешь.
eevviill вне форума   Ответить с цитированиемОтветить с цитированием  
Пользователь сказал cпасибо:
Dobryj (07.11.2013)
Старый 07.11.2013, 14:18   #419 (permalink)
Почётный гражданин
 
Аватар для qqmber
 
Регистрация: 20.01.2013
Сообщений: 530
Репутация: 386
qqmber - qqmber - qqmber - qqmber -
Сказал(а) спасибо: 57
Поблагодарили 386 раз(а) в 254 сообщениях
Поинты: 439
Сообщение от Dobryj Посмотреть сообщение
Сделал как сказали но проблема не ушла
всегда есть погрешность 1-2 бара !скрипт тестирую на дневном тайме
я уже думаю что это как то выходные всю картинку портят ...
может есть еще мысли как данный баг исправить
Правильно думаешь. Ты хочешь смещение на 50 баров, а вычисляешь смещение на 50 суток. Бар не каждые сутки бывает.
Рисуй палку на Time[i0-A], будет как надо.
qqmber вне форума   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Dobryj (07.11.2013), eevviill (07.11.2013)
Старый 07.11.2013, 14:26   #420 (permalink)
Программист mql4 mql5
 
Аватар для AlexeyVik
 
Регистрация: 19.11.2009
Сообщений: 2,546
Репутация: 3663
AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik AlexeyVik
Сказал(а) спасибо: 1,129
Поблагодарили 3,667 раз(а) в 1,482 сообщениях
Поинты: 2028
Сообщение от qqmber Посмотреть сообщение
Правильно думаешь. Ты хочешь смещение на 50 баров, а вычисляешь смещение на 50 суток. Бар не каждые сутки бывает.
Рисуй палку на Time[i0-A], будет как надо.
Так я ему об этом и говорил чуть выше.
Только зря наверное оставил это в его тексте под спойлером, как было у него. Может не видел.
AlexeyVik на форуме   Ответить с цитированиемОтветить с цитированием  
2 пользователя(ей) сказали cпасибо:
Dobryj (07.11.2013), eevviill (07.11.2013)
Ответ


Опции темы

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 20:19. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO