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

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

zhserg

Местный знаток
Спасибо, ордера открывает как заданно!

Но произошел один БАГ:
После открытия первых ордеров, поставил "торговля - запрещена" и "доливки - включены" - думал, что в таком лучае доливки будут работать, а новые ордера после закрытия по профиту не откроются.

Но при резком скочке котировок доливки не открывались, а во вкладке "эксперты" выдавало сообщение:

PHP:
2014.01.10 15:34:31	PTv44 EURCAD,H1: Error  4051 GBPAUD
2014.01.10 15:34:31	PTv44 EURCAD,H1: invalid lots amount for OrderSend function

Переключил на "торговля - разрешена" и ордера начали открываться, не доливки, а по новому, начиная с 0,01-0,02-0,04, при том, что размеры указаны Lot1=0.1, а Lot2=0.07

Кто-то может подсказать, как с этим бороться? Или может кто-то сможет исправить?

Заранее благодарю!
Извиняюсь, а как недоработанная версия будет работать точно при таких же условиях?
 

eevviill

Заблокирован
...если цена ушла от предыдущего открытого ордера на расстояние DistanceKMsell или DistanceKMbuy пунктов ,
...
а нужно что бы он выставлялся не зависимо от очерёдности даже 2 если цена ушла от предыдущего ордега на DistanceKMsell или DistanceKMbuy пунктов ???
???
 

Pepelac

Интересующийся
Помогите доработать сову

Здравствуйте, Уважаемые Программисты!
В прилагаемой сове хотелось бы изменить несколько параметров:
-параметр TimeClosePos должен иметь вкл и выкл (true-false)
-DisnanceSet должен задаваться не в пунктах, а процентах от тела предыдущей свечи ( расстояние от open до close ) и отложенные ордеры должны выставляться на полученном расстоянии выше high и ниже low той самой предыдущей свечи (на данный момент ордеры выставляются заданном расстоянии от Open текущей свечи)
-добавить параметр Noloss (перевод позиции в БУ через N пунктов)
-пара ордеров должна выставляться один раз на задаваемом промежутке времени (на данный момент если не сработал ни один ордер, то на новой свече выставляется новая пара ордеров)
 

Вложения

Novikov

Гуру форума
Извиняюсь, а как недоработанная версия будет работать точно при таких же условиях?

Не доработанная - там указывается 1 размер ордера для 2х пар,
а в доработанной - 2 размера, для каждой пары по отдельности!
Т.к. я считаю, что волатильность у пар разная, соответственно и размер ордеров должен быть разным.
Размеры для ордеров можно использовать из расчета индикаторов Ind_2_line в разные его модификациях.
 
Последнее редактирование:

gek

Элитный участник
Не доработанная - там указывается 1 размер ордера для 2х пар,
а в доработанной - 2 размера, для каждой пары по отдельности!
Т.к. я считаю, что волатильность у пар разная, соответственно и размер ордеров должен быть разным.
Размеры для ордеров можно использовать из расчета индикаторов Ind_2_line в разные его модификациях.

Скажите пожалуйста.Неужели настолько реальная сова,что стоит столько постов написать?
Хотелось бы узнать,стоит потестить или нет?
 

Partizan64

Прохожий
Подсажите пожалуйста. Как прописать условие: свеча закрылась за пределами линии болинжера и тела последующих свеч находятся в пределах хай-лоу этой закрывшейся за пределами ББ свечи. если выполняется это условие и наступает какое-то событие выполняется какое-либо действие?
 

Вложения

  • eurusdh1.png
    eurusdh1.png
    10,7 КБ · Просмотры: 15

Dendjo

Местный житель
народ как бороться с индикатором который не выдает сигнал (не обновляется) пока его не встряхнешь, рефрешер не интересует.
 

eevviill

Заблокирован
Подсажите пожалуйста. Как прописать условие: свеча закрылась за пределами линии болинжера и тела последующих свеч находятся в пределах хай-лоу этой закрывшейся за пределами ББ свечи. если выполняется это условие и наступает какое-то событие выполняется какое-либо действие?
Так.
PHP:
1) Ищем нужную свечу и записываем её время
int time_bb_bar;
for(int i=0;i<Bars-2;i++)
{
double boli_up=iBands(,i);
double boli_down=iBands(,i);
if(Close[i]>boli_up || Close[i]<boli_down)
{
time_bb_bar=Time[i];
break;
}
}

2) Смотрим  или свечи в диапазоне нашей. ok
if(time_bb_bar!=0)
{
int number_nee_candle=iBarShift(Symbol(),0,time_bb_bar);
bool ok;
 for(int i=0;i<number_nee_candle;i++)
{
if(High[i]>High[number_nee_candle] || Low[i]<Low[number_nee_candle])
{
ok=false;
break;
}
}
}
 
Статус
Закрыто для дальнейших ответов.

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

Верх