0
Вопрос решен.Прошу просьбу не рассматривать.
avatar

Bluesman

  • 29 августа 2017, 17:09
0
Пардон,*stesnitelno*  с выставлением ордера разобрался. Теперь другая беда: передвигаешь стоп, он обратно на место встает.*wizard*  И авто определение направления ордера упростила бы задачу.*neo* 
Посмотрел более тщательно. Андрей из ТЗ — только выставление ордера.
avatar

Bluesman

  • 12 июля 2017, 00:24
0
Ордер не открывается.*???* 
avatar

Bluesman

  • 11 июля 2017, 12:47
0
Удачи в делах, будет время — посмотрите!
avatar

Bluesman

  • 10 июля 2017, 21:54
0
не открылся *think* 
avatar

Bluesman

  • 10 июля 2017, 21:13
0
Прошу написать с нуля
ТЗ:
Советник перетаскивается на график.Если мышь выше цены открывается селл, если ниже бай. На указанном мышкой месте ставиться стоп, фиксированным размером риска от депозита.Какой будет лот, зависимо от расстояния цены, советник считает сам.Главное стоп не превышает сумму указанным в коде. Исходя от расстояния стопа и цены в советнике прописывается коэффициент тейка.
Как то так.
avatar

Bluesman

  • 10 июля 2017, 21:08
0
Я это заметил сразу и изменил, но ордер не открылся.
avatar

Bluesman

  • 10 июля 2017, 20:40
0
Андрей, перетаскиваю на график, но ничего не происходит.*???* 
avatar

Bluesman

  • 10 июля 2017, 17:14
0
Я наверное очень косноязычный:)  Одним словом, русский не родной язык*???* 
Скинув скрипт который начинается с
//+------------------------------------------------------------------+
//|                                                 StopLossLine.mq4 |
//+------------------------------------------------------------------+

в конце сообщения попросил включить в этот скрипт функцию тейка.
avatar

Bluesman

  • 8 июня 2017, 22:33
0
Спасибо, в любом случае, Андрей, за любезно проделанную работу. Да прибудет с тобой сила!
avatar

Bluesman

  • 8 июня 2017, 22:20
0
В советнике есть стопы.

Я не об этом. Второй скрипт, когда кидаешь на график, ставит стоп, открывает ордер, но не ставит тейка.Возможно ли это добавить?

avatar

Bluesman

  • 8 июня 2017, 21:51
0
Буду безмерно благодарен если за одно и в этот код включишь функцию выбора расстояние до тейка (не посчитай за наглость)

Прости за назойливость, как насчет этой просьбы?*help* 
avatar

Bluesman

  • 8 июня 2017, 21:38
0
А если подкину код советника с функцией вывода на экран окошка?*help* 
avatar

Bluesman

  • 8 июня 2017, 21:25
0
Спорить не буду.Я увы не программист.
avatar

Bluesman

  • 8 июня 2017, 21:10
0
Андрей, закинул на график, он открывает ордера без спроса.
Попробую еще раз. При появление линии зиг-зага на экран выходит сообщение — алерт «на таком то графике появилась линия.» Советник предлагает войти в позицию зависимо от направления линии с настройками: Размер риска в валюте депозита, Количество пунктов до стоп-лосса, Количество пунктов до тейка.
А дальше я или вхожу в позицию или отклоняю сигнал.
avatar

Bluesman

  • 7 июня 2017, 22:47
0
Андрей, в идеале: в настройках я указываю какой сумой готов рискнуть, а советник считает каким лотом заходить учитывая количество пунктов от стопа до ордера.
Возможно это поможет:
//+------------------------------------------------------------------+
//|                                                 StopLossLine.mq4 |
//+------------------------------------------------------------------+
//#property show_inputs

//--- внешние переменные ---//
extern double RiskSize=10; // Размер риска в валюте депозита
extern   bool Use_Lock=false; // false/true - выкл./вкл. использование лока
//extern string NameLine="SL";
extern  color TextColor=Red; // Цвет текста на графике
extern    int FrontSize=7; // Размер шрифта для текста на графике  
extern    int Slippage=5; // Максимально допустимый размер проскальзывания (в пунктах)

//--- глобальные переменные ---//
double TickSize, TickValue, Spread, StopLevel, MinLot, MaxLot, LotStep;
   int order_type, order_ticket, orders_total;
  bool Ans, Activate, FatalError, FreeMarginAlert;

//--- Основная ф-ция скрипта ---//
int start()
 {
  double SL_Lev, SL_Size, Lot_Size;

  // получение рыночной информации
  GetMarketInfo();

  //if(ObjectFind(NameLine)!=-1) SL_Lev=ObjectGet(NameLine,OBJPROP_PRICE1); else return(0);
  SL_Lev=WindowPriceOnDropped();

  if(ND(SL_Lev-Bid)>=StopLevel) { // sell
   SL_Size=ND(SL_Lev-Bid)/Point;
   Lot_Size=GetLot(SL_Size);
   TradeSell(Lot_Size);
   if(order_ticket!=-1) {
    if(!Use_Lock) {
     Modify_SL(order_ticket,SL_Lev);
     /*if(Ans) ObjDel();*/ }
    else {
     BuyStop(SL_Lev,Lot_Size);
     /*if(order_ticket!=-1) ObjDel();*/ } } }

  else if(ND(Ask-SL_Lev)>=StopLevel) { // buy
   SL_Size=ND(Ask-SL_Lev)/Point;
   Lot_Size=GetLot(SL_Size);
   TradeBuy(Lot_Size); 
   if(order_ticket!=-1) {
    if(!Use_Lock) {
     Modify_SL(order_ticket,SL_Lev);
     /*if(Ans) ObjDel();*/ }
    else {
     SellStop(SL_Lev,Lot_Size); 
     /*if(order_ticket!=-1) ObjDel();*/ } } }

  else { 
   Alert("Линия находится слишком близко к текущему значению цены!");
   return(0); }

  // вывод информации на график
  string ObjName="GetLotSize";
  if(ObjectFind(ObjName)==-1) {
   ObjectCreate(ObjName, OBJ_LABEL, 0, 0, 0);
   ObjectSet(ObjName, OBJPROP_CORNER, 0);
   ObjectSet(ObjName, OBJPROP_XDISTANCE, 10);
   ObjectSet(ObjName, OBJPROP_YDISTANCE, 15); }
  ObjectSetText(ObjName, "Размер лота : " + DoubleToStr(Lot_Size, 2), FrontSize, "Courier New", TextColor);

  return(0);
 }

//--- Ф-ция получение рыночной информации(окружения) ---  ---//
void GetMarketInfo() {
 TickSize=MarketInfo(Symbol(), MODE_TICKSIZE); // Размер минимального изменения цены
 TickValue=MarketInfo(Symbol(), MODE_TICKVALUE); // Стоимость одного пункта
 Spread=MarketInfo(Symbol(), MODE_SPREAD); // Текущий спред
 StopLevel=MarketInfo(Symbol(), MODE_STOPLEVEL)*Point; // Текущий уровень стопов
 MinLot=MarketInfo(Symbol(), MODE_MINLOT); // Минимальный разрешенный объем
 MaxLot=MarketInfo(Symbol(), MODE_MAXLOT); // Максимальный разрешенный объем
 LotStep=MarketInfo(Symbol(), MODE_LOTSTEP); // Шаг приращения объема
}

//--- Расчет объема сделки с учётом размера стоп-лосса ---  ---//
double GetLot(double SL_Size) {
 double lot, SL;

 if(TickValue==0.0) return(0.0); // Ошибка при получении стоимости тика

 if(TickSize==Point) {
  SL=SL_Size+Spread; }
 else if(TickSize<Point) { 
  SL=(SL_Size+Spread)*(Point/TickSize); }
 else if(TickSize>Point) { 
  SL=(SL_Size+Spread)*(TickSize/Point); }

 lot=RiskSize/SL/TickValue; // Рассчитаем объем
 return(NL(lot)); /* Округлим значение до ближайшего */ }


//--- Ф-ция открытия позиции на покупку(по рынку) ---  ---//
void TradeBuy(double lot) {
 int i;
 order_ticket=-1;
 RefreshRates(); // Обновим данные

 if(AccountFreeMarginCheck(Symbol(), OP_BUY, lot)<=0.0 || GetLastError()==134) {
  if(!FreeMarginAlert) {
   Alert("Недостаточно средств для отправки приказа. Free Margin = ", DoubleToStr(AccountFreeMargin(),2));
   FreeMarginAlert=true; } 
  return; }
 FreeMarginAlert=false;  

 while(order_ticket<0 && i<5) {   
  // Отправка торгового запроса  
  order_ticket=OrderSend(Symbol(),OP_BUY,lot,Ask,Slippage,NULL,NULL,"",NULL,NULL,Blue);
  if(order_ticket<0) { if(!Errors(GetLastError())) return; } i++; } /*end of while*/ } 
        
//--- Ф-ция открытия позиции на продажу(по рынку) ---  ---//
void TradeSell(double lot) {
 int i;
 order_ticket=-1; 
 RefreshRates(); // Обновим данные

 if(AccountFreeMarginCheck(Symbol(), OP_SELL, lot)<=0.0 || GetLastError()==134) {
  if(!FreeMarginAlert) {
   Alert("Недостаточно средств для отправки приказа. Free Margin = ", DoubleToStr(AccountFreeMargin(),2));
   FreeMarginAlert=true; } 
  return; }
 FreeMarginAlert=false; 
 
 while(order_ticket<0 && i<5) {   
  // Отправка торгового запроса 
  order_ticket=OrderSend(Symbol(),OP_SELL,lot,Bid,Slippage,NULL,NULL,"",NULL,NULL,Red);
  if(order_ticket<0) { if(!Errors(GetLastError())) return; } i++; } /*end of while*/ }

//--- Ф-ция модификации стоп-лосса ---  ---//
void Modify_SL(int OrdTicket, double SL_Lev) {
 double op, tp;
    int i;

 Ans=false;
 if(!OrderSelect(OrdTicket,SELECT_BY_TICKET)) return; 

 op=OrderOpenPrice();
 tp=OrderTakeProfit();

 i=0;
 while(!Ans && i<5) {
 //--- Модификация открытой позиции ---//
 Ans=OrderModify(OrdTicket,ND(op),ND(SL_Lev),ND(tp),0,Red);
 if(!Ans) { if(!Errors(GetLastError())) break; } i++; } /*end of while*/ }

//--- Ф-ция установки BuyStop ордера ---  ---//
void BuyStop(double LevInst, double lot) {
 int i=0;

 order_ticket=-1;
 while(order_ticket<0 && i<5) {   
  // Отправка торгового запроса  
  order_ticket=OrderSend(Symbol(),OP_BUYSTOP,NL(lot),ND(LevInst),0,NULL,NULL,"",NULL,0,Blue);         
  if(order_ticket<0) { if(!Errors(GetLastError())) return; } i++; } // end of while 
}

//--- Ф-ция установки SellStop ордера ---  ---//
void SellStop(double LevInst, double lot) {
 int i=0;

 order_ticket=-1;
 while(order_ticket<0 && i<5) {   
  // Отправка торгового запроса  
  order_ticket=OrderSend(Symbol(),OP_SELLSTOP,NL(lot),ND(LevInst),0,NULL,NULL,"",NULL,0,Red);         
  if(order_ticket<0) { if(!Errors(GetLastError())) return; } i++; } // end of while 
}

//--- Ф-ция обработки ошибок при отправке торговых запросов ---  ---//
bool Errors(int Error) {
 if(Error==0) return(false); // Нет ошибки

 switch(Error) { 
  // Преодолимые ошибки:
  case 4:   // Торговый сервер занят  
   Sleep(3000);
   RefreshRates(); // Обновим данные
   return(true); // Ошибка преодолимая
  case 129: // Неправильная цена
  case 135: // Цена изменилась
   RefreshRates(); // Обновим данные
   return(true);   // Ошибка преодолимая
  case 136: // Нет цен. Ждём новый тик.
   while(RefreshRates()==false) // До нового тика
    Sleep(1);                   // Задержка в цикле
   return(true);                // Ошибка преодолимая
  case 137: // Брокер занят 
   Sleep(3000);
   RefreshRates(); // Обновим данные
   return(true); // Ошибка преодолимая
  case 146: // Подсистема торговли занята
   Sleep(500);     // Простое решение
   RefreshRates(); // Обновим данные
   return(true);   // Ошибка преодолимая
  // Критические ошибки:
  case 2 :  // Общая ошибка
  case 5 :  // Старая версия клиентского терминала
  case 64:  // Счет заблокирован
  case 133: // Торговля запрещена
   Alert("Критическая ошибка - эксперт остановлен!");
   FatalError=true;
   return(false); // Критическая ошибка 
  default:  // Другие варианты
   return(false); } }

//--- Проверка объема на корректность и округление ---  ---//
double NL(double L) {
 return(MathRound(MathMin(MathMax(L, MinLot), MaxLot)/LotStep)*LotStep); }

//--- Ф-ция приведения значений к точности одного пункта ---  ---//
double ND(double A) { 
 return( NormalizeDouble(A, Digits) ); }

//--- Ф-ция удаления линии ---  ---//
//void ObjDel() {
// if(ObjectFind(NameLine)!=-1) ObjectDelete(NameLine); }

Буду безмерно благодарен если за одно и в этот код включишь расстояние до тейка (не посчитай за наглость)*stesnitelno* 
avatar

Bluesman

  • 7 июня 2017, 22:10
+1
Возможно кому то будет интересно. Интервью сигнальщика.
www.youtube.com/watch?v=tGYC2Z2jLY0
avatar

Bluesman

  • 8 мая 2017, 20:35
+1

www.forbes.ru/milliardery/338807-premera-forbes-i-amediteka-stat-uorrenom-baffetom
Документальный фильм телеканала HBO о легендарном инвесторе, неоднократно занимавшем первое место в рейтинге богатейших людей мира, рассказывает историю жизни 86-летнего Уоррена Баффета от рождения до наших дней.
avatar

Bluesman

  • 29 марта 2017, 14:26
+1

Власть или деньги? Что сильнее в современном мире? Ответить на этот вопрос решили создатели сериала «Миллиарды». Речь в сериале идет о противостоянии весьма значительных каждый в своей области людей, которые имеют немалое финансовое состояние. Бобби Аксельрод — богатый руководитель одного из крупнейших хедж-фондов. Он не боится идти на риск и всегда выходит победителем. Чак Родс — влиятельный федеральный прокурор и политик, сосредоточивший в своих руках очень большую власть. Он уверен в себе и обладает принципиальным характером. Кто из них подавит другого, станет известно из нового сериала Showtime «Миллиарды».
avatar

Bluesman

  • 26 февраля 2017, 12:37
0
Приветствую.Спасибо за индикатор..) индикатор удаляет некоторые объекты с графика, которые не относятся к индикатору.Если что то надо изменить в коде, скажите пожалуйста что и где?
avatar

Bluesman

  • 29 января 2017, 14:41