Перейти к содержанию

Доработка советников: общая тема


Рекомендуемые сообщения

Доработка советников: общая тема Опубликовано


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




Fixed

Smile_2016.zip

Изменено пользователем Pavel888
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

  • 2 weeks later...
  • Ответов 2,5k
  • Создано
  • Последний ответ

Популярные авторы

Популярные авторы

Популярные посты

Версия с правками. Я немного свернул код, чтобы не перебирались ордера попусту и чтобы проверка красной/синей зоны делалась в одном месте. Прогнал в тесте с настройками по умолчанию. Ожидаемо лье

Перейти

Нате 1_2_3 _Fraktal.mq4

Перейти

Система маятника, или попрыгунчика, или фиг ее знает как ее еще назвать не намного младше сетки мартингейла. Мы в далеком 2017 писали по ней сов с индикатором на вход: https://tlap.com/forum/labo

Перейти
Доработка советников: общая тема Опубликовано

Моя цель довести советник до максимальной эфиктивности
Особенно PriceAction

Пока для начало взял PinBar

Данный советник/индикатор будет развиваться во всех направлениях!

Настройки:
Div=3; // чем больше число тем длинее нос у PinBar-а
BarHistory=200; // кол-во баров (для индикатора)
bool Trade=false; // true - разрешать торговать советнику
int StopLoss=150; // стоп лосс
int TakeProfit=450; // таке профит

PriceAction.mq4
TesterGraph.gif

Изменено пользователем Askar
  • Лайк 3
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

2017.03.22 22:28:41.048 2007.03.05 03:42 PriceAction EURUSD,M5: OrderSend error 130

Не тестится, 910 билд, тиковые котировки 99%, tickstory lite.

Рекомендую добавить трендовый индикатор для фильтрации сигналов - ozymandias например.

Изменено пользователем ironwolf
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

попробуй на часовом графике


Ок, но что если я хочу на 5 минутках пинбары скальпить по 10 пунктов?

Добавьте, плз, описание настроек.
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Настпойки подобраны под часовой график.
Побалуйся с takeProfit и stopLoss


Добавлено: 22-03-2017 19:41:14


2017.03.22 22:28:41.048 2007.03.05 03:42 PriceAction EURUSD,M5: OrderSend error 130

Не тестится, 910 билд, тиковые котировки 99%, tickstory lite.

Рекомендую добавить трендовый индикатор для фильтрации сигналов - ozymandias например.



Ок. Завтра же добавлю...
( если честно я не очень доверяю этому индикатору но попробывать можно)))
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

я не очень доверяю этому индикатору


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

2017.03.22 22:51:07.719 2016.06.01 16:00 PriceAction AUDUSD,H1: OrderSend error 130
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Фильтр имеется.
Сделка открывается после того как low следующей свечи будет выше относительно маленькой тени PinBar

Ссылка на сообщение
Поделиться на другие сайты

  • 1 month later...
Доработка советников: общая тема Опубликовано

Всем привет, советник выдает такую ошибку
Forex-Flex-EA-4.53_fix AUDUSD,H1: Alert: News Indicator Not Found! News filter is being disabled
Ссылка на сайт, там он продается, есть мониторинги описание итд.

http://www.forexflexea.com/

Forex-Flex-EA-4.53_fix.ex4

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

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

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Это я понял,пробовал 2 новостных индикатора FFC и IceFX NewsInfo советник их не видит, вот и решил обратится на форум

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Это я понял,пробовал 2 новостных индикатора FFC и IceFX NewsInfo советник их не видит, вот и решил обратится на форум


Какой именно индикатор ему нужен и путь его расположения, прописаны в коде, который, увы, не прочесть. Абы какой, понятное дело, он не увидит.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


Это я понял,пробовал 2 новостных индикатора FFC и IceFX NewsInfo советник их не видит, вот и решил обратится на форум



Вот этот хочет...

Причем версий этого индикатора море, попробуйте разные подсунуть.

FFCal.ex4

  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Заработал сов, теперь осталось выбрать более менее подходящую стратегию, а то в нем 12 стратегий.

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


Название стратегии: AutoProfit 3.0
Год выпуска: 2014
Сайт продажи: _http://111111
Валютные пары: EUR/USD
Таймфрейм: D1
Время торговли:круглосуточно
Описание: торговля против мелкого тренда, но в тоже время ориентируясь на глобальный тренд (MA=200), используя мартингейл.

Есть предложение усовершенствовать советник Autoprofit 3.0. Прикрепляю оптимальный сет и предлагаю выпускать зверя на D1 только в покупки, когда дневки выше MA=200 и только в шорт, когда дневки ниже МА=200.

Планирую внести в код изменения, чтобы автоматически распознавалось направление сделок, но я только начинаю вникать в кодинг, может кто-то поможет?

На данный момент это рабочая полуавтоматическая система.

Auto-profit3.0.mq4
Auto-profit3.0.ex4
EUR_USD_D1_safe.set

Изменено пользователем test13
  • Лайк 2
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано

Описание скудное.. >:dНу да, "торговля против мелкого тренда, МА200, мартингейл"... так это сплошь и рядом..
Описание системы, то где? Хотелось бы подробней.
И советник есть, а принцип работы? Ну хотя бы пару строк.

  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


Описание скудное.. >:dНу да, "торговля против мелкого тренда, МА200, мартингейл"... так это сплошь и рядом..
Описание системы, то где? Хотелось бы подробней.
И советник есть, а принцип работы? Ну хотя бы пару строк.



Алгоритм
Цитата


1. Первое что делает советник, проводит анализ последних 2-х БАРов, а именно анализирует цены закрытия с текущей. Если цена закрытия предыдущего бара выше цены закрытия последнего, а текущая цена тоже выше цены закрытия последнего – то SELL. BUY при ситуации наоборот. Так рождается сигнал ко входу в рынок.

2. Обработав сигнал советник открывает ордер с размером лота заданным в параметре «Lots», в настройках советника.

3. После открытия ордера, производится его модификация. Выставляется ТakeРrofit.

4. При удачном прогнозе, ордер закрывается по ТakeРrofit. Мы получаем прибыль и радость, советник возвращается к пункту №1.

5. Но, что-то на рынке произошло, и цена идет в обратном направлении. Советник «хладнокровно и без паники» ждет сигнала от второго шага своего алгоритма и выставляет второй ордер в ту же сторону с таким же лотом, что и в первый раз.

6. Тут же следует модификация, в части переноса планки ТakeРrofit. Теперь у Двух открытых (по разной цене) ордеров с одинаковыми лотами, и уровеньTP тоже одинаков.

7. Ситуация аналогична п.№4.

8. Обвал продолжается?! И снова советник ждет от шага номер два – сигнала, а получив открывает следующий ордер, разумеется в ту же сторону с лотом:

а) Если в параметрах «MMType» = 1 (Мартингейла), то открываемый ордер будет равен размеру лота открытого помноженного на коэффициент выставленный в параметре «LotMultiplicator». Так же учитывается параметр «Step»;

б) Если в параметрах «MMType» = 2, то объем сделки равен «Lots».

9. Снова модификация открытых сделок, и вот у них уже новый уровень ТakeРrofit.

Эпилог.

Выполнение алгоритмом автоматической торговой системой пунктов с 7-го по 9-й будет продолжаться, пока не наступит момент, когда количество ордеров достигнет предела указанного в пункте параметров «MaxTrades».

Параметр «MaxTrades», один из не многоих который можно менять на ходу. Т.е. Вами было изначально (например) выставлено не достаточное количество ордеров, тогда вы заходите в настройки, дважды кликаете в указанном параметре, изменяете на нужное количество, и советник снова начинает открывать ордера.

Ждем, когда все они закроются по общему TP/

Все хорошо! Но где же стоп-лосс?! У советника есть такой параметр «UseEquityStop». Он ограничивает общую допустимую просадку, и по умолчанию включен («True»). Размер просадки указывается в другом параметре (они стоят друг за дргом) «TotalEquityRisk», в процентном отношении к депозту. Тандем работы этих двух параметров выполняет роль стоп-лосса для всех открытых сделок эксперта одновременно.

Торговая система не ставит себе «палки в колеса», в том плане, что если был открыт ордер «SELL», то пока не закроется он, ордера «BUY» не будет, а будет снова «SELL»



А теперь моя идея по доработке: сделать так, чтобы сов открывал бай только над МА=200 по дневкам, а селл только ниже МА=200.
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано



А теперь моя идея по доработке: сделать так, чтобы сов открывал бай только над МА=200 по дневкам, а селл только ниже МА=200.


При наступлении основного условия на ПЕРВОГО ордера проверяете цену МА200. Если она выше, то только СЕЛЛ, ниже- то, соответственно, только БАЙ.
Или вопрос не в этом?

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
kate, имхо, это плохая идея - ма200 слишком грубый определитель тренда для мартинов.
Но вы можете её проверить - киньте за график любой пары МА200D1, выберите период теста, заблокируйте в настройках тестера торги против машки и прогоните тест.
Думаю, несколько таких тестов прояснят картину вполне достаточно.
Ссылка на сообщение
Поделиться на другие сайты

  • 4 weeks later...
Доработка советников: общая тема Опубликовано

Помогите кто нить скомпилировать этот код в советник, я полный дуб в этом #:-s .
Сова имеет функцию нужную для моей стратегии обрезать часть прибыли (объема) . Нашел похожий код.
А так мне надо чтобы после определенного количества пунктов обрезалась позиция.
И чтобы сова могла обрезать сделки по всем открытым парам.
Функция в сове вроде такая " close_lot=NormalizeDouble(OrderLots()/2,2);
"2" это закрыть половину, округление согласно NormalizeDouble "+

Спойлер

extern string    General_settings        ="-------------------------------------------------------";

extern double Lots = 0.01;

extern int Delta = 1;

extern string Order_settings ="-------Настройки СЛ и ТП-------------------------------";

extern int TakeProfit = 500;

extern int StopLoss = 400;

extern string Order_management ="-------Настройки Риск Менеджмента----------------------";

extern bool fixed_sl=true;

extern int NoLoss = 100;

extern int NoLossFiboLevels = 60;

extern int NoLossProfit = 0;

extern string st5 ="-Настройки Дистанции и Процента для закрытия-----------";

extern bool Lot_Mode_Percent = true;

extern int Lot_Percent_23_6 = 5;

extern int Lot_Percent_38_2 = 20;

extern int Lot_Percent_50 = 30;

extern int Lot_Percent_61_8 = 40;

extern string st6 ="-Веремя работы советника------------------------------";

extern int TimeStart = 01; // Время начала работы советника

extern int TimeEnd = 23; // Время окончания работы советника

extern int TimeStartMonday = 3; // Время начало торговли в понидельник

extern int TimeEndFriday = 17; // Время после которого не торгуем в пятницу

// Глобальные переменные

int LastTradeTimeBuy = 0; // Время последней открытой сделки

int LastTradeTimeSell = 0;

int LastTradeBuy = 0; // Время последней открытой сделки

int LastTradeSell = 0; // Время последней открытой сделки

int MagicNumber= 0;

double StopLossValue = 0;

#define HR2400 86400 // 24 * 3600

int TimeOfDay(datetime when){ return( when % HR2400 ); }

datetime DateOfDay(datetime when){ return( when - TimeOfDay(when) ); }

datetime Today(){ return(DateOfDay( TimeCurrent() )); }

datetime Tomorrow(){ return(Today() + HR2400); }

datetime Yesterday(){ return( iTime(NULL, PERIOD_D1, 1) ); }

int tomorrow_day =0;

int current_day = 0;

int count_buy = 0;

int count_sell = 0;

//------- Внешние параметры модуля -----------------------------------

extern string _Parameters_b_Lot = "- Параметры модуля расчёта лота----------------------";

extern int LotsWayChoice = 1; // Способ выбора рабочего лота:

// 0-фиксированный,

// 1-процент от депозита,

// 2-фиксированно-пропорциональный,

// 3-фракционно-фиксированный,

extern int LotsPercent = 10; // Процент от депозита

extern int LotsDeltaDepo = 500; // Коэффициент приращения депозита

extern int LotsDepoForOne = 500; // Размер депозита для одного минилота

extern int LotsMax = 1000; // Максимальное количество минилотов

//+------------------------------------------------------------------+

//| expert start function |

//+------------------------------------------------------------------+

double fPreviousBid = 0; // значение bid на предыдущем тике

string symb;

int OnInit()

{

fPreviousBid = 0;

return(INIT_SUCCEEDED);

}



void OnTick()

{

symb = _Symbol;



Bkl();

}





void Bkl()

{



static datetime bodCurr; datetime bodPrev = bodCurr; bodCurr = DateOfDay( TimeCurrent() );

bool isNewDay = bodPrev != bodCurr;

if(isNewDay){

int part_order_close_sell_23_6 = 0;

};



if (TradeStatuse() > 0) return (0);

double SL=0,TP=0,NoLossTP=0,Current_Value,Bid_Value_23_6=0,Ask_Value_23_6=0,Bid_Value_38_2=0,Ask_Value_38_2=0,Bid_Value_50=0,Ask_Value_50=0,Bid_Value_61_8=0,Ask_Value_61_8=0,

Lot_23_6=0,

Lot_38_2=0,

Lot_50=0,

Lot_61_8=0,

Spread=Ask-Bid,

StopLevel=Point*MarketInfo(Symbol(),MODE_STOPLEVEL),

HighD1=iHigh(Symbol(),PERIOD_D1,1),

LowD1=iLow(Symbol(),PERIOD_D1,1),

HighD1Today=iHigh(Symbol(),PERIOD_D1,0),

LowD1Today=iLow(Symbol(),PERIOD_D1,0),

HighH4=iHigh(Symbol(),PERIOD_H4,1),

LowH4=iLow(Symbol(),PERIOD_H4,1),

HighH6=iHigh(Symbol(),PERIOD_H6,0),

LowH6=iLow(Symbol(),PERIOD_H6,0),

HighW1=iHigh(Symbol(),PERIOD_W1,1),

LowW1=iLow(Symbol(),PERIOD_W1,1),

CheckHiLivels = 0, CheckLowLivels = 0;



static double max_23_6 = 0;

static double max_38_2 = 0;

static double max_50_0 = 0;

static double max_61_8 = 0;



static double min_23_6 = 0;

static double min_38_2 = 0;

static double min_50_0 = 0;

static double min_61_8 = 0;

static double high_day = 0;

static double low_day = 0;

high_day = iHigh(Symbol(), PERIOD_D1, 1);

low_day = iLow(Symbol(), PERIOD_D1, 1);

int total = OrdersTotal(); // сколько всего ордеров открыто

double fUpperLevel = iHigh(Symbol(), PERIOD_D1, 1) + Delta * Point();

double fLowerLevel = iLow(Symbol(), PERIOD_D1, 1) - Delta * Point();

double TodayHi = iHigh(Symbol(),PERIOD_D1,0); // Цена закрытия предпоследнего дня

double TodayLow = iLow(Symbol(),PERIOD_D1,0); // Цена закрытия последнего дня

if (TodayHi>fUpperLevel && Open[0]
if (TodayLow fLowerLevel) CheckLowLivels = 1;

bool Open_Bay = fPreviousBid > 0 && Bid > fUpperLevel && fPreviousBid
bool Open_Sell = fPreviousBid > 0 && Bid = fLowerLevel && CheckLowLivels == 1;

// запоминаем текущий бид

fPreviousBid = Bid;

int Ticket,cnt,Total=0;



double spread=ask-bid;

int spread_points=(int)MathRound(spread/SymbolInfoDouble(Symbol(),SYMBOL_POINT));

comm=comm+"Вычисленный спред = "+(string)spread_points+" пунктов";

for(cnt=0;cnt
{

OrderSelect(cnt,SELECT_BY_POS);

if(OrderSymbol()==Symbol())

{

Total++;

Lot_23_6 = OrderLots()*Lot_Percent_23_6/100;if(Lot_23_6>OrderLots()||Lot_23_6100)Lot_23_6=100;}

Lot_23_6 = (NormalizeLot(Lot_23_6, False));

Lot_38_2 = OrderLots()*Lot_Percent_38_2/100;if(Lot_38_2>OrderLots()||Lot_38_2100)Lot_38_2=100;}

Lot_38_2 = (NormalizeLot(Lot_38_2, False));

Lot_50 = OrderLots()*Lot_Percent_50/100;if(Lot_50>OrderLots()||Lot_50100)Lot_50=100;}

Lot_50 = (NormalizeLot(Lot_50, False));

Lot_61_8 = OrderLots()*Lot_Percent_61_8/100;if(Lot_61_8>OrderLots()||Lot_61_8100)Lot_61_8=100;}

Lot_61_8 = (NormalizeLot(Lot_61_8, False));





if(OrderType()==OP_BUY)// long position is opened

{

max_23_6 = high_day + (MathAbs(high_day - low_day) / 4.236);

max_38_2 = high_day + (MathAbs(high_day - low_day) / 2.582);

max_50_0 = high_day + (MathAbs(high_day - low_day) / 1.960);

max_61_8 = high_day + (MathAbs(high_day - low_day) / 1.618);



if(Lot_38_2>0&& Bid> max_38_2)

{

if(Lot_38_2>0){

Print ("Частичное закрытие ордера Buy на уровне 32.2");

OrderClose(OrderTicket(), Lot_38_2, Bid, 20, Blue);return(0);}

return(0);

}

if(Lot_50>0&&Bid > max_50_0)

{

if(Lot_50>0){

Print ("Частичное закрытие ордера Buy на уровне 50");

OrderClose(OrderTicket(), Lot_50, Bid, 20, Blue);return(0);}



return(0);

}

if(Lot_61_8>0&&Bid > max_61_8)

{

if(Lot_61_8 > 0){

Print ("Частичное закрытие ордера Buy на уровне 61.8", Lot_61_8);

OrderClose(OrderTicket(), Lot_61_8, Bid, 20, Blue);return(0);}

return(0);

}



if( Bid > OrderOpenPrice()+(NoLoss*Point) && NoLoss>0 )

{

SL = NormalizeDouble(OrderOpenPrice()+(NoLoss*Point),Digits);

if(!CompareDoubles(OrderStopLoss(),SL)){

OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0);

}

return(0);

}

if( Bid > max_23_6 && OrderStopLoss()
{

SL = NormalizeDouble(OrderOpenPrice() + (NoLossFiboLevels*Point),Digits);

if (!CompareDoubles(OrderStopLoss(),SL)){

OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Blue);

Print ("Частичное закрытие ордера Buy на уровне 23.6");

OrderClose(OrderTicket(), Lot_23_6, Bid, 20, Blue);return(0);

}



}





}

if(OrderType()==OP_SELL)

{



//--sell---------------------------------------------------------------------------------------------------------------------

min_23_6 = low_day - (MathAbs(high_day - low_day) / 4.236);// Alert("min_23_6 ", min_23_6);

min_38_2 = low_day - (MathAbs(high_day - low_day) / 2.582);

min_50_0 = low_day - (MathAbs(high_day - low_day) / 1.960);

min_61_8 = low_day - (MathAbs(high_day - low_day) / 1.618);// Alert("min_61_8 ", min_61_8);





if(Lot_38_2>0&&Ask
{

if(Lot_38_2>0){

Print ("Частичное закрытие ордера Sell на уровне -38.2 ",Ask," Размер лота ",Lot_38_2);

OrderClose(OrderTicket(), Lot_38_2, Ask, 20, Blue);return(0);}



}

if(Lot_50>0&&Ask
{

if(Lot_50>0){

Print ("Частичное закрытие ордера Sell на уровне -50 ",Ask," Размер лота ",Lot_50);

OrderClose(OrderTicket(), Lot_50, Ask, 20, Blue);return(0);}



}

if(Lot_61_8>0&& Ask
{

if(Lot_61_8>0){

Print ("Частичное закрытие ордера Sell на уровне -61.8 ",Ask," Размер лота ",Lot_61_8);

OrderClose(OrderTicket(), Lot_61_8, Ask, 20, Blue);return(0);}



}

if( Ask 0 )

{

SL = NormalizeDouble(OrderOpenPrice() - (NoLoss*Point),Digits);

if (!CompareDoubles(OrderStopLoss(),SL)){

OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Blue);

}



return(0);

}

if( Ask min_23_6 )

{

SL = NormalizeDouble(OrderOpenPrice() - (NoLossFiboLevels*Point),Digits);

if (!CompareDoubles(OrderStopLoss(),SL)){

OrderModify(OrderTicket(),OrderOpenPrice(),SL,OrderTakeProfit(),0,Blue);

Print ("Частичное закрытие ордера Sell на уровне -23.6 ",Ask," Размер лота ", Lot_23_6);

OrderClose(OrderTicket(), Lot_23_6, MarketInfo(Symbol(), MODE_ASK), 20, Blue);

}



}



}

}

}

//+----Открытие позиций

int TradeTime=TimeDay(TimeCurrent());

int TradeTimeBuy=TimeDay(TimeCurrent());

int TradeTimeSell=TimeDay(TimeCurrent());

if(Total
{

if(Open_Bay && LastTradeTimeBuy!=TradeTimeBuy )

{

SL = iLow(symb,PERIOD_D1,0);

// Alert("(Bid-SL)*10000 ", (Bid-SL)*100000);

if((Bid-SL)*100000>StopLoss){SL = Bid - (StopLoss*Point);}

if(TakeProfit>0) TP = Ask + TakeProfit*Point;

if(Bid-SL
Ticket=OrderSend(Symbol(),OP_BUY,GetSizeLot(),Ask + Spread ,20,SL,TP);

if (Ticket > 0)

{

LastTradeTimeBuy=TradeTimeBuy; // задаем время сделки, чтобы сегодня больше не торговать

}

return(0);

}

//+----

if(Open_Sell && LastTradeTimeSell!=TradeTimeSell)

{

SL = iHigh(symb,PERIOD_D1,0);

if((Ask+SL)*100000>StopLoss){SL = Ask + (StopLoss*Point);}

if(TakeProfit>0) TP = Bid - TakeProfit*Point;

if (SL-Ask
Ticket = OrderSend(Symbol(),OP_SELL,GetSizeLot(),Bid - Spread,20,SL,TP);

if (Ticket > 0)

{

LastTradeTimeSell=TradeTimeSell; // задаем время сделки, чтобы сегодня больше не торговать

}

return(0);

}

}

// return(0);

}

int TradeStatuse()

{

if ((!IsTesting()) && IsStopped()) return (1); //--- Если не тестовый режим и советник приостановлен (IsStopped).

if ((!IsTesting()) && !IsTradeAllowed()) return (2); //--- Если не тестовый режим и торговля заблокирована (IsTradeAllowed).

if ((!IsTesting()) && IsTradeContextBusy()) return (3); //--- Если не тестовый режим и поток для выполнения торговых операции занят (IsTradeContextBusy).

if (Hour()
if (Hour() >= TimeEndFriday + DayOfWeek() == 5) return (5); //--- Проверка на торговое время в пятницу.

if (TimeEnd
{

if(Hour() >= TimeEnd && Hour()
}

else

{

if ((Hour() = TimeEnd)) return (6); //--- Проверка на торговое время.

}

if ((DayOfWeek() == 0) || (DayOfWeek() == 6)) return (7); //--- Выходные, некоторые брокеры как RVD торговля начинаеться в воскресение вечером

//---

return(0);

}

double GetSizeLot()

{

double dLot;

if (LotsWayChoice==0) dLot=Lots;

// фиксированный процент от депозита

if (LotsWayChoice==1)

{

// dLot=MathCeil(AccountFreeMargin()/10000*LotsPercent)/10;

dLot=MathFloor(AccountFreeMargin()/MarketInfo(Symbol(),MODE_LOTSIZE)/MarketInfo(Symbol(),MODE_MINLOT)*AccountLeverage()/100.0*LotsPercent) * MarketInfo(Symbol(),MODE_MINLOT);

}

// фиксированно-пропорциональный

if (LotsWayChoice==2)

{

int k=LotsDepoForOne;

for (double i=2; i
{

k=k+i*LotsDeltaDepo;

if (k>AccountFreeMargin())

{

dLot=(i-1)/10000; break;

}

}

}

// фракционно-фиксированный

if (LotsWayChoice==3)

{

dLot=MathCeil((AccountFreeMargin()-LotsDepoForOne)/LotsDeltaDepo)/10;

}

if (dLot
if (dLot>100) dLot=100;

return(dLot);

}





double NormalizeLot(double lo, bool ro=False, string sy="") {

double l, k;

if (sy=="" || sy=="0") sy=Symbol();

double ls=MarketInfo(sy, MODE_LOTSTEP);

double ml=MarketInfo(sy, MODE_MINLOT);

double mx=MarketInfo(sy, MODE_MAXLOT);

if (ml==0) ml=0.01;

if (mx==0) mx=100;

if (ls>0) k=1/ls; else k=1/ml;

if (ro) l=MathCeil(lo*k)/k; else l=MathFloor(lo*k)/k;

if (l
if (l>mx) l=mx;

return(l);

}



bool CompareDoubles(double number1,double number2)

{

if(NormalizeDouble(number1-number2,8)==0) return(true);

else return(false);

}

void NoLoss() {

int tip,Ticket;

double StLo,OSL,OOP;

for (int i=0; i
if (OrderSelect(i, SELECT_BY_POS)) {

tip = OrderType();

if (tip
OSL = NormalizeDouble(OrderStopLoss(),Digits);

OOP = NormalizeDouble(OrderOpenPrice(),Digits);

Ticket = OrderTicket();

if (tip==OP_BUY) {

if (OSL>OOP) continue;

StLo = NormalizeDouble(OOP+Point,Digits);

if (NormalizeDouble((Bid-OOP)/Point,0)>=NoLoss) {

if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White))

Print("NoLoss Error ",GetLastError()," buy SL ",OSL,"->",StLo);

}

}

if (tip==OP_SELL) {

if (OSL
StLo = NormalizeDouble(OOP-Point,Digits);

if (NormalizeDouble((OOP-Ask)/Point,0)>=NoLoss) {

if (!OrderModify(Ticket,OOP,StLo,OrderTakeProfit(),0,White))

Print("NoLoss Error ",GetLastError()," sell SL ",OSL,"->",StLo);

}

}

}

}

}

} :((

Изменено пользователем Старик
Ссылка на сообщение
Поделиться на другие сайты

  • 3 weeks later...
Доработка советников: общая тема Опубликовано

Доброго времени суток, уважаемые программисты.
Прошу прикрутить к старенькому советнику
Магик(кинул на демо, а он все ордера убил)
контроль спреда(по ночам и при закрытии рынка зашкаливает)
СтопЛосс(советник использует усреднение, а я хочу оптить под 1 ордер)
Советник 2012года, посмотрите, может что подправить надо под новые билды.
Заранее благодарю!

AUDNZD_Flat_Lock.v2.mq4

Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


Доброго времени суток, уважаемые программисты.
Прошу прикрутить к старенькому советнику
Магик(кинул на демо, а он все ордера убил)
контроль спреда(по ночам и при закрытии рынка зашкаливает)
СтопЛосс(советник использует усреднение, а я хочу оптить под 1 ордер)
Советник 2012года, посмотрите, может что подправить надо под новые билды.
Заранее благодарю!


Проверьте..

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

AUDNZD_Flat_Lock.v3.mq4

Изменено пользователем usver73
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
usver73, спасибо за работу. Кинул на демо, другие ордера не убивает, уже хорошо, но видит как свои. Свои еще не открывал)

"не дай бог, реала я бы не применял"
Но мне нужен советник именно для реала, поэтому и попросил добавить функции магик, контроль спреда. На демо, если один, и в оригинале работает. Сейчас копирую уровни с демо на реал и выставляю лимитники руками. Но понял, что практически не возможно уследить за изменениями уровней при сильных движениях цены и надо тупить в монитор 24 часа в сутки.
Мне нужна уверенность, что он не начнет косячить на реале.
Благодарю за понимание!
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано


usver73, спасибо за работу. Кинул на демо, другие ордера не убивает, уже хорошо, но видит как свои. Свои еще не открывал)

"не дай бог, реала я бы не применял"
Но мне нужен советник именно для реала, поэтому и попросил добавить функции магик, контроль спреда. На демо, если один, и в оригинале работает. Сейчас копирую уровни с демо на реал и выставляю лимитники руками. Но понял, что практически не возможно уследить за изменениями уровней при сильных движениях цены и надо тупить в монитор 24 часа в сутки.
Мне нужна уверенность, что он не начнет косячить на реале.
Благодарю за понимание!


Учет магика включен только в работу с ордерами. Графические элементы не изменял. Поправлю позже.
Что касается реала, то уже писал, надо поглубже внести изменения, дабы учесть все моменты.
И вопрос по логике:
Если правильно прочитал код, то определяется канал и от средней линии открываются ордера. Так?
Если- да, то "жесткий" СтопЛосс не очень логичен, разумней привязаться к тому же каналу (%, граница и т.п.).
Далее- канал строится по заданному количеству свечей. А на каком ТФ должен работать сов? Я бы тоже вынес это в настройку... А то при переключении ТФ в терминале хрень получится...
  • Лайк 1
Ссылка на сообщение
Поделиться на другие сайты

Доработка советников: общая тема Опубликовано
Учет магика включен только в работу с ордерами. Графические элементы не изменял. Поправлю позже.
кол-во ордеров на графике нужно, если использовать усреднение( сразу видно сколько колен открыто)
Что касается реала, то уже писал, надо поглубже внести изменения, дабы учесть все моменты.
было бы очень здорово
Если правильно прочитал код, то определяется канал и от средней линии открываются ордера. Так?
да все верно
Если- да, то "жесткий" СтопЛосс не очень логичен, разумней привязаться к тому же каналу (%, граница и т.п.).
стоплосс просил, чтобы посмотреть, как будет себя вести с жестким стопом. Оригинал не использует стоп, а усредняется и закрывает все ордера по Центру. Гонял в тестере, прибыль больше, но и просадка больше. Может кому то этот вариант больше понравится)
разумней привязаться к тому же каналу (%, граница и т.п.)
надо пробовать и тестить, если они будут отключаемы и регулироваться почему бы нет)
канал строится по заданному количеству свечей. А на каком ТФ должен работать сов? Я бы тоже вынес это в настройку... А то при переключении ТФ в терминале хрень получится
Bar_analys = 800; // количество баров анализируемого периода.
ТФ не важен, важен отрезок времени. Просто подбирается количество баров под ТФ. пример На 1часе будет 200 баров, на 30мин 400 баров, на 15мин 800 на 5мин 2400 баров
Вначале я думал, что сов перемещает мах и мин по закрытию свечи и уменьшал ТФ для точности входа, а оказалось не ждет закрытия а перемещает мах/мин в реальном времени, соответственно и точки входа или ТП меняются.
Надеюсь вы меня поняли.
Спойлер



Добавлено: 15-06-2017 12:20:26

usver73, сейчас включил визуализацию, после каждого стопа сразу открывается новый ордер. Макс ордер поставил 0, все равно ставит ордера при каждом стопе.

http://fxpics.ru/image/5erGX Изменено пользователем sever51
Ссылка на сообщение
Поделиться на другие сайты

  • idinesh changed the title to Assae Elite Pro tlap version source code need i have plan convert this mt4 to mt5 and it possible mt4 dll file modified mt5 version
  • Pavel888 pinned this тема

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Специальное предложение


  • ×
    ×
    • Создать...