Закрытая тема
08.12.2013, 09:07
Аватар для palpalyh
palpalyh palpalyh вне форума Интересующийся
Регистрация: 13.02.2010 / Сообщений: 18
Поблагодарили 3 раз(а) / Репутация: 4
А почему? Это сложно? Может кто-нибудь другой сделает.
08.12.2013, 10:23
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
А почему? Это сложно? Может кто-нибудь другой сделает.
Может. Я имел ввиду что я не буду.
08.12.2013, 10:44
Аватар для palpalyh
palpalyh palpalyh вне форума Интересующийся
Регистрация: 13.02.2010 / Сообщений: 18
Поблагодарили 3 раз(а) / Репутация: 4

По умолчанию Помогите доработать индикатор

Господа программисты доделайте пожалуйста индикатор! Есть алертный индикатор который включает в себя два индикатора , но у него появляется только алерт( UP или DOWN). А нужно чтобы была одна стрелка от этого индикатора( + алерт), которая бы подтверждала что что оба индикатора поменяли цвет. И еще не пишет на какой паре. Если можно то буду очень признателен.
СПАСИБО!
08.12.2013, 12:40
Аватар для Midav
Midav Midav вне форума Прохожий
Регистрация: 05.12.2013 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: 1
Здравствуйте. Посмотрите пожалуйста. Скажу сразу что я этот советник списал из обучающего виде по программированию. Только стоплос сам добавил. Проблема в том что этот советник (мартингейл) всегда по разному удваивает ставку или вообще не удваивает. А должен он только удваивать после каждого стоп лоса. Сам советник:

Скрытый текст

//+------------------------------------------------------------------+
//| 21.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| _http://www.metaquotes.net5 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"



extern double Lots = 0.1;
extern int TakeProfit = 50;
extern int Step = 50;
extern double Multiplier = 2;
extern int Slippage = 5;
extern int Magic = 123;
extern int StopLoss = 50;

int ticket;
double price, TP, lastlot, SL;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (Digits == 3 || Digits ==5)
{
TakeProfit *= 10;
Step *= 10;
Slippage *= 10;
StopLoss *= 10;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (CountTrades() == 0)
{
double ima = iMA(Symbol(), PERIOD_M1, 10, 0, MODE_SMA, PRICE_CLOSE, 1);

if (Ask > ima)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, 0, "", Magic,0, Blue);
if(ticket > 0)
{
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
OrderModify(ticket, OrderOpenPrice(), SL, TP, 0);
SL = NormalizeDouble(Bid - StopLoss * Point, Digits);
OrderModify(ticket, OrderOpenPrice(), SL, TP, 0);
}
}
else if(Bid < ima)
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, SL, 0, "", Magic,0, Red);
if(ticket > 0)
{
TP = NormalizeDouble(Bid - StopLoss * Point, Digits);
OrderModify(ticket, OrderOpenPrice(), SL, TP, 0);
SL = NormalizeDouble(Ask + TakeProfit * Point, Digits);
OrderModify(ticket, OrderOpenPrice(), SL, TP, 0);
}
}
}
else
{
int order_type = FindLastOrderType();
if (order_type == OP_BUY)
{
price = FindLastPrice(OP_BUY);
if(Ask <= price - Step * Point)
{
lastlot = FindLastLots(OP_BUY);
lastlot = NormalizeDouble(lastlot * Multiplier, 2);
ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask, Slippage, SL, 0, "", Magic, 0, Blue);
if (ticket > 0)
ModifyOrders(OP_BUY);

}
}
else if (order_type == OP_SELL)
{
price = FindLastPrice(OP_SELL);
if(Bid <= price + Step * Point)
{
lastlot = FindLastLots(OP_SELL);
lastlot = NormalizeDouble(lastlot * Multiplier, 2);
ticket = OrderSend(Symbol(), OP_SELL, lastlot, Bid, Slippage, SL, 0, "", Magic, 0, Red);
if (ticket > 0)
ModifyOrders(OP_SELL);

}
}
}

return(0);
}
//+------------------------------------------------------------------+
void ModifyOrders(int otype)
{
double avgprice = 0,
order_lots = 0;

price = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
{
price += OrderOpenPrice() * OrderLots();
order_lots += OrderLots();
}
}
}

avgprice = NormalizeDouble(price / order_lots, Digits);

if (otype == OP_BUY) TP = NormalizeDouble(avgprice + TakeProfit*Point, Digits);
if (otype == OP_SELL) TP = NormalizeDouble(avgprice - TakeProfit*Point, Digits);

for (i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0);
}
}

}
//+------------------------------------------------------------------+
double FindLastLots(int otype)
{
double oldlots;
int oldticket;

ticket = 0;
for(int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
{
oldticket = OrderTicket();
if(oldticket > ticket)
{
oldlots = OrderLots();
ticket = oldticket;
}
}
}
}
return(oldlots);
}
//+------------------------------------------------------------------+
double FindLastPrice (int otype)
{
double oldopenprice;
int oldticket;

ticket = 0;

for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
{
oldticket = OrderTicket();
if(oldticket > ticket)
{
oldopenprice = OrderOpenPrice();
ticket = oldticket;
}
}
}
}
return(oldopenprice);
}
//+------------------------------------------------------------------+
int FindLastOrderType()
{
for (int i= OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
return(OrderType());
}
}
return(-1);
}
//+------------------------------------------------------------------+


int CountTrades()
{
int count = 0;
for (int i=OrdersTotal()-1; i>=0; i-- )
{
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
count++;
}

}

return(count);
}





//+------------------------------------------------------------------+
[свернуть]

Последний раз редактировалось NSerega; 08.12.2013 в 14:23.
08.12.2013, 12:50
Аватар для Midav
Midav Midav вне форума Прохожий
Регистрация: 05.12.2013 / Сообщений: 3
Поблагодарили 0 раз(а) / Репутация: 1
Здравствуйте. Этот мартингейл почему то удваивает прибыльные сделки но не удваивает после с топ лоса, но иногда все правильно делает. Этот советник я списал с обучающего видео, только стоп лос я сам добавил. Посмотрите пожалуйста не так.
08.12.2013, 15:14
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Здравствуйте. Посмотрите пожалуйста. Скажу сразу что я этот советник списал из обучающего виде по программированию. Только стоплос сам добавил. Проблема в том что этот советник (мартингейл) всегда по разному удваивает ставку или вообще не удваивает. А должен он только удваивать после каждого стоп лоса. Сам советник:

Скрытый текст

//+------------------------------------------------------------------+
//| 21.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| _http://www.metaquotes.net5 |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"



extern double Lots = 0.1;
extern int TakeProfit = 50;
extern int Step = 50;
extern double Multiplier = 2;
extern int Slippage = 5;
extern int Magic = 123;
extern int StopLoss = 50;

int ticket;
double price, TP, lastlot, SL;
//+------------------------------------------------------------------+
//| expert initialization function |
//+------------------------------------------------------------------+
int init()
{
if (Digits == 3 || Digits ==5)
{
TakeProfit *= 10;
Step *= 10;
Slippage *= 10;
StopLoss *= 10;
}
return(0);
}
//+------------------------------------------------------------------+
//| expert deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{

return(0);
}
//+------------------------------------------------------------------+
//| expert start function |
//+------------------------------------------------------------------+
int start()
{
if (CountTrades() == 0)
{
double ima = iMA(Symbol(), PERIOD_M1, 10, 0, MODE_SMA, PRICE_CLOSE, 1);

if (Ask > ima)
{
ticket = OrderSend(Symbol(), OP_BUY, Lots, Ask, Slippage, SL, 0, "", Magic,0, Blue);
if(ticket > 0)
{
TP = NormalizeDouble(Ask + TakeProfit * Point, Digits);
OrderModify(ticket, OrderOpenPrice(), SL, TP, 0);
SL = NormalizeDouble(Bid - StopLoss * Point, Digits);
OrderModify(ticket, OrderOpenPrice(), SL, TP, 0);
}
}
else if(Bid < ima)
{
ticket = OrderSend(Symbol(), OP_SELL, Lots, Bid, Slippage, SL, 0, "", Magic,0, Red);
if(ticket > 0)
{
TP = NormalizeDouble(Bid - StopLoss * Point, Digits);
OrderModify(ticket, OrderOpenPrice(), SL, TP, 0);
SL = NormalizeDouble(Ask + TakeProfit * Point, Digits);
OrderModify(ticket, OrderOpenPrice(), SL, TP, 0);
}
}
}
else
{
int order_type = FindLastOrderType();
if (order_type == OP_BUY)
{
price = FindLastPrice(OP_BUY);
if(Ask <= price - Step * Point)
{
lastlot = FindLastLots(OP_BUY);
lastlot = NormalizeDouble(lastlot * Multiplier, 2);
ticket = OrderSend(Symbol(), OP_BUY, lastlot, Ask, Slippage, SL, 0, "", Magic, 0, Blue);
if (ticket > 0)
ModifyOrders(OP_BUY);

}
}
else if (order_type == OP_SELL)
{
price = FindLastPrice(OP_SELL);
if(Bid <= price + Step * Point)
{
lastlot = FindLastLots(OP_SELL);
lastlot = NormalizeDouble(lastlot * Multiplier, 2);
ticket = OrderSend(Symbol(), OP_SELL, lastlot, Bid, Slippage, SL, 0, "", Magic, 0, Red);
if (ticket > 0)
ModifyOrders(OP_SELL);

}
}
}

return(0);
}
//+------------------------------------------------------------------+
void ModifyOrders(int otype)
{
double avgprice = 0,
order_lots = 0;

price = 0;
for (int i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
{
price += OrderOpenPrice() * OrderLots();
order_lots += OrderLots();
}
}
}

avgprice = NormalizeDouble(price / order_lots, Digits);

if (otype == OP_BUY) TP = NormalizeDouble(avgprice + TakeProfit*Point, Digits);
if (otype == OP_SELL) TP = NormalizeDouble(avgprice - TakeProfit*Point, Digits);

for (i=OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
OrderModify(OrderTicket(), OrderOpenPrice(), SL, TP, 0);
}
}

}
//+------------------------------------------------------------------+
double FindLastLots(int otype)
{
double oldlots;
int oldticket;

ticket = 0;
for(int i = OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
{
oldticket = OrderTicket();
if(oldticket > ticket)
{
oldlots = OrderLots();
ticket = oldticket;
}
}
}
}
return(oldlots);
}
//+------------------------------------------------------------------+
double FindLastPrice (int otype)
{
double oldopenprice;
int oldticket;

ticket = 0;

for(int i=OrdersTotal()-1; i>=0; i--)
{
if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
{
oldticket = OrderTicket();
if(oldticket > ticket)
{
oldopenprice = OrderOpenPrice();
ticket = oldticket;
}
}
}
}
return(oldopenprice);
}
//+------------------------------------------------------------------+
int FindLastOrderType()
{
for (int i= OrdersTotal()-1; i>=0; i--)
{
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
{
if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
return(OrderType());
}
}
return(-1);
}
//+------------------------------------------------------------------+


int CountTrades()
{
int count = 0;
for (int i=OrdersTotal()-1; i>=0; i-- )
{
if(OrderSelect (i, SELECT_BY_POS, MODE_TRADES))
{
if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic)
count++;
}

}

return(count);
}





//+------------------------------------------------------------------+
[свернуть]
Тут есть функция мартини
http://forexsystemsru.com/indikatory/69427-indikatory-ot-eevviill-5.html#post596494
09.12.2013, 02:45
Аватар для BorisN
BorisN BorisN вне форума Новичок форума
Регистрация: 04.08.2013 / Сообщений: 45
Поблагодарили 26 раз(а) / Репутация: 27
Уважаемые, помогите пожалуйста дополить индикатор - ставит стрелки при пробое границ полос Болинджера. Я нашел в сети такой индикатор - но в нем параметры жестко зашиты, в соседней ветке его декомпильнули, я посмотрел в код, но использования индикатора полос Болинджера не нашел - вместо него не пойми что используется - иногда стрелки вообще от балды появляются на графике (но при этом, в остальных 99% случаев рисует правильно).
По идее там нужно просто вместо этого не пойми что вставить проверку на пробой границ индикатора полос Болинджера.
Может кто возьмется?
09.12.2013, 07:27
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Уважаемые, помогите пожалуйста дополить индикатор - ставит стрелки при пробое границ полос Болинджера. Я нашел в сети такой индикатор - но в нем параметры жестко зашиты, в соседней ветке его декомпильнули, я посмотрел в код, но использования индикатора полос Болинджера не нашел - вместо него не пойми что используется - иногда стрелки вообще от балды появляются на графике (но при этом, в остальных 99% случаев рисует правильно).
По идее там нужно просто вместо этого не пойми что вставить проверку на пробой границ индикатора полос Болинджера.
Может кто возьмется?
И что нету в интернете индикатора болинджера со стрелками?
09.12.2013, 09:05
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
И что нету в интернете индикатора болинджера со стрелками?
http://forexsystemsru.com/indikatory/25547-novye-indikatory-bollindzhera.html#post734753
09.12.2013, 10:16
Аватар для donc09
donc09 donc09 вне форума Элитный участник
Регистрация: 04.07.2010 / Адрес: Краснодар / Сообщений: 1,029
Поблагодарили 1,605 раз(а) / Репутация: 1609
Если можно просьба посмотреть индикатор. Должен рисовать линию . а он показывает вертикально. При обновлении выравнивается , а с новой свечкой снова падает.
Иду я против топора в руках сжимая лом, как символ торжества добра в его борьбе со злом.
09.12.2013, 11:03
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Если можно просьба посмотреть индикатор. Должен рисовать линию . а он показывает вертикально. При обновлении выравнивается , а с новой свечкой снова падает.
Попробуй это удалить. Что то я не поянл зачем оно там.
PHP код:
//---- histogram line counted in the 3-nd buffer
   
for(i=0i<limiti++)
      
HistoBuffer[i]=Close[i]-(MacdBuffer[i]+SignalBuffer[i]);
      
   for(
i=0i<limiti++)
      
MacdBuffer[i]=iMAOnArray(HistoBuffer,0,SignalSMA,0,MODE_SMA,i); 
09.12.2013, 11:26
Аватар для donc09
donc09 donc09 вне форума Элитный участник
Регистрация: 04.07.2010 / Адрес: Краснодар / Сообщений: 1,029
Поблагодарили 1,605 раз(а) / Репутация: 1609
100...... спасибо, Заработал как надо.
Иду я против топора в руках сжимая лом, как символ торжества добра в его борьбе со злом.
09.12.2013, 11:39
Аватар для BorisN
BorisN BorisN вне форума Новичок форума
Регистрация: 04.08.2013 / Сообщений: 45
Поблагодарили 26 раз(а) / Репутация: 27
http://forexsystemsru.com/indikatory/25547-novye-indikatory-bollindzhera.html#post734753

Да там как раз то о чем я говорю - там не болинджер используется
PHP код:
      highest_20 iHighest(NULL0MODE_HIGHGi_88Li_8 Gi_88 2);
      
lowest_24 iLowest(NULL0MODE_LOWGi_88Li_8 Gi_88 2);
      if (
Li_8 == highest_20G_ibuf_92[Li_8] = High[highest_20] + SignalGap Point;
      if (
Li_8 == lowest_24G_ibuf_96[Li_8] = Low[lowest_24] - SignalGap Point
на зигзаг похоже
09.12.2013, 11:52
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Да там как раз то о чем я говорю - там не болинджер используется
PHP код:
      highest_20 iHighest(NULL0MODE_HIGHGi_88Li_8 Gi_88 2);
      
lowest_24 iLowest(NULL0MODE_LOWGi_88Li_8 Gi_88 2);
      if (
Li_8 == highest_20G_ibuf_92[Li_8] = High[highest_20] + SignalGap Point;
      if (
Li_8 == lowest_24G_ibuf_96[Li_8] = Low[lowest_24] - SignalGap Point
на зигзаг похоже
Поискать в интернете вам индикатор со стрелками?
09.12.2013, 12:06
Аватар для BorisN
BorisN BorisN вне форума Новичок форума
Регистрация: 04.08.2013 / Сообщений: 45
Поблагодарили 26 раз(а) / Репутация: 27
намек понял Поищу, спасибо. извиняюсь за беспокойство
09.12.2013, 13:07
Аватар для osvit
osvit osvit вне форума Активный участник
Регистрация: 17.05.2012 / Сообщений: 260
Поблагодарили 45 раз(а) / Репутация: 46

По умолчанию Помогите с советником

Помогите с советником нужно чтобы он мог открывать не только отложенные ордера,но и терминальные ордера. Что то типо при дистанции от цены "0" сова открывает терминальные ордера. Зарание спасибо.
09.12.2013, 13:28
Аватар для Sergey55555555
Sergey55555555 Sergey55555555 на форуме Почётный гражданин
Регистрация: 26.07.2013 / Сообщений: 365
Поблагодарили 341 раз(а) / Репутация: 336
Добрый день.
Этот инди расставляет текущие уровни поддержки-сопротивления,
но только по D1 и W.
Пожалуйста, добавьте к нему по аналогии уровни М5 и Н1.

Последний раз редактировалось Sergey55555555; 19.01.2014 в 12:25.
09.12.2013, 13:54
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Помогите с советником нужно чтобы он мог открывать не только отложенные ордера,но и терминальные ордера. Что то типо при дистанции от цены "0" сова открывает терминальные ордера. Зарание спасибо.
Может сначало глянуть или это уже реализовано?
09.12.2013, 13:57
Аватар для eevviill
eevviill eevviill вне форума Заблокирован
За второе место в конкурсе 

Регистрация: 30.07.2009 / Сообщений: 5,474
Поблагодарили 9,035 раз(а) / Репутация: 9035
Сообщение от: Sergey55555555
Добрый день.
Этот инди расставляет текущие уровни поддержки-сопротивления,
но только по D1 и W.
Пожалуйста, добавьте к нему по аналогии уровни М5 и Н1.
Много писанины.
09.12.2013, 14:09
Регистрация: 15.07.2012 / Адрес: Мухасранск / Сообщений: 1,533
Поблагодарили 3,833 раз(а) / Репутация: 3837
Если можно просьба посмотреть индикатор. Должен рисовать линию . а он показывает вертикально. При обновлении выравнивается , а с новой свечкой снова падает.
А что это за индикатор красными и зелеными полосами , которые кривые вокруг свечей ?
Take Profit - дар Всевышнего , StopLoss - урок Свыше.
Закрытая тема

Метки
mql программирование, дописать индикатор, дописать эксперт, доработать советник, форекс программирование


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помощь профессионального программиста в написании МТС индикаторов советников. cmillion Поиск программиста, поиск заказов 96 05.09.2017 08:20
Написание экспертов, индикаторов. Улсуги VPS для ваших советников. RL.Maxim Temp, корзина, реклама 5 31.10.2009 21:55
Написание советников, индикаторов, скриптов для MT4 по Вашему ТЗ Impish Поиск программиста, поиск заказов 0 04.04.2009 21:30


Текущее время: 18:48. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO