Самовольное открытие ордеров в советнике.

 

Переделал эксперта на основе мультивалютного индикатора от Семен Семеныча выложенного в Code Base. Смысл такой - при максимальном расхождении двух валют по ним открывается сделка - Buy или Sell зависит соответственно от того какая валюта выше и ниже нулевой линии . Для подтверждения входа решил использовать индикатор Ideal_MA взятый тоже из Code Base. Вроде бы что то вырисовывалось на демо счете, но в основном профит нулевой. И одной из причин оказалось открытие сделок несоответсвующих критериям. Сначала выяснил что в блоке проверки по Ideal_MA начальное значениe, возвращаемое блоком было равно 0 и индикатор при первом обращении к нему на новой валютной паре не успевал просчитываться, и соответственно фуникця возвращала ноль что соответствует критерию Buy

//--------------------------------------------------------------- 5 --
// Торговые критерии разворота
//-------------------------------------------------------------- 5a --
int Razvorot(string Money)
{
int Z;
double L1=iCustom(Money,0,"Ideal_MA_1",0,1);
double L2=iCustom(Money,0,"Ideal_MA_1",0,2);

if (L1>L2 ) // если цена пошла вверх
{
Z=OP_BUY; // Критерий откр BUY
}
if (L1<L2) // если цена пошла вниз
{
Z=OP_SELL; // Критерий откр SELL
}
return (Z);

}

И если у рассматриваемой пары был сигнал Buy то при первом просчете индикатора запросто мог открыться ордер не смотря на то, что на самом деле индикатор еще показывает движение вниз. Решил исправить положение прописав изначально значение Z=3, что не соответствует ни одному из критерееев. Все равно открывает ложные ордера теперь еще и по Sell Может надо поставить какую ни будь паузу при обращении к индикатору, что бы он мог просчитаться и получить верное значение. Может кто подскажет как тут быть?

Файлы:
 
Интересно, пользуясь чужими системами, вы сами чего можете достичь?
 

Попробуйте так -

где=то в районе  всех extern 
#define OP_BALANCE 6
//--------------------------------------------------------------- 5 --
// Торговые критерии разворота
//-------------------------------------------------------------- 5a --
int Razvorot(string Money)
{

int Z=OP_BALANCE;
double L1=iCustom(Money,0,"Ideal_MA_1",0,1);
double L2=iCustom(Money,0,"Ideal_MA_1",0,2);

if (L1>L2 ) // если цена пошла вверх 
{
Z=OP_BUY; // Критерий откр BUY
}
if (L1<L2) // если цена пошла вниз
{
Z=OP_SELL; // Критерий откр SELL
}
return (Z);
} 

У меня так работает.

 
vasya_vasya:
Интересно, пользуясь чужими системами, вы сами чего можете достичь?
Прошу простить, но способов научиться столько же, сколько и людей.К тому же изобретать велосипед не всегда практично.Опять же "ионный трамблюкатор" проще присобачивать к уже двигающемуся пепелацу, а не к "варитативной последовательности мнимых частей комплексной составляющей функции..."Еще раз простите.Это не более, чем ИМХО.
 

По теме - кроме Money (кстати, а почему - string ?) неплохо бы еще и (например)какой-нибудь Tovar анализировать.Т.е. движение не только,например, USD, но и EUR.

И неплохо бы какую-то дельту разности этой пары учитывать, иначе индюк (а он, кстати, перерисовывается) будет по открытию свечи давать

МАССУ ложных сигналов. Что, кстати, у Вас и происходит (я сам использую кластерные индюки).Ну и желательно этот сигнал фильтровать не МАшкой,

а каким-то осциллятором (ибо все кластерные - осцилляторы по своей природе, а подобное нужно лечить подобным) .Ну это уже ИМХО.Сугубое.Стратегия - вещь глубоко интимная.

 
vasya_vasya:
Интересно, пользуясь чужими системами, вы сами чего можете достичь?

Не вижу ни чего плохого в том что бы попробовать изменить имеющуюся систему в свою сторону, применив свои идеи. Иначе зачем этот форум? Я считаю что тут происходит обмен опытом, мнениями или все же форум создан просто для рекламы достижений??? И опять же изучая представленные ЧУЖИЕ системы я быстрее достигну чего то, чем если буду снова изобретать уже изобретенный велосипед!!! И обращаюсь за помощью а не показать что я чего то достиг!

А у самого уже даже идей нет?

https://forum.mql4.com/ru/32958

Охотитесь за чужими идеями таким способом? :)

Самому ни чего достичь не удалось на других срываетесь?

 
Segun1966:

Попробуйте так -

У меня так работает.


Я примерно так и сделал - сразу при определении переменной присвоил ей значение 3

int Z=3;

Но теперь понял что это маленько другое! Спасибо переделал, попробую теперь так! Зато теперь на примере усвоил как использовать объявление констант такого вида! (это камень в огород vasya_vasya)


,
Файлы:
primer.rar  133 kb
 
Segun1966:

По теме - кроме Money (кстати, а почему - string ?) неплохо бы еще и (например)какой-нибудь Tovar анализировать.Т.е. движение не только,например, USD, но и EUR.

И неплохо бы какую-то дельту разности этой пары учитывать, иначе индюк (а он, кстати, перерисовывается) будет по открытию свечи давать

МАССУ ложных сигналов. Что, кстати, у Вас и происходит (я сам использую кластерные индюки).Ну и желательно этот сигнал фильтровать не МАшкой,

а каким-то осциллятором (ибо все кластерные - осцилляторы по своей природе, а подобное нужно лечить подобным) .Ну это уже ИМХО.Сугубое.Стратегия - вещь глубоко интимная.

Я так подумал что и string подойдет. Насчет Tovar - анализируются все валюты кластера и выбираются максимальная и минимальная и по ним берется пара, а уже там USD или EUR там как получится. Или я не уловил Вашу мысль? А про дельту разности пары, я так думаю Вы имели ввиду расстояние между ними на индикаторе - это здравая очень здравая мысль, так как при узком расхождении на самом деле много ложных сигналов. Я введу ограничение по ширине расхождения валют. Благодарю за дельный совет. А машку я взял по причине которую Вы сами и указали - из за того что кластерный индикатор сам по себе осциллятор а с помощью машки я смотрю разворот и направление движения, правда с запаздыванием некоторым, но это сказывается только на размере профита и если не жадничать то вполне думаю работоспособно. Я по истори сделок прошелся и если исключить ложные открытия ордеров, то небольшого но стабильного профита вполне можно добиться после некоторых настроек. ИМХО.
Причина обращения: