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

некто

Местный знаток
да, спасибо, симулировал тик и у меня появился, похоже устраивает.
 

sergeysv

Активный участник
Приветствую!
Сделал индюк для конвертации бакса в украинскую гривну,чтоб показывал баланс, риск на день и риск на сделку в украинской гривне.
Подскажите пожалуйста как вытаскивать автоматически KURS с сайта wm.exchanger.ru/asp/wmlist.asp
с объективными ценами что по чём.
На скрине нужная цифра в верхней строчке.,которая должна обновляться автоматически в терминале.
Буду благодарен за совет или помощь если это реально сделать.
 

Вложения

  • 2017-08-27__15--48.png
    2017-08-27__15--48.png
    46,4 КБ · Просмотры: 109
  • КУРС.mq4
    9,9 КБ · Просмотры: 30
Последнее редактирование модератором:

PavlovTrade

Местный житель
Спасибо, не подходит, показывает со сдвигом назад, с помощью "shift" на нужное место не настраивается
смещения нет, показывает верно. да и по вашему скриншоту это тоже видно. Тот что у вас продлевает имеющееся значение вперед до следующей свечи старшего тайм фрейма.
SNAG-0113.png
 

некто

Местный знаток
показывает верно, но сам мувинг текущего дня размещён на интервале предыдущего, мне нужен был результат как на 2 скрине
 

Вложения

  • 2017-08-27 15-46-39.jpg
    2017-08-27 15-46-39.jpg
    207,3 КБ · Просмотры: 129
  • 2017-08-27 20-28-46.jpg
    2017-08-27 20-28-46.jpg
    158,4 КБ · Просмотры: 80

Anna89

Новичок форума
Доработка советника

Здравствуйте. Помогите, пожалуйста, доработать советник. Не могу никак прописать условие для такого индикатора:

Условие должно быть таким:
- цена ниже нижней границы канала

- после пробития канала УЖЕ был должный сигнал

- цена достигла минимального Low после выхода из канала, отмеченного ранее сигналом

- границы канала (и центральная) не меняли направление

Код советника:

#define MAGIC 29062006

//Параметры индикатора
extern string Indicator_File = "3 in 1 Alert"; //Индикатор 3 in 1 Alert
extern int HalfLength = 48; //Период
//extern int MA_MODE = 0;
extern int PRICE_MODE = 0; //Тип цены
extern int ATR_PERIOD = 100; //Период ATR
extern double K = 2.0; //Ширина канала
//extern bool ATR_MODE = false;

//Параметры эксперта
extern string Ekspert = "ArrowK"; //Эксперт ArrowK
extern int RiskMax = 10; //Максимальный риск (%)
extern double LotsMax = 0.01; //Максимальный размер лота
extern int DecreaseFactor = 6;
input bool stoploss = false; //СтопЛосс разрешен
extern int StopLoss = 100; //СтопЛосс
input bool trail = false; //Трейлингстоп разрешен
extern int TrailingStop = 200; //Размер стоп ордера
extern int TrailingStep = 100; //Шаг перемещения
extern bool AutoClose =true;//выключатель

double Al_1,Al_2,Al_3,Al_4,Al_5,sl;
//+------------------------------------------------------------------+
//Расчет оптимального размера лота
double LotsOptimized()
{
double Lots=NormalizeDouble(AccountBalance()*RiskMax/(100000.0*Ask),1);
if(AccountFreeMargin()<(1000*Ask*Lots))
{
Lots=NormalizeDouble(AccountFreeMargin()*RiskMax/(100000.0*Ask),1);
}
if(Lots>LotsMax)
{
Lots=LotsMax;
Print("Превышен максимальный размер лота. Размер лота изменен на ",LotsMax);
}

int orders=HistoryTotal();
int losses=0;

if(DecreaseFactor>0)
{
for(int i=orders-1;i>=0;i--)
{
if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY)==false)
{
Print("Ошибка в истории!");
break;
}
if(OrderSymbol()!=Symbol() || OrderMagicNumber()!=MAGIC || OrderType()>OP_SELL)continue;
if(OrderProfit()>0) break;
if(OrderProfit()<0) losses++;
}
if(losses>1)
{
Lots=NormalizeDouble(Lots/(DecreaseFactor*losses),1);
}
}
if(Lots<MarketInfo(Symbol(),MODE_MINLOT))
{
Lots=MarketInfo(Symbol(),MODE_MINLOT);
}
double raznica = MathMod(Lots,MarketInfo(Symbol(),MODE_LOTSTEP));
if(raznica>0.0)
{
Lots -= raznica;
}
return(Lots);
}
//+------------------------------------------------------------------+
bool symbolOrders()
{
int orders = OrdersTotal();
for(int i=orders-1; i>=0; i--)
{
if(!OrderSelect(i, SELECT_BY_POS ))
{
Print("OrderSelect( ", i, ", SELECT_BY_POS ) - Error #", GetLastError());
continue;
}
if(OrderSymbol()==Symbol())
{
if(OrderMagicNumber()==MAGIC)
{
return(true);
}
}
}
return(false);
}
//+------------------------------------------------------------------+
int start()
{
int cnt, ticket;
int total=OrdersTotal();

if(Bars<100)
{
Print("Количество баров меньше 100");
return(0);
}

Al_1=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,0,0);
Al_2=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,1,0);
Al_3=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,2,0);
Al_4=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,3,0);
Al_5=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,4,0);

if(!symbolOrders())
{
if(AccountFreeMargin()<(1000*LotsOptimized()))
{
Print("У Вас недостаточно денег. Свободной маржи = ", AccountFreeMargin());
return(0);
}
if(Al_1>=Al_2)
{
if(!IsTradeAllowed())
{
Print("BUY: Торговый поток занят.");
return(0);
}
if(!stoploss) sl=NULL; else sl=NormalizeDouble(Ask-StopLoss*Point,Digits);
{
ticket=OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,sl,0,"",MAGIC,0,CLR_NONE);
}
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("Открыта позиция на покупку по сигналу BUY: ",OrderOpenPrice());
}
else
{
Print("Ошибка открытия позиции на покупку по сигналу BUY: ",GetLastError());
return(0);
}
}
}

if(Al_3<=Al_2)
{
if(!IsTradeAllowed())
{
Print("SELL: Торговый поток занят.");
return(0);
}
if(!stoploss) sl=NULL; else sl=NormalizeDouble(Bid+StopLoss*Point,Digits);
{
ticket=OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,sl,0,"",MAGIC,0,CLR_NONE);
}
if(ticket>0)
{
if(OrderSelect(ticket,SELECT_BY_TICKET,MODE_TRADES))
{
Print("Открыта позиция на продажу по сигналу SELL: ",OrderOpenPrice());
}
else
{
Print("Ошибка открытия позиции на продажу по сигналу SELL: ",GetLastError());
return(0);
}
}
}
}

//********* Закрытие позиций ****************************************
if (AutoClose) {
//----переменные для закрытия позиций ----
Al_1=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,0,0);
Al_2=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,1,0);
Al_3=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,2,0);
Al_4=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,3,0);
Al_5=iCustom(NULL,0,"3 in 1 Alert",HalfLength,PRICE_MODE,ATR_PERIOD,K,4,0);
//----------------------------------------------------------------------
for (int v=0; v<OrdersTotal(); v++) {
if (OrderSelect(v, SELECT_BY_POS, MODE_TRADES)) {
if (OrderSymbol()==Symbol()&& OrderMagicNumber()==MAGIC) {
//-----------------------------------------------------
if (OrderType() == OP_BUY) {
if
(Bid<=Al_3) {
OrderClose(OrderTicket(),OrderLots(),Bid,3,Green); // закрываем позицию
return(0); // выходим
}
}
//--------------------------------------------------------
if (OrderType() == OP_SELL) {
if
(Ask>=Al_3) {
OrderClose(OrderTicket(),OrderLots(),Ask,3,Green); // закрываем позицию
return(0); // выходим
}
}
//-------------------------------------------------------
} // Symbol()
} // select
} //total
} //Close_
//+------------------------------------------------------------------+
if(trail==true)
{
Trailling();
}
//+------------------------------------------------------------------+
return(0);
}
//+------------------------------------------------------------------+
 
Последнее редактирование модератором:

AlexeyVik

Программист mql4 mql5
Приветствую!
Сделал индюк для конвертации бакса в украинскую гривну,чтоб показывал баланс, риск на день и риск на сделку в украинской гривне.
Подскажите пожалуйста как вытаскивать автоматически KURS с сайта wm.exchanger.ru/asp/wmlist.asp
с объективными ценами что по чём.
На скрине нужная цифра в верхней строчке.,которая должна обновляться автоматически в терминале.
Буду благодарен за совет или помощь если это реально сделать.
Надо вытаскивать таблицу в формате .csv и её читать в нужном месте. Но сам я никогда этого не делал, только читал о подобных делах...
 
Последнее редактирование модератором:

PavlovTrade

Местный житель
А чем не подошёл этот?

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

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

Режим нужный для проверки советников работающих на нескольких тайм фреймах.

В тестере в режиме индикатора ваша версия работает хорошо.
 

PavlovTrade

Местный житель
Здравствуйте. Помогите, пожалуйста, доработать советник. Не могу никак прописать условие для такого индикатора:

Условие должно быть таким:
- цена ниже нижней границы канала

- после пробития канала УЖЕ был должный сигнал

- цена достигла минимального Low после выхода из канала, отмеченного ранее сигналом

- границы канала (и центральная) не меняли направление

Код советника:
прикрепите код советника файлом и индикатор тоже.
 

sergeysv

Активный участник
Приветствую!
Вразумите ,пожалуйста,как сделать функцию чтоб сов сам закрывал ПОЛОВИНУ объёма всех ордеров на инструменте при профите 1 к 1 .
Сам накуралесил ,но он в отказе работать как надо...

void closeS()
{
int j,OT;
double ratios = (OrderClosePrice() - OrderOpenPrice()) / (OrderOpenPrice() - OrderStopLoss());
ratios = 1.00;
for (j = OrdersTotal()-1; j >= 0; j--)
{
if (OrderSelect(j, SELECT_BY_POS))
{
if (OrderSymbol() == Symbol())
{
OT = OrderType();
if (OT>1) continue;
if (OT==OP_BUY)
{
ratios=OrderClose(OrderTicket(),(OrderLots()/2),NormalizeDouble(Bid,Digits),3);
}
if (OT==OP_SELL)
{
ratios=OrderClose(OrderTicket(),(OrderLots()/2),NormalizeDouble(Ask,Digits),3);
}
}
}
}
}
 

К-о-л-я-н-ы-ч

Новичок форума
Уберите баг пожалуйста

Пожалуйста помогите.
 

Вложения

  • MA2_Signal_ver2.1_mod.ex4
    15,3 КБ · Просмотры: 22
  • MA2_Signal_ver2.1_mod.mq4
    12,1 КБ · Просмотры: 37

PavlovTrade

Местный житель
Приветствую!
Вразумите ,пожалуйста,как сделать функцию чтоб сов сам закрывал ПОЛОВИНУ объёма всех ордеров на инструменте при профите 1 к 1 .
Сам накуралесил ,но он в отказе работать как надо...

Накуралесили это точно ;)
прикрепляйте пожалуйста код файлом, так удобней редактировать.
Посмотреть вложение 123.mq4
вот правильный вариант с комменатриями что куда и зачем.
Посмотреть вложение 321.mq4
вот ваш вариант с комментариями некоторых ошибок.
 

К-о-л-я-н-ы-ч

Новичок форума

nzdusd-m30-forex-club-international.png
 
Последнее редактирование модератором:

lori

Активный участник
всем привет! помогите пожалуйста, не отображается на графике
 

Вложения

  • !!__WPRxMA_STF_15NR_COLOR.mq4
    7,3 КБ · Просмотры: 44

Evrom

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

Все работает. Попробуй настройки из вложения, к сожалению set файл не запоминается.
Настройки Ext_Shift_Fast_MA и Ext_Shift_Slow_MA двигают график.

При настройке (0) - стрелка ресуется на закрывшемся "баре 1" и при закрытии "бара 0" не состоявшеяся стрелка пропадает, если условия при закрытии 0-бара удовлетворительные стрелка над баром остается, бар со стрелкой становится "баром 2" и далее не изменяется.

При настройке (1) - стрелка ресуется на формирующимся "баре 0" и при закрытии "бара 0" не состоявшеяся стрелка пропадает, если условия при закрытии 0-бара удовлетворительные стрелка над баром остается, бар становится "баром 1" и далее не изменяется.

Позиции рекомендуется открывать после закрытия "бара 0"

Пробуйте менять настройки в разных ситуациях.
 

Вложения

  • MA2_Signal_ver2.1_mod.jpg
    MA2_Signal_ver2.1_mod.jpg
    166,1 КБ · Просмотры: 201
Последнее редактирование модератором:
Верх