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

officialboob

Элитный участник
Привет спецам!
Подскажите, как закодить условие пересечения линии, а точнее ценового уровня 00. Т.е., если аск = или > цены 00 - покупаем. Если бид = или < - продаем?


Например так.


PHP:
bool result;

PHP:
if (!ExistPositions(Symbol(),OP_BUY,Magic) && (Ask >= Price)) {

result=OrderSend(Symbol(),OP_BUY...);
}

PHP:
if (!ExistPositions(Symbol(),OP_SELL,Magic) && (Bid < Price)) {

result=OrderSend(Symbol(),OP_SELL...);
}


PHP:
//+----------------------------------------------------------------------------+
//|  Автор    : Ким Игорь В. aka KimIV,  http://www.kimiv.ru                   |
//+----------------------------------------------------------------------------+
//|  Версия   : 06.03.2008                                                     |
//|  Описание : Возвращает флаг существования позиций                          |
//+----------------------------------------------------------------------------+
//|  Параметры:                                                                |
//|    sy - наименование инструмента   (""   - любой символ,                   |
//|                                     NULL - текущий символ)                 |
//|    op - операция                   (-1   - любая позиция)                  |
//|    mn - MagicNumber                (-1   - любой магик)                    |
//|    ot - время открытия             ( 0   - любое время открытия)           |
//+----------------------------------------------------------------------------+
bool ExistPositions(string sy="", int op=-1, int mn=-1, datetime ot=0) {
  int i, k=OrdersTotal();
 
  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) {
      if (OrderSymbol()==sy || sy=="") {
        if (OrderType()==OP_BUY || OrderType()==OP_SELL) {
          if (op<0 || OrderType()==op) {
            if (mn<0 || OrderMagicNumber()==mn) {
              if (ot<=OrderOpenTime()) return(True);
            }
          }
        }
      }
    }
  }
  return(False);
}
 

Novikov

Гуру форума
Берем ADR дней за 10 (20) по каждой паре. Получаем дневной потенциал движения каждой пары в пунктах. Находим размер лота для каждой пары таким образом, чтобы доходы в валюте депозита по каждой паре в случае прохождения ADR совпадали (например, на сегодня лот GBPJPY будет обратно пропорционален лоту EURJPY в соотношении 200/85 (ADR 10)). Это подстрахует на тот случай, если некоторые пары рванут "не туда". Просели на 50 - открываем лот*коэффициент на любой паре, т.к. стоимость потенциального движения с учетом начального лота на всех парах одинаковая. Как вариант, вместо ADR можно взять стоимость пункта в валюте депозита по каждой паре. Или комбинацию ADR\пункт. В любом случае, я бы размеры лотов сделал разными по парам.
Как-то так.

ненене, это все не то.
лоты одинаковые на всех парах, но могу и немного отличаться
формула приблизительно такая: шаг*сумма открытых лотов*10 + сумма геометрической прогрессии шага
только "сумма геометрической прогрессии шага" надо заменить, что бы не запоминать прошедшие шаги для суммирования
только мат расчет, без использования индикаторов
 

well72

Активный участник
officialboob, спасибо!
Теперь осталось сообразить, что с этим всем делать...)))
 

MrGreen86

Гуру форума
Доброго времени суток! Решил поэкспериментировать с советником на открытии нового бара... сделки открывает хорошо, но при обратном сигнале открывает ордер и не закрывает противоположный... Посмотрите пожалуйста... мож возьмется кто?
:please:

что-то вы тут накрутили такого что глаза на лоб лезут оО

if(op==1 && ordersTrade[OP_BUY]==0 && orders[OP_BUY]==0){
это вообще зачем?
чего вы добивались обращаясь к массиву через предопределенную переменную OP_BUY которая равна 0.
это одно и тоже что и написать:
if(op==1 && ordersTrade[0]==0 && orders[0]==0){

Или это например:
for(i=0;i<6;i++) orders=0; //обнулим счетчики
есть замечательная функция ArrayInitialize

а вот это?
extern string _info0="D1,H4,H1,M30,M15,M5";
extern string sPeriod="M1";
зачем, если можно сделать так:
extern ENUM_TIMEFRAMES ePeriod = PERIOD_M1;

это так на скидку )

по вашему вопросу. вы с начала открываете селл по сигналу, затем у вас есть условие:
if(op==-1 && ExistPositions("",OP_BUY,magic) && GetTypeLastOpenPos("", magic)==0){
переводим:
если(сигнал селл И есть бай позиция И последняя позиция бай)

вот только как может быть последняя позиция бай если вы только что открыли селл? вот и не закрывается у вас ордер бай.
поместите закрытие перед открытиями или уберите проверку GetTypeLastOpenPos("", magic)==0
 

Prizr@k

Интересующийся
что-то вы тут накрутили такого что глаза на лоб лезут оО

if(op==1 && ordersTrade[OP_BUY]==0 && orders[OP_BUY]==0){
это вообще зачем?
чего вы добивались обращаясь к массиву через предопределенную переменную OP_BUY которая равна 0.
это одно и тоже что и написать:
if(op==1 && ordersTrade[0]==0 && orders[0]==0){

Или это например:
for(i=0;i<6;i++) orders=0; //обнулим счетчики
есть замечательная функция ArrayInitialize

а вот это?
extern string _info0="D1,H4,H1,M30,M15,M5";
extern string sPeriod="M1";
зачем, если можно сделать так:
extern ENUM_TIMEFRAMES ePeriod = PERIOD_M1;

это так на скидку )

по вашему вопросу. вы с начала открываете селл по сигналу, затем у вас есть условие:
if(op==-1 && ExistPositions("",OP_BUY,magic) && GetTypeLastOpenPos("", magic)==0){
переводим:
если(сигнал селл И есть бай позиция И последняя позиция бай)

вот только как может быть последняя позиция бай если вы только что открыли селл? вот и не закрывается у вас ордер бай.
поместите закрытие перед открытиями или уберите проверку GetTypeLastOpenPos("", magic)==0

Здравствуйте, извините я не программист... грамотности в кодировке нет... не так давно начал изучать программирование... советник лепил по кускам... еще люди помогали с форума переворот сделок прикрепить... Вот абсолютно рабочая версия советника которая работает при пересечении индикатора... как появляется обратный сигнал ордер закрывается и открывается противоположный... захотел поэксперементировать на открытии нового бара, вот и обратился к специалистам форума...:)
 

Prizr@k

Интересующийся
вот сова
 

Вложения

  • CCI_peresechenie_mod.mq4
    19,5 КБ · Просмотры: 44

Prizr@k

Интересующийся
что-то вы тут накрутили такого что глаза на лоб лезут оО

if(op==1 && ordersTrade[OP_BUY]==0 && orders[OP_BUY]==0){
это вообще зачем?
чего вы добивались обращаясь к массиву через предопределенную переменную OP_BUY которая равна 0.
это одно и тоже что и написать:
if(op==1 && ordersTrade[0]==0 && orders[0]==0){

Или это например:
for(i=0;i<6;i++) orders=0; //обнулим счетчики
есть замечательная функция ArrayInitialize

а вот это?
extern string _info0="D1,H4,H1,M30,M15,M5";
extern string sPeriod="M1";
зачем, если можно сделать так:
extern ENUM_TIMEFRAMES ePeriod = PERIOD_M1;

это так на скидку )

по вашему вопросу. вы с начала открываете селл по сигналу, затем у вас есть условие:
if(op==-1 && ExistPositions("",OP_BUY,magic) && GetTypeLastOpenPos("", magic)==0){
переводим:
если(сигнал селл И есть бай позиция И последняя позиция бай)

вот только как может быть последняя позиция бай если вы только что открыли селл? вот и не закрывается у вас ордер бай.
поместите закрытие перед открытиями или уберите проверку GetTypeLastOpenPos("", magic)==0[/QUOTE]

попробуйте так:
Посмотреть вложение 244592

может стоит начать изучать? mql4 простой язык и есть очень удобный просто учебник на Русском )[/QUO

Приму к сведению... спасибо за отклик... сейчас потестим...
 

well72

Активный участник
Всем привет!
Для новой ТС нужен был советник, который выставляет стоп и тейк по заданным значениям АТР. Такого у себя не нашел, но наткнулся вот на такой индикатор. Но он какой-то странный: сам ничего не выставляет (потому что индикатор, наверное). И не рисует. Можете посмотреть и что-нибудь с ним сделать? Хотя бы уровни пусть рисует, что ли) В идеале, конечно, советника такого бы... Может, есть такой и кто подскажет?
 

Вложения

  • Auto SL-TP Setter v1.mq4
    8,8 КБ · Просмотры: 49

Alex Green

Прохожий
Всем привет!
Для новой ТС нужен был советник, который выставляет стоп и тейк по заданным значениям АТР. Такого у себя не нашел, но наткнулся вот на такой индикатор. Но он какой-то странный: сам ничего не выставляет (потому что индикатор, наверное). И не рисует. Можете посмотреть и что-нибудь с ним сделать? Хотя бы уровни пусть рисует, что ли) В идеале, конечно, советника такого бы... Может, есть такой и кто подскажет?


Так это же он и есть!
"This utility EA places Stoploss & TakeProfit if there are positions without them."

По каким параметрам определили, что это индикатор?
 

Prizr@k

Интересующийся
попробуйте так:


может стоит начать изучать? mql4 простой язык и есть очень удобный просто учебник на Русском )[/QUOTE]

Советник все-таки открывает по два-три ордера в одном направлении и не хочет закрывать противоположную сделку ...
 

MrGreen86

Гуру форума
попробуйте так:


может стоит начать изучать? mql4 простой язык и есть очень удобный просто учебник на Русском )

Советник все-таки открывает по два-три ордера в одном направлении и не хочет закрывать противоположную сделку ...[/QUOTE]

пришлось переписать
Посмотреть вложение CCI_peresechenie_mod (1) (1).mq4
 

well72

Активный участник
Так это же он и есть!
"This utility EA places Stoploss & TakeProfit if there are positions without them."

По каким параметрам определили, что это индикатор?
Где-то, откуда скачал, наверное было написано, что индикатор. Хотя сам удивился - как индикатор может ставить стопы и тейки. Но как советник на график не встает, а встает как индикатор. Скрины внизу.
 

Вложения

  • 1.jpg
    1.jpg
    259,3 КБ · Просмотры: 130
  • 2.jpg
    2.jpg
    195,4 КБ · Просмотры: 144

Prizr@k

Интересующийся
Советник все-таки открывает по два-три ордера в одном направлении и не хочет закрывать противоположную сделку ...

пришлось переписать



Спасибо, сейчас посмотрю...:)
 

VIB

Активный участник
Может сделает кто для этой совы мэйджик заранее
спасибо
 

Вложения

  • Divergence Trader.ex4
    25,1 КБ · Просмотры: 51

levondarc

Прохожий
Люди помогите, нужно прикрутить алерт и индикатору, при появлении стрелки, а то торгую по 12 валютным парам и часто просто не успеваю, вот был бы звуковой сигнал, было бы гораздо проще и прибыльнее.
индикатор 123 patterns v.6
не знаю как сам индюк вставить.
 
Верх