0
Ясненько… Спасибо!
avatar

Kudryashov

  • 14 ноября 2017, 11:19
0
Спасибочки!*drinks*  но это советник на mql4 а там я знаю как сделать отправку… а вот сейчас с 5 версией разбираюсь… и не получается пока что никак
avatar

Kudryashov

  • 3 ноября 2017, 11:53
0
То есть отрисовка идет вместе с первой свечей!?
«И так сойдет!»
Спасибо!
avatar

Kudryashov

  • 14 октября 2017, 09:40
0
Спасибо!
На вид все просто оказалось… а я мудрил *wizard* 
Буду разбираться
avatar

Kudryashov

  • 16 сентября 2017, 21:30
+1
Для автоматизации рутины. Я повышаю объем лота каждые 10-15 дней при условии что за это время есть прибыль.
Думаю такое не только я буду использовать.
Не спорю что также получиться, но расчет от баланса это более агрессивный метод.
avatar

Kudryashov

  • 23 февраля 2017, 23:26
0
Думаю лучше будет в виде количества дней: если пользователь поставит значение 1 то лот будет считаться каждай день, если 7 то каждую неделю, и т.д.
avatar

Kudryashov

  • 23 февраля 2017, 23:18
0
Хорошо. Спасибо!
Постараюсь в следующий раз быть внимательнее
avatar

Kudryashov

  • 23 февраля 2017, 12:49
0
Да… прошу прощения… просто дописал думал просто вставиться в одну, а вуышло 2 записи*wall* 
avatar

Kudryashov

  • 23 февраля 2017, 12:03
0
а возможно ли сделать чтобы из МТ было можно совершать действия на странице… к примеру на веб версии бинарных опционов?
avatar

Kudryashov

  • 26 января 2017, 23:35
0
Спасибо!
Ларчик оказывается просто открывался *good* 
avatar

Kudryashov

  • 7 декабря 2016, 18:45
0
Добрейшего времени суток!
Тут функцию открытия ордеров надыбал…
На сколько она правильная *tipatogo* 
В советник вставил разницы невижу
//+------------------------------------------------------------------+
//|   Функция открытия ордера                                        |
//|------------------------------------------------------------------|
//|   Параметры запроса:                                             |
//|   OpenOrder("BUY")  - Открытие ордера на покупку (BUY)           |
//|   OpenOrder("SELL") - Открытие ордера на продажу (SELL)          |
//+------------------------------------------------------------------+
void OpenOrder(string type)
{
double StopLoss = 0;
double TakeProfit = 0;
//--- Инициализация переменых ----------------------------------------
int               ticket      = 0;
string            symbol      /* Cимвол */                  = Symbol();
ENUM_ORDER_TYPE   cmd        
/* Торговая операция */       = ORDER_TYPE_BUY;
double            volume      /* Количество лотов */        = LotsOptimized();
double            price       /* Цена */                    = 0.0;
int               slippage    /* Проскальзывание */         = 3;
double            stoploss    /* stop loss */               = 0;
double            takeprofit  /* take profit */             = 0;
string            comment     /* Комментарий */             = NULL;
int               magic       /* Идентификатор */           = MAGICMA;
datetime          expiration  
/* Cрок истечения ордера */   = 0;
color             arrow_color
/* Цвет */                    = clrNONE;
//--- Получим информацию по символу ----------------------------------
double bid     = MarketInfo(symbol,MODE_BID);    // Запрос значения Bid
double ask     = MarketInfo(symbol,MODE_ASK);    // Запрос значения Ask
double point   = MarketInfo(symbol,MODE_POINT);  // Запрос Point
double digits  = MarketInfo(symbol,MODE_DIGITS);  // Запрос Digits
//--------------------------------------------------------------------
//--- Подставим значения под соответствующий тип ордера --------------
if (type == "BUY")
   
{
   cmd
= ORDER_TYPE_BUY;
   price
= NormalizeDouble(Ask,digits);
   
if (StopLoss > 0) stoploss = NormalizeDouble(Bid - StopLoss * point,digits);
   
if (TakeProfit > 0) takeprofit = NormalizeDouble(Ask + TakeProfit * point,digits);
   arrow_color
= Green;
   
}
if (type == "SELL")
   
{
   cmd
= ORDER_TYPE_SELL;
   price
= NormalizeDouble(Bid,digits);
   
if (StopLoss > 0) stoploss = NormalizeDouble(Ask + StopLoss * point,digits);
   
if (TakeProfit > 0) takeprofit = NormalizeDouble(Bid - TakeProfit * point,digits);
   arrow_color
= Red;
   
}
//--- Проверим достаточно ли средств для открытия ордера -------------
double free_margin=AccountFreeMarginCheck(symbol,cmd,volume);
if(free_margin<0) //Если на счету не хватает средств
   
{
   
string oper=(cmd==OP_BUY)? "Buy":"Sell";
   
Print("Not enough money for ", oper," ",volume, " ", symbol, " Error code=",GetLastError());
   
return;
   
}
//--------------------------------------------------------------------
//--------------------------------------------------------------------
if(free_margin>0)
   
{ticket = OrderSend(symbol,cmd,volume,price,slippage,stoploss,takeprofit,comment,magic,expiration,arrow_color);}
//--------------------------------------------------------------------
}
//+------------------------------------------------------------------+
avatar

Kudryashov

  • 15 октября 2016, 18:43
0
Ошибка OrderSend error 131 все равно выскакивает при оптимизации ( 
Нашел на MQL4 вот такую функцию:
//+------------------------------------------------------------------+
//|  Проверяет объем ордера на корректность                          |
//+------------------------------------------------------------------+
bool CheckVolumeValue(double volume,string &description)
 
{
//--- минимально допустимый объем для торговых операций
   
double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);
   
if(volume<min_volume)
     
{
      description
=StringFormat("Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f",min_volume);
     
return(false);
     
}

//--- максимально допустимый объем для торговых операций
   
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);
   
if(volume>max_volume)
     
{
      description
=StringFormat("Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f",max_volume);
     
return(false);
     
}

//--- получим минимальную градацию объема
   
double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP);

   
int ratio=(int)MathRound(volume/volume_step);
   
if(MathAbs(ratio*volume_step-volume)>0.0000001)
     
{
      description
=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
                               volume_step
,ratio*volume_step);
     
return(false);
     
}
   description
="Корректное значение объема";
   
return(true);
 
}

Вставил ее перед OrderSend в следующем виде:
if (CheckVolumeValue(iLots)==TRUE) ticket = OrderSend...

но при компиляции выскакивает ошибка: 'CheckVolumeValue' — wrong parameters count
Однако изменив функцию на:
bool CheckVolumeValue(double volume)
{
string description;
double min_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MIN);   //Минимально допустимый объем для торговых операций
if(volume<min_volume)
   
{
   description
=StringFormat("Объем меньше минимально допустимого SYMBOL_VOLUME_MIN=%.2f",min_volume);
   
return(FALSE);
   
}
double max_volume=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_MAX);   //Максимально допустимый объем для торговых операций
if(volume>max_volume)
   
{
   description
=StringFormat("Объем больше максимально допустимого SYMBOL_VOLUME_MAX=%.2f",max_volume);
   
return(FALSE);
   
}
double volume_step=SymbolInfoDouble(Symbol(),SYMBOL_VOLUME_STEP); //Получим минимальную градацию объема
int ratio=(int)MathRound(volume/volume_step);
if(MathAbs(ratio*volume_step-volume)>0.0000001)
   
{
   description
=StringFormat("Объем не является кратным минимальной градации SYMBOL_VOLUME_STEP=%.2f, ближайший корректный объем %.2f",
                               volume_step
,ratio*volume_step);
   
return(FALSE);
   
}
description
="Корректное значение объема";
return(TRUE);
}

компиляция прошла успешно.
В связи с вышеперечисленым шаманством… вопрос:
1. Что не так сделал в первый раз когда функция выглядела так
bool CheckVolumeValue(double volume,string &description)
?
2.Насколько критичны внесенные мной изменения?
avatar

Kudryashov

  • 13 октября 2016, 20:20
0
Ясненько… А чтобы в разных направлениях считал надо разделить if (OrderType() == OP_BUY || OrderType() == OP_SELL) на 2 отдельных ЕСЛИ и дописать их сложения?*pardon* 
avatar

Kudryashov

  • 13 октября 2016, 19:16
0
Я не математик *rabota* 
Кто нибудь может обьяснить что тогда считает этот алгоритм?*help* 

gd_240 = 0;
double ld_56 = 0;
for (index = OrdersTotal() - 1; index >= 0; index--)
   
{
   
OrderSelect(index, SELECT_BY_POS, MODE_TRADES);
   
if (OrderSymbol() != Symbol() || OrderMagicNumber() != MagicNumber) continue;
   
if (OrderSymbol() == Symbol() && OrderMagicNumber() == MagicNumber)
     
{
     
if (OrderType() == OP_BUY || OrderType() == OP_SELL)
         
{
         gd_240
+= OrderOpenPrice() * OrderLots();
         ld_56
+= OrderLots();
         
}
     
}
   
}
gd_240
= NormalizeDouble(gd_240 / ld_56, Digits);


Мне говорили что высчитывает среднию цену*tipatogo* 
avatar

Kudryashov

  • 13 октября 2016, 00:48
0
В том то и дело что не могу понять какой лот правильный.
Лот определяется функцией:
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double LotsOptimized()
{
//--- Инициализация переменых ----------------------------------------
double   volume     = 0;
double   lot        = 0.01;
double   exponent   = 2;
double   count      = CountOpenOrders();
int      digits     = (int)2; //MarketInfo(Symbol(),MODE_DIGITS);
//--------------------------------------------------------------------
volume
= NormalizeDouble(lot * MathPow(exponent, count),digits);
//--------------------------------------------------------------------
return(volume);
}
//+------------------------------------------------------------------+/code>
avatar

Kudryashov

  • 8 октября 2016, 15:40
0
И второй вопрос: Как избавиться от OrderSend error 131?
avatar

Kudryashov

  • 8 октября 2016, 10:46
0
У меня вопрос: Обьясните великали разница между строчками for (index = 0; index < OrdersTotal(); index++) и
for (index = OrdersTotal() — 1; index >= 0; index--)?
Одно и тоже правильно!?
avatar

Kudryashov

  • 8 октября 2016, 10:44
Загрузка...