Доработка ботов (советников, индикаторов)

Статус
Закрыто для дальнейших ответов.

greatiger

Активный участник

Dendjo

Местный житель
А Вы настырный, я таких уважаю, сам такой же. Предлагаю Вам свою дружбу. Завтра из больнички вечером сбегу, заходите в личку, обсудим и решим... С уважением Алексей.

Вот это другой разговор, ото уже что то аж страшно стало, чувствовать себя стал как невидимка, вроде вотон я но меня ни кто не видит:D
 

fizic

Новичок форума
Попробуйте в таком виде. Добавил Вам два отступа, для открытия ордеров, а то индик все время отодвигает прямую тренда и можно остаться без позиции, а на пробитии переворачивается. Да и не забудьте индик должен быть прикреплён к графику... Нужно обязательно проверять условие фхода хоть на демке... Если будет прфит, отпишитесь, может что добавить нужно будет...

Большушее спасибо! Будем держать руку на пульсе, в ручную торговал на реале на м1 (13;8;2) с использованием 2 индикаторов;1 ehlers fisher transform trends фильтра большего 30 мин.ТФ c периодом 10 и индика под названием стрелочник и был в неплохом плюсе.Утомляло только,в ручную внимания нен напосещься:) но пробовал как модель для м5 и м15.Сейчас буду посмотреть, не сомневался ,что вы что-нибудь придумаете.В очередной раз убедился в вашем таланте. К вечеру отпишусь.
 

dmitriypetrov

Элитный участник
Дороботка совы за $ ,

Привет всем , есть желающие немного заработать и доработать сову , об оплате договоримся пишите в личку . К автору совы обращался но он не захотел этого делать , думаю не обидется если тут выложу .
Задание :
1.Есть советник Импульс Корзина 2 , расширеть количество пар с 3 до 15
2.Советник работает с индюком Импульс , нужно еще к этому советнику прикрутить индикатор DeMark Trendline Trader , вывести в настройки чтоб можно было отключать работу индикатора Импульс либо чтоб работали в месте . Условия открытия сделки должны быть такие , если возможно то лучше сделать работу отложками .
Либо по индикатору импульс (если включен) и обязательное пробития треугольника в индюке при любых условиях включен импульс или нет в индюке DeMark на таймфрейме не ниже H1.
На данный момент советник ставится на оду пару и работает сразу с тремя парами , внести изменения в код чтоб два индюка работали на таймфрейме от H1 , параметры таймфрейма вывести в настройки чтоб можно было менять от h1 до d1.
Вывести на экран работающие на данный момент пары , и статистику прибыли убытка по всем парам , все остальное лишнее с экрана можно убрать .
файлы вложил будут вопросы пишите в личку , спасибо кто поможет
 

Вложения

Последнее редактирование:

dub150

Интересующийся
Уважаемые программеры!
Буду признателен в пределах разумного за правку кода под 646 билд вот этого сова!
Заранее спасибо!
 

Вложения

samuron

Активный участник
Доработка индикатора show123_Rh_BB

Всем Привет! Господа программисты будьте любезны добавить в индикатор значение буферов. На картинке я показал стрелками сигналы. При появлении сигнала данный индикатор не показывает значения. Например при появлении сигнала буфер 0 принимает некое значение, при этом буфер1 =0 и при появлении сигнала в противоположенную сторону буфер1 принимает некое значение при этом буфер0=0.
 

Вложения

MrGreen86

Гуру форума
Здравствуйте господа программисты. Помогите разобраться скодом
Подскажите, в каком месте необходимо вставить этот кусок кода
PHP:
+ OrderSwap() + OrderCommission()
чтобы корректно работал
Не просто вставить. Комиссию и своп нужно посчитать, поделить на стоимость пункта помноженную на лот, т.е. расчитать за сколько пунктов открытые лоты погасят комиссию и своп. А потом все это дело прибавить к средней цене.
Как то так:
PHP:
void start() {
   int b,s;
   double price,price_b,price_s,lot,lot_s,lot_b,SLb,SLs;
   double CS_buy,CS_sell;
   for (int i=0; i<OrdersTotal(); i++) {  
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol()) {
         price = OrderOpenPrice();
         lot   = OrderLots();
         if (OrderType()==OP_BUY ) {
            price_b = price_b+price*lot; 
            b++;  
            lot_b=lot_b+lot;
            CS_buy=CS_buy+OrderCommission()+OrderSwap();
            }
         if (OrderType()==OP_SELL) {
            price_s = price_s+price*lot; 
            s++;  
            lot_s=lot_s+lot;
            CS_sell=CS_sell+OrderCommission()+OrderSwap();
            }
         }
      }
   ObjectDelete("SLb");
   double tick_value=MarketInfo(Symbol(),MODE_TICKVALUE);
   if (b!=0) {  
      SLb = price_b/lot_b;
      SLb = SLb - (CS_buy/(tick_value*lot_b))*Point;
      ObjectCreate("SLb",OBJ_ARROW,0,Time[0],SLb,0,0,0,0);                    
      ObjectSet   ("SLb",OBJPROP_ARROWCODE,6);
      ObjectSet   ("SLb",OBJPROP_COLOR, Navy);
      }
   ObjectDelete("SLs");
   if (s!=0) {  
      SLs = price_s/lot_s;
      SLs = SLs + (CS_sell/(tick_value*lot_s))*Point;
      ObjectCreate("SLs",OBJ_ARROW,0,Time[0],SLs,0,0,0,0);                    
      ObjectSet   ("SLs",OBJPROP_ARROWCODE,6);
      ObjectSet   ("SLs",OBJPROP_COLOR, Maroon);
      }
 
Последнее редактирование:

Елена4

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

Спасибо большое. Все работает замечательно. У меня еще одна просьба по этому коду. Как сделать чтобы отображался общий безубыток, с учетом и бай и сел ордеров.
 

MrGreen86

Гуру форума
Спасибо большое. Все работает замечательно. У меня еще одна просьба по этому коду. Как сделать чтобы отображался общий безубыток, с учетом и бай и сел ордеров.
как то так )
PHP:
void start() {
   int b,s;
   double price,price_b,price_s,lot,lot_s,lot_b,SLb,SLs;
   double CS_buy,CS_sell;
   for (int i=0; i<OrdersTotal(); i++) {  
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol()) {
         price = OrderOpenPrice();
         lot   = OrderLots();
         if (OrderType()==OP_BUY ) {
            price_b = price_b+price*lot; 
            b++;  
            lot_b=lot_b+lot;
            CS_buy=CS_buy+OrderCommission()+OrderSwap();
            }
         if (OrderType()==OP_SELL) {
            price_s = price_s+price*lot; 
            s++;  
            lot_s=lot_s+lot;
            CS_sell=CS_sell+OrderCommission()+OrderSwap();
            }
         }
      }
   ObjectDelete("SLb");
   double tick_value=MarketInfo(Symbol(),MODE_TICKVALUE);
   double delta_lot=MathAbs(lot_b-lot_s);
   if(b!=0 || s!=0) {
      SLb= (price_b-price_s)/(lot_b-lot_s);
      CS_buy=CS_buy+CS_sell;
      if(lot_b>lot_s) {
         SLb = SLb - (CS_buy/(tick_value*delta_lot))*Point;
         }
      if(lot_b<lot_s) { 
         SLb = SLb + (CS_buy/(tick_value*delta_lot))*Point;
         }
      ObjectCreate("SLb",OBJ_ARROW,0,Time[0],SLb,0,0,0,0);                    
      ObjectSet   ("SLb",OBJPROP_ARROWCODE,6);
      ObjectSet   ("SLb",OBJPROP_COLOR, clrGreen);
      
      }
   }
 

cmillion

Гуру форума
как то так )
PHP:
void start() {
   int b,s;
   double price,price_b,price_s,lot,lot_s,lot_b,SLb,SLs;
   double CS_buy,CS_sell;
   for (int i=0; i<OrdersTotal(); i++) {  
      if (OrderSelect(i,SELECT_BY_POS,MODE_TRADES) && OrderSymbol()==Symbol()) {
         price = OrderOpenPrice();
         lot   = OrderLots();
         if (OrderType()==OP_BUY ) {
            price_b = price_b+price*lot; 
            b++;  
            lot_b=lot_b+lot;
            CS_buy=CS_buy+OrderCommission()+OrderSwap();
            }
         if (OrderType()==OP_SELL) {
            price_s = price_s+price*lot; 
            s++;  
            lot_s=lot_s+lot;
            CS_sell=CS_sell+OrderCommission()+OrderSwap();
            }
         }
      }
   ObjectDelete("SLb");
   double tick_value=MarketInfo(Symbol(),MODE_TICKVALUE);
   double delta_lot=MathAbs(lot_b-lot_s);
   if(b!=0 || s!=0) {
      SLb= (price_b-price_s)/(lot_b-lot_s);
      CS_buy=CS_buy+CS_sell;
      if(lot_b>lot_s) {
         SLb = SLb - (CS_buy/(tick_value*delta_lot))*Point;
         }
      if(lot_b<lot_s) { 
         SLb = SLb + (CS_buy/(tick_value*delta_lot))*Point;
         }
      ObjectCreate("SLb",OBJ_ARROW,0,Time[0],SLb,0,0,0,0);                    
      ObjectSet   ("SLb",OBJPROP_ARROWCODE,6);
      ObjectSet   ("SLb",OBJPROP_COLOR, clrGreen);
      
      }
   }

Только вот если суммы лотов противоплолжных направлений равны то выдаст деление на ноль и зависнет.
Надо проверять этот момент if (lot_b!=lot_s)..... или if (delta_lot!=0).....
 

Елена4

Активный участник
Только вот если суммы лотов противоплолжных направлений равны то выдаст деление на ноль и зависнет.
Надо проверять этот момент if (lot_b!=lot_s)..... или if (delta_lot!=0).....


А в каком месте кода это нужно вставить??
 

Chekuyardish

Местный знаток
_

А в каком месте кода это нужно вставить??

Елена привет. Мальчишки опять над Вами издеваются. Могу написать, могу подсказать, могу объяснить , что будет мне кажется наверно правильней. В той ситуации , которую описал Владимир, Вы по паре получаете полный лок, т.е. количество лотов на бай равно лотам на селл. Подумайте, где будет находится безубыток............ Правильно. Его не будет, и куда бы не шла цена, перевеса не получится ни в сторону юга ни в сторону севера. Хотя когда нибудь к Вам все равно придет Дядя Коля, сами понимаете почему. Если Вы сами пытаетесь писать код советника или индика, то Вы просто умница. И нужно пытаться по возможности просчитать все ситуации которые могут возникнуть в рынке, и постараться их отбить, тем или иным способом. Так вот, у Вас есть код , в котором есть цикл подсчитывающий объем селл и бай ордеров, потом идет команда удаления линии безубытка с графика, далее мы как раз и проверяем равны ли наши объемы, и если так получилось, что равны, дальнейший код программы просто не нужен, до тех пор пока в рынке не появится дополнительный ордер и объемы поменяются. Если Вы этот код будете использовать как индик для ручной торговли, то он Вам может и поможет. Но если этот кусочек кода нужен для того, чтоб написать советник, в котором будет использоваться безубыток для расчета профита или трала. То там будет ещё маленькая кучка разных условий, другими словами очень захватывающий и интересный процесс. Хотя некоторые говорят, что программисты не креативные люди, привыкшие мыслить шаблонами...
 

zhserg

Местный знаток

Вложения

Yurkov

Почетный гражданин
Добрый день!
Просьба сделать стрелки вместо нижнего индикатора. При пересечении индикатором уровня вниз-красная стрелка, вверх - зеленая.
Нужно для наглядности.
 

Вложения

  • Безымянный.jpg
    Безымянный.jpg
    65,2 КБ · Просмотры: 181
  • MultiIndicator.ex4
    MultiIndicator.ex4
    10,6 КБ · Просмотры: 52
  • MultiIndicator.mq4
    MultiIndicator.mq4
    2,6 КБ · Просмотры: 87
Статус
Закрыто для дальнейших ответов.

Отслеживают (859) Посмотреть

Верх